{"_id":"@apiratorjs/di-container","_rev":"52-adcd649e1337fda3ef35a70ef4b06390","name":"@apiratorjs/di-container","dist-tags":{"latest":"4.2.0"},"versions":{"1.0.0":{"name":"@apiratorjs/di-container","version":"1.0.0","keywords":[],"author":{"url":"https://oleksiizaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.0.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"8e941c7b763c5f41d4aa772f7249aa002b398e2d","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.0.0.tgz","fileCount":23,"integrity":"sha512-lao23Q57VCzDmDN1gZ/6T6xVWLN3+gi3Zla9HVPfSI959TXV2gWH73gjvWWD29JY2+X0iDIUBZ15AuKDlzQLBg==","signatures":[{"sig":"MEQCIC/aCAMGU5dVhRmGfV4XJN3/iofLjWn22JuF9P68aD/EAiBN8QhtEZ6LXiHhSUbVWeEhCWsDwKh8S98pHLWP5itXCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30320},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"0a711154b967519c21bcf75a1580a9825023166d","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"20.18.2","dependencies":{"async-mutex":"^0.5.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.0.0_1739108681990_0.3833386041438178","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@apiratorjs/di-container","version":"1.0.1","keywords":[],"author":{"url":"https://oleksiizaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.0.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"18dfccaca31772e74c58862b5a670f30738020a7","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.0.1.tgz","fileCount":23,"integrity":"sha512-M3xdh6btcAs+FcN7oBQkWnwnTvJwG9ySDuadeo/lv9x1emuYLl+Dv71YpwsaIefkPzyF6kQ5t6v8pSziNc7aNw==","signatures":[{"sig":"MEYCIQDELmfKvBMBUZLEkh4VeUVf9wHWpgpPoYcgVs9yzOXINwIhAIC6J1LAS9725vLI87L5/tyKqFdCTrRdei6yI4h+G0sk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30320},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"c179c7c9e0e85767c60720c6b755c8e259f6ed4e","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"20.18.2","dependencies":{"async-mutex":"^0.5.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.0.1_1739108945788_0.10123401974152269","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@apiratorjs/di-container","version":"1.0.2","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.0.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"620fc2c2df5159659b3b4ab0320d43c8dae2c675","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.0.2.tgz","fileCount":23,"integrity":"sha512-DMZCXLcCBovGiQSrjZwJaWT3rP+Fpy83hgdfY6IC7S48Q1JgjRma8o7qKmk3XK8oKlbx+p3SXnBAbWHv43BK6w==","signatures":[{"sig":"MEQCICp8sa79drDwuSlymphCZSYCDOSVWPGas+DtOKvOCvPKAiB/aW8ITU6lWg1B2DpZx+3PMGf5qz5XszGqbSh38hcq7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30640},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"5542a62f6ff907ad4538a22ccbd0edbc8b26664c","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"20.18.2","dependencies":{"async-mutex":"^0.5.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.0.2_1739109039994_0.4043367347825162","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@apiratorjs/di-container","version":"1.0.3","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.0.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"76e7393385b60a51344225435af83a6ceb7ae314","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.0.3.tgz","fileCount":23,"integrity":"sha512-/TS4QD6VCYOZNICvNOEQolozzMaYTllYF7V2ITaghpmOE9uuXs8h1tKJ1cuntS8MoXgHjgvbVP8+4u+HIxPkow==","signatures":[{"sig":"MEQCIAUBJbIIxUcbOsetM/2moVffxZL0LzPpZ14KZoc27MQcAiB/0ASkP4eNodLmRqOaik+Q49acduNfaU2wMtUoPHWoJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30642},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"fd385222dd656b5582b5d1c1c9ec650cf5993c22","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"20.18.2","dependencies":{"async-mutex":"^0.5.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.0.3_1739110317976_0.9771002044168859","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@apiratorjs/di-container","version":"1.0.4","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.0.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"1a29b06e4bafc75843afb684f4bfd70511b99271","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.0.4.tgz","fileCount":23,"integrity":"sha512-FPWRfnk0TG68gk5iy26NZ+aG4xiA8tH3+9EEuKkY4MOqaWh8/q/SVbJOCceuZ0jlfgMqEzng+1UhorhNd8EgUg==","signatures":[{"sig":"MEUCIQCZhG940f0E5taaz3VmSBqSGb3Pd01+l+j3TmMJnkV8cgIgA+kw8BMlDfef/Rv6/D1OSc5vN3yhtWi8oMoNKph9Xp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30636},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d5e57d17896855c2d575947229ac6e7b1ef1e724","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"20.18.2","dependencies":{"async-mutex":"^0.5.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.0.4_1739174636423_0.5789832330096751","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@apiratorjs/di-container","version":"1.1.0","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"806525badc3b60cb00cd478b14299d0e55b04d6d","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.0.tgz","fileCount":23,"integrity":"sha512-JtBiDjDjv2ntXz18/YKQQR/mGdDiS2IHssC0dMISg1KFUITg2pVkNrTtJLFj/0meyq/b2iQ0fVBmDeo93geFWw==","signatures":[{"sig":"MEQCIEeBn0kRsj/HdNAyO1loaISFONQNH26nqfkhVoQIHD5pAiAZlJc74XZX1u9dfpYHzpDNEvMZ1XsSRx8SnWy2/X0a9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30615},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"5175f1f5aa732b29f6d4cf087541cb054457dff4","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^1.1.1","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.0_1740928300179_0.6057459680600643","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@apiratorjs/di-container","version":"1.1.2","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"e68bf02840d9b0dfdf7ff994172f215d88a1e0be","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.2.tgz","fileCount":23,"integrity":"sha512-+rYFoydGDTxf6R/H/7EV4y7N/EAhW3FnSGRcUr9gGGKFQVvWVlWSpWcXBRSysHUnpR83G0v7+JPY0ArlPAv+tA==","signatures":[{"sig":"MEYCIQDrFl4swdmLmxwGr4dTZxsebk2XW229NkdGQ+vu/EtOAAIhAIyiMS7KCF6Uq//G41rS+ZDdWQk7aLclAtq3aGK33AaF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30615},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"4bbd7336777d90089c3aefc448c26f825d4249f8","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^1.1.2","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.2_1740929586888_0.45768707343390225","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@apiratorjs/di-container","version":"1.1.3","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"b61386f69e969306c219a7b1858ec154f00a87ee","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.3.tgz","fileCount":23,"integrity":"sha512-HnecDMppY3Pf0Kfr4aL8c83JFLK9zxNTGAZcPk2KAJu/s5xD32/5EurZ2iBTyvzLEaxp2EyuOknHPMAtSIGzuw==","signatures":[{"sig":"MEUCIEcnwqyg4J3UV3UYEaG5d7cNqJ5FZFe5c5aL3VIPADadAiEArhr756n4IT+TD0iWbM9t9ovZ1aTweYjbVEgZXDyMuNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30615},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"b5e83c2129d4926cf3d421035c47b5b05014a6e7","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^1.2.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.3_1741015365086_0.7708792364234913","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@apiratorjs/di-container","version":"1.1.4","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"7f1a308fd01302fed6ea0683e1bb4979dda65b68","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.4.tgz","fileCount":23,"integrity":"sha512-vSYrF/APt1Zv5OiXsm+GtqwpwpoFmkSnBX8N4SOuYWzYcYWOieBrLoOWUQ7UZ05uPPLHtxP5foKfRovqaa3gqw==","signatures":[{"sig":"MEQCIHkMQnqgMooopX0QL9fmZIgNPB6luojXrjcWltWcLjTWAiB212EdF81sHJ1hXbUvV+4j+CJ+YadqZ0Vn1hJ+gv71ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30395},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"9b70d998fe38254531341e9d20937571cba5e755","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepare":"npm run build && node --test dist/test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^2.0.0","@apiratorjs/async-context":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.4_1741157495465_0.24509922645882498","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@apiratorjs/di-container","version":"1.1.5","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.5","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"0b361d322ad5bc6260acc30db31890a84fcd1785","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.5.tgz","fileCount":23,"integrity":"sha512-o+wL9WcXOS7OIh7JuB+9ECfbowfShEcC2Bu+FM9Ed29MyhaB7IXiDoGir7I2D9g5suJsktSueB/gbZHgLSRDaw==","signatures":[{"sig":"MEUCIHT5aWQ6jegHe8WKQQtKWa7siewea40HtoGYquSBT0olAiEAr4glLv/blalRWj65Y1s/EkFIjStWbudY0jXAkX7LUNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30389},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"9b70d998fe38254531341e9d20937571cba5e755","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^3.0.0","@apiratorjs/async-context":"^1.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.5_1742064683459_0.7531549476081469","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@apiratorjs/di-container","version":"1.1.6","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.6","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"81e8f05497a61b7a3683eafc2b330c1b6a79cb67","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.6.tgz","fileCount":23,"integrity":"sha512-MRFLdncYr9r5bicEGT1XsHTWBkiuq61xG3ayvMKEBYfXnYh2ZZURTWh2R/T4yhujfp+HgiUI4KaJzK8vSRkGUA==","signatures":[{"sig":"MEUCIC4nI0jSAMJn9M6rmf+Cr4grBKa2wB+mTKkToVd4zxhiAiEAzsUrUY0J/deT7O44D7qCe+Tntwcu3kQFXdflFTbzGHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30372},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"b2d818334aa2fd974872565439665f3c4e472612","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^3.0.2","@apiratorjs/async-context":"^1.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.6_1742662855491_0.7304864728338212","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@apiratorjs/di-container","version":"1.1.7","keywords":["dependency injection","di","di-container","container","asynchronous","async","lazy initialization","singleton","scoped","transient","typescript","nodejs","framework-agnostic","async-context","lifecycle","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.1.7","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"0373b17e87368ff7ed042f7aef987c5755ee7631","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.1.7.tgz","fileCount":23,"integrity":"sha512-uQvnEcS5JkHuEJXqeCMD4arZiGqRQGQl9LcMBmEem/lhJgznOEdVGhR4Ha74cBrNAO9gzb4Af+dBzHTu9wJIDA==","signatures":[{"sig":"MEUCIHXbXy73f11HpfXpqdox5cPH544n3EgoQZzgAwJgGCQQAiEA7+r3/Az64Xfgxy4HFa4WdlANvIMRGx9DY/iopHM8X08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30372},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"fd3a265055b148c264c08b653b42010e39aab52a","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight, framework agnostic, asynchronous dependency injection container for JavaScript and TypeScript, featuring lazy initialization for services. Supports singleton, request-scoped, and transient service lifecycles with built-in async context mana","directories":{},"_nodeVersion":"23.7.0","dependencies":{"@apiratorjs/locking":"^3.0.2","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.1.7_1744314000338_0.09210201245057159","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@apiratorjs/di-container","version":"1.2.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"02fd1c036f4191346d8e3628a5aacc22518fe10f","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.1.tgz","fileCount":31,"integrity":"sha512-dgWDjQQfaIbI513Kme9O0mXq6I6Ote3u231nFM9gM+sa9pLrxcX8uPqEAH57jUIX5vTuV+iiSStCSlFmwlpqXw==","signatures":[{"sig":"MEUCIQDxlC8r5cy6dXYbPrdw1NP8Ydc9ZT4VdvyuG/Hjl/75GwIgYjQoVm5x+R3jUb81d7mdpn5IrgoOD10vSh4boMD9C9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51495},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"91309c06a9b4fa46239b68f135f72ac29034492e","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^3.0.2","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.1_1744371135213_0.02735208098763553","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@apiratorjs/di-container","version":"1.2.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"db77a470b0f7130c4b2bb00fa9246de237a17bb8","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.2.tgz","fileCount":31,"integrity":"sha512-jV5G/T5C6F4Jw1M+EPhMSH/PtF1dpySuflqrOYuPKV2irCb/w8tCL84NpkZo11Hb6RYo3PtPf3FrG6+4nCqSUw==","signatures":[{"sig":"MEUCIGnn8dXdaCS5cfZY36KQD7LYgD0/NHSnRVX5X/SKH4+mAiEAtVs2C3Ya4jetkKpNeYFnXlwQ6X8/Jbr7dr1ASfXhPI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51623},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d0140733342e24a4ff46f08d75b468149d5558f0","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^3.0.2","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.2_1744371334940_0.5983723944933681","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@apiratorjs/di-container","version":"1.2.3","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"407b6f6d766fb9adb75a0fa5fae8c88c3710790f","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.3.tgz","fileCount":31,"integrity":"sha512-LIZZiDE+OWYuIM2+QFjYIQZ1MgzThPEzTq1FC2cGjPXs6azobbbFFBRVQWuNzQCwFkJR3I+WOkvxycVpsGM55g==","signatures":[{"sig":"MEUCIHxtzQYXGXcrM+Qijcdvln7r5d4VERI+D/ELbpDKfJV9AiEAhyXWYgGlljqAFVLloLvJUhnEwcWi00xS0bTzrrkRc+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51623},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"273e10f1200422ed0142cdbaf0b4cd421fcd3ba6","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.3_1744890607074_0.9870353082887333","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@apiratorjs/di-container","version":"1.2.4","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"dbe00cf03ad1acf63b1982dad946c072c0f387d7","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.4.tgz","fileCount":17,"integrity":"sha512-WaA75+gshYJgdpzzhyWZF1HdzG4UeC3i0XdvDe1vv3ezIIrSTTasxDXg8FJZg/897drP/MpXQ48OlodvJhrhiA==","signatures":[{"sig":"MEQCIGSMHMzlwRSsFDF0q4cZV+zbJWusf9Wdk0MAtTRM63p4AiARTy8RP46Xp8AZSR+fYHRsNEcR+/ZUCb8xRGZVHLWx/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42279},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"3a0969554950cb6fb9dae3b6f498e6e2a72a1642","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.4_1745677612548_0.9701432506902614","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@apiratorjs/di-container","version":"1.2.5","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.5","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"58b412c5af49bda8975705beef8ffa89aaea9625","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.5.tgz","fileCount":31,"integrity":"sha512-ctwZIgeA/NqCld9bTRflE7jP9/5aCc8/JRCKxlRrpnDdTp4iye3ijKVLv0gJs5QsL+eCzyISvn3EqsWapwTzQw==","signatures":[{"sig":"MEYCIQCkShIHLPoJJWuJybIWWeYj7iXcJ19SsX7DyBCqxL78tgIhAPD/OJeGeaXX1fDpQ8kBGCdUvwcAlf0wDBrI0Tc1hfDk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52328},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"bd5e2cd8a9267235b5ec38da12e58caeea319f51","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.5_1745677976010_0.28871203482350505","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@apiratorjs/di-container","version":"1.2.6","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.6","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"b3e7525f1eadcebaa6e29cfb4df0c8d1e46a949e","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.6.tgz","fileCount":31,"integrity":"sha512-cWfoghW4zVKGpqmZA2BPZcxhqrCXlekQDnTwQgM6kDwdS+5H4n93L1+ETnGaMBuNorSCARNr7ik1h606ohvkTw==","signatures":[{"sig":"MEUCIQCUnKA/Uv8MVK3+EEhMTI5JQSI0NaANWlqN8C91Kj+YrQIgWkzD96cZk4VYZXFiSagd6ZSnKiaGoZBUMuWOKsW2nIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52328},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"bd5e2cd8a9267235b5ec38da12e58caeea319f51","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.6_1745679651189_0.46275805274533144","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@apiratorjs/di-container","version":"1.2.7","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.7","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"0f7f070996608fefceab5b12314871d131897e3c","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.7.tgz","fileCount":31,"integrity":"sha512-L0xoFlPdoQ5Ww5VO4QKIj+ClapMC5M8L9+EaWTeKYtJv+jl9fpFwzFRIksq/m1E9PUawnlitkI9f6npQq/rl4g==","signatures":[{"sig":"MEQCIArAJM9ZKb3SuYrJdRenx+W6QRnH2nL3CL8FKD3WvoMUAiAA+nUdqS+t3XjryEWCM76QY3Td+RkNJIO4GD8zQko4mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51871},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","require":"./dist/src/index.js"},"./types":{"types":"./dist/src/types.d.ts","import":"./dist/src/types.js","require":"./dist/src/types.js"},"./errors":{"types":"./dist/src/errors.d.ts","import":"./dist/src/errors.js","require":"./dist/src/errors.js"}},"gitHead":"bd5e2cd8a9267235b5ec38da12e58caeea319f51","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.7_1745680279257_0.28356768117564357","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@apiratorjs/di-container","version":"1.2.8","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.8","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"a47b921116fef710ba69c6f9231711c0fd2ab224","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.8.tgz","fileCount":31,"integrity":"sha512-rajISlcbsj8loDC7nlgoKUAai9kGkIL8t+wcMo0viBJUbmQ/yR3xBHAUBvyDME5K1knHbW1hQz+oOmwQAbqsMw==","signatures":[{"sig":"MEUCICbIjTePf+Asm1l4b0eFrBUlKd2XjiHMOj0nQzWzgsytAiEA+4lVcNuKOa/t742f0fCgSv9WpnpbDYOlKhAdwakcl4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52328},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"bd5e2cd8a9267235b5ec38da12e58caeea319f51","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.8_1745680837955_0.7928716724543632","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@apiratorjs/di-container","version":"1.2.9","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.2.9","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"5aa40eba829f7e025e446807286ef4fe1cdcd9fd","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.2.9.tgz","fileCount":31,"integrity":"sha512-6YHqpgxGNiZkgKICTd7GdOA8NeFXtSiUYgNBcMzHPtIiAEQGW8dPt5/zHda3lzaaLpntUE1GiZMs8t62b1rMsw==","signatures":[{"sig":"MEUCIH3WiZ2v+/earD3p8b1BfvgbJGmtY6uYSsUER6tdPY7tAiEAjtz0sk0CyClwmPwKccuI59ntWRuFk77kP13yqlIfs5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52328},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d866875412377b6a7ed4b2e58ac186d7c56caa5a","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.2.9_1745682825319_0.1229566831726876","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@apiratorjs/di-container","version":"1.3.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.3.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"75e0d008979a914b02010e1845a5fa542eb3ca67","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.3.0.tgz","fileCount":31,"integrity":"sha512-on5F1e/6uUpB2RsGKBwan8OK1qnvoeFYMhpdqwBqiYcySOOcsunGjRx3tIe/6C76H7N5AlWcSWCCnH4hpbCaDQ==","signatures":[{"sig":"MEUCIQDm1xSUAOYSrtBBUHfGl8pTEjoeAILqr/Yb9KbjFYoWrQIgVUm4RpBVCTApeA6420TjI5CB0VBBsXUevl4IR2wB274=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53678},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"11fadcd2240ee338e6b0f1e2fc22687528ab944d","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton, request","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.3.0_1745710579074_0.48693047317425675","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@apiratorjs/di-container","version":"1.4.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.4.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"5354ba4bdd26809fe84f7647554a11894378a21b","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.4.0.tgz","fileCount":31,"integrity":"sha512-Bxi7nefLgh7S9ELnZ1eY5+hLvPIzD0L0bmYnrEfGfbTOvbx0JeSF+ZQvY3OEoOQ4f2QD1qzig8mo5kwg43UWKQ==","signatures":[{"sig":"MEUCIFBqSEt123Sz2gmIhmAsWve+66fB5cW5tK40rtbkC/VzAiEAyE3wsuCqqT+tTMBLaqMfEyNaRA19r4sSmKRURkmrOPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55940},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"73d138a2694b9bf1a1123f9139467a785b388cc7","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton with bot","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.4.0_1746171820873_0.06050308945436367","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@apiratorjs/di-container","version":"1.4.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc"],"author":{"url":"https://oleksiizaitsev.com","name":"Oleksii Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@1.4.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"363b44beae223a4fd0323d70d8c1c4c7078b931f","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-1.4.1.tgz","fileCount":31,"integrity":"sha512-2wEa2UQ5wyI/rwyxSPoycgyyyJ9zsDTCy2fB5V3hOtOmRi0IaC/hxf+cvz6WfI7bGS5z/m4ITkH7tqkz4pgNbQ==","signatures":[{"sig":"MEYCIQDO0USPC0ewWS1ghZr4CQsMMDggNVDIdUeXENOiK1WSawIhAIQlIIaOLHJ5pHYaR46SWp6QnBzaqQy9tnj9fO5f6lO8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56205},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"79a6bb4f936ccfa3a3f96b845bb32a90db6e0886","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton with bot","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_1.4.1_1746173379294_0.16262711480650216","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@apiratorjs/di-container","version":"2.0.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.0.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"37d73d74d8e668a61853fdf4517172015918c095","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.0.0.tgz","fileCount":35,"integrity":"sha512-Tzs9qz7IccfcnDV1Ulbc4lwdkKjC7TCXjv6ddDidSR7TJ5ErMhvz4N4vScOyYsWjxqZH1IPQrcbLqEIeNHmidA==","signatures":[{"sig":"MEUCIFtoMwt36IanfxGAPgwjdArnckCUcFuKzU45y6necAdUAiEAjG7CNeRgdbvVgrf8KOLoWWw5EwP3WGAfyO4u54kw0Uo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86187},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"088fd321c4171ed4c3da7f1aeabcfad9ac6c13b1","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.0.0_1757248678667_0.3348890710130803","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@apiratorjs/di-container","version":"2.0.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.0.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"7224ae12840e3aaa82e8c28dcbd4969de5700872","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.0.1.tgz","fileCount":35,"integrity":"sha512-+T9i5zsJh+/simQZPKqPI2NjIp2KuJ6+4CT+AY7J2IhE64Sp9rBlXJh5L3tubBWyfl1IG+46UygdRa1w8X4ggQ==","signatures":[{"sig":"MEUCIGR9jbghuHWo5k91lr/OpNbLd95MerbNaZ3Mx1dxdko2AiEA6q2gCb6KoE1OMMTM8uBxPccgk/iXrWYFiAOLEr9GhgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86865},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"eeac35df614f83825d7de4f4dfe03be4caa08e5b","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.0.1_1757249187982_0.6155423189090155","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@apiratorjs/di-container","version":"2.0.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.0.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"4e56a32459a32107eff11f8663c307d432ad43c1","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.0.2.tgz","fileCount":35,"integrity":"sha512-vy3K/UfK3rVzGGUxU+KzeG1UgYvq+CAYt/aaj/mjJoAxrrVSZOe5sWk46yw4aC2troDeYgySeyWkB986NILVvQ==","signatures":[{"sig":"MEQCIF2eOMC3ZJWUVyunZiPpRphtyiWN8dtJOkwDUsHV2BTbAiB82WOqDXEDvHkdgRl2mMVUDucR9Vbyy+WAvevyZHFbVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86524},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"1bf13697c5ad441ce39786bfa0068a5c7dbeb270","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.0.2_1757249418722_0.8304876347799703","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@apiratorjs/di-container","version":"2.1.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.1.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"470d962f9781fc9070521058c41fb06a504cdcbe","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.1.2.tgz","fileCount":39,"integrity":"sha512-dntdUnjyeMGXkSYYdK1gDILpwQmWvoea3EcnGIE/K7AmvQO07CSoouROYuig/Az33YkZSMoOYaoFQfdIlN0vfg==","signatures":[{"sig":"MEQCIBhJOL//Zj0NKTWx4O2Nrx/rbiwPiESMtClpmhi2lKf8AiBVu+yJBeaWn5t8P39KOarKLKhojr0+i1uEfIaBe+wYwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87946},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"e868c4b61c1d998b6e4a1744642032d45fffa7a6","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.1.2_1757440051912_0.7190455471704646","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@apiratorjs/di-container","version":"2.1.3","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.1.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"bb5f9759eb8e37fbf9b16ebf854af06a580d630a","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.1.3.tgz","fileCount":39,"integrity":"sha512-4uQAtspD+64YSOF1NmlM7MNhB6LndfeVaxEsxkUli+zWLCXhnBCThcmoe+x/RqBF3JS81FMMXmI1g2Y0+FyLLw==","signatures":[{"sig":"MEUCIFdTnJO1mwsNRdzApUYnZqdwmnjKj5gIpYZBSVCtV9oHAiEA5zn1mD4JE94eafUVjrzXXlRjTFHdx+AmIgyrxWxldEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88731},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"c18493921c11576b1e92663a930cd632b72b0932","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.1.3_1757440922641_0.7388079566975945","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@apiratorjs/di-container","version":"2.1.4","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.1.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"7eccfb0befac75b8e55d9d1336904b22295f7669","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.1.4.tgz","fileCount":39,"integrity":"sha512-yjxdt4Z+t6czb2zK/aWVC++I92lgmZsucxYjPrw2wIGEUHXxXWzklHVIv0BcufV7edfyCGIpiDHm9nCCz4A37w==","signatures":[{"sig":"MEUCIFvU0ZlzBq14/N5weZJFR88BlQLF17XEYU69/G3FDUYkAiEA7/Cxw1A0czJS2x510xnB1kcGNMuKERCAQJ3m3tBd5DM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92217},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"ae0e65df731888ce36d038d8259078889ca24908","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.1.4_1757447666130_0.8934029955683462","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@apiratorjs/di-container","version":"2.2.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"3ae652e862ff918b3a40dba34938ee8c636d9369","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.0.tgz","fileCount":39,"integrity":"sha512-0mpb/XPmDWYOb0hbWuN0p5Q/+ZYFhEhbNSI60Wi72Idtd+mIlCdm40jeA56y/6SxLIsiIIHNEevcCXA4Bq41VA==","signatures":[{"sig":"MEUCIQDg1wwyrB8Bwc2VuVugDNMUPqJ5ZUHxkgspAW2OwAuXwAIgGDbZetymwLFoIemn4Iq/r5LXi2PDS3DVm7SmU+E5Rmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89428},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"0befe0f1d2fa1ac03fbc0ae10de07980558b5f84","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.0_1757451829529_0.3995758350251237","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@apiratorjs/di-container","version":"2.2.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"46470a6d33ec67af874889b80b576de9bfe2c7c1","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.1.tgz","fileCount":39,"integrity":"sha512-7JZYQy4CLqs8cbFH5fflXWaGd+VsuOixJ+S9IgfR0RGNS8ovBxj/WciuPJQBETy+REdZaujnkFnh4eq7o32SjA==","signatures":[{"sig":"MEUCIEN9VA47goljHAl6T53CQ1aE0KZ5soCLQXfQl3G5lVZeAiEA+TYU1cH3XsU2UaarInXnOCnjyT0uaEtfV/90zsfMjJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89847},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"31e2eb65474f757bd4bad1fbd60b4dca86b9ed24","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.1_1758459350530_0.10631775666174792","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@apiratorjs/di-container","version":"2.2.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"ab7ba4fd3d108205bb6fe900f0a08c1183c6368d","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.2.tgz","fileCount":39,"integrity":"sha512-PgQf9wzoNnulCbKLrzKffysh1ObakbE3cJdgiCYT+FdNLkdgglCDyAXuQwQzwyAJzk11LU7DSSMwDBq7MKSl5Q==","signatures":[{"sig":"MEQCICmVlORAKcLy6o7F85Cu231EnOTtMTkjw12hkJG5wIk8AiBjK8QvgIH4FXf9I8vhidVfGYeC9veOEjJaHa36oC/Paw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93220},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"586f0da480ab1e1caacca35edfd3ce2dd52efd01","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.2_1758463791823_0.9603185149427387","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@apiratorjs/di-container","version":"2.2.3","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"db800bf498f902499bbe0427f6b595bb607582d8","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.3.tgz","fileCount":39,"integrity":"sha512-lS32vSELgg8p58/uSp+P2A4OuHS0i75vf6xJ7Om/VB3rn1cC0QfS+CmWnbHTvNny3p5gCQC9gfIzXc8J/t0bvg==","signatures":[{"sig":"MEYCIQCVH1OfGm5PbHlilOi2myUkOZRdM3EWvQOvLoYgZiW0PgIhALZTGGMlTBfW/16rY7H/59QlW/qBrXXNYFAxtsgHTG7Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95119},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d505f4e8e2cc323ad07cd0a3d3cc2c2605e770bc","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.3_1758467946145_0.7074311273883644","host":"s3://npm-registry-packages-npm-production"}},"2.2.4":{"name":"@apiratorjs/di-container","version":"2.2.4","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"91bb1d687c0dc2fa2496bffc1387af3a2d301a8f","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.4.tgz","fileCount":39,"integrity":"sha512-tMh4/VHnTXEYOdq3/X8R1/wDROBPDTzKqaxdxJJ7BO7/FgjoBg4ajBh69Uzt8NPiSsiRAjD4tvxLezl8oVNsDQ==","signatures":[{"sig":"MEYCIQDR0gDrUvpbTJo9gihbW0oTfrx9PcZzjXfKPW8KsZsyzQIhAOQNiiMj2RFpCp867eCPTBzlaYH+d4symRkAUlInpylg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95119},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"5aadcf9713846add4bfe78e6e6664e0b7303305a","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.4_1758474302116_0.7316924585512676","host":"s3://npm-registry-packages-npm-production"}},"2.2.5":{"name":"@apiratorjs/di-container","version":"2.2.5","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.2.5","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"b07fb675f04fdaedc5caa849cb58f5c353ef7604","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.2.5.tgz","fileCount":39,"integrity":"sha512-8sX/tF+IF9LGXINQ7iwrZJXVBe5Vsbd5Nvyp2Bl0Hyx6DPNzn8PG/wT77WOqvASSkeVYVzUuB3mjwCcLOQ3Wmg==","signatures":[{"sig":"MEYCIQDBpnQEYdEMZmigwrEN66qeofZBJSQUGRsvRMyYETM5ggIhAOSlJQ63t6LBxdrA4Ev7bl0fAhrnYE6/JBG49zSzFk6e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95180},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"2f242b5cfbe6ba74088055c73154ba6e1c61b3bf","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.2.5_1758475192064_0.9394911234206089","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@apiratorjs/di-container","version":"2.3.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.3.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"4fe8a113a4c1986a403244609246a9a2520a22be","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.3.0.tgz","fileCount":39,"integrity":"sha512-NGocQV2Ogn178kMz//rYZpX+X3Z+QJFC8HBf/1Y9p/VSdrVluHHjIqu31Q5wN+hAe0LRJkH21Km0Nh3ihSaLrw==","signatures":[{"sig":"MEQCIExgs4PiBTOud0rS9DYrFShdpOIgXoDCLO0swKEFBR5jAiBIAwMw3R9+pqEg77TDcyFzugytUrBqvTfuyS6S/gGjpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95446},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"1290d6a612e84548a76d0af3303a73c1efed3390","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.3.0_1758580705861_0.7617240392289661","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@apiratorjs/di-container","version":"2.3.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.3.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"c75b1630b5bb987baad2dff6c8dd02ce0bbbde5c","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.3.1.tgz","fileCount":39,"integrity":"sha512-UhhU48+XHxWLkZs2jx/WA1/0PVzixX8iOh/mqI8Fqmv4tqkQinZG5ROs8wDFpa3rn39c5oT3rO5+PAjrL39/zA==","signatures":[{"sig":"MEUCIAXDjbyBsDpke76bDUDtVo/RjBwJrB0m29dNuZwJkifTAiEAgFq0tj5bXJOdLfG4ht6Lg2JNWMm7G8kFiB0UolA+cu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95575},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"2e087fb361160d4bb4f02cead7eb19443c1fd4ed","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.3.1_1758581038291_0.09054193092706653","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@apiratorjs/di-container","version":"2.3.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.3.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"0a2b5cf0ba7da5ae2de89b22e29e7b77997be437","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.3.2.tgz","fileCount":39,"integrity":"sha512-0gblDBpa2aue7IlMmE0kPB1gWXMaVMm83OG4bnlb5ugWbhCGFBuKtJGf4m3Z4dyUD3jXMSJkY1RQ5DYwAGYqQA==","signatures":[{"sig":"MEUCIHc6Om7sq/8pXRrie7L4wl8Jamgi6s472mj4d9OERBpDAiEA5vJAVUbhZCdrIpzlSg+nULkrPb8NlDxk5jbR4nxYBxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95978},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"f5a02580f15d75d82361110b5e806d6761bf1128","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.3.2_1758582529873_0.019091816298977937","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"@apiratorjs/di-container","version":"2.3.3","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.3.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"7253bb12d8a5a544971c978ab22e8cda21d57584","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.3.3.tgz","fileCount":39,"integrity":"sha512-68uNg12FY7DFtaF8G5UFPDvM60Kbk97rnRO4XbWhLK1Noe7CsOj4xiS+7x9QN+hlU/sGu3KDsBgg99w+sjrhLw==","signatures":[{"sig":"MEYCIQC9z5lXiYtNc7dlzqQuZ3flwqZm+p7JzGAye1+QAsPIWgIhAIfiUldQ/sOMKIIi4+eFn2nGFxYq8OjVHibnCFGQFhCW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96578},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"624e39a762fc5062dc5d5f37b6cbe8bfb86dac0d","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.3.3_1758622168647_0.24691456074269125","host":"s3://npm-registry-packages-npm-production"}},"2.3.4":{"name":"@apiratorjs/di-container","version":"2.3.4","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.3.4","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"b67cedbf047aac2c0f7e83fe1cf845363adafb60","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.3.4.tgz","fileCount":39,"integrity":"sha512-afP+avT+Of/u//kCN2ixRpPXR2MTjOxqlTAHpOASTY3WBdDAuaKrZaASQwMmk6jKkpXsiUvsK0feh3TUe0QLhA==","signatures":[{"sig":"MEQCIHquN+Qw3ZRrn7ryfNu1/80INanOwMahvTMjW+q476NKAiAKOXeXYsSSVJnJ4qhhAfNvACqUc+E9bthLdpOXDAKwnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96474},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"f8fc02ee92dd31fd83c9a768d6ea7e6753a26cdc","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.3.4_1758622434568_0.4816357275510763","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@apiratorjs/di-container","version":"2.4.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.4.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"f790be4c9d093257b710b192fd141887da331366","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.4.0.tgz","fileCount":39,"integrity":"sha512-9Yz0Dt/i0HBrYfQ/JYLgspws9NhLnhprZS0zDAiZ0XlwPeUL2XaY0RUIfU2c/QnAI20Y7vDfdol90du54d5xZg==","signatures":[{"sig":"MEUCIE6kDfp+4byU+cetQsSdIbgilPrmoNNoFx68hmtqIhbYAiEA7pLOKjm47nK7zRZUTr+CxuF/QCM5goBs7CasH0J8KEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97799},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"f74f1063ffa41f8e44e8dc6b3bd98d0c13f956eb","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.4.0_1758708302892_0.8998033046749554","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@apiratorjs/di-container","version":"2.5.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.5.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"ca9c8097f881375f5062f5ed105bfdb4aee53293","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.5.0.tgz","fileCount":39,"integrity":"sha512-waaLogcgGU6llwyNJpnUUPYtXXFQtI76Z6n3Bl+zZF/BWWHgOy6wupG23Q3rMfEvjFCR66J2vZpfffcZget8RA==","signatures":[{"sig":"MEUCIFes5Gl8aNUXphGE7Bl0vpxjkwimQylukLMenDCy2mjNAiEAgFIEQFLbzpvVpYoxLoAMa7qj1eUfQdUtqYoH93BSb2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99048},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"15833667a00c7ad5a4fb171b0bfaaf25bec4b735","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.5.0_1758744964114_0.9562889112275985","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@apiratorjs/di-container","version":"2.5.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.5.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"42126ad652c1d2f11cdcd63705cd297128ac48f6","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.5.1.tgz","fileCount":39,"integrity":"sha512-F7dd8TE0Z/1+/SDtlJmDChMW317w6UuVJSnYEBiAF+ma2/xTM239E8bZZG+p9RvGIg7Ftut4ogZyFzxMJnZo0w==","signatures":[{"sig":"MEUCICuZXpva8WvbavufoTdYXOY/MkQfEuwyqNkwr798h+ZeAiEAjydZi16bqWretYfgTDL3iFACfXr3m4vxrAqFKWNJFVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99060},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d10d590597750a9d065060a94f82c31a9cc5ea14","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.5.1_1758745194787_0.04980691843410745","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@apiratorjs/di-container","version":"2.5.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.5.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"2b2c02cec98bb3b43062e4365e67da61610faf99","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.5.2.tgz","fileCount":39,"integrity":"sha512-LwjtlOlfThRFF9NBhtUWzszx8wNCBUZ3XJMSu5I5rD0JYW1Dun16yZXirrcfok1jeqxavxxSIaEY/Bqg2BocdQ==","signatures":[{"sig":"MEQCIBc3VXvqYYC1x+oaYU8KuzOZaYROU+FaiXdbEBSQzoKGAiBwF3ndbWuxzaGLXpSJlPVOa4lF0KIDiJJbkRT9tdshzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102051},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"ea489ec061a4fb26f0b9b1b5a001bc839546c012","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.5.2_1758746071973_0.6724163073576193","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@apiratorjs/di-container","version":"2.5.3","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@2.5.3","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"d083a91f3b699d881b8981ad4de5a5014d1bc9fd","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-2.5.3.tgz","fileCount":39,"integrity":"sha512-YxFhwRlmFsI5VNGyACtC74YsGwYDGBoJXnIFA1h6T7gIb/98FrTPu+o5aYuNu699P311UJHiRjGwCOd2gIRsCQ==","signatures":[{"sig":"MEUCID60PJphBs2UMSwNC8fvABgiGy8WsUpATYJGoMEYuX8kAiEA3GAQIorxmVQxPANXCY5d8D7yjRKSV+gshD23T6tyWxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108198},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"65e9b6ce0917f6d586be3a546d8eefe3d2d73904","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_2.5.3_1758814135717_0.9232501844908079","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@apiratorjs/di-container","version":"3.0.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@3.0.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"ac578da3894c5822692e9f78f6232edeba7820d2","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-3.0.0.tgz","fileCount":39,"integrity":"sha512-FQimHhuNY57GoPFoF5LM5Xz97uYU5OywHpOYISL9Yh3AnSZrAXRZLzsf4+3+ha239AqUnNMEuKkK2rl50YafAA==","signatures":[{"sig":"MEUCIEz7TMlhci9OBhJo+1OHy96945rTvP8wo+6ZumgUQNUjAiEAljDVQwG7Gj/MaTAcfbB/qowlO7zJMQKlN5Zu8+2kkGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111988},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"6835bdd502c4330026bfe26140c4162da83157f8","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and m","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_3.0.0_1759004873955_0.07283065385284027","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@apiratorjs/di-container","version":"4.0.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@4.0.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"040f704dbe866d015a9ad3de06fd6ca2a76b15ec","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-4.0.0.tgz","fileCount":39,"integrity":"sha512-qZMS6rE7rvbkDDPwOCkny13X2N292jF4HEHOx8qJRQsWEmjAA0pJfqdls52W4MJI3NEipCrKcC0d9VGCuRhzOA==","signatures":[{"sig":"MEUCIQClcFCnrfnVFAGM6j1ovb9vk47Xl2iYJpbxwIV4lJqUgAIgUmzzVxMjsX5X29h3xdWjLAB2VVeAVw+GnoFHMAM9Tk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109985},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"d3512d846e3a88944088fc2c5a772050c7505ab4","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_4.0.0_1759051340094_0.277832493716756","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@apiratorjs/di-container","version":"4.0.1","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@4.0.1","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"28e365dbcb1ed6e77a9fcba456d35f1ef91d9dc2","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-4.0.1.tgz","fileCount":43,"integrity":"sha512-2rKRz6phGs1bmeXYVSjUg3Q9GnR/KnYKXe7xd0PSXQ3bYpIaqDI9o0KUaNoc/bgV0fX5Pi5Tvo5DqfsUxZXXPQ==","signatures":[{"sig":"MEUCIEU/wqDGHyzGOdGz+6PiO6GbxN9tYHMZCzMqb7CuEkVDAiEAxiIrDv7B/bekd5TXSCyNaPPpQT9Tj8pctULh2vDnuQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120136},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"de473da259322f16c195c30068056ebcaf165f74","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_4.0.1_1759412615483_0.6933538589562525","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@apiratorjs/di-container","version":"4.0.2","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@4.0.2","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"ac06ef57d421b8a9072c0a5688e6817fae0538b8","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-4.0.2.tgz","fileCount":43,"integrity":"sha512-pWWxRNtU+SdGrEv3iGGHsa+SZKa2ZguZaXHaxJVV+YmPH6jusme/9/+mHhG+JrepXiGor56GB6o4A+WoDzLC2g==","signatures":[{"sig":"MEQCIFA2MraSAZnBC9weqaVMigg9beDTb90zRSC6GOVRazOdAiA7Gp1FXnMbbFAe91QvAVMr57n4QC39O1+n++xpm0+tTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120297},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"228b27ef3c249e8076f5c9bf721d5d099cc4c41b","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_4.0.2_1759413075588_0.2433244810116042","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@apiratorjs/di-container","version":"4.1.0","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"author":{"url":"https://alexeyzaitsev.com","name":"Alexey Zaitsev"},"license":"MIT","_id":"@apiratorjs/di-container@4.1.0","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"homepage":"https://github.com/apiratorjs/di-container#readme","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"dist":{"shasum":"0032e9174e06b9aa5cf6ba1a8999d2f39c3f5059","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-4.1.0.tgz","fileCount":43,"integrity":"sha512-TBlVIDX6SFjyCwiybcxzU/uQxccQC+9tgViyVC9cw1QPLFnyHwE5/S3kMIYnjXTWmPWN66VYEf3bWakEmSOX1A==","signatures":[{"sig":"MEUCIANFhqLN6TU12IEdSJWZkKlIo3Kd/k0Yt4ybWdHBR0e3AiEAyAeKfttEJwyVn1uwn3pVGmWNO8AR100LwH9CpG3Syjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127507},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","engines":{"node":">=16.4.0"},"gitHead":"40afd5259e74aaaeb2cf5bd7da8d35f70bebf983","scripts":{"test":"npm run build && node --test dist/test","build":"rm -rf dist && tsc","watch":"tsc --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"repository":{"url":"git+https://github.com/apiratorjs/di-container.git","type":"git"},"_npmVersion":"10.9.2","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@apiratorjs/locking":"^4.0.1","@apiratorjs/async-context":"^1.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.3","@types/node":"^22.13.1"},"_npmOperationalInternal":{"tmp":"tmp/di-container_4.1.0_1759598774082_0.3926350455454499","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@apiratorjs/di-container","version":"4.2.0","description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","author":{"name":"Alexey Zaitsev","url":"https://alexeyzaitsev.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/apiratorjs/di-container.git"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","publishConfig":{"access":"public"},"keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"type":"commonjs","scripts":{"build":"rm -rf dist && tsc","watch":"tsc --watch","test":"npm run build && node --test dist/test","prepublishOnly":"npm test"},"engines":{"node":">=16.4.0"},"devDependencies":{"@types/node":"^22.13.1","tsx":"^4.19.2","typescript":"^5.7.3"},"dependencies":{"@apiratorjs/async-context":"^1.1.5","@apiratorjs/locking":"^4.0.1"},"_id":"@apiratorjs/di-container@4.2.0","gitHead":"78253689b6bbcf471e0f0b1810ce108cf91a6b46","bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"homepage":"https://github.com/apiratorjs/di-container#readme","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ZkuhRLTPOJyU2QWebrtfIEnT98hXBmQgnfb4tFyUWfT0h2NyhTbVLP4myNPGqIfa5BS6e0rfRNgY5QpywUYW6w==","shasum":"28a374e3e33159362c3d6f5a84bcd7ec9bbd8f69","tarball":"https://registry.npmjs.org/@apiratorjs/di-container/-/di-container-4.2.0.tgz","fileCount":43,"unpackedSize":131537,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF7UF+noXF+cZJqUPcE8BjvLp+dhFyVhbxTrmrN1Q06+AiBnF2Opd2G8TA9hPdJGCAMVk4c2z1ibm1bgWsovAJkLHw=="}]},"_npmUser":{"name":"apiratorjs","email":"apirator.framework@gmail.com"},"directories":{},"maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/di-container_4.2.0_1759660761068_0.9301005962402411"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-09T13:44:41.913Z","modified":"2025-10-05T10:39:21.481Z","1.0.0":"2025-02-09T13:44:42.279Z","1.0.1":"2025-02-09T13:49:05.974Z","1.0.2":"2025-02-09T13:50:40.201Z","1.0.3":"2025-02-09T14:11:58.165Z","1.0.4":"2025-02-10T08:03:56.625Z","1.1.0":"2025-03-02T15:11:40.384Z","1.1.2":"2025-03-02T15:33:07.068Z","1.1.3":"2025-03-03T15:22:45.267Z","1.1.4":"2025-03-05T06:51:35.639Z","1.1.5":"2025-03-15T18:51:23.640Z","1.1.6":"2025-03-22T17:00:55.678Z","1.1.7":"2025-04-10T19:40:00.535Z","1.2.1":"2025-04-11T11:32:15.435Z","1.2.2":"2025-04-11T11:35:35.166Z","1.2.3":"2025-04-17T11:50:07.277Z","1.2.4":"2025-04-26T14:26:52.734Z","1.2.5":"2025-04-26T14:32:56.217Z","1.2.6":"2025-04-26T15:00:51.367Z","1.2.7":"2025-04-26T15:11:19.414Z","1.2.8":"2025-04-26T15:20:38.136Z","1.2.9":"2025-04-26T15:53:45.525Z","1.3.0":"2025-04-26T23:36:19.235Z","1.4.0":"2025-05-02T07:43:41.053Z","1.4.1":"2025-05-02T08:09:39.506Z","2.0.0":"2025-09-07T12:37:58.853Z","2.0.1":"2025-09-07T12:46:28.221Z","2.0.2":"2025-09-07T12:50:18.910Z","2.1.2":"2025-09-09T17:47:32.103Z","2.1.3":"2025-09-09T18:02:02.830Z","2.1.4":"2025-09-09T19:54:26.335Z","2.2.0":"2025-09-09T21:03:49.738Z","2.2.1":"2025-09-21T12:55:50.734Z","2.2.2":"2025-09-21T14:09:52.008Z","2.2.3":"2025-09-21T15:19:06.339Z","2.2.4":"2025-09-21T17:05:02.303Z","2.2.5":"2025-09-21T17:19:52.279Z","2.3.0":"2025-09-22T22:38:26.051Z","2.3.1":"2025-09-22T22:43:58.452Z","2.3.2":"2025-09-22T23:08:50.120Z","2.3.3":"2025-09-23T10:09:28.829Z","2.3.4":"2025-09-23T10:13:54.764Z","2.4.0":"2025-09-24T10:05:03.094Z","2.5.0":"2025-09-24T20:16:04.301Z","2.5.1":"2025-09-24T20:19:54.966Z","2.5.2":"2025-09-24T20:34:32.170Z","2.5.3":"2025-09-25T15:28:55.919Z","3.0.0":"2025-09-27T20:27:54.140Z","4.0.0":"2025-09-28T09:22:20.268Z","4.0.1":"2025-10-02T13:43:35.695Z","4.0.2":"2025-10-02T13:51:15.798Z","4.1.0":"2025-10-04T17:26:14.274Z","4.2.0":"2025-10-05T10:39:21.284Z"},"bugs":{"url":"https://github.com/apiratorjs/di-container/issues"},"author":{"name":"Alexey Zaitsev","url":"https://alexeyzaitsev.com"},"license":"MIT","homepage":"https://github.com/apiratorjs/di-container#readme","keywords":["dependency injection","di","di-container","container","di-modules","modules","service tagging","tagged services","service identification","multiple implementations","asynchronous","async","lazy initialization","lazy loading","circular dependency detection","singleton","scoped","transient","typescript","typescript di","nodejs","framework-agnostic","async-context","lifecycle","dependency management","inversion of control","ioc","discovery service"],"repository":{"type":"git","url":"git+https://github.com/apiratorjs/di-container.git"},"description":"A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dep","maintainers":[{"name":"apiratorjs","email":"apirator.framework@gmail.com"}],"readme":"# @apiratorjs/di-container\n\n[![NPM version](https://img.shields.io/npm/v/@apiratorjs/di-container.svg)](https://www.npmjs.com/package/@apiratorjs/di-container)\n[![License: MIT](https://img.shields.io/npm/l/@apiratorjs/di-container.svg)](https://github.com/apiratorjs/di-container/blob/main/LICENSE)\n\nA lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization, service discovery for runtime introspection, service tagging for multiple implementations, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton with both in-place and lazy initialization, request-scoped, transient). Includes built-in async context management, lifecycle hooks (onConstruct/onDispose), and remains completely framework-agnostic for flexible application architecture.\n\n> **Note:** Requires Node.js version **>=16.4.0**\n\n---\n\n## Features\n\n- **Multiple Lifecycles:**\n\n  - **Singleton:** One instance per application. By default lazily initialized (created only when requested), but can be configured for eager initialization during DI build step.\n  - **Request-Scoped:** One instance per request scope using asynchronous context (lazily loaded).\n  - **Transient:** A new instance on every resolution.\n\n- **Service Tags:** Support for registering multiple implementations of the same service token using tags, enabling flexible service resolution based on context.\n- **Lazy Initialization:** Services are only created when requested (default for singletons, but can be overridden with eager initialization).\n- **Registration Order**: Last registration wins for same token+tag combinations\n- **Async Context Management:** Leverages [@apiratorjs/async-context](https://github.com/apiratorjs/async-context) to\n  manage request scopes.\n- **Circular Dependency Detection:** Automatically detects and reports circular dependencies with detailed chain information through `CircularDependencyError`.\n- **Lifecycle Hooks:** Services can implement onConstruct() and onDispose() for custom initialization and cleanup.\n  - **Singleton:** Supports both onConstruct() and onDispose() hooks.\n  - **Request-Scoped:** Supports both onConstruct() and onDispose() hooks.\n  - **Transient:** Supports only onConstruct() hooks.\n- **Concurrency Safety:** Designed to avoid race conditions during lazy instantiation.\n- **Service Discovery:** Built-in discovery service for introspecting registered services by token, lifetime, tag, or getting all registrations.\n- **Modular Organization:** Services can be organized into modules, allowing for better separation of concerns and reusability.\n\n---\n\n## Installation\n\nInstall via npm:\n\n```bash\nnpm install @apiratorjs/di-container\n```\n\nOr using yarn:\n\n```bash\nyarn add @apiratorjs/di-container\n```\n\n## Usage\n\n### Quick Start\n\nCreate and configure your DI container with the DiConfigurator, then build a DiContainer for runtime usage:\n\n```typescript\nimport { DiConfigurator } from \"@apiratorjs/di-container\";\nimport { AsyncContextStore } from \"@apiratorjs/async-context\";\n\n// Service classes with lifecycle hooks\nclass DatabaseService {\n  async onConstruct() {\n    console.log(\"Database connected\");\n  }\n  async onDispose() {\n    console.log(\"Database disconnected\");\n  }\n\n  async query(sql: string) {\n    return `Result for: ${sql}`;\n  }\n}\n\nclass UserService {\n  constructor(private db: DatabaseService) {}\n\n  async getUser(id: string) {\n    return await this.db.query(`SELECT * FROM users WHERE id = ${id}`);\n  }\n}\n\n// Configure services with different lifecycles and options\nconst configurator = new DiConfigurator();\n\n// Singleton with eager initialization\nconfigurator.addSingleton(\"DATABASE\", () => new DatabaseService(), {\n  eager: true,\n});\n\n// Scoped service with dependency injection\nconfigurator.addScoped(\"USER_SERVICE\", async (container) => {\n  const db = await container.resolve(\"DATABASE\");\n  return new UserService(db);\n});\n\n// Transient service\nconfigurator.addTransient(\"LOGGER\", () => ({\n  log: (msg) => console.log(`[LOG] ${msg}`),\n}));\n\n// Build container (eagerly initializes singletons)\nconst container = await configurator.build();\n\n// Use services - scoped services REQUIRE a request scope\nawait container.runWithNewRequestScope(async (container) => {\n  const userService = await container.resolve(\"USER_SERVICE\"); // ✅ Works in scope\n  const logger = await container.resolve(\"LOGGER\");\n\n  const user = await userService.getUser(\"123\");\n  logger.log(`Retrieved user: ${user}`);\n}, new AsyncContextStore());\n\n// ❌ This would throw RequestScopeResolutionError:\n// await container.resolve(\"USER_SERVICE\"); // Error: scoped service outside scope\n\n// Cleanup when done\nawait container.dispose();\n```\n\n### Core Concepts\n\n**Service Lifecycles:**\n\n- **Singleton**: One instance per application (lazy by default, can be eager)\n- **Scoped**: One instance per request scope - **MUST** be used within `runWithNewRequestScope()`, throws `RequestScopeResolutionError` otherwise\n- **Transient**: New instance on every resolution\n\n**Important:** Scoped services cannot be resolved outside a request scope:\n\n```typescript\n// ✅ Correct usage\nawait container.runWithNewRequestScope(async (container) => {\n  const scopedService = await container.resolve(\"SCOPED_SERVICE\"); // Works\n}, new AsyncContextStore());\n\n// ❌ This throws RequestScopeResolutionError\nconst scopedService = await container.resolve(\"SCOPED_SERVICE\"); // Error!\n```\n\n**Service Tags (Optional):** Register multiple implementations when needed. If no tag is specified, services automatically get the \"default\" tag:\n\n```typescript\nconfigurator.addSingleton(\"PAYMENT\", () => new StripePayment(), {\n  tag: \"stripe\",\n});\nconfigurator.addSingleton(\"PAYMENT\", () => new PayPalPayment(), {\n  tag: \"paypal\",\n});\nconfigurator.addSingleton(\"PAYMENT\", () => new BankPayment()); // Gets \"default\" tag automatically\n```\n\n**Registration Strategy:** When registering a service with the same token and tag combination multiple times, the **last registration wins**. This allows for service overriding and configuration flexibility:\n\n```typescript\n// First registration\nconfigurator.addSingleton(\"DATABASE\", () => new PostgresDatabase());\n\n// This will override the previous registration\nconfigurator.addSingleton(\"DATABASE\", () => new MySQLDatabase()); // MySQL wins\n\n// Different tags don't override each other\nconfigurator.addSingleton(\"DATABASE\", () => new MongoDatabase(), {\n  tag: \"nosql\",\n}); // Separate service\n```\n\n**Lifecycle Hooks:** Services can implement `onConstruct()` and `onDispose()` for automatic initialization and cleanup.\n\n## IDiConfigurator Interface\n\nThe `IDiConfigurator` is the main interface for configuring dependency injection services. Here are all available methods:\n\n### Service Registration Methods\n\n| Method                                            | Description                                                               | Example                                                                       |\n| ------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |\n| `addSingleton<T>(token, factory, options?): this` | Register a singleton service (tag in options, defaults to \"default\")      | `configurator.addSingleton(\"DB\", () => new Database(), { eager: true })`      |\n| `addScoped<T>(token, factory, options?): this`    | Register a request-scoped service (tag in options, defaults to \"default\") | `configurator.addScoped(\"USER_CTX\", async (container) => new UserContext())`  |\n| `addTransient<T>(token, factory, options?): this` | Register a transient service (tag in options, defaults to \"default\")      | `configurator.addTransient(\"LOGGER\", () => new Logger(), { tag: \"console\" })` |\n| `addModule(module): this`                         | Register a module (calls module.register(configurator))                   | `configurator.addModule(new DatabaseModule())`                                |\n\n#### Options Interfaces\n\n**ISingletonServiceRegistrationOptions** (for `addSingleton`):\n\n```typescript\ninterface ISingletonServiceRegistrationOptions {\n  tag?: string; // Service tag (defaults to \"default\")\n  eager?: boolean; // Should the singleton be eagerly created during container build\n}\n```\n\n**IScopedServiceRegistrationOptions** (for `addScoped`):\n\n```typescript\ninterface IScopedServiceRegistrationOptions {\n  tag?: string; // Service tag (defaults to \"default\")\n}\n```\n\n**ITransientServiceRegistrationOptions** (for `addTransient`):\n\n```typescript\ninterface ITransientServiceRegistrationOptions {\n  tag?: string; // Service tag (defaults to \"default\")\n}\n```\n\n### Container Management Methods\n\n| Method                                        | Description                 | Returns                                                                        |\n| --------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------ |\n| `build<T extends IBuildOptions>(options?: T)` | Build the runtime container | `Promise<T extends { autoInit: false } ? IInitableDiContainer : IDiContainer>` |\n| `getDiscoveryService()`                       | Get discovery service       | `DiDiscoveryService` for service introspection                                 |\n\n### Practical Example\n\n```typescript\nconst configurator = new DiConfigurator();\n\n// Registration - various lifecycles and features\nconfigurator\n  .addSingleton(\"CONFIG\", () => ({ env: \"prod\" }), { eager: true })\n  .addScoped(\"REQUEST_ID\", () => Math.random().toString(36))\n  .addTransient(\"LOGGER\", () => new ConsoleLogger());\n\n// Build container for runtime usage\nconst container = await configurator.build();\n\n// Service introspection during configuration\nconst discovery = configurator.getDiscoveryService();\nconst eagerServices = discovery\n  .getServicesByLifetime(\"singleton\")\n  .filter((s) => s.singletonOptions?.eager);\n\nconsole.log(\"Eager services configured:\", eagerServices.length);\n\n// ✅ Use the container for service resolution:\nawait container.runWithNewRequestScope(async (container) => {\n  const requestId = await container.resolve(\"REQUEST_ID\"); // Works in scope\n  const logger = await container.resolve(\"LOGGER\");\n  console.log(`Processing request: ${requestId}`);\n}, new AsyncContextStore());\n\nawait container.dispose();\n```\n\n## IDiContainer Interface\n\nThe `IDiContainer` is the runtime interface for resolving services after building your DI configuration. It provides a clean, read-only interface focused on service resolution and request scope management.\n\n### Service Resolution Methods\n\n| Method                            | Description                                    | Returns                           |\n| --------------------------------- | ---------------------------------------------- | --------------------------------- |\n| `resolve<T>(token, tag?)`         | Resolve a service (optional)                   | `Promise<T \\| undefined>`         |\n| `resolveRequired<T>(token, tag?)` | Resolve a service (throws if not found)        | `Promise<T>`                      |\n| `resolveAll<T>(token)`            | Resolve all implementations with metadata      | `Promise<IResolveAllResult<T>[]>` |\n| `resolveAllRequired<T>(token)`    | Resolve all implementations (throws if none found) | `Promise<IResolveAllResult<T>[]>` |\n| `resolveTagged<T>(tag)`           | Resolve first service with tag                 | `Promise<T \\| undefined>`         |\n| `resolveTaggedRequired<T>(tag)`   | Resolve service with tag (throws if not found) | `Promise<T>`                      |\n| `resolveAllTagged(tag)`           | Resolve all services with tag and metadata     | `Promise<IResolveAllResult[]>`    |\n| `resolveAllTaggedRequired(tag)`   | Resolve all services with tag (throws if none found) | `Promise<IResolveAllResult[]>`    |\n\n#### Optional vs Required Resolution\n\nThe DI container provides two variants for each resolution method:\n\n**Optional Methods** (`resolve`, `resolveAll`, `resolveTagged`, `resolveAllTagged`):\n- Return `undefined` or empty array when no services are found\n- Suitable for optional dependencies or graceful degradation scenarios\n- No exceptions thrown for missing services\n\n**Required Methods** (`resolveRequired`, `resolveAllRequired`, `resolveTaggedRequired`, `resolveAllTaggedRequired`):\n- `resolveRequired` and `resolveAllRequired` throw `UnregisteredDependencyError` when no services are found\n- `resolveTaggedRequired` and `resolveAllTaggedRequired` throw `UnregisteredTagError` when no services with the specified tag are found\n- Suitable for critical dependencies that must exist\n- Fail-fast approach for better error detection\n\n```typescript\n// Optional resolution - graceful handling\nconst optionalLogger = await container.resolve(\"LOGGER\");\nif (optionalLogger) {\n  optionalLogger.log(\"Service available\");\n} else {\n  console.log(\"Logger not available, using console\");\n}\n\n// Required resolution - fail-fast\ntry {\n  const requiredDatabase = await container.resolveRequired(\"DATABASE\");\n  // Guaranteed to have database instance here\n  await requiredDatabase.connect();\n} catch (error) {\n  console.error(\"Critical dependency missing:\", error.message);\n  process.exit(1);\n}\n\n// Optional multiple resolution\nconst optionalPayments = await container.resolveAll(\"PAYMENT\");\nconsole.log(`Found ${optionalPayments.length} payment processors`); // Could be 0\n\n// Required multiple resolution\ntry {\n  const requiredPayments = await container.resolveAllRequired(\"PAYMENT\");\n  console.log(`Using ${requiredPayments.length} payment processors`); // At least 1\n} catch (error) {\n  console.error(\"No payment processors available!\"); // Critical error\n}\n```\n\n### Runtime Management Methods\n\n| Method                                           | Description                                                      | Returns              |\n| ------------------------------------------------ | ---------------------------------------------------------------- | -------------------- |\n| `runWithNewRequestScope(callback, initialStore)` | Execute code in request scope (**Required** for scoped services) | `Promise<void>`      |\n| `isInRequestScopeContext()`                      | Check if in request scope                                        | `boolean`            |\n| `dispose()`                                      | Dispose all services (cleanup singletons and scoped services)    | `Promise<void>`      |\n| `getDiscoveryService()`                          | Get discovery service for introspection                          | `DiDiscoveryService` |\n\n### Key Differences from IDiConfigurator\n\n**IDiContainer is for runtime usage only:**\n\n- ✅ **Service Resolution**: All resolve methods available\n- ✅ **Request Scope Management**: Required for scoped services\n- ✅ **Discovery**: Service introspection and health checks\n- ✅ **Cleanup**: Proper disposal of resources\n- ❌ **No Service Registration**: Cannot add new services\n- ❌ **No Building**: Already built and ready to use\n\n### Practical Usage Example\n\n```typescript\nconst configurator = new DiConfigurator();\nconfigurator\n  .addSingleton(\"DATABASE\", () => new DatabaseService(), { eager: true })\n  .addScoped(\"USER_CTX\", () => ({ userId: \"user123\" }))\n  .addTransient(\"LOGGER\", () => new ConsoleLogger());\n\n// Build creates the runtime container\nconst container = await configurator.build();\n\n// ✅ Singleton and transient services work anywhere\nconst logger = await container.resolve(\"LOGGER\");\nlogger?.log(\"Application started\");\n\n// ✅ Scoped services MUST be used within request scope\nawait container.runWithNewRequestScope(async (container) => {\n  const userCtx = await container.resolveRequired(\"USER_CTX\"); // Works in scope\n  const database = await container.resolve(\"DATABASE\");\n\n  console.log(`Processing for user: ${userCtx.userId}`);\n}, new AsyncContextStore());\n\n// ❌ This throws RequestScopeResolutionError:\n// const userCtx = await container.resolve(\"USER_CTX\"); // Error!\n\n// Health check using discovery\nconst discovery = container.getDiscoveryService();\nconst eagerSingletons = discovery\n  .getServicesByLifetime(\"singleton\")\n  .filter((s) => s.singletonOptions?.eager);\n\nconsole.log(\n  \"Eager services initialized:\",\n  eagerSingletons.every((s) => s.isResolved)\n);\n\n// Cleanup when shutting down\nawait container.dispose();\n```\n\n### Service Discovery\n\nQuery and introspect registered services for debugging, monitoring, and dynamic resolution. The discovery service returns `IServiceRegistration` objects with detailed information about each service.\n\n#### IResolveAllResult Interface\n\nThe `resolveAll` and `resolveAllTagged` methods return results with both the service instance and its registration metadata:\n\n| Property       | Type                      | Description                   |\n| -------------- | ------------------------- | ----------------------------- |\n| `instance`     | `T`                       | The resolved service instance |\n| `registration` | `IServiceRegistration<T>` | Service registration metadata |\n\nExample usage:\n\n```typescript\nconst results = await container.resolveAll<UserService>(\"USER_SERVICE\");\nresults.forEach((result) => {\n  console.log(\"Service instance:\", result.instance);\n  console.log(\"Service tag:\", result.registration.tag);\n  console.log(\"Service lifetime:\", result.registration.lifetime);\n  console.log(\"Is resolved:\", result.registration.isResolved);\n});\n\n// Extract just the instances if you only need them\nconst instances = results.map((result) => result.instance);\n```\n\n#### IServiceRegistration Interface\n\nEach service registration returned by the discovery service contains:\n\n| Property           | Type                                     | Description                                                     |\n| ------------------ | ---------------------------------------- | --------------------------------------------------------------- |\n| `token`            | `TServiceToken`                          | The service token (string, symbol, or class)                    |\n| `tokenType`        | `\"string\" \\| \"symbol\" \\| \"class\"`        | Type of the token                                               |\n| `lifetime`         | `\"singleton\" \\| \"scoped\" \\| \"transient\"` | Service lifetime                                                |\n| `tag`              | `string`                                 | Service tag (automatically set to \"default\" when not specified) |\n| `isResolved`       | `boolean`                                | Whether service instance has been created                       |\n| `singletonOptions` | `ISingletonOptions?`                     | Options for singleton services                                  |\n| `metatype`         | `TClassType?`                            | Class constructor if token is a class                           |\n\n#### Discovery Service Methods\n\n| Method                             | Description                 | Returns                  |\n| ---------------------------------- | --------------------------- | ------------------------ |\n| `getAll()`                         | Get all registered services | `IServiceRegistration[]` |\n| `getServicesByTag(tag)`            | Get services by tag         | `IServiceRegistration[]` |\n| `getServicesByServiceToken(token)` | Get services by token       | `IServiceRegistration[]` |\n| `getServicesByLifetime(lifetime)`  | Get services by lifetime    | `IServiceRegistration[]` |\n\n#### IServiceRegistration Methods\n\n| Method          | Description                                    |\n| --------------- | ---------------------------------------------- |\n| `getInstance()` | Get the current service instance (if resolved) |\n\n#### Discovery Example\n\n```typescript\nconst configurator = new DiConfigurator();\n\n// Register services\nconfigurator.addSingleton(\"DATABASE\", () => new DatabaseService(), {\n  eager: true,\n});\nconfigurator.addScoped(\"USER_SERVICE\", () => new UserService());\nconfigurator.addTransient(\"LOGGER\", () => new LoggerService());\n\nconst discovery = configurator.getDiscoveryService();\n\n// Query by different criteria\nconst allServices = discovery.getAll();\nconst singletons = discovery.getServicesByLifetime(\"singleton\");\nconst databaseServices = discovery.getServicesByServiceToken(\"DATABASE\");\n\n// Work with service registrations\nconst databaseReg = databaseServices[0];\nconsole.log(`Database service token: ${databaseReg.token}`);\nconsole.log(`Token type: ${databaseReg.tokenType}`);\nconsole.log(`Is eager: ${databaseReg.singletonOptions?.eager}`);\nconsole.log(`Is resolved: ${databaseReg.isResolved}`);\n\n// Health check for eager services\nconst eagerServices = discovery\n  .getServicesByLifetime(\"singleton\")\n  .filter((s) => s.singletonOptions?.eager)\n  .map((s) => ({ token: s.token, resolved: s.isResolved }));\nconsole.log(\"Eager services status:\", eagerServices);\n\n// Service inventory\nconsole.table(\n  discovery.getAll().map((s) => ({\n    Token: s.token.toString(),\n    Type: s.tokenType,\n    Lifetime: s.lifetime,\n    Tag: s.tag,\n    Resolved: s.isResolved,\n    Eager: s.singletonOptions?.eager || false,\n  }))\n);\n```\n\n### Advanced Features\n\n**Circular Dependency Detection:** Automatic detection with detailed error chains:\n\n```typescript\n// This creates a circular dependency\nconfigurator.addSingleton(\"ServiceA\", async (container) => {\n  await container.resolve(\"ServiceB\"); // Will detect the cycle\n  return new ServiceA();\n});\nconfigurator.addSingleton(\"ServiceB\", async (container) => {\n  await container.resolve(\"ServiceA\");\n  return new ServiceB();\n});\n\n// Throws CircularDependencyError with chain: [\"ServiceA\", \"ServiceB\", \"ServiceA\"]\n```\n\n**Complete Application Example:**\n\n```typescript\nimport {\n  DiConfigurator,\n  IOnConstruct,\n  IOnDispose,\n} from \"@apiratorjs/di-container\";\nimport { AsyncContextStore } from \"@apiratorjs/async-context\";\n\n// Service classes\nclass Config {\n  public readonly dbUrl = \"mongodb://localhost\";\n}\n\nclass Database implements IOnConstruct, IOnDispose {\n  constructor(private config: Config) {}\n\n  async onConstruct() {\n    console.log(`Connected to ${this.config.dbUrl}`);\n  }\n  async onDispose() {\n    console.log(\"Database disconnected\");\n  }\n\n  async findUser(email: string) {\n    return { email, id: Math.random() };\n  }\n}\n\nclass UserService {\n  constructor(private db: Database) {}\n\n  async getUser(email: string) {\n    return await this.db.findUser(email);\n  }\n}\n\nconst configurator = new DiConfigurator();\n\nconfigurator\n  .addSingleton(\"CONFIG\", () => new Config(), { eager: true })\n  .addSingleton(\"DATABASE\", async (container) => {\n    const config = await container.resolve(\"CONFIG\");\n    return new Database(config);\n  })\n  .addScoped(\"USER_SERVICE\", async (container) => {\n    const db = await container.resolve(\"DATABASE\");\n    return new UserService(db);\n  });\n\n// Usage - scoped services MUST be used within request scope\nconst container = await configurator.build();\n\nawait container.runWithNewRequestScope(async (container) => {\n  const userService = await container.resolve(\"USER_SERVICE\"); // ✅ Works in scope\n  const user = await userService.getUser(\"user@example.com\");\n  console.log(\"Found user:\", user);\n}, new AsyncContextStore());\n\n// ❌ This would throw RequestScopeResolutionError:\n// const userService = await container.resolve(\"USER_SERVICE\"); // Error!\n\nawait container.dispose(); // Cleanup all services\n```\n\n### Advanced Disposal Management\n\nThe DI container provides granular control over service disposal with three disposal methods:\n\n#### Complete Disposal: `dispose()`\n\nDisposes all services (both singletons and scoped services in current request scope):\n\n```typescript\nconst container = await configurator.build();\n\n// Use services...\n\n// Dispose everything when shutting down\nawait container.dispose(); // Calls both disposeSingletons() and disposeScopedServices()\n```\n\n#### Singleton-Only Disposal: `disposeSingletons()`\n\nDisposes only singleton services and clears their instances. Useful for:\n\n- Partial cleanup scenarios\n- Restarting singleton services without affecting scoped services\n- Memory management in long-running applications\n\n```typescript\nconst container = await configurator.build();\n\n// Use singleton services...\nconst config = await container.resolve(\"CONFIG\");\nconst database = await container.resolve(\"DATABASE\");\n\n// Later, dispose only singletons (e.g., for hot reload or reconfiguration)\nawait container.disposeSingletons();\n\n// Singletons are now disposed and will be recreated on next resolution\nconst newDatabase = await container.resolve(\"DATABASE\"); // Creates new instance\n```\n\n#### Scoped-Only Disposal: `disposeScopedServices()`\n\nDisposes only scoped services in the current request scope. Useful for:\n\n- Manual cleanup before request scope ends\n- Early resource release in long-running request scopes\n- Custom request lifecycle management\n\n```typescript\nawait container.runWithNewRequestScope(async (container) => {\n  // Use scoped services\n  const userContext = await container.resolve(\"USER_CONTEXT\");\n  const sessionData = await container.resolve(\"SESSION_DATA\");\n\n  // Perform some operations...\n\n  // Manually dispose scoped services before scope naturally ends\n  await container.disposeScopedServices();\n\n  // Scoped services are now disposed, but scope is still active\n  // Resolving them again will create new instances\n  const newUserContext = await container.resolve(\"USER_CONTEXT\"); // Creates new instance\n}, new AsyncContextStore());\n```\n\n#### Use Cases for Granular Disposal\n\n**Hot Reload/Reconfiguration:**\n\n```typescript\n// Dispose and recreate only configuration-related singletons\nawait container.disposeSingletons();\n// Next resolution will create fresh instances with new configuration\n```\n\n**Memory Management:**\n\n```typescript\nawait container.runWithNewRequestScope(async (container) => {\n  // Process large dataset\n  const processor = await container.resolve(\"DATA_PROCESSOR\");\n  await processor.processLargeDataset();\n\n  // Free memory early by disposing scoped services\n  await container.disposeScopedServices();\n\n  // Continue with lightweight operations...\n}, new AsyncContextStore());\n```\n\n**Testing Scenarios:**\n\n```typescript\n// Clean up between test cases\nawait container.disposeSingletons(); // Reset all singleton state\n```\n\n### Working with Multiple Service Implementations\n\nWhen you register multiple implementations of the same service with different tags, you can resolve them all at once:\n\n```typescript\nconst configurator = new DiConfigurator();\n\n// Register multiple payment processors\nconfigurator.addSingleton(\"PAYMENT\", () => new StripePayment(), {\n  tag: \"stripe\",\n});\nconfigurator.addSingleton(\"PAYMENT\", () => new PayPalPayment(), {\n  tag: \"paypal\",\n});\nconfigurator.addSingleton(\"PAYMENT\", () => new BankTransferPayment(), {\n  tag: \"bank\",\n});\nconfigurator.addSingleton(\"PAYMENT\", () => new CashPayment()); // No tag specified = \"default\" tag\n\nconst container = await configurator.build();\n\n// Resolve all payment implementations with metadata\nconst paymentResults = await container.resolveAll(\"PAYMENT\");\nconsole.log(`Found ${paymentResults.length} payment processors`); // Will show 4 processors\n\npaymentResults.forEach((result) => {\n  console.log(`Payment processor: ${result.registration.tag}`);\n  console.log(`Instance:`, result.instance);\n\n  // Use the instance\n  const payment = result.instance;\n  payment.processPayment(100);\n});\n\n// Extract just the instances if you only need them\nconst paymentInstances = paymentResults.map((result) => result.instance);\n\n// Or use resolveAllRequired to ensure at least one implementation exists\ntry {\n  const requiredPayments = await container.resolveAllRequired(\"PAYMENT\");\n  console.log(`Guaranteed to have ${requiredPayments.length} payment processors`);\n} catch (error) {\n  console.error(\"No payment processors registered!\"); // Throws UnregisteredDependencyError\n}\n\n// Or resolve all services with a specific tag\nconst stripeResults = await container.resolveAllTagged(\"stripe\");\nconsole.log(`Found ${stripeResults.length} services with 'stripe' tag`);\n\n// Use resolveAllTaggedRequired to ensure services with specific tag exist\ntry {\n  const requiredStripeServices = await container.resolveAllTaggedRequired(\"stripe\");\n  console.log(`Guaranteed to have ${requiredStripeServices.length} stripe services`);\n} catch (error) {\n  console.error(\"No services with 'stripe' tag found!\"); // Throws UnregisteredTagError\n}\n\n// Resolve services with the default tag\nconst defaultResults = await container.resolveAllTagged(\"default\");\nconsole.log(`Found ${defaultResults.length} services with 'default' tag`);\n\n// Or resolve the default payment processor directly\nconst defaultPayment = await container.resolveTagged(\"default\"); // Gets CashPayment instance\n\nawait container.dispose();\n```\n\n## Modules\n\nOrganize related services into reusable modules for better code organization. Modules are simply a convenient way to group service registrations together.\n\n```typescript\n// Define service interfaces\ninterface ILogger {\n  log(message: string): void;\n}\n\ninterface IUserService {\n  getCurrentUser(): string;\n}\n\ninterface IAuthService {\n  isAuthenticated(): boolean;\n}\n\n// Service implementations\nclass ConsoleLogger implements ILogger {\n  log(message: string): void {\n    console.log(`[LOG] ${message}`);\n  }\n}\n\nclass UserServiceImpl implements IUserService {\n  constructor(private logger: ILogger, private authService: IAuthService) {}\n\n  getCurrentUser(): string {\n    this.logger.log(\"Getting current user\");\n    return this.authService.isAuthenticated() ? \"John Doe\" : \"Guest\";\n  }\n}\n\nclass AuthServiceImpl implements IAuthService {\n  constructor(private logger: ILogger) {}\n\n  isAuthenticated(): boolean {\n    this.logger.log(\"Checking authentication\");\n    return true;\n  }\n}\n\n// Define service tokens\nconst LOGGER = Symbol(\"LOGGER\");\nconst USER_SERVICE = Symbol(\"USER_SERVICE\");\nconst AUTH_SERVICE = Symbol(\"AUTH_SERVICE\");\n\n// Create modules to organize related services\nclass LoggingModule implements IDiModule {\n  register(configurator: DiConfigurator): void {\n    configurator.addSingleton(LOGGER, () => new ConsoleLogger());\n  }\n}\n\nclass AuthModule implements IDiModule {\n  register(configurator: DiConfigurator): void {\n    configurator.addSingleton(AUTH_SERVICE, async (container) => {\n      const logger = await container.resolveRequired<ILogger>(LOGGER);\n      return new AuthServiceImpl(logger);\n    });\n  }\n}\n\nclass UserModule implements IDiModule {\n  register(configurator: DiConfigurator): void {\n    configurator.addSingleton(USER_SERVICE, async (container) => {\n      const logger = await container.resolveRequired<ILogger>(LOGGER);\n      const authService = await container.resolveRequired<IAuthService>(\n        AUTH_SERVICE\n      );\n      return new UserServiceImpl(logger, authService);\n    });\n  }\n}\n\n// Register modules and use services\nconst configurator = new DiConfigurator();\n\nconfigurator.addModule(new LoggingModule());\nconfigurator.addModule(new AuthModule());\nconfigurator.addModule(new UserModule());\n\nconst container = await configurator.build();\n\nconst userService = await container.resolveRequired<IUserService>(USER_SERVICE);\nconst currentUser = userService.getCurrentUser();\nconsole.log(`Current user: ${currentUser}`);\n\nawait container.dispose();\n```\n\n**Module Features:**\n\n- **Simple Organization**: Group related service registrations together\n- **Reusability**: Modules can be reused across different applications\n- **Clean Separation**: Separate concerns by domain or functionality\n- **Standard Registration**: Use all standard service registration methods (addSingleton, addScoped, addTransient)\n- **Dependency Injection**: Services in modules can depend on services from other modules\n\n### Contributing\n\nContributions, issues, and feature requests are welcome!\nPlease open an issue or submit a pull request on [GitHub](https://github.com/apiratorjs/di-container).\n","readmeFilename":"README.md"}