{"_id":"@abellsmythe/request-time","_rev":"5-7a9b029123e6260b8b118a5c90d2721c","name":"@abellsmythe/request-time","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@abellsmythe/request-time","version":"1.0.0","description":"Timings for HTTP requests","main":"./lib/index.js","directories":{"lib":"lib"},"scripts":{"build":"tsc","lint":"eslint --ext js .","test":"nyc ava"},"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"keywords":["http","https","request","time","metrics"],"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"homepage":"https://github.com/abellsmythe/request-time#readme","devDependencies":{"@types/node":"^12.7.4","@typescript-eslint/eslint-plugin":"^2.1.0","@typescript-eslint/parser":"^2.1.0","ava":"^2.3.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-config-xo-typescript":"^0.17.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","nyc":"^14.1.1","p-event":"^4.1.0","prettier":"^1.18.2","ts-node":"^8.3.0","tslint":"^5.19.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.6.2"},"dependencies":{"defer-to-connect":"^1.0.2"},"types":"dist","nyc":{"extension":[".ts"]},"ava":{"babel":false,"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"gitHead":"109aa69aa5afc242c00a8f5a7cf5bb797f837309","_id":"@abellsmythe/request-time@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wylKa1NDS9AQ4T/Zp3r4utiy6xVZTnK71ejG9a+BMJqBdGHd0Th8mAazqNo/c/EvdPSlvcFdMlX0tNMpe0uoBw==","shasum":"0b694091b59976ffb3be9bf0d68c30ca899f5ceb","tarball":"https://registry.npmjs.org/@abellsmythe/request-time/-/request-time-1.0.0.tgz","fileCount":9,"unpackedSize":21053,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddpJBCRA9TVsSAnZWagAA70IP/38OIX7GOaI4ZMRf2DZg\nzBXKYINM+copMRE2ddMRemSDaye55rSW1KV4c+r9AKJLN+8yJEOOoW8gYYpg\nfXHhuU6Z2jKK3QfVZIJzdllDSMPgrn//VB1fGpO7HA8uUSEA9nNqF7IK6gSR\nlrd+RRKwDlVQ1cU5i+6bxKctDc0wwznnQI2YFpI4xGu8MjSuhBxIhIlIXG09\nKv1Yc8l6ZOCekJGkWIXZ9vOHjr1WDJlzMIpBJtF4tx7br0fyWSO13MglRzWg\n3oCSviJTUDbZSeT9PFwtnNmk1C2X4IrHfhaulnGPtejHNCGi1O5Ht/WxEr4r\nRRXrB++OuWAeZDZDU2uQjBktpt2C03dyiTXPUIpHTEJGn8kkltJlIyKME46o\nFpHHFMIorydDCCRK8HuvKzaLSdUbDLojEjWxV1XmC/7zrA8gPgmjjGdvGCfc\n0H1b5TCbmtE4hw0l+Z4J1FMZuDwgRnEhU98mUZSVfxm+NXTgYI9Y9D83JXFk\n/QhL75pOfv6pmjBEUl5aQzwuAhG/wBk6ONZM09BZYufoAhP4EfyfgXGBZZ6U\n2IVs1iO7HbjZm8kEENJHiKjJUMXKLAZgD3A3myG0q08NjuP1o2Y9q2Xm+9Xr\n9vTgxvd5H/bHKpBpDJM7FM7zRY5yMDCACKtsM5JNWNs1wM2/I0U/GgO2ABkq\nwVxd\r\n=GDD0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPhiH53VJjmVRItR8Df4P4xuz1XcRzNIIf95s36/ZkzAiAudp243UDdQ3x8dTCXcRBVdII2H5vW68qE2KGZ/Z/Bfg=="}]},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"_npmUser":{"name":"abellsmythe","email":"abellsmythe@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-time_1.0.0_1568051776939_0.4752950129869127"},"_hasShrinkwrap":false},"1.0.1":{"name":"@abellsmythe/request-time","version":"1.0.1","description":"Timings for HTTP requests","main":"dist","engines":{"node":">=8"},"scripts":{"build":"tsc","lint":"eslint --ext js .","test":"nyc ava"},"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"keywords":["http","https","request","time","metrics"],"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"homepage":"https://github.com/abellsmythe/request-time#readme","devDependencies":{"@types/node":"^12.7.4","@typescript-eslint/eslint-plugin":"^2.1.0","@typescript-eslint/parser":"^2.1.0","ava":"^2.3.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-config-xo-typescript":"^0.17.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","nyc":"^14.1.1","p-event":"^4.1.0","prettier":"^1.18.2","ts-node":"^8.3.0","tslint":"^5.19.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.6.2"},"dependencies":{"defer-to-connect":"^1.0.2"},"types":"dist","nyc":{"extension":[".ts"]},"ava":{"babel":false,"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"gitHead":"089240ce4d4922602965d8b4b725429c37f8c8e6","_id":"@abellsmythe/request-time@1.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Eptp/H56T594E7MUpt54i7D/xp4n4/aA6QiHxaxjt0t3Xf2b0BkWld8KV+ku9PrBUVo8N7aAtQ7FQ8vKkRN25Q==","shasum":"459ea43270a460476efd91e271b0460fe7b98f0b","tarball":"https://registry.npmjs.org/@abellsmythe/request-time/-/request-time-1.0.1.tgz","fileCount":3,"unpackedSize":4502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddpX7CRA9TVsSAnZWagAA730P/RUYXztoxM9cPaQOPivU\npX2DNH3p0APNlQeNE+sk1Awdnth/TfFvIYKlexTkV4E8U9BVCzEiFfjAKlX2\n9bHhIwaHbFTBkXLEwShSVNGzyBq0lUSrlXzyzX5OOYjAeRJ3q3M57j5RZFoQ\nJflHj+MxjJsmC+/62egkMBSoo9kr45j1OL57hwmU1tQnrzsWgfWxySG20SYR\niaP1JjLUmR76J7Z/qp5zg2LgTXFC4zXMnvFHm/Ti2ifF2L4zjQDyvE0slhND\nAAwSQ7gwPEwEDvXHJvEvcTMY830ybKo9ndgMmIpCm3KQ2txFxS7d7KqWFiUq\nVGhcrtjqwJh3lE8ak0dZSuOGrN8YMUuj7oGLkm0aD+6n2AsqfyZduGe3DJYF\nP9DODcADwIPNfjwHfeNKJJyQW4lH9ccFgpwWSOsilVC9gXElm2Dg9mUTT86g\n6Xp5MCbxAYCJ0a8CYfSnDoaDOaydQsrDVLdJJp0HDrJiVZ9BIWSlTMJB5Sfw\nI33KKrvFxTPW4KFt6E1FPk+FkbMFqBjihxfOr3O5nOiL5zAPkwgpP+an5OT+\n5Q7J7L7sO0u7sahZtoc1FwJA2BLdNk3tdKFXq7pl22MJqeMd5PRghW0lBY8q\nwoXz13kXbpoNIFMvPV3IdkmkbcDSKCTsBzR9cOakCrIfZbT3GYDW9iMjfl0x\nOdS8\r\n=kWzz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaUSoggEk9kAG7dLT79VxLrQcNT3dDjXrVkVSeGErIyQIhAOrb/kb35IetK9EoApGOILOyI9h/Mb4mkYPzAe0gxENN"}]},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"_npmUser":{"name":"abellsmythe","email":"abellsmythe@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-time_1.0.1_1568052731091_0.4556789720842689"},"_hasShrinkwrap":false},"1.0.2":{"name":"@abellsmythe/request-time","version":"1.0.2","description":"Timings for HTTP requests","main":"dist","engines":{"node":">=8"},"scripts":{"build":"tsc","lint":"eslint --ext js .","prepublishOnly":"npm run build","test":"nyc ava"},"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"keywords":["http","https","request","time","metrics"],"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"homepage":"https://github.com/abellsmythe/request-time#readme","devDependencies":{"@types/node":"^12.7.4","@typescript-eslint/eslint-plugin":"^2.1.0","@typescript-eslint/parser":"^2.1.0","ava":"^2.3.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-config-xo-typescript":"^0.17.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","nyc":"^14.1.1","p-event":"^4.1.0","prettier":"^1.18.2","ts-node":"^8.3.0","tslint":"^5.19.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.6.2"},"dependencies":{"defer-to-connect":"^1.0.2"},"types":"dist","nyc":{"extension":[".ts"]},"ava":{"babel":false,"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"gitHead":"b7df43f67c26b8b3958bab52e23ba9aedc56a331","_id":"@abellsmythe/request-time@1.0.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GYUyJIK0XFJxUp8lSVcXc8TQ1M74ng5+mZ7ye9rvqMN6aE/a5FKghuwJWRza8Enn9DkJ9OuwePCS+SouU0V4CQ==","shasum":"b170b92fe65df16ef77b59e1911c91b1c7d80550","tarball":"https://registry.npmjs.org/@abellsmythe/request-time/-/request-time-1.0.2.tgz","fileCount":6,"unpackedSize":18148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddpr6CRA9TVsSAnZWagAA1RIP+wQAFWNAA28GL9GNHZQY\nlvrXjTqJaP+uk0C9ME+5+l+wnrygasDZduz8uAGRksn7W3UGWPLvhvTOVrIn\np04L2n74PVTx5yTdXHhTyUGO1phvAcU/0jcvpBE+E8QJBfii/BZAT2n5lEEf\nquYQL18eNEUvqZhENliQ/u7CX7wpcWuP0FBy1szrGCQaKkuiHPx8ROkq1DJl\nGhijcqo+gQ1fzrlxhQeSSkMcgrRu7DWeFV9xslIJevb6+4MO63VrHQC8JpJ0\nBuxNP9djj216dhGI7/k1fOdzKr13mRiKZObybGl7jaAojU9Jvdw9IFcasx2P\n4TAUnAEbucYreWkQpL1x5uUrW+3aMaVAYsF85S6GhORTP9CoZCU7BbgEJpxJ\nn8MFB68KoovVqzKUG0nAnQJRUv7o/OGBk4qku23RAk2/SdJcJ8iaF0ngWMgR\nMJrOgk/cAUt/nR8ihXwtitfz6YHNqALc/GfhJSUGyu1Td71jubRsbwXgxlx0\nVC501NmQ+FBvxPj0Bl8fS7UKfWWIDooAcHA+wiZfWMM8dZsg9pRaJSk5f0hv\nD+qdM1oJbCw/JoizX7Zv89PFYXr7bcw7XJjdQyhjN6EbbTAPIePiSL6tI3Vp\nhyBxu3SvUAEjpNJotcns66Hxgfu2XbOdzTIa0NOjbHTORRfZaAIwSffRuPpc\nxpYb\r\n=n8rv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/1KxeQ2dvtg5w3/CL+C0bQRQt+GDpwQbW6WZhpDUMsAIhAKFpf+qYVi+Pc/ZrCrC1iWYefNlLIe9xZNFh3EnwMijV"}]},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"_npmUser":{"name":"abellsmythe","email":"abellsmythe@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-time_1.0.2_1568054010282_0.6400278379100621"},"_hasShrinkwrap":false},"1.0.3":{"name":"@abellsmythe/request-time","version":"1.0.3","description":"Timings for HTTP requests","main":"dist","engines":{"node":">=8"},"scripts":{"build":"tsc","lint":"eslint --ext js .","prepublishOnly":"npm run build","test":"nyc ava"},"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"keywords":["http","https","request","time","metrics"],"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"homepage":"https://github.com/abellsmythe/request-time#readme","devDependencies":{"@types/node":"^12.7.4","@typescript-eslint/eslint-plugin":"^2.1.0","@typescript-eslint/parser":"^2.1.0","ava":"^2.3.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-config-xo-typescript":"^0.17.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","nyc":"^14.1.1","p-event":"^4.1.0","prettier":"^1.18.2","ts-node":"^8.3.0","tslint":"^5.19.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.6.2"},"dependencies":{"defer-to-connect":"^1.0.2"},"types":"dist","nyc":{"extension":[".ts"]},"ava":{"babel":false,"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"gitHead":"ed872cf71f58fbdeed0ce3083e765689e2b315ef","_id":"@abellsmythe/request-time@1.0.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-g3NolDl/AWoNwaczC7EXKWwto/yCVfWi8SHdZ8MsIF+JU7z30E9wZQ9zu2ZACzL8va/9ffAcV4eNBiKUw55Efg==","shasum":"7e0e3a9d005e29d665fcf22d5b3304426b4f0fbd","tarball":"https://registry.npmjs.org/@abellsmythe/request-time/-/request-time-1.0.3.tgz","fileCount":4,"unpackedSize":10085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddqHFCRA9TVsSAnZWagAAGqYP/irXB61N/fALVlmWDmsz\nbxAGZJnw7xZ6pSKsBRBuj4fQci/XG/kLSPjOL91D4rTFATVwR46/utBxMXUO\nYT8oBI8Lrxbvn2gAtGt+lEwdlRRpBbwAucsIrQyFpbEXaeZd6qWW6DciLBc0\ntgnLlQqZ2aDNU5aMxwua0KagX2rn6Ae74HmmIQcvCEtzK7vZb5Wati3F3yjP\n5GvD8vuxfQq6S2R4z60yhQR6OSXr1h9XcohPM+M1aXEIUzO+RIrEzPKi3WmR\n6lDub22FV1KGGozoFMbIUUzMRFPgEWwqIXQgSx+LY82mZndrnPddkapzB34p\nCvIs7vLaAip5KK1/ZOnmFmTqbUkccI2oDJVB/OH9ytfxJYaBj+fh6wox15/I\n5LJhrDErLqK9bflt4FaSKdFX+JTYBWdyNeA2+xH8qC8R25Vlsp7laqryfgcf\nF/HSOQvAc8aLMi9jvkGkKoDtIHC1DYmjb/El+bT2ZA6hMxCdcKoRrTPgHk2h\nY0hh37QOn3Nxa2xiGOQECkYJB2wpKR/w+2HrJJcBcKhMsGgenDWfpf4t4bzx\n0J3iJ54aqpOBGh4+nan+B9k4QIUVe9CieQmGFO6OSXWuq6qLvAs2BNJ54c5b\nmQhQ6Bf2UStxcfz4H0QkfZyQXu0Z69ifppjxbiw+sgMtpKFeyH9nepySbR1R\neAm6\r\n=1cOq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlKbrZlAhEUsKCt1J7ybKNSj/t6Nd9Ug3f0IoN01k8EAiEA1Ebnj+5ms5AlTO5Ncu+1lR5w88RbMVVWHA4g3Bfm+Mc="}]},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"_npmUser":{"name":"abellsmythe","email":"abellsmythe@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-time_1.0.3_1568055748348_0.7715587425833499"},"_hasShrinkwrap":false},"1.0.4":{"name":"@abellsmythe/request-time","version":"1.0.4","description":"Timings for HTTP requests","main":"dist","engines":{"node":">=8"},"scripts":{"build":"tsc","lint":"eslint --ext js .","prepublishOnly":"npm run build","test":"nyc ava"},"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"keywords":["http","https","request","time","metrics"],"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"homepage":"https://github.com/abellsmythe/request-time#readme","devDependencies":{"@types/node":"^12.7.4","@typescript-eslint/eslint-plugin":"^2.1.0","@typescript-eslint/parser":"^2.1.0","ava":"^2.3.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-config-xo-typescript":"^0.17.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-standard":"^4.0.1","nyc":"^14.1.1","p-event":"^4.1.0","prettier":"^1.18.2","ts-node":"^8.3.0","tslint":"^5.19.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.6.2"},"dependencies":{"defer-to-connect":"^1.0.2"},"types":"dist","nyc":{"extension":[".ts"]},"ava":{"babel":false,"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"gitHead":"b3cf6db9a3afc4eca4e71164efe13ef5fbbc0dd3","_id":"@abellsmythe/request-time@1.0.4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fhqC2pCMv1TAlWC8AtyQNEesZ4IIsus14j8mmUvWtWeSUYnEG1ycj0icZYMc4QP0RVPDCk/Oi0Dju8+CSgFJNg==","shasum":"9b1f7eff78b66ecb9ddc6a29c1bdf54b6eb71c03","tarball":"https://registry.npmjs.org/@abellsmythe/request-time/-/request-time-1.0.4.tgz","fileCount":4,"unpackedSize":10159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddq8lCRA9TVsSAnZWagAAF+cP/Ra7vIXoMAiKHDsLXUkP\n/AOYcGZcbcit/sc4bH3RG8DXVRZTs+Dm8sdgPvIphdbQLSCmCVdWXraKWCqZ\noOhGli+Ws+3c5c6O+CpklFVt40nvw3tXKwTFBQ/fI8yqXjfw81jaQeWdzU3N\nKteS1aKV5puNuv/OWjqrV6vr5J2fwUtJgi7Djeoffp6Ve9N6mJGiTqus0yf2\nae7f+LGn6krne+vwJxbKwWzqcpgEKFPMGO2xpnkGngRSocr7+jLE9QaqeV15\nCq5qtpJqpb30NAsi2GHxg0DNEHOfBm+RwdJlrXLKwA+X3BhRvxx/lmz2Fnxi\nRyWoJ5H9tYjAMnRLrusAA3niCHfkIClHjBCThz3sEn6mOHCl9Mc/YjY9bQx3\nKsOJs3J69NzzXcYd/r0tNcpblf5nd+MJe1t2XlCJeFJ2YkIOsql02TSVSKr9\nYO7donW4Ituxl/8RnX39+Kq3BzL+zxf8LJfYVa0mwhMLJ2MB1T8wbJEZwLc6\nTqFnCvP9S/xFoHELffOBj/BY22p2yHncijHGOuJa29IzIFE5wnUCGLHKjpvU\nr6FVEf3sV1lUpY9eCz5wcmY2Ts/a78OFYcpZkki1Xxl/dfTQGKy0p6crALGN\n4XfQlGtGso3Gadk7YBFPmctOir/XyLGIGyJGyspH35J1gGdbwg+9STnRHqEM\nE9Iv\r\n=zXRu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVNOkUYcdmuSxc9jEWF079QSHrDYuFkpaxwB8iWH9FZAiEAt9U0FnWIg5xgFpfJv34OvxqYbRgzkniTc5+ncAcD4ss="}]},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"_npmUser":{"name":"abellsmythe","email":"abellsmythe@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-time_1.0.4_1568059172868_0.36170083090303784"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-09T17:56:16.703Z","1.0.0":"2019-09-09T17:56:17.052Z","modified":"2022-04-04T10:58:53.000Z","1.0.1":"2019-09-09T18:12:11.273Z","1.0.2":"2019-09-09T18:33:30.492Z","1.0.3":"2019-09-09T19:02:28.497Z","1.0.4":"2019-09-09T19:59:33.021Z"},"maintainers":[{"name":"abellsmythe","email":"abellsmythe@gmail.com"}],"description":"Timings for HTTP requests","homepage":"https://github.com/abellsmythe/request-time#readme","keywords":["http","https","request","time","metrics"],"repository":{"type":"git","url":"git+https://github.com/abellsmythe/request-time.git"},"author":{"name":"Alton Bell Smythe","email":"abellsmythe@gmail.com"},"bugs":{"url":"https://github.com/abellsmythe/request-time/issues"},"license":"MIT","readme":"# request-time\n> Timings for HTTP requests\n\nUnderstanding and measuring HTTP timings helps us to discover performance. bottlenecks in client to server or server to server communication.\n\n![Request Timing](./media/request-timing.png \"Request Timing\")\n\n#### Timings explained\n\n- `DNS Lookup`: Time spent performing the DNS lookup. DNS lookup resolves domain names to IP addresses. Every new domain requires a full round trip to do the DNS lookup.\n    - > There is no DNS lookup when the destination is already an IP address.\n\n- `TCP Connection`: Time it took to establish TCP connection between a source host and destination host. Connections must be properly established in a multi-step handshake process. TCP connection is managed by an operating system, if the underlying TCP connection cannot be established, the OS-wide TCP connection timeout will overrule the timeout config of our application.\n\n- `TLS handshake`: Time spent completing a TLS handshake. During the handshake process endpoints exchange authentication and keys to establish or resume secure sessions. \n    - > There is no TLS handshake with a not HTTPS request.\n\n- `Time to First Byte (TTFB)`: Time spent waiting for the initial response. This time captures the latency of a round trip to the server in addition to the time spent waiting for the server to process the request and deliver the response.\n\n- `Content Transfer`: Time spent receiving the response data. The size of the response data and the available network bandwidth determinates its duration.\n\n## Installation\n\nNPM:\n\n> `npm install @abellsmythe/request-time`\n\n\n## Usage\n\n```javascript\n'use strict';\n\nconst https = require('https');\nconst timer = require('@abellsmythe/request-time').default;\n\nconst request = https.get('https://google.com');\nconst timings = timer(request);\n\nrequest.on('response', response => {\n\tresponse.on('data', () => {\n        // Do something\n    });\n\tresponse.on('end', () => {\n\t\tconsole.log(timings);\n\t});\n});\n```\n\n```javascript\n{\n    start: 20019170.414002,\n    socket: 20019171.943738,\n    dnsLookup: 20019182.811348,\n    connect: 20019194.637675,\n    tlsHandshake: 20019245.32874,\n    upload: 20019246.615841,\n    response: 20019284.613933,\n    end: 20019288.80115,\n    error: undefined,\n    phases:\n    {\n        wait: 1.5297359973192215,\n        dns: 10.86761000007391,\n        tcp: 11.826326999813318,\n        request: 51.9781660027802,\n        firstByte: 37.998091999441385,\n        download: 4.187217000871897,\n        total: 118.38714800029993\n    }\n}\n```\n\n## API\n\n### timer(request)\n\nReturns: `Object`\n\n- `start` - Time when the request started.\n- `socket` - Time when a socket was assigned to the request.\n- `dnsLookup` - Time when the DNS lookup finished.\n- `tlsHandshake` - Time when the secure connection is done.\n- `connect` - Time when the socket successfully connected.\n- `upload` - Time when the request finished uploading.\n- `response` - Time when the request fired the `response` event.\n- `end` - Time when the response fired the `end` event.\n- `error` - Time when the request fired the `error` event.\n- `phases`\n\t- `wait` - `timings.socket - timings.start`\n\t- `dns` - `timings.dnsLookup - timings.socket`\n\t- `tcp` - `timings.connect - timings.dnsLookup`\n\t- `request` - `timings.upload - timings.connect`\n\t- `firstByte` - `timings.response - timings.upload`\n\t- `download` - `timings.end - timings.response`\n\t- `total` - `timings.end - timings.start` or `timings.error - timings.start`\n\nIf something is not measured yet, it will be `undefined`.\n\n> **Note**: The time is a `number` representing the milliseconds without elapsing since the UNIX epoch.\n\n> **Note**: `request-time` uses `process.hrtime()` from node as it's not a subject of clock drift","readmeFilename":"README.md"}