{"_id":"lifecycle-utils","_rev":"38-a3168c4e2df85b87522225c61dd4e560","name":"lifecycle-utils","dist-tags":{"latest":"4.5.1"},"versions":{"0.0.1":{"name":"lifecycle-utils","version":"0.0.1","author":"","license":"ISC","_id":"lifecycle-utils@0.0.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"dist":{"shasum":"4ee06913161dc9502afd7878f6eeab0534cd9192","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-0.0.1.tgz","fileCount":1,"integrity":"sha512-HNPVdSsyTuq9yGJIaS9YkANcrdpjk1K4+SOYRyYswQTT35JvXqHwz0/K19s43qBuq2otJX+hnR7LBFvFkAGGPQ==","signatures":[{"sig":"MEYCIQDv0qaZ5OVXZCteTfotUI9qr/R7kqqPpQgTyBZRqhgtBAIhAPEkC9VLQV+kiUgFQG2WXfLzOYHeCcfCYEuIZITpTtYC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"_npmVersion":"9.6.7","description":"","directories":{},"_nodeVersion":"18.17.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_0.0.1_1693693666189_0.502650368990966","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"lifecycle-utils","version":"1.1.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.1.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"cad26581e5f31a299d8582858281d858cfbae0e1","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.1.0.tgz","fileCount":30,"integrity":"sha512-orHrF9s3HVCx/ZpE6eOPaWmoMigGaGdYxOiQ8ukm7+hcKcjty/IiTQ46I5Z0HZxaU0/paeGGOY/IC3qht6fcjw==","signatures":[{"sig":"MEUCIQDGGhMO7RJ+zIuA0q1nyVu8p/AAIFnlDO9WX8HBF251rQIgHgaSgVL+cufSZQC4JuTLWlNtm7sRI0M4XejQWrYpBAk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65025},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"82384a623c1477bb8202807a76ed2080879e48bf","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.1.0_1700615817466_0.8575026634777096","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"lifecycle-utils","version":"1.1.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.1.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"dfbb252b1a9fd266be2182bf5092f02022444023","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.1.1.tgz","fileCount":30,"integrity":"sha512-AMQcK7vaTnaR2BndGukj8I6SbCDw5EsA5VIWVDJQ2+ZgxsHUArPbE2MPHntzIO0grx6ls8uubh/KKFB2+7y0vw==","signatures":[{"sig":"MEQCIFqZHxwGBUkqG6ME7jKSjuMdHZrGsaGMongOeTkLSDuvAiAMU26xWBYzmy+H4ZqiifYqziMFlZtSwYRIbkE5fCscug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65731},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0ab3474733ae28291568aac1f38a2baf9e970417","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.1.1_1700674771292_0.9501706581965856","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"lifecycle-utils","version":"1.1.2","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.1.2","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"d374618af4ef5afeaf62e337298de5d7f92ae179","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.1.2.tgz","fileCount":30,"integrity":"sha512-mchFyLNVGff4VGIwTicxr0yfvFnOVsObLu/4rFG3L4SYufwkiXL7nlqco/+C8ZWMkogVr7slIP1pyOIzZ8xRZA==","signatures":[{"sig":"MEUCIBlr3JS3xgjgR0SZw+1T5FVIOAznOlD42dPeeLmqRbC4AiEAqX3qU7XkB/RGBYJPjOdhgYk2Wrn7o6j6QjnkO0T860M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66880},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"60360d6dc8d5dfa80c8c355eca6d26681f02794b","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.1.2_1700951203802_0.42173926060394895","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"lifecycle-utils","version":"1.1.3","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.1.3","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"42c3e3fd6c50e23909dce189e04655adc1fdb36f","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.1.3.tgz","fileCount":30,"integrity":"sha512-jTrF8P3FR8deiZyoPUxfH5W82lkbZ7bjSd/QmGfOCQPDdM0MWKD83KLU2QZdIsC0s7acAk2jA6P+ytbxkMz1rw==","signatures":[{"sig":"MEUCIQDsZ8xDaWdLne+F1y2xJ7t5m6lt9zmcQ2YgV/54QOeyWgIgWpK/OjbHacKtVAsbTNRGvzzVgs2c5vkZoTpjTcrS/Ks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63840},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"55666da4473fdcfcb6e2a1c760b9793205e225ec","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.1.3_1701017440763_0.25295733065032233","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"lifecycle-utils","version":"1.2.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.2.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"ee27648d6b57337e3f31676b886b8281c7a2bdfc","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.2.0.tgz","fileCount":30,"integrity":"sha512-lCtWg/q8vbFcfnWLMN91musxS5q5mQZxrRQDvxvAa4NcnBgTvjMaH7sfC/S9y6zmlPkA6IrZyerzJTomaszCrg==","signatures":[{"sig":"MEUCIDftTlay1wkdnI+1/17SXKJ72G4Ft9ILCmFIXBuqw14vAiEA5sR4A7fMSNvvBZDTmGBMOvIzgm6jGUPVobCg7GvaOX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65313},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"a6575927d194045ac99d4cfc7e1365d1db1008ee","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.2.0_1706973288089_0.22848070299349899","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"lifecycle-utils","version":"1.2.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.2.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"aa0cc591eb9c0897bb4df0476760143ab57e01ae","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.2.1.tgz","fileCount":30,"integrity":"sha512-i5N6KMV6Q94GMHRqlQ7hJGBvg2HOAiDbqx1hNdqQqEK55DV8xqrKQvOLlzrw7oRVm/BQJI1TtiddFGyMKZqf1g==","signatures":[{"sig":"MEQCIEIhQ5N9tuulEo9FrTjgc9K1XTKKN2DzllpiHAiYdIM6AiA+QgNcr1UsURlyd+CS1QIqBHE4n9hlvfmA0vdtZ4gS8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65612},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"481cfa03d9bf271a205b99049a9d1601714c68f1","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.2.1_1706973628902_0.9745493673938126","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"lifecycle-utils","version":"1.2.2","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.2.2","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"04f27e6f529f6363f24ff81dfdf599db91a16d97","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.2.2.tgz","fileCount":30,"integrity":"sha512-3KMdFt0e5iG4SuynIzkn9hP9/2egwKB6Nxp7nyjXxZQNojYWvqVk/0AVV/FaXpMVzB/7dHVLGKoWVq+FoabbQw==","signatures":[{"sig":"MEUCIDwfVI0f40mlW2wzfcykP54ezbk75A0Ry24+4DU6YoPlAiEAuGz27OKsNu8lUSXUTH41H1dkYLG4OS8zqqTXl/bORuQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69736},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"554afe3a2b4cb85b96e97f536860aa4f30491466","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.2.2_1708129536368_0.32255402859124294","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"lifecycle-utils","version":"1.3.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.3.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"4818175847e02bb72aa5be00089c7971cf929b6a","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.3.0.tgz","fileCount":30,"integrity":"sha512-AZhkhKlWlKQjAfR9/VFXma0BrbdhxKTOtbGg26RfnXNRl79DBowqJBkE/bbLjCjKSpbMMH5QcojGa+3VWMLopw==","signatures":[{"sig":"MEUCIQDrPneHR2VhM+uS8lMSWhOitlI0iYQGrDWIxK6myvhyYAIgFOevoJqXapTRB4DV+zrJJqOjOpEtOwUB2NKvVOAhPlc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70282},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"15545ab632c00223b537a87b3d90a8ac3eede3ec","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.3.0_1708700468660_0.07275680084056768","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"lifecycle-utils","version":"1.3.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.3.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"7dc4d4cfdd70a793f33a85a05ec5d6645817c6f3","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.3.1.tgz","fileCount":30,"integrity":"sha512-Vo3cw99hNk95lG+dxmaA9kfpsYXW/0g9MwvnO0zpvfstiC0ds8fAIzCa9M+hVPnFF5dvx9oy4nlEbIFChdL7RA==","signatures":[{"sig":"MEUCIGBiGUCSYkKRizwouGI2G4eu2u7Fcv24s2IQ2g2XrcETAiEA1+pjazYmCN/znBMtfgyc1zNDxF57KcA0kaAMevmHbVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70282},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"8f0bd168e3f411a828a0c2cb1e2cb496ff141320","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.3.1_1708700875307_0.25198977307471493","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"lifecycle-utils","version":"1.4.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.4.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"795b629d5a48ce9fdfa4ac53988c7128ff4b6c80","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.4.0.tgz","fileCount":30,"integrity":"sha512-t2Fg6vKtUjPhhFFWFLeaJlQZrEzOo9bUPvSdKQK7hO/MM9Kfo2s1EoA5SfVtFKLA5yiO5myEq9DJ6qYlOypXUQ==","signatures":[{"sig":"MEUCICtiBOtX20lkxv9W/1nI11Pq7f1p9PJUNMflKEJHLcjqAiEAysiGpsEsTlbk+YOLk/VTPHaZnJR35iKoZNICr9Saork=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70310},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"96e632dd8fc1a6125ff3d2b6876b9898f08ce20b","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.4.0_1710345003729_0.07280986573469361","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"lifecycle-utils","version":"1.4.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.4.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"b05314d2741ecdda5e7b24b8d41a94297771f2f0","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.4.1.tgz","fileCount":30,"integrity":"sha512-l8itA/+LnqlgMWM5AuSanjZk+S0+Ia9TldZPd9JHy4bCfrk1lUmNWKgt+xTuDqKy1sCI0dKZ7234R+wpVcBGUg==","signatures":[{"sig":"MEQCIF8IVDVywBEzx0NMpDE4gQWqvBiuh6KtbR5NNTwVO9G3AiApZmsSYNtPgZyenKQgz3T3q82KfKO00Tw0JxwxNzfJSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":75087},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"b3276037a711d462d79a699015ca49df10ba7b8b","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.4.1_1712098831835_0.021873287008242093","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"lifecycle-utils","version":"1.5.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.5.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"8b68e888f5442ca778d8f86f0861c77bb1b10f1d","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.5.0.tgz","fileCount":33,"integrity":"sha512-K8StIc2Eiy9O3dOicEP/UCjly9wGScqFm26t3TRK2UjjMKzyWgNxX2u0lMqcZ2/lSLd4CoPhHCWgojheaiUkOw==","signatures":[{"sig":"MEUCIQCfs8s7BVhI2m2XeERx0J7GqUfAFdFB+NBAaGW5xm3D3gIgJxpPzBtHt3XgsZNTfiwDVLREO/Vvz5B6SL4apRMinAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85491},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"adbb9e3750cfd3efeb24561b856bfc2912640a09","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.17.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.5.0_1726348097357_0.08072662360204852","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"lifecycle-utils","version":"1.6.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.6.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"b7e5f5a92ab145b7223614459009c518d5395bde","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.6.0.tgz","fileCount":33,"integrity":"sha512-v6YKAz0SbisGnFtcw1apVXIdoFSJ9+57PmTDkBSL2bL5JB5jTvxYunywS+cUzseDDBAwDRTHQsqoebBQPiurjg==","signatures":[{"sig":"MEUCIFn7236PDNGl60ZAYwN9hUhnGQaFGh+w/EEFkyiodl+gAiEAs8htySRFds2kqvAHsY5yQuLqwiaHLHePRMVH6eGkx3s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85657},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7c072ef97de2fd3649fdbe7ec11b61b1bdb4b425","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.17.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.6.0_1726352351585_0.20185781546309056","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"lifecycle-utils","version":"1.7.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.7.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"bd36ed5260e9c40819bbfba47f502a43e6c5dab1","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.7.0.tgz","fileCount":39,"integrity":"sha512-suNHxB8zsWrvsWxsmy9PsOcHuThRsCzvUhtGwxfvYAl8mbeWv7lt+wNT3q9KgILWmNe9zEVZ6PXo1gsvpYIdvw==","signatures":[{"sig":"MEUCIQC2i96Fnql4C3PR8S921XWj08f5DZFBlQthrhvvaT/98AIgIHLfBDi/uFRGppReJf9L9lW9G989aHtZdVDM3uuHNYs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92031},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3df1087c6c11dd2c02647cf32764a79c25bd4c70","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.17.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.7.0_1726610219862_0.8427272888652608","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"lifecycle-utils","version":"1.7.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.7.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"fd99b31edf0fd2b35b94436df92b95a24c81499b","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.7.1.tgz","fileCount":39,"integrity":"sha512-zK0R8Ap4XLDR1RBMR5IdYz416/rMQNURLOowRkGChS7RZrhqHq+lx16Mky2b70Q0tdE+tlIDmWJzuMP8BOhZNg==","signatures":[{"sig":"MEUCIQDEmbM7ugh5HWZtLvQm3j3TqsmDfT6HGspyc/dovMfqcQIgDIu66jPg3Wy2QGSUTcOy9GrTfcUIu0Wdu9Xx/KMsdes=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90651},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"79a98d235c40b2734e6d739b67b13f67545a353d","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.18.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.7.1_1734645720219_0.6346689141079851","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"lifecycle-utils","version":"1.7.2","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.7.2","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"bdd2541caa3a1712b219f95134510e006bb0b3f3","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.7.2.tgz","fileCount":39,"integrity":"sha512-HwjXBOf6FUun3liJ2XA3bNR7WZoWn0b3ji9fSvQ7qvnfhPd1UCuq3M6If44Rl3K14373gm/eyeIYbpDAfB9cbw==","signatures":[{"sig":"MEUCIQDu+kXnSD67zJsEUjJeLT2Nm/PKlSXNIoz/r+kuEhxLtgIgHreWPp5q3eBYjWkwqyYbjVaUNVNqaaKjcZ9hIDFeepY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90717},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3f3b33ff3220e82ae581fde3f71bec86d8c52b69","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.18.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.7.2_1735085607347_0.29209770749596276","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"lifecycle-utils","version":"1.7.3","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@1.7.3","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"3c7f4153aceffae8202f67ce95e4b8ab29fb60af","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.7.3.tgz","fileCount":39,"integrity":"sha512-T7zs7J6/sgsqwVyG34Sfo5LTQmlPmmqaUe3yBhdF8nq24RtR/HtbkNZRhNbr9BEaKySdSgH+P9H5U9X+p0WjXw==","signatures":[{"sig":"MEUCIAMYBuGH/GDzp91JYWchMyxjKjeg0ijn+/wZ8tzv3Mg9AiEAjRUTTDOYl60dtxJ1Lws2Uq9VSC4kxMKYEtG6MESrPs8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92270},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bdc3b770a13200fc252d7525c62d4df7179ae8bb","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.18.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_1.7.3_1735100139212_0.20629961483752401","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"lifecycle-utils","version":"2.0.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@2.0.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"d08cf022420a30ade2222b3a19965f8a31798a5b","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-2.0.0.tgz","fileCount":39,"integrity":"sha512-KIkV6NeD2n0jZnO+fdIGKI5Or7alyhb6UTFzeaqf6EnE5y3pdK821+kd7yOMBUL/sPYhHU5ny74J0QKslLikGw==","signatures":[{"sig":"MEYCIQCWwnnSVs5PAehyELIYZMzlLHe3mUczWhctqF9rygEgAgIhAPBaGCZ6br69v31IMMOrGSDcRSwyd06kKKOlhyUbBjRI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90717},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c588ed7205a4043fb17fe70c839338ca848e93fb","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"[ \"$CI\" = true ] || [ -d '.husky/_' ] || husky install","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"9.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.18.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","tslib":"^2.6.1","eslint":"^8.46.0","rimraf":"^5.0.1","vitest":"^0.34.6","ts-node":"^10.9.1","typedoc":"^0.25.1","typescript":"^5.1.6","@types/node":"^20.8.4","@commitlint/cli":"^17.7.1","semantic-release":"^21.0.7","eslint-plugin-node":"github:giladgd/eslint-plugin-node#dev/giladgd/fixImportExtentionFixingInTypeScript","@vitest/coverage-v8":"^0.34.6","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.28.0","@semantic-release/exec":"^6.0.3","typedoc-plugin-mdn-links":"^3.1.0","@typescript-eslint/parser":"^6.3.0","@commitlint/config-conventional":"^17.7.0","@typescript-eslint/eslint-plugin":"^6.3.0"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_2.0.0_1735100875966_0.9808988128649971","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"lifecycle-utils","version":"2.0.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@2.0.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"9fa7ca0adc52c409a5d2062b9d30161ba792f97f","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-2.0.1.tgz","fileCount":40,"integrity":"sha512-jVso5WXIHfDL7Lf9sCRbLbPwgpoha5qUPgi+RMNVIMuOcb0nJ9Qr0r1OXbqLaxzBUQBhN8jYy92RLSk2OGJ6Cg==","signatures":[{"sig":"MEYCIQDe5m8mgVopYSE6f33rVKbkeo8sGnZkHjqPY+CKrZnyRQIhAMMXRzj30MhBIKtqKn5Jc3IY7WVqHg4hSYwG2IG6294r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91493},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"47eb25aa6efc51d2ed81e2298cb199e595692cfa","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.19.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.26.0","rimraf":"^6.0.1","vitest":"^3.2.2","typedoc":"^0.28.5","typescript":"^5.8.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.17.0","semantic-release":"^24.2.5","typescript-eslint":"^8.32.0","@vitest/coverage-v8":"^3.2.2","eslint-plugin-jsdoc":"^50.6.11","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^4.4.1","typedoc-plugin-mdn-links":"^5.0.2","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_2.0.1_1749242979167_0.033998681761880256","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"lifecycle-utils","version":"2.1.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@2.1.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"447c6849aa36692a0d2327937c8f2d3b1411f4db","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-2.1.0.tgz","fileCount":46,"integrity":"sha512-AnrXnE2/OF9PHCyFg0RSqsnQTzV991XaZA/buhFDoc58xU7rhSCDgCz/09Lqpsn4MpoPHt7TRAXV1kWZypFVsA==","signatures":[{"sig":"MEQCIGg+y8GuQhp+6uMIC01M3agc8oA/U2imYOtFx6VyNg2aAiBUq8KtuLNB9V57riyqIQP7GtzdzSdJzG6en53wyciwxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112555},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"417fba542e7543684bb5053e813002eb6dc7ceb0","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","actor":{"name":"giladgd","type":"user","email":"giladgd@gmail.com"},"email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.26.0","rimraf":"^6.0.1","vitest":"^3.2.2","typedoc":"^0.28.5","typescript":"^5.8.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.17.0","semantic-release":"^24.2.5","typescript-eslint":"^8.32.0","@vitest/coverage-v8":"^3.2.2","eslint-plugin-jsdoc":"^50.6.11","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^4.4.1","typedoc-plugin-mdn-links":"^5.0.2","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_2.1.0_1752074106484_0.6916713868974933","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"lifecycle-utils","version":"3.0.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@3.0.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"3a2cdd69c97aeca2e1e29fabbfbd28a1df816981","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-3.0.0.tgz","fileCount":46,"integrity":"sha512-z9oo56Q1VX3ddkAxo9egsBHpnVgs7UNrR7OnN0cMQsHMIgGuZf5fzuQPWkQ3oxyqJaK0KwVsev4PIvSefXFs8w==","signatures":[{"sig":"MEQCIEIfwqMVkBGxm0WEeeme/ceIDyS3LalAFK4x39+1HG1JAiBMbylMTgHfK1LaJ0LVMAHLQrwGOd7RkFpFwkcT2ZQbQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112530},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"17eb563699e6b8a72cc78fb1ed44a7eb15e62668","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.26.0","rimraf":"^6.0.1","vitest":"^3.2.2","typedoc":"^0.28.5","typescript":"^5.8.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.17.0","semantic-release":"^24.2.5","typescript-eslint":"^8.32.0","@vitest/coverage-v8":"^3.2.2","eslint-plugin-jsdoc":"^50.6.11","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^4.4.1","typedoc-plugin-mdn-links":"^5.0.2","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_3.0.0_1752251534552_0.28534872359222296","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"lifecycle-utils","version":"3.0.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@3.0.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"e9f306582e57138a44b316d68eccbdadc35cb1c7","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-3.0.1.tgz","fileCount":46,"integrity":"sha512-Qt/Jl5dsNIsyCAZsHB6x3mbwHFn0HJbdmvF49sVX/bHgX2cW7+G+U+I67Zw+TPM1Sr21Gb2nfJMd2g6iUcI1EQ==","signatures":[{"sig":"MEUCIEk6B8KjNNnTEkjQ1Mz3ko8KuTsN/o6CXL4pX67i0LarAiEAwvBfySA2xDNxJ5sHnjaBRShxbRgf9il6GOxhMpzlXhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112640},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3cc379afe316e926032c99447aa96958f5cef98f","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"giladgd","email":"giladgd@gmail.com"},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"10.9.2","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.26.0","rimraf":"^6.0.1","vitest":"^3.2.2","typedoc":"^0.28.5","typescript":"^5.8.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.17.0","semantic-release":"^24.2.5","typescript-eslint":"^8.32.0","@vitest/coverage-v8":"^3.2.2","eslint-plugin-jsdoc":"^50.6.11","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^4.4.1","typedoc-plugin-mdn-links":"^5.0.2","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_3.0.1_1752336534858_0.12821097403230142","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"lifecycle-utils","version":"3.1.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@3.1.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"2274b2e0ae5d156ce6a3390cd6e90d2049f30b13","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-3.1.0.tgz","fileCount":64,"integrity":"sha512-kVvegv+r/icjIo1dkHv1hznVQi4FzEVglJD2IU4w07HzevIyH3BAYsFZzEIbBk/nNZjXHGgclJ5g9rz9QdBCLw==","signatures":[{"sig":"MEUCIQCHiYCop6iq6kgLbVUd4U2cQqu2e7aN+IHsGgf7Ivf/KQIgFPsYztz3nCfV6cASzBymXyOQXNnJXC+Fh+jTigVELvw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133739},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"5ef19093e2380d7b4a2bb08e53d590071dd318ed","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_3.1.0_1770077861228_0.052654590673254065","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"lifecycle-utils","version":"3.1.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@3.1.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"11c1deb04e2835dd14b02ab9aaf98d0aae9302d9","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-3.1.1.tgz","fileCount":64,"integrity":"sha512-gNd3OvhFNjHykJE3uGntz7UuPzWlK9phrIdXxU9Adis0+ExkwnZibfxCJWiWWZ+a6VbKiZrb+9D9hCQWd4vjTg==","signatures":[{"sig":"MEUCIB4MarAusfcPCWvj5aNR/8SoBLT4pK++gwX9UnXcuejBAiEA2uwZlT3F0d2gLfzu6jAuPG7FekE2CuIyA81YQieRnH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190566},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e581f9f978d117aa31db7e11c6e31a72b43a03ad","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_3.1.1_1771328446056_0.3149385967819287","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"lifecycle-utils","version":"3.2.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@3.2.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"22c26c0b935ac166eae845448ef626171c53bcb5","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-3.2.0.tgz","fileCount":68,"integrity":"sha512-GzzsnzJ2IwXgLpKaQmoByaE0GzTO3MU/cxZQo9pwWx6FTTZbDv73RK2B5PCbiSA2STxxRBy3lQXYmeZ4ZDNFgQ==","signatures":[{"sig":"MEQCIGT1TAQUao16Z/N8vl/Lt9YwarS8ZX1e0fzQ72KjKXHlAiB0nqhLnMzhgr91gCPvyseMQFyPtTXOMALhQV36pUSeUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICfOORRzGm7IKy52mFCYq22rrRt5Bg9FtVbpBCatFg7WAiEAwxPMaRNT9FtZOlNYjQ+znolYHqH1YgmfMDz/xCx3QE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229879},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"7dd1b8dda389f0aa7b02496ca40a941c74991f0a","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_3.2.0_1786071829884_0.047719154261831154","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"lifecycle-utils","version":"4.0.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.0.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"d4e63ea5aefc207f41fc0f34997c079021e3d416","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.0.0.tgz","fileCount":72,"integrity":"sha512-+bRSvoovBFTfujJHcAlGjGCDy5kTVhfZ+Ijl/DUxCU1kNSWRFhlUjaO/uqcFR3FMSybDqoJ9DJ+mNJDm9pMfpQ==","signatures":[{"sig":"MEQCIE48Sv4zzc6qg47pBgOaps8HlzT8PYAUMAj34sGZRKNQAiAbOPvD1IOz0mNYThw0UYZqechS3JsNxnwo/x//U2N0Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGE+Fa5KTFtNq5kBVxHn0oyC1ZD1LtJcCtx75AqPwPFYAiEAwp6fkeIjI8Vl0WYEL2Yc10FRvWXXKTCWA2IY30hHh1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268774},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"07c6a662399fb15698c449c84bbd84c703289ea8","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.0.0_1786240543331_0.65198669365142","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"lifecycle-utils","version":"4.0.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.0.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"9537fcfe1df9f964efc5c992a626186233ed40c6","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.0.1.tgz","fileCount":72,"integrity":"sha512-u4FZ8oW6M1dWj9sJ6e1qNya3p0p6oMGAohjk8FZBU/blBhvRbl7bUdZL5m9cYRhopx/5OSDzLVzxKcoMiWJ34w==","signatures":[{"sig":"MEYCIQDfghPtHkiPMJ/ja5p5TNcGKhIQduerXqgzBiGjGsF7kQIhAL490GiU4BKkWm3sNQaxPXIBvUPxYx6ZrFjxxVKiKfvL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCULnBsyjXZ02VGnoKtbJ18Ekc3w9aDvd7Fdnrk0cvQHwIgIpyf/vd5Ip5JV8AvRBAtHOHLwy/4t88ov7bAl7hKWOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":270272},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"b6ea0c171d99f35833ace97d89031db58d99f0ad","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.0.1_1786244235464_0.1509893918840921","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"lifecycle-utils","version":"4.1.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.1.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"199a847af3696875528e8d54653ae02e367cf6f7","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.1.0.tgz","fileCount":76,"integrity":"sha512-xDXKnJdEgdHJBQx4pu5cEmoZdIIH7TW6E452vzvd3CefB65JlAv942FOO/P4z2A0j6OBO8HxQ3RKpSd4sRz9EA==","signatures":[{"sig":"MEUCIG4JSz1a1SIVFXFQ3h+bzsmlEgCLGtou1tV8baA1z3C1AiEAnDbjg70Oru0RgkGERP3kIGttLhi3z2RyriqSAuzRCxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF8za6JY94Uw/t8VeV9SBDI2FbdzgFVd5n4u5wlVEeKdAiEAhsrsofZ5kw1G4wLqHc18reOSBpmPiFyS+gz4MbsbQKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303851},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"c0c9da6dd7a70bb8d2e099b5c7214289d3b4afa7","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.1.0_1786850072654_0.3425662063346244","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"lifecycle-utils","version":"4.2.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.2.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"2b0c7beeaae542e468143465b454538ddbf70277","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.2.0.tgz","fileCount":80,"integrity":"sha512-YvBi3y8QTeNXuq/EEDEEIjNUeytQRXdXKkZyTxoI9v3At8zVy+tmprPDMdn2At0AdyyDsBkYsejxjbfSQxmgNg==","signatures":[{"sig":"MEUCIQD3n11uB9iepjo2dElW1OwH/be7BW6RIO3721vftmTJBgIgEM3qflJkaU1B5PWtrN0Fy9wLEz/hLPP/aaHp5EbMOQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDYpyGw9N5B0Dcc3QOJyrDyM2UTLPIEH2ttydH7DUtVmQIgA+QxStHGi3K114e06lq0X71JbtVfUYVV7wOZ5oejzzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":322270},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"8de0555032a18944087d417f9a0f801b96e2c884","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.2.0_1787089792416_0.780312510245899","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"lifecycle-utils","version":"4.3.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.3.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"4fdd369c1a7324f779e2cf4a7e44ef0c1f8bba65","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.3.0.tgz","fileCount":84,"integrity":"sha512-yvn6bGiMCfEPBpgULViQH7gja9AKEnCf1J+VhhbHUBCJCL8g1tmBm2LMj8K6op7ExDwc3oCyfWInYlJ74WDPyA==","signatures":[{"sig":"MEQCICfVnVoDM1WwVE8dMyuvISc3ALozs8tOdXMDQDKKB3HAAiAR1geH+tdqJZE4jYhc9ZQvsHHOoSAS/W+s+FF4WL+UoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE2ivf0rmnFFaqSEt759DXZjJPNaIJcFN8fxzeqYkJHuAiBKqx1MCHnq7rri8jImakjpLtmsI4qsmrF2MrMqddjxBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352735},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"007d37d15bac423b25701d3a2962e78816731fa3","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.3.0_1787167471775_0.8983858921262315","host":"s3://npm-registry-packages-npm-production"}},"4.3.1":{"name":"lifecycle-utils","version":"4.3.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.3.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"3a3bac4f8ab310dcc1ad85a274e161a95c85daf7","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.3.1.tgz","fileCount":84,"integrity":"sha512-sHZNkjBVcR0e/2indpmvpOj++4e1mUyniN94wqdbtQaXYoAJRlYxpOJ3TwBmp7PwgHqsoAkiTQu+aLa9bss7Jw==","signatures":[{"sig":"MEUCIQC/ghHq7p2M/B2sB70aPqVn+eJlWq3LBkTeIuXR6zTMTAIgfnAdgSFPoFmE6qNAllRaIbiDXO1r9s+AaxQQ+ShhFJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2BLmvEAobb8yHXP9yLsVw1vv8fBuZuWz+gy6JHrSIXQIhAJIxIk6Y9VFMyW+5ewGE1xvf8KByiLRtQGq63mlYAMfc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352663},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"bb5f30fbcc6a81702921598c451bfaeff99b2cd6","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.3.1_1787254706151_0.3390734556822552","host":"s3://npm-registry-packages-npm-production"}},"4.4.0":{"name":"lifecycle-utils","version":"4.4.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.4.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"229b9c4a4fe8e4c7af9a04ba7d82415394c052ac","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.4.0.tgz","fileCount":92,"integrity":"sha512-c/mt+924TMZR3rQTr1SF0CEm0DrIjjvZYLh3irUfWrZ9aBXdYFnHZGZ8a+fCt3ruJqiRG1pq92oWPHc4IIIZCQ==","signatures":[{"sig":"MEQCIC6NAMFhEoJiv/xrogjWzUclz5KsI6CH0CDtdXHD5rN8AiA3WJX5vyla6JId+L6hUGUVG+d8l0zXkKzL8np6vVm6bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCzP6inX8YsXJdxt6Xo+WOReFY2A4P2PVjmlcXeFjN1dgIhAMOf+LOK2AFQOTF+bx1n7woEuMPFmkRJ/b+oOUvFw0e1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":401153},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"9ab82d4b8078a6dfc354a5e9bd32f98ff056b712","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.4.0_1787619776873_0.43081552125521094","host":"s3://npm-registry-packages-npm-production"}},"4.4.1":{"name":"lifecycle-utils","version":"4.4.1","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.4.1","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"bf3428433aee49cb281957c19c05273f0726abda","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.4.1.tgz","fileCount":92,"integrity":"sha512-OISUWb0J8fBvF6u1SkegeKdohm7dNlNe4arVSYIOp5pPwRoO/H/eh/8FZVKPfzeswkAMin00/S7twWgSWN3tlw==","signatures":[{"sig":"MEYCIQCRAsGFlq8CAPw3UD7sQcw85UciPuRfZv9m8QOcp0RXYQIhAPJ9d3kqteZ/ZvALBV8u9YOWlajYGaP1FAGdzCjE+Obb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBShZtIVCFSm6VZNoDAP5iIDPenLPRB6xHOHVuua5HJwIhALMvMDj9/HacP6tGlaNOKmmm+UuTPg7REmhzKelo+NBE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":402275},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"ebbeb38ed52bb9c79f9569469c0932948b075953","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.4.1_1787880711654_0.2921191903946776","host":"s3://npm-registry-packages-npm-production"}},"4.5.0":{"name":"lifecycle-utils","version":"4.5.0","keywords":["utils","lifecycle","typescript"],"author":{"name":"Gilad S."},"license":"MIT","_id":"lifecycle-utils@4.5.0","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"homepage":"https://giladgd.github.io/lifecycle-utils/","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"f476b64dd039e5f9d1307444cff6865984abf6c2","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.5.0.tgz","fileCount":96,"integrity":"sha512-hFAML1VB8tMBlRjKT6Uub0k2/pEejI3fAs/ekFh+bwr4/SHUVzjlquT+b9ON/55HBreA8XBcTY451IUr5topqQ==","signatures":[{"sig":"MEQCIFXfMfQoYgpxEMQ5xOV2gAeENsRsfROTasNnMx778j4NAiBbXy+yG/qDkC8R3QwkgR+0QdeY+yc+mngL0tXhA/ulWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE0tnNvvdinTuhXTTz0yeBzq2d7pB58BSKiFXqPyWEcQAiAIMbll4pA8BgFgrbgA0dUxXnw2rMgDaJsdzgsARgvCzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":456936},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"8944b69a495f4ab5cc0e483741cf4d1706af3f0f","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/lifecycle-utils_4.5.0_1789889061078_0.5204405879450149","host":"s3://npm-registry-packages-npm-production"}},"4.5.1":{"_id":"lifecycle-utils@4.5.1","bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"dist":{"shasum":"42477d6ce5930080261c00db85a01e5fac49d450","tarball":"https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-4.5.1.tgz","fileCount":96,"integrity":"sha512-RV7+jNHVQ2ktkkfgpjatWgVAeVJqW3RCw9rxAD9t8TMJr3RwJlMaKtXZmJZLth6Fxj8igP4uqkkZjsIMekuK2Q==","signatures":[{"sig":"MEUCIQCqzpSdKllOLzYGyBA8odkZMnzdo1RD39sY96+QoaEyDgIgVINEwLqsFgNFVh9VoFweFR3d4xvvFjeRpG62M4JIu30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE/odzqa8/E7yE4fZd9t519obJEQaG2UfIhoQ8uCiGNlAiEAjwbVwHe7BPash5G9ouCOJTS2FUiNZNBwqaNr9n2jK4M="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/lifecycle-utils@4.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":457209},"main":"dist/index.js","name":"lifecycle-utils","type":"module","types":"./dist/index.d.ts","author":{"name":"Gilad S."},"exports":{".":{"node":"./dist/index.js","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/giladgd","type":"github"},"gitHead":"f3087caded7fee26dfc2defd2aad968d509a0f57","license":"MIT","scripts":{"lint":"npm run lint:eslint","test":"npm run test:typescript && npm run lint:eslint && npm run test:vitest","build":"tsc --build tsconfig.json --force","clean":"rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo ./docs-site","watch":"tsc --build tsconfig.json --watch --force","format":"npm run lint:eslint -- --fix","prepare":"node -e \"process.env.CI !== 'true' && console.log(require('husky').default())\"","prebuild":"rimraf ./dist ./tsconfig.tsbuildinfo","prewatch":"rimraf ./dist ./tsconfig.tsbuildinfo","docs:build":"typedoc","lint:eslint":"eslint --ext .js --ext .ts .","test:vitest":"vitest run ./test","test:typescript":"tsc --build tsconfig.json --dry --force","test:vitest:interactive":"vitest watch ./test"},"version":"4.5.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6635c062-ca52-4907-b844-b7ea9d1d9b68"}},"homepage":"https://giladgd.github.io/lifecycle-utils/","keywords":["utils","lifecycle","typescript"],"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"_npmVersion":"11.6.4","description":"A set of general utilities for the lifecycle of a JS/TS project/library","directories":{},"maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.39.2","rimraf":"^6.0.1","vitest":"^4.0.18","typedoc":"^0.28.16","typescript":"^5.9.3","@types/node":"^20.8.4","@commitlint/cli":"^19.8.1","eslint-plugin-n":"^17.23.2","semantic-release":"^25.0.2","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","eslint-plugin-jsdoc":"^62.5.0","eslint-plugin-import":"^2.31.0","@semantic-release/exec":"^7.1.0","@stylistic/eslint-plugin":"^5.7.1","typedoc-plugin-mdn-links":"^5.1.1","@commitlint/config-conventional":"^19.8.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lifecycle-utils_4.5.1_1789907831718_0.010451990434195757"}}},"time":{"created":"2023-09-02T22:25:48.812Z","modified":"2026-09-20T12:37:12.164Z","1.0.0":"2023-09-02T22:25:49.033Z","0.0.1":"2023-09-02T22:27:46.328Z","1.1.0":"2023-11-22T01:16:57.720Z","1.1.1":"2023-11-22T17:39:31.460Z","1.1.2":"2023-11-25T22:26:44.016Z","1.1.3":"2023-11-26T16:50:41.037Z","1.2.0":"2024-02-03T15:14:48.272Z","1.2.1":"2024-02-03T15:20:29.047Z","1.2.2":"2024-02-17T00:25:36.565Z","1.3.0":"2024-02-23T15:01:08.815Z","1.3.1":"2024-02-23T15:07:55.462Z","1.4.0":"2024-03-13T15:50:03.920Z","1.4.1":"2024-04-02T23:00:32.034Z","1.5.0":"2024-09-14T21:08:17.561Z","1.6.0":"2024-09-14T22:19:11.764Z","1.7.0":"2024-09-17T21:57:00.107Z","1.7.1":"2024-12-19T22:02:00.398Z","1.7.2":"2024-12-25T00:13:27.562Z","1.7.3":"2024-12-25T04:15:39.405Z","2.0.0":"2024-12-25T04:27:56.238Z","2.0.1":"2025-06-06T20:49:39.381Z","2.1.0":"2025-07-09T15:15:06.689Z","3.0.0":"2025-07-11T16:32:14.736Z","3.0.1":"2025-07-12T16:08:55.041Z","3.1.0":"2026-02-03T00:17:41.378Z","3.1.1":"2026-02-17T11:40:46.199Z","3.2.0":"2026-08-07T03:03:49.963Z","4.0.0":"2026-08-09T01:55:43.410Z","4.0.1":"2026-08-09T02:57:15.546Z","4.1.0":"2026-08-16T03:14:32.782Z","4.2.0":"2026-08-18T21:49:52.558Z","4.3.0":"2026-08-19T19:24:31.881Z","4.3.1":"2026-08-20T19:38:26.251Z","4.4.0":"2026-08-25T01:02:57.007Z","4.4.1":"2026-08-28T01:31:51.758Z","4.5.0":"2026-09-20T07:24:21.183Z","4.5.1":"2026-09-20T12:37:11.817Z"},"bugs":{"url":"https://github.com/giladgd/lifecycle-utils/issues"},"author":{"name":"Gilad S."},"license":"MIT","homepage":"https://giladgd.github.io/lifecycle-utils/","keywords":["utils","lifecycle","typescript"],"repository":{"url":"git+https://github.com/giladgd/lifecycle-utils.git","type":"git"},"description":"A set of general utilities for the lifecycle of a JS/TS project/library","maintainers":[{"name":"giladgd","email":"giladgd@gmail.com"}],"readme":"# `lifecycle-utils`\nA set of general utilities for the lifecycle of a JS/TS project/library\n\n[![Build](https://github.com/giladgd/lifecycle-utils/actions/workflows/test.yml/badge.svg)](https://github.com/giladgd/lifecycle-utils/actions/workflows/test.yml)\n[![License](https://badgen.net/badge/color/MIT/green?label=license)](https://www.npmjs.com/package/lifecycle-utils)\n[![Types](https://badgen.net/badge/color/TypeScript/blue?label=types)](https://www.npmjs.com/package/lifecycle-utils)\n[![Version](https://badgen.net/npm/v/lifecycle-utils)](https://www.npmjs.com/package/lifecycle-utils)\n[![codecov](https://codecov.io/gh/giladgd/lifecycle-utils/branch/master/graph/badge.svg)](https://codecov.io/gh/giladgd/lifecycle-utils)\n\n* [Documentation](https://giladgd.github.io/lifecycle-utils/)\n* [Changelog](https://github.com/giladgd/lifecycle-utils/releases)\n\n\n## Installation\n```bash\nnpm install --save lifecycle-utils\n```\n\n> This is an ESM package, so you can only use `import` to import it, and cannot use `require`\n\n## Documentation\n### `withLock`\nCalling `withLock` acquires an exclusive lock for the given `scope` values,\nensuring that its callback cannot run in parallel to any other exclusive or shared lock that use the same `scope` values.\n\nThe order of the values in the `scope` array is important, and should be consistent across calls to reference the same lock.\nYou can use as many values as you like, but always ensure that at least one of them is a reference to an object.\n\n```typescript\nimport {withLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\nconst startTime = Date.now();\n\nasync function doSomething(index: number): number {\n    return await withLock([scope, \"myKey\"], async () => {\n        await new Promise(resolve => setTimeout(resolve, 1000));\n        console.log(\"index:\", index, \"time:\", Date.now() - startTime);\n        return 42;\n    });\n}\n\nconst res = await Promise.all([\n    doSomething(1),\n    doSomething(2),\n    doSomething(3)\n]);\n\n// index: 1 time: 1000\n// index: 2 time: 2000\n// index: 3 time: 3000\n\nconsole.log(res); // [42, 42, 42]\n```\n\n### `isLockActive`\nCheck whether a lock is currently active for the given `scope` values.\n\n```typescript\nimport {isLockActive} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\nconst res = isLockActive([scope, \"myKey\"]);\nconsole.log(res); // false\n```\n\n### `acquireLock`\nAcquire an exclusive lock for the given `scope` values.\n\n```typescript\nimport {acquireLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\nconst activeLock = await acquireLock([scope, \"myKey\"]);\nconsole.log(\"lock acquired\");\n\n// ... do some work\n\nactiveLock.dispose();\n```\n\nUsing the `using` feature of TypeScript is also supported:\n```typescript\nimport {acquireLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\n{\n    using lock = await acquireLock([scope, \"myKey\"]);\n    console.log(\"lock acquired\");\n    \n    // ... do some work\n}\n\nconsole.log(\"lock released\");\n```\n\n### `waitForLockRelease`\nWait for all locks to be released for a given `scope` values.\n\n```typescript\nimport {waitForLockRelease} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\nawait waitForLockRelease([scope, \"myKey\"]);\nconsole.log(\"lock is released\");\n```\n\n### `withSharedLock`\nCalling `withSharedLock` acquires a shared lock for the given `scope`,\nallowing multiple shared locks to run in parallel while preventing an exclusive lock from running at the same time.\n\nLock requests are acquired in the order they are made, with consecutive shared lock requests acquired together.\nA new shared lock joins an active shared lock immediately when no regular lock requests are waiting.\n\n```typescript\nimport {withLock, withSharedLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\nconst sleep = (duration: number) => new Promise((resolve) => setTimeout(resolve, duration));\n\nconst exclusive1 = withLock([scope, \"myKey\"], async () => {\n    console.log(\"exclusive 1 started\");\n    await sleep(1000);\n    console.log(\"exclusive 1 finished\");\n});\n\nconst shared1 = withSharedLock([scope, \"myKey\"], async () => {\n    console.log(\"shared 1 started\");\n    await sleep(1000);\n    console.log(\"shared 1 finished\");\n});\nconst shared2 = withSharedLock([scope, \"myKey\"], async () => {\n    console.log(\"shared 2 started\");\n    await sleep(500);\n    console.log(\"shared 2 finished\");\n});\n\nconst exclusive2 = withLock([scope, \"myKey\"], async () => {\n    console.log(\"exclusive 2 started\");\n    await sleep(1000);\n    console.log(\"exclusive 2 finished\");\n});\n\nawait Promise.all([exclusive1, shared1, shared2, exclusive2]);\n\n// exclusive 1 started\n// exclusive 1 finished\n// shared 1 started\n// shared 2 started\n// shared 2 finished\n// shared 1 finished\n// exclusive 2 started\n// exclusive 2 finished\n```\n\n### `acquireSharedLock`\nAcquire a shared lock for the given `scope` values.\n\nMultiple shared locks can be held in parallel,\nwhile an exclusive lock cannot be held until every shared lock is released.\n\nLock requests are acquired in the order they are made, with consecutive shared lock requests acquired together.\nA new shared lock joins an active shared lock immediately when no regular lock requests are waiting.\n\n```typescript\nimport {acquireSharedLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\nconst activeLock = await acquireSharedLock([scope, \"myKey\"]);\nconsole.log(\"shared lock acquired\");\n\n// ... do some work\n\nactiveLock.dispose();\n```\n\nUsing the `using` feature of TypeScript is also supported:\n```typescript\nimport {acquireSharedLock} from \"lifecycle-utils\";\n\nconst scope = {}; // can be a reference to any object you like\n\n{\n    using lock = await acquireSharedLock([scope, \"myKey\"]);\n    console.log(\"shared lock acquired\");\n    \n    // ... do some work\n}\n\nconsole.log(\"lock released\");\n```\n\n### `EventRelay`\nA simple event relay.\n\nCreate a listener with `createListener` and dispatch events with `dispatchEvent`.\n\nFor each supported event type, create a new instance of `EventRelay` and expose it as a property.\n\nFor example, this code:\n```ts\nimport {EventRelay} from \"lifecycle-utils\";\n\nclass MyClass {\n    public readonly onSomethingHappened = new EventRelay<string>();\n\n    public doSomething(whatToDo: string) {\n        this.onSomethingHappened.dispatchEvent(whatToDo);\n        console.log(\"Done notifying listeners\");\n    }\n}\n\nconst myClass = new MyClass();\nmyClass.onSomethingHappened.createListener((whatHappened) => {\n    console.log(`Something happened: ${whatHappened}`);\n});\nmyClass.doSomething(\"eat a cookie\");\n```\n\nWill print this:\n```\nSomething happened: eat a cookie\nDone notifying listeners\n```\n\n### `ScopedEventRelay`\nA scoped event relay.\n\nCreate a listener for a given scope with `createListener` and dispatch events for a given scope with `dispatchEvent`.\n\nFor each supported event type, create a new instance of `ScopedEventRelay` and expose it as a property,\nwhere the scope identifies the target the event belongs to.\n\nA scope consists of one or more values that identify the target or context of an event, such as a `clientId` string.\n\n```typescript\nimport {ScopedEventRelay} from \"lifecycle-utils\";\n\nclass Clients {\n    public readonly onClientMessage = new ScopedEventRelay<[clientId: string], string>();\n\n    public sendMessage(clientId: string, message: string) {\n        this.onClientMessage.dispatchEvent([clientId], message);\n        console.log(\"Done notifying listeners\");\n    }\n}\n\nconst clients = new Clients();\nclients.onClientMessage.createListener([\"client1\"], (message) => {\n    console.log(`Message from client1: ${message}`);\n});\nclients.onClientMessage.createListener([\"client2\"], (message) => {\n    console.log(`Message from client2: ${message}`);\n});\nclients.sendMessage(\"client1\", \"eat a cookie\");\nclients.sendMessage(\"client2\", \"eat a sandwich\");\n```\n\nWill print this:\n```\nMessage from client1: eat a cookie\nDone notifying listeners\nMessage from client2: eat a sandwich\nDone notifying listeners\n```\n\n### `DisposeAggregator`\n`DisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.\n\nYou can add a function to call, an object with a `dispose` method, or an object with a `Symbol.dispose` method.\n\nTo dispose all the items, call `dispose` or use the `Symbol.dispose` symbol.\n\n```typescript\nimport {DisposeAggregator, EventRelay} from \"lifecycle-utils\";\n\nconst disposeAggregator = new DisposeAggregator();\n\nconst eventRelay = new EventRelay<string>();\ndisposeAggregator.add(eventRelay);\n\nconst eventRelay2 = disposeAggregator.add(new EventRelay<string>());\n\ndisposeAggregator.dispose();\nconsole.log(eventRelay.disposed === true); // true\nconsole.log(eventRelay2.disposed === true); // true\n```\n\n### `AsyncDisposeAggregator`\n`AsyncDisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.\nThe items are disposed one by one in the order they were added.\nWhen the `parallel` option is enabled, then all the items are disposed in parallel,\ntriggered by the order in which they were added.\n\nYou can add a function to call, an object with a `dispose` method, an object with a `Symbol.dispose` method,\nan object with a `Symbol.asyncDispose` method, or a Promise that resolves to one of the previous types.\n\nTo dispose all the items, call `dispose` or use the `Symbol.asyncDispose` symbol.\n\nThe difference between `AsyncDisposeAggregator` and `DisposeAggregator` is that `AsyncDisposeAggregator` can dispose async targets.\n\n```typescript\nimport {AsyncDisposeAggregator, EventRelay} from \"lifecycle-utils\";\n\nconst disposeAggregator = new AsyncDisposeAggregator();\n\nconst eventRelay = new EventRelay<string>();\ndisposeAggregator.add(eventRelay);\n\ndisposeAggregator.add(async () => {\n    await new Promise(resolve => setTimeout(resolve, 0));\n    // do some async work\n});\n\ndisposeAggregator.dispose();\n```\n\nWith the `parallel` option enabled:\n```typescript\nimport {AsyncDisposeAggregator, EventRelay} from \"lifecycle-utils\";\n\nconst disposeAggregator = new AsyncDisposeAggregator({parallel: true});\n\nconst eventRelay = new EventRelay<string>();\ndisposeAggregator.add(eventRelay);\n\ndisposeAggregator.add(async () => {\n    console.log(\"1\");\n    await new Promise(resolve => setTimeout(resolve, 100));\n    console.log(\"4\");\n});\ndisposeAggregator.add(async () => {\n    console.log(\"2\");\n    await new Promise(resolve => setTimeout(resolve, 0));\n    console.log(\"3\");\n});\n\ndisposeAggregator.dispose();\n// will print:\n// 1\n// 2\n// 3\n// 4\n```\n\n### `DisposableHandle`\nAn object that provides a `.dispose()` method that can called only once.\n\nCalling `.dispose()` will call the provided `onDispose` function only once.\nAny subsequent calls to `.dispose()` will do nothing.\n\n```typescript\nimport {DisposableHandle} from \"lifecycle-utils\";\n\nfunction createHandle() {\n    console.log(\"allocating resources\");\n    \n    return new DisposableHandle(() => {\n        console.log(\"resources disposed\");\n    });\n}\n\nconst handle = createHandle();\nhandle.dispose();\n```\n\nUsing the `using` feature of TypeScript is also supported:\n```typescript\nimport {DisposableHandle} from \"lifecycle-utils\";\n\nfunction createHandle() {\n    console.log(\"allocating resources\");\n    \n    return new DisposableHandle(() => {\n        console.log(\"resources disposed\");\n    });\n}\n\nfunction doWork() {\n    using handle = createHandle();\n}\n\ndoWork();\n// resources disposed\n// the dispose function was called since the scope of the `doWork` function ended\n```\n\n### `AsyncDisposableHandle`\nAn object that provides an async `.dispose()` method that can called only once.\n\nCalling `.dispose()` will call the provided `onDispose` function only once.\nAny subsequent calls to `.dispose()` will do nothing.\n\n```typescript\nimport {AsyncDisposableHandle} from \"lifecycle-utils\";\n\nfunction createHandle() {\n    console.log(\"allocating resources\");\n    \n    return new AsyncDisposableHandle(async () => {\n        await new Promise(resolve => setTimeout(resolve, 1000));\n        console.log(\"resources disposed\");\n    });\n}\n\nconst handle = createHandle();\nawait handle.dispose();\n```\n\nUsing the `await using` feature of TypeScript is also supported:\n```typescript\nimport {AsyncDisposableHandle} from \"lifecycle-utils\";\n\nfunction createHandle() {\n    console.log(\"allocating resources\");\n\n    return new AsyncDisposableHandle(async () => {\n        await new Promise(resolve => setTimeout(resolve, 1000));\n        console.log(\"resources disposed\");\n    });\n}\n\nasync function doWork() {\n    await using handle = createHandle();\n}\n\nawait doWork();\n// resources disposed\n// the dispose function was called since the scope of the `doWork` function ended\n```\n\n### `MultiKeyMap`\n`MultiKeyMap` is a utility class that works like a `Map`, but accepts multiple values as the key for each value.\n\n`.set(...)`, `.get(...)`, `.has(...)`, `.delete(...)` are in time complexity of O(1), given that the length of the keys is constant.\n\n```typescript\nimport {MultiKeyMap} from \"lifecycle-utils\";\n\ntype Provider = {name: string};\nconst provider1: Provider = {name: \"1\"};\nconst provider2: Provider = {name: \"2\"};\n\nconst map = new MultiKeyMap<[provider: Provider, name: string], number>();\n\nmap.set([provider1, \"key1\"], 1);\nmap.set([provider2, \"key1\"], 2);\nmap.set([provider1, \"key2\"], 3);\n\nconsole.log(map.get([provider1, \"key1\"])); // 1\nconsole.log(map.get([provider2, \"key1\"])); // 2\nconsole.log(map.get([provider1, \"key2\"])); // 3\n\nconsole.log([...map.keys()]); // [[{name: \"1\"}, \"key1\"], [{name: \"2\"}, \"key1\"], [{name: \"1\"}, \"key2\"]])\n```\n\n### `WeakValueMultiKeyMap`\n`WeakValueMultiKeyMap` is a utility class that works like a [`MultiKeyMap`](#multikeymap), but doesn't keep strong references to the values.\n\nWhen a value is garbage collected, it is automatically removed from the map.\n\n```typescript\nimport {WeakValueMultiKeyMap} from \"lifecycle-utils\";\n\ntype Provider = {name: string};\n\nconst map = new WeakValueMultiKeyMap<[type: string, name: string], Provider>();\n\n{\n    const provider1: Provider = {name: \"1\"};\n    map.set([\"type1\", \"key1\"], provider1);\n\n    console.log(map.has([\"type1\", \"key1\"])); // true\n    console.log(map.get([\"type1\", \"key1\"])); // {name: \"1\"}\n    console.log(map.size); // 1\n}\n\n// wait for the runtime to run garbage collection\nawait new Promise(resolve => setTimeout(resolve, 1000 * 60 * 10));\n\nconsole.log(map.has([\"type1\", \"key1\"])); // false\nconsole.log(map.get([\"type1\", \"key1\"])); // undefined\nconsole.log(map.size); // 0\n```\n\n### `WeakValueMap`\n`WeakValueMap` is a utility class that works like a `Map`, but doesn't keep strong references to the values.\n\nWhen a value is garbage collected, it is automatically removed from the map.\n\n```typescript\nimport {WeakValueMap} from \"lifecycle-utils\";\n\ntype Provider = {name: string};\n\nconst map = new WeakValueMap<string, Provider>();\n\n{\n    const provider1: Provider = {name: \"1\"};\n    map.set(\"provider1\", provider1);\n\n    console.log(map.has(\"provider1\")); // true\n    console.log(map.get(\"provider1\")); // {name: \"1\"}\n    console.log(map.size); // 1\n}\n\n// wait for the runtime to run garbage collection\nawait new Promise(resolve => setTimeout(resolve, 1000 * 60 * 10));\n\nconsole.log(map.has(\"provider1\")); // false\nconsole.log(map.get(\"provider1\")); // undefined\nconsole.log(map.size); // 0\n```\n\n### `LongTimeout`\nA timeout that can be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.\n\n```typescript\nimport {LongTimeout} from \"lifecycle-utils\";\n\nconst month = 1000 * 60 * 60 * 24 * 7 * 30;\n\nconst timeout = new LongTimeout(() => {\n    console.log(\"timeout\");\n}, month);\n\n// to clear the timeout, call dispose\n// timeout.dispose();\n```\n\n### `setLongTimeout`\nSets a timeout that can also be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.\n\nYou can use `clearLongTimeout` to clear the timeout.\n\n```typescript\nimport {setLongTimeout, clearLongTimeout} from \"lifecycle-utils\";\n\nconst month = 1000 * 60 * 60 * 24 * 7 * 30;\n\nconst timeout = setLongTimeout(() => {\n    console.log(\"timeout\");\n}, month);\n\n// to clear the timeout, call clearLongTimeout\n// clearLongTimeout(timeout);\n```\n\n### `clearLongTimeout`\nClears a timeout that was set with `setLongTimeout`.\n\nYou can also clear a regular timeout with this function.\n\n```typescript\nimport {setLongTimeout, clearLongTimeout} from \"lifecycle-utils\";\n\nconst month = 1000 * 60 * 60 * 24 * 7 * 30;\n\nconst timeout = setLongTimeout(() => {\n    console.log(\"timeout\");\n}, month);\nconst timeout2 = setTimeout(() => {\n    console.log(\"timeout2\");\n}, 1000 * 60);\n\nclearLongTimeout(timeout);\nclearLongTimeout(timeout2);\n```\n\n### `State`\n`State` is a utility class that allows you to hold a value and notify listeners when the value changes.\n\n```typescript\nimport {State} from \"lifecycle-utils\";\n\nconst valueState = new State<number>(6);\n\nconst eventHandle = valueState.createChangeListener((newValue, previousValue) => {\n    console.log(\"new value:\", newValue);\n    console.log(\"previous value:\", previousValue);\n});\n\nvalueState.state = 7;\n\n// after a microtask, the listener will be called\n// to make event fire immediately upon change, disable the `queueEvents` option on the constructor\nawait new Promise(resolve => setTimeout(resolve, 0));\n// will print:\n// new value: 7\n// previous value: 6\n\neventHandle.dispose();\n```\n\n### `State.createCombinedChangeListener`\nCreate a listener that listens to multiple states and calls the callback when any of the states change.\n\n```typescript\nimport {State} from \"lifecycle-utils\";\n\nconst valueState1 = new State<number>(6);\nconst valueState2 = new State<string>(\"hello\");\nconst valueState3 = new State<boolean>(true);\n\nconst eventHandle = State.createCombinedChangeListener([valueState1, valueState2, valueState3], (newValues, previousValues) => {\n    console.log(\"new values:\", newValues);\n    console.log(\"previous values:\", previousValues);\n});\n\nvalueState1.state = 7;\nvalueState2.state = \"world\";\nvalueState3.state = false;\n\n// after a microtask, the listener will be called\n// to make event fire immediately upon change, disable the `queueEvents` option on the constructor\nawait new Promise(resolve => setTimeout(resolve, 0));\n// will print:\n// new values: [7, \"world\", false]\n// previous values: [6, \"hello\", true]\n\neventHandle.dispose();\n```\n\n### `splitText`\nSplit a text by multiple separators, and return a result of the text and separators.\n\n```typescript\nconst parts = splitText(\"Hello <and> world [then] !\", [\"<and>\", \"[then]\"]);\nconsole.log(parts); // [\"Hello \", new Separator(\"<and>\"), \" world \", new Separator(\"[then]\"), \" !\"]\n```\n\n### `Queue`\nAn efficient queue implementation that allows you to enqueue and dequeue items in `O(1)` time complexity.\n\n```typescript\nimport {Queue} from \"lifecycle-utils\";\n\nconst queue = new Queue([1, 2, 3]);\n\nqueue.push(4);\nconsole.log(queue.shift()); // 1\n\nconsole.log(queue.first); // 2\nconsole.log(queue.last); // 4\nconsole.log(queue.length); // 3\nconsole.log([...queue]); // [2, 3, 4]\n```\n\n### `AsyncQueue`\nAn async queue that allows you to wait for items to become available when the queue is empty.\n\n`shift` retrieves the first locally queued item, falling back to queues\nin the parent chain (if a parent is set). If no item is available, it waits until one is pushed.\n\nWhen waiting, the request is registered with the current queue and all parent queues,\nand the first one to provide an item satisfies the request.\n\nPushing adds the item to the current queue, unless `forwardPushesToParent` is enabled.\n\n```typescript\nimport {AsyncQueue} from \"lifecycle-utils\";\n\nconst queue = new AsyncQueue([1]);\n\nqueue.push(2);\nconsole.log(await queue.shift()); // 1\nconsole.log(await queue.shift()); // 2\n\nsetTimeout(() => queue.push(3), 100);\n\nconsole.log(await queue.shift()); // 3\n```\n\n```typescript\nimport {AsyncQueue, sleep} from \"lifecycle-utils\";\n\nconst queue = new AsyncQueue([1, 2]);\nconst child = new AsyncQueue([9], {parent: queue});\n\nconsole.log(queue.length); // 2\nconsole.log(child.length); // 1\n\nawait Promise.all([\n    child.withItem(async (item) => {\n        console.log(item); // 9\n        await sleep(1000);\n    }),\n    child.withItem(async (item) => {\n        console.log(item); // 1\n        await sleep(1000);\n    })\n]);\nconsole.log(queue.length); // 1 - [2]\nconsole.log(child.length); // 2 - [9, 1]\n\n\nconst childPromise = child.withItem(async (item) => {\n    console.log(item); // 9\n    await sleep(1000);\n});\n\n// drain the child and route returned items to the parent\nchild.drainToParent();\nchild.forwardPushesToParent = true;\nconsole.log(queue.length); // 2 - [2, 1]\nconsole.log(child.length); // 0\n\nawait childPromise;\nconsole.log(queue.length); // 3 - [2, 1, 9]\nconsole.log(child.length); // 0\n```\n\n### `scopeExit`\nCreate a scope exit handle that will call the provided callback when disposed, to be used with `using` or `await using`.\n\nFor example, this code:\n```typescript\nimport {scopeExit} from \"lifecycle-utils\";\n\nfunction example() {\n    using exitHandle = scopeExit(() => {\n        console.log(\"exiting scope\");\n    });\n    console.log(\"inside scope\");\n}\n\nasync function asyncExample() {\n    await using exitHandle = scopeExit(async () => {\n        await new Promise((resolve) => setTimeout(resolve, 100));\n        console.log(\"exiting async scope\");\n    });\n    console.log(\"inside async scope\");\n}\n\nexample();\nconsole.log(\"example done\");\nconsole.log()\n\nawait asyncExample();\nconsole.log(\"asyncExample done\");\n```\n\nWill print this:\n```\ninside scope\nexiting scope\nexample done\n\ninside async scope\nexiting async scope\nasyncExample done\n```\n\n### `registerFinalizer`\nRegister a finalizer for a given target, so that the finalizer is called after the target is garbage-collected.\n\nA finalizer can be a function to call, an object to dispose, or a promise that resolves to one of the previous types.\n\n```typescript\nimport {DisposeAggregator, registerFinalizer} from \"lifecycle-utils\";\n\nconst disposeAggregator = new DisposeAggregator();\ndisposeAggregator.add(() => console.log(\"disposed\"));\n\nlet obj: {} | null = {};\nregisterFinalizer(obj, disposeAggregator);\n\nobj = null; // get rid of a reference to the object\nawait new Promise((accept) => setTimeout(accept, 1000 * 10)); // wait for the garbage collector\n\n// disposed\n```\n\n```typescript\nimport {registerFinalizer} from \"lifecycle-utils\";\n\nlet disposed1 = false;\nlet disposed2 = false;\n\nlet obj: {} | null = {};\nconst handle1 = registerFinalizer(obj, () => {\n    disposed1 = true;\n});\nconst handle2 = registerFinalizer(obj, () => {\n    disposed2 = true;\n});\n\nconsole.log(disposed2.finalized); // false\n\nhandle1.dispose(); // remove the finalizer\nobj = null; // get rid of a reference to the object\n\nawait new Promise((accept) => setTimeout(accept, 1000 * 10)); // wait for the garbage collector\n\nconsole.log(disposed1); // false, because we removed the finalizer\nconsole.log(disposed2); // true\n\nconsole.log(disposed2.finalized); // true\n```\n\n### `sleep`\nWait for a given duration.\nAn optional `AbortSignal` can be provided to abort the wait.\n\n```typescript\nimport {sleep} from \"lifecycle-utils\";\n\nawait sleep(1000);\n\nconst controller = new AbortController();\n\nconst promise = sleep(1000, controller.signal);\ncontroller.abort();\n\nawait promise; // rejected with controller.signal.reason\n```\n\n### `AbortablePromise`\nA Promise that can be rejected by an optional `AbortSignal`.\n\nThe executor can return a cleanup callback that will be called when the promise is resolved, rejected, or aborted.\n\n```typescript\nimport {AbortablePromise} from \"lifecycle-utils\";\n\nconst controller = new AbortController();\n\nconst promise = new AbortablePromise<number>(controller.signal, (resolve) => {\n    const timeout = setTimeout(() => resolve(42), 1000);\n\n    return () => {\n        clearTimeout(timeout);\n    };\n});\n\ncontroller.abort();\n\nawait promise; // rejected with controller.signal.reason\n```\n\nAn existing Promise can be wrapped with an abort signal using `AbortablePromise.withSignal`:\n```typescript\nconst promise = AbortablePromise.withSignal(\n    controller.signal,\n    doSomething()\n);\n```\n\n`AbortablePromise` also provides abortable versions of `Promise.all`, `Promise.race`, `Promise.any`, and `Promise.allSettled`:\n```typescript\nconst res = await AbortablePromise.all(controller.signal, [\n    promise1,\n    promise2\n]);\n```\n\n### `withSingleFlight`\nCalling `withSingleFlight` runs its callback at most once in parallel for the given `scope` values,\nwith parallel callers sharing the active callback's result.\nThe result is only shared with other callers while the callback is running; later calls will run the callback again.\n\nThe callback holds an exclusive lock for the given `scope` while it runs.\nThe callback accepts a `signal` argument that indicates when it should abort its execution.\nAborting a caller makes its promise reject immediately,\nbut only aborts the running callback's `signal` when no other callers are waiting for its result.\n\n```typescript\nimport {withSingleFlight, sleep} from \"lifecycle-utils\";\n\nconst scope = {};\nlet callCount = 0;\n\nasync function getValue() {\n    return await withSingleFlight([scope, \"myKey\"], async () => {\n        const value = ++callCount;\n        await sleep(100);\n        return value;\n    });\n}\n\nconst first = getValue();\nawait sleep(10);\nconst second = getValue();\nawait sleep(10);\nconst third = getValue();\n\nconsole.log(await first); // 1\nconsole.log(await second); // 1\nconsole.log(await third); // 1\nconsole.log(callCount); // 1\n\nconsole.log(await getValue()); // 2\nconsole.log(callCount); // 2\n```\n\n```typescript\nimport {withSingleFlight, sleep} from \"lifecycle-utils\";\n\nconst scope = {};\nlet callCount = 0;\nlet aborted = false;\nlet done = false;\n\nfunction getValue(signal?: AbortSignal) {\n    return withSingleFlight([scope, \"myKey\"], signal, async (signal) => {\n        signal.addEventListener(\"abort\", () => {\n            aborted = true;\n        });\n\n        const value = ++callCount;\n        await sleep(100);\n\n        done = true;\n        return value;\n    });\n}\n\nconst firstController = new AbortController();\nconst secondController = new AbortController();\n\nconst first = getValue(firstController.signal);\nawait sleep(10);\nconst second = getValue(secondController.signal);\n\nfirstController.abort(new Error(\"Canceled\"));\n\ntry {\n    await first;\n} catch (err) {\n    console.log((err as Error).message); // \"Canceled\"\n}\n\nconsole.log(callCount); // 1\nconsole.log(done); // false\nconsole.log(aborted); // false\n\nconsole.log(await second); // 1\nconsole.log(callCount); // 1\nconsole.log(done); // true\nconsole.log(aborted); // false\n```\n\n### `Retainer`\nA utility for retaining a resource while it's being used,\nand for draining it by blocking new retain requests and waiting for existing retains to be released.\n\n`tryRetain` acquires a retain handle if no drain is active or pending.\n`acquireDrain` prevents new retain handles from being acquired, waits for existing retain handles to be released,\nand resolves with a drain handle that keeps the retainer drained until disposed.\n\nMultiple drain handles can be held in parallel.\nNew retain handles are allowed again when the last drain handle is disposed.\n```typescript\nimport {Retainer, sleep} from \"lifecycle-utils\";\n\nclass MyClass {\n    private _retainer = new Retainer();\n\n    async useResource() {\n        using handle = this._retainer.tryRetain(() => new Error(\"Resource is draining\"));\n        \n        console.log(\"using resource\");\n        await sleep(1000);\n        console.log(\"done using resource\");\n    }\n\n    async drain() {\n        console.log(\"awaiting drain\");\n        using drain = await this._retainer.acquireDrain();\n\n        // no retained usages are active while the drain handle is held\n        console.log(\"drain started\");\n        await sleep(1000);\n    }\n}\n\nconst myClass = new MyClass();\n\nconst usePromise = myClass.useResource();\nconst drainPromise = myClass.drain();\n\nawait myClass.useResource().catch(console.log);\nawait Promise.all([usePromise, drainPromise]);\n\n// using resource\n// awaiting drain\n// Error: Resource is draining\n// done using resource\n// drain started\n```\n\n### `ScopedRetainer`\nA scoped version of [`Retainer`](#retainer) that coordinates retains and drains independently for each scope.\n\nA scope consists of one or more values that identify a resource or context to retain or drain.\nDraining one scope does not affect other scopes.\n```typescript\nimport {ScopedRetainer, sleep} from \"lifecycle-utils\";\n\nconst retainer = new ScopedRetainer<[clientId: string]>();\n\nasync function useClient(clientId: string) {\n    using handle = retainer.tryRetain([clientId], () => new Error(clientId + \" is draining\"));\n\n    console.log(\"using \" + clientId);\n    await sleep(1000);\n    console.log(\"done using \" + clientId);\n}\n\nasync function drainClient(clientId: string) {\n    console.log(\"awaiting drain for \" + clientId);\n    using drain = await retainer.acquireDrain([clientId]);\n\n    // no retained usages for this client are active while the drain handle is held\n    console.log(\"drain started for \" + clientId);\n    await sleep(1000);\n}\n\nconst usePromise = useClient(\"client1\");\nconst drainPromise = drainClient(\"client1\");\n\nawait useClient(\"client1\").catch(console.log);\nawait useClient(\"client2\");\nawait Promise.all([usePromise, drainPromise]);\n\n// using client1\n// awaiting drain for client1\n// Error: client1 is draining\n// using client2\n// done using client1\n// drain started for client1\n// done using client2\n```\n\n## Contributing\nTo contribute to `lifecycle-utils` see [CONTRIBUTING.md](https://github.com/giladgd/lifecycle-utils/blob/master/CONTRIBUTING.md).\n\n\n<br />\n\n<div align=\"center\" width=\"360\">\n    <img alt=\"Star please\" src=\"https://raw.githubusercontent.com/giladgd/lifecycle-utils/master/assets/star.please.roundEdges.png\" width=\"360\" margin=\"auto\" />\n    <br/>\n    <p align=\"right\">\n        <i>If you like this repo, star it ✨</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n    </p>\n</div>\n","readmeFilename":"README.md"}