{"versions":{"1.1.0":{"name":"close-with-grace","version":"1.1.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"husky":"^4.3.8","standard":"^16.0.3","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.14.0"},"scripts":{"test":"standard && tape test/*.test.js | tap-dot && tsd"},"husky":{"hooks":{"pre-commit":"npm test"}},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","gitHead":"0fed246971658bd66ab89dcbc23e5992c9d7c1fa","_id":"close-with-grace@1.1.0","_nodeVersion":"14.15.4","_npmVersion":"7.6.0","dist":{"shasum":"91a48cf2019b5ae6e67b0255a32abcfd9bbca233","size":5039,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-1.1.0.tgz","integrity":"sha512-6cCp71Y5tKw1o9sGVBOa9OwY4vJ+YoLpFcWiTt9YCBhYlcQi0z68EiiN9mJ6/401Za6TZ5YOZg012IHHZt15lw=="},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_1.1.0_1614698652003_0.8644900649690557"},"_hasShrinkwrap":false,"publish_time":1614698652135,"_cnpm_publish_time":1614698652135,"_cnpmcore_publish_time":"2021-12-16T13:37:47.929Z","contributors":[]},"1.0.0":{"name":"close-with-grace","version":"1.0.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"husky":"^4.3.8","standard":"^16.0.3","tap-dot":"^2.0.0","tape":"^5.1.1"},"scripts":{"test":"standard && tape test/*.test.js | tap-dot"},"husky":{"hooks":{"pre-commit":"npm test"}},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","gitHead":"6e570155ccf19ee97337173fb7511531d7e88142","_id":"close-with-grace@1.0.0","_nodeVersion":"14.15.4","_npmVersion":"7.5.2","dist":{"shasum":"b719c3c45aa1833b49e4418ac873d5664cd9421d","size":4059,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-1.0.0.tgz","integrity":"sha512-yO4Buv8PNK9FpqtnfB/E0ddBRYvlechX3AZ3u1+yS8ty0CcGtQ27N0xHy92Lq9xD/hgcTWjipRDMJMt/Tn7Seg=="},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_1.0.0_1613005099409_0.48566936207286737"},"_hasShrinkwrap":false,"publish_time":1613005099567,"_cnpm_publish_time":1613005099567,"_cnpmcore_publish_time":"2021-12-16T13:37:48.139Z","contributors":[]},"0.1.0":{"name":"close-with-grace","version":"0.1.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"husky":"^4.3.8","standard":"^16.0.3","tap-dot":"^2.0.0","tape":"^5.1.1"},"scripts":{"test":"standard && tape test/*.test.js | tap-dot"},"husky":{"hooks":{"pre-commit":"npm test"}},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","gitHead":"167f93dd1c7a6ae69bd118f1ccc47c9827924966","_id":"close-with-grace@0.1.0","_nodeVersion":"14.15.4","_npmVersion":"7.5.2","dist":{"shasum":"9ea7b95104e1cd25fac217ee7ebe6fae8fb8cc52","size":3543,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-0.1.0.tgz","integrity":"sha512-WL+a1s/HftXh9RVCu5CpriYD7O+jYc59pUD+o8urmXHQUdszi3OFtq7jG7DjU104CNWN93WF4xFkFTNGqDyavQ=="},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_0.1.0_1612833692980_0.8770780942197569"},"_hasShrinkwrap":false,"publish_time":1612833693172,"_cnpm_publish_time":1612833693172,"_cnpmcore_publish_time":"2021-12-16T13:37:48.604Z","contributors":[]},"1.2.0":{"name":"close-with-grace","version":"1.2.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","types":"./index.d.ts","gitHead":"cae1efaa9fce3c908d579dad5f2617073929bccf","_id":"close-with-grace@1.2.0","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-Xga0jyAb4fX98u5pZAgqlbqHP8cHuy5M3Wto0k0L/36aP2C25Cjp51XfPw3Hz7dNC2L2/hF/PK/KJhO275L+VA==","shasum":"9af82cc62b40125125e4c772e4dbe3cd8c3ff494","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-1.2.0.tgz","fileCount":18,"unpackedSize":18439,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/65LaLEKo+iBjdZw+u4Jb/UF2eeDXKWJE/bYB/9d/mAiAS2B1TkQtoVvSgdEuBcYuMr4JmgQz3TH7sMu1nFNC2AA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkL/DYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmptLQ/9Ei9e1NlR+//eswPqmWC0Rkl/hDpVkdIlVCLWvjkYrC+q04XV\r\ngQHqU19tKdmeSSWsCTTumVm2cm4pHKG98O3jhTxqpvrbeyMTSIU+dtHWWK8B\r\nMGPq/PXfLKQ2AQ9tRvNzv2t36RDa8qggSjtWKfBjnL1hvtZpegilf5Bw3J5k\r\nEE6e6Ln9zStH4Ct/zUdlvf+alKOOmYikDqjp5fHFfdYJknGaoFU2ajlWhLJf\r\n1+tECjJanULsyTkFITVE9l/Dfa5N65CYBZksZRRNU+PbkiBQC3GbPdTuzeAt\r\n6W8lB7YWxSh/bB2B4qJPUBDLxSXl8W/7nt9Sycii9k2RZfoihx2rg9LlKyT3\r\n9pCz9yzj7IQhO5ilKu6mVPdFcnkkibhpvkxf5uog21ned7xhqhNBU76rzubQ\r\nOwBiOoTVntmYZgaXM2T9bngYI5PcBUVOcqNnLtofj133gQAlvbXxrKxhxJGt\r\nc8xV1CRJNX2hDyMvMNX5vDMfgMQVWf9CX9JNavua3LETMdBUn4vd44mmevb0\r\nWR644X9wfozXnBQ1MqfBSmfaC1ciWLcalFQAlIFAnCcr2T8DCZFnvgjeypOk\r\ntElwOhil+6cRrYDiByPj01YHybwqC7aKa/2kHJo0reQDMi6o12ukR7KZSfgZ\r\nzM+RYYVWLaQiLwHrGl6oGtPk+c8qPnUZM5A=\r\n=6v8u\r\n-----END PGP SIGNATURE-----\r\n","size":5173},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_1.2.0_1680863448251_0.5538896425459445"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-07T10:30:48.372Z","publish_time":1680863448372,"contributors":[]},"1.3.0":{"name":"close-with-grace","version":"1.3.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","_id":"close-with-grace@1.3.0","gitHead":"ec4dca1c15d6e41c7d19589c5489c27c623cbd91","types":"./index.d.ts","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-lvm0rmLIR5bNz4CRKW6YvCfn9Wg5Wb9A8PJ3Bb+hjyikgC1RO1W3J4z9rBXQYw97mAte7dNSQI8BmUsxdlXQyw==","shasum":"ff0f5889ad076f79c9d4308db75cc827027366b8","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-1.3.0.tgz","fileCount":19,"unpackedSize":20345,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbYpArHjTTf0Doq5kqsEDLxPTGVOlW8TaZZo/Oxh5eewIgc/Zaco6ajVpjiL6SGz7D1NAvjjipux7Di/6qBqGkt04="}],"size":5492},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_1.3.0_1708098778084_0.5459322457761531"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-16T15:52:58.235Z","publish_time":1708098778235,"_source_registry_name":"default","contributors":[]},"2.0.0":{"name":"close-with-grace","version":"2.0.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","_id":"close-with-grace@2.0.0","gitHead":"865c7370d99ba27156c94c2a93dd544cceced70c","types":"./index.d.ts","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-3QmKlUMH69spQ5lqukigG7A/7tF7iWekPJvQ7hsMiTOmEQEda2Q4nhAw48YouYXbMSyJ6tD7h3Pzh+Pxj7OuoQ==","shasum":"43e660bd62a910bddd2ff9d1c96c8b5cb1d916fd","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.0.0.tgz","fileCount":22,"unpackedSize":25190,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIZwTL3zzEXdVY3/Jnw6uqKcfKE5/eXS1RV2jYphpeQgIgDond1D6W6X/Dr8fifmoNvK8gtbaFgh0qJBHCVEBJJQI="}],"size":6129},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_2.0.0_1724139093870_0.9336909027142106"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-20T07:31:34.005Z","publish_time":1724139094005,"_source_registry_name":"default","contributors":[]},"2.1.0":{"name":"close-with-grace","version":"2.1.0","description":"Exit your process, gracefully (if possible)","main":"index.js","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","_id":"close-with-grace@2.1.0","gitHead":"ebcd1b37cf8c26721eae24a08280876e83262f2c","types":"./index.d.ts","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-rME1AtzKc9dfpLr8XBVhXqhVZDvtaIA7FIpjPaO+DmDsomaTNtuEBZMoNDgIvjHYK5q8/Afxy34YTXInUBsT1A==","shasum":"fa8ddbcf99bc16b0c5a21e7fd1fcc3575ae29409","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.1.0.tgz","fileCount":25,"unpackedSize":26170,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaIsGN6D9ToejbEpjWOaV/S8GKsSKyPe/FITDfY/qQqQIhANFGDPNEhzXqqi9Ucvq/jQ3fvVzfIicvJpJ5u7IteZrj"}],"size":6452},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/close-with-grace_2.1.0_1724515603660_0.5002858037516626"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-24T16:06:43.891Z","publish_time":1724515603891,"_source_registry_name":"default","contributors":[]},"2.2.0":{"name":"close-with-grace","version":"2.2.0","description":"Exit your process, gracefully (if possible)","main":"index.js","type":"commonjs","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","_id":"close-with-grace@2.2.0","gitHead":"7332612c8f72b08c2427f6632aee7a12e4877f78","types":"./index.d.ts","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-OdcFxnxTm/AMLPHA4Aq3J1BLpkojXP7I4G5QBQLN5TT55ED/rk04rAoDbtfNnfZ988kGXPxh1bdRLeIU9bz/lA==","shasum":"95d7dfae4070dc4074d122fe1a9254acd173dd76","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.2.0.tgz","fileCount":25,"unpackedSize":27257,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1du6EUqSNE3zJ0OiQv0vvM2VW+5OFrQ0f/72M/3XTkgIhAKfDxOG8EYsF6o1JUY9SLjNWcQUXIovdIkW97ehbFvki"}],"size":6581},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/close-with-grace_2.2.0_1736847499205_0.8932197951507845"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-01-14T09:38:19.391Z","publish_time":1736847499391,"_source_registry_name":"default","contributors":[]},"2.3.0":{"name":"close-with-grace","version":"2.3.0","description":"Exit your process, gracefully (if possible)","main":"index.js","type":"commonjs","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","_id":"close-with-grace@2.3.0","gitHead":"124baf51ba12db9265ef1f31d66ffe0fb0145cff","types":"./index.d.ts","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-38BS9BuqAml6XFIlSWQcj3eivE05yFV6cJDuYoNGiHrE+h9ud1JtMJIVKXdLWa2Uo2Xt7q/GYczOesEchvBEsw==","shasum":"01c5a6c1c8e2586b9a949e7bda0767f79c001e34","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.3.0.tgz","fileCount":29,"unpackedSize":31884,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG4sy4Oh1ARPuKPV+t0jRdmL2TiVmJl24NIO96vQ+WL7AiBTlbXScGHElKmM45pivl8HetRbVzDQbaa3xd1I7xy/cA=="}],"size":7128},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/close-with-grace_2.3.0_1758632768001_0.3530214869216848"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-23T13:06:08.189Z","publish_time":1758632768189,"_source_registry_name":"default","contributors":[]},"2.4.0":{"name":"close-with-grace","version":"2.4.0","description":"Exit your process, gracefully (if possible)","main":"index.js","type":"commonjs","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","gitHead":"de47b074dafccb8b53ef36a3eb35c2ffe4b48518","types":"./index.d.ts","_id":"close-with-grace@2.4.0","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-bzAYS0Kax7I0ejiCFHVshsT9giz6MrOpkdpP1CEGpkDRG3mXVgHZ9QdzVGHRZR0jrAq6JyN1mB4Ty3ILnmzLdg==","shasum":"a557b138c72a74c165a1067bb693ab33eb5426ce","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.4.0.tgz","fileCount":30,"unpackedSize":34636,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC38kMTIUBG12GbSoqigcf7XTocoxleLwt4+4XhdbFaagIhAJXh7LDk+n3kLD8eZA9eKLHodF/cnmvElZNljUKreJGG"}],"size":7728},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/close-with-grace_2.4.0_1767086656034_0.8864182768269686"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-12-30T09:24:16.189Z","publish_time":1767086656189,"_source_registry_name":"default","contributors":[]},"2.5.0":{"name":"close-with-grace","version":"2.5.0","description":"Exit your process, gracefully (if possible)","main":"index.js","type":"commonjs","devDependencies":{"@fastify/pre-commit":"^2.0.2","standard":"^17.0.0","tap-dot":"^2.0.0","tape":"^5.1.1","tsd":"^0.28.0"},"scripts":{"test":"standard && npm run test-only && tsd","test-only":"tape test/*.test.js | tap-dot"},"repository":{"type":"git","url":"git+https://github.com/mcollina/close-with-grace.git"},"keywords":["graceful","shutdown","close","exit"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/close-with-grace/issues"},"homepage":"https://github.com/mcollina/close-with-grace#readme","gitHead":"6f4619cba74da5b920b8604e593360a8b403f2e8","types":"./index.d.ts","_id":"close-with-grace@2.5.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-MewUtZQU6N4YVHIne63zGtjIQzTINgr6lQp2Y0CutaCw2FsdYahW57dH1Wdz+aV5ipbBzEBZD5znwX2NooS+IA==","shasum":"6a9b7fc1cd11e36381758ebefa1845224cca3c94","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/close-with-grace/-/close-with-grace-2.5.0.tgz","fileCount":32,"unpackedSize":38956,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDu0gLlqcGQIWScmMrhnnzLW8gy+19ZAoO/khH2Cem6swIgZA08OAinqzrSo2gmdslbWEtAkZMvshvs4tJyoPbvSMY="}],"size":9452},"_npmUser":{"name":"anonymous","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/close-with-grace_2.5.0_1771694005524_0.9458484333981796"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-21T17:13:25.686Z","publish_time":1771694005686,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"2.5.0"},"name":"close-with-grace","time":{"created":"2022-01-26T23:22:34.200Z","modified":"2026-02-21T17:13:39.575Z","1.1.0":"2021-03-02T15:24:12.135Z","1.0.0":"2021-02-11T00:58:19.567Z","0.1.0":"2021-02-09T01:21:33.172Z","1.2.0":"2023-04-07T10:30:48.372Z","1.3.0":"2024-02-16T15:52:58.235Z","2.0.0":"2024-08-20T07:31:34.005Z","2.1.0":"2024-08-24T16:06:43.891Z","2.2.0":"2025-01-14T09:38:19.391Z","2.3.0":"2025-09-23T13:06:08.189Z","2.4.0":"2025-12-30T09:24:16.189Z","2.5.0":"2026-02-21T17:13:25.686Z"},"readme":"# close-with-grace\n\nExit your process, gracefully (if possible) - for Node.js\n\n## Install\n\n```\nnpm i close-with-grace\n```\n\n## Usage\n\n```js\nconst closeWithGrace = require('close-with-grace')\n\n// delay is the number of milliseconds for the graceful close to\n// finish.\ncloseWithGrace({ delay: 500 }, async function ({ signal, err, manual }) {\n  if (err) {\n    console.error(err)\n  }\n  await closeYourServer()\n})\n\n// default delay is 10000\n// to disable delay feature at all, pass falsy value to delay option.\ncloseWithGrace({ delay: false }, () => await somethingUseful())\n```\n\n### Injecting custom logger\n\n```js\nconst closeWithGrace = require('close-with-grace')\n\n// delay is the number of milliseconds for the graceful close to\n// finish.\ncloseWithGrace(\n  {\n    delay: 500,\n    logger: { error: (m) => console.error(`[close-with-grace] ${m}`) }\n  },\n  async function ({ signal, err, manual }) {\n  if (err) {\n    console.error(err)\n  }\n  await closeYourServer()\n})\n\n// default logger is console\n// to disable logging at all, pass falsy value to logger option.\ncloseWithGrace({ logger: false }, () => await somethingUseful())\n```\n\n### Example with Fastify\n\n```js\nimport fastify from 'fastify'\nimport closeWithGrace from 'close-with-grace'\n\nconst app = fastify()\n\ncloseWithGrace(async function ({ signal, err, manual }) {\n  if (err) {\n    app.log.error({ err }, 'server closing with error')\n  } else {\n    app.log.info(`${signal} received, server closing`)\n  }\n  await app.close()\n})\n\nawait app.listen()\n```\n\n### Skipping specific events\n\nSkip specific events from triggering the graceful close. Note: You are responsible for handling skipped events yourself.\n\n```js\nimport closeWithGrace from 'close-with-grace'\n\n// Handle errors separately\nprocess.on('unhandledRejection', (err) => {\n  // Your custom error handling\n})\n\ncloseWithGrace(\n  { skip: ['unhandledRejection', 'uncaughtException'] },\n  async function ({ signal, err, manual }) {\n    await cleanupResources()\n  }\n)\n```\n\n## API\n\n### `closeWithGrace([opts], fn({ err, signal, manual }))`\n\n`closeWithGrace` adds a global listeners to the events:\n\n* `process.once('SIGHUP')`\n* `process.once('SIGINT')`\n* `process.once('SIGQUIT')`\n* `process.once('SIGILL')`\n* `process.once('SIGTRAP')`\n* `process.once('SIGABRT')`\n* `process.once('SIGBUS')`\n* `process.once('SIGFPE')`\n* `process.once('SIGSEGV')`\n* `process.once('SIGUSR2')`\n* `process.once('SIGTERM')`\n* `process.once('uncaughtException')`\n* `process.once('unhandledRejection')`\n* `process.once('beforeExit')`\n\nIn case one of them is emitted, it will call the given function.\nIf it is emitted again, it will terminate the process abruptly.\n\n#### opts\n\n* `delay`: the numbers of milliseconds before abruptly close the\n  process. Default: `10000`.\n  - Pass `false`, `null` or `undefined` to disable this feature.\n\n* `logger`: instance of logger which will be used internally. Default: `console`.\n  - Pass `false`, `null` or `undefined` to disable this feature.\n\n* `skip`: an array of event names to skip from triggering the graceful close callback. Default: `[]`.\n  - Example: `skip: ['unhandledRejection', 'uncaughtException', 'SIGTERM']`\n  - Note: You must handle skipped events yourself, otherwise they may cause the process to crash or exit unexpectedly.\n\n* `onSecondError(error)`: A callback to execute if the process throws an `uncaughtException`\n  or an `unhandledRejection` while `fn` is executing.\n\n* `onSecondSignal(signal)`: A callback to execute if the process receives another\n  signal while `fn` is executing.\n\n* `onTimeout(delay)`: A callback to execute if `fn` failed to completed after `delay` milliseconds.\n\nBoth `onSecondError`, `onSecondSignal` or `onTimeout` can be used to perform custom logic, but `process.exit(1)`\nwill be immediately be invoked after they exit so no asynchronous operations are possible.\n\n#### fn({ err, signal, manual } [, cb])\n\nExecute the given function to perform a graceful close.\nThe function can either return a `Promise` or call the callback.\nIf this function does not error, the process will be closed with\nexit code `0`.\nIf the function rejects with an `Error`, or call the callback with an\n`Error` as first argument, the process will be closed with exit code\n`1`.\n\n#### return values\n\nCalling `closeWithGrace()` will return an object as formed:\n\n* `close()`: close the process, the `manual` argument will be set to\n  true.\n* `uninstall()`: remove all global listeners.\n\n## License\n\nMIT","users":{}}