{"_id":"@mmstack/di","_rev":"36-9d8b848a6482ee626386894af5ff93b6","name":"@mmstack/di","dist-tags":{"latest":"22.2.0","v19-lts":"19.4.0","v20-lts":"20.6.0","v21-lts":"21.2.0"},"versions":{"21.0.0":{"name":"@mmstack/di","version":"21.0.0","_id":"@mmstack/di@21.0.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"dist":{"shasum":"922634d7d584abc96b1e1943b1d0e1634fc5ae0b","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.0.tgz","fileCount":6,"integrity":"sha512-RMLBNdO5Of8Ndf2cEJaPCs3La9RRsyjasxl+3QcQXmbJYwOwcz0H1/1oXGxSZNgcaWmp3Niu7BzpzDxRLApisg==","signatures":[{"sig":"MEQCIApzimM4odsLbPgWbF8vCR5I2LGv0BP5+bk7TAxW2HEVAiAVYmE1TtWU6bHhfZ2m4nyl0C72P3HjTt6x9eqoeaA3MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25496},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"72852913da78e5fdc01bd8c183d2c84dd48a795c","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"_npmVersion":"11.7.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.0_1770190993936_0.2778003545603942","host":"s3://npm-registry-packages-npm-production"}},"21.0.1":{"name":"@mmstack/di","version":"21.0.1","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.1","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"555967775b44796499fe5e1aa3089086e3cafa10","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.1.tgz","fileCount":6,"integrity":"sha512-hLrKn7fL+iN15CwbdlScG4eDJ4ERtpmholpCaHiNF3Yxo6qO9yA41lwFwCvRhKRlTnwDUmyohN9wypxzfCludw==","signatures":[{"sig":"MEUCIAzNntHikdsBWiGs6YP1O2JhqTKVN2vDUFXKBxn1+iQUAiEA3hc61DNBZjpmW21vMPt/K7s755CzY2i0wrM6rgrWSN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25800},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f62b6f0253511faba4f4668091f9ac604611ee62","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.7.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.1_1770191128435_0.7141932745600368","host":"s3://npm-registry-packages-npm-production"}},"19.3.0":{"name":"@mmstack/di","version":"19.3.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"41df54acf1ff5d0120c44eb5f505c04007dc8aa8","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.0.tgz","fileCount":8,"integrity":"sha512-FzASYuomhx0ZIEmlCy8nIL11cB5bljWtkR9FtZPsZ5XMG3UmHNufu2WiUdfmWq2lVn49dpkmqxz9QyVoYHHPGQ==","signatures":[{"sig":"MEYCIQDyFT0plCm4dXJ02KUBrcYy0XWbyZxjr9RjWYtALQHOngIhALcEeGYjpKsMkiuNB/MipG9mVy61dlqF2EUC1WfpArEg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26292},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"d889aedb1d8e61ec74a35b39af57d38a21bc7ed3","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.7.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.0_1772607164582_0.1887592181215929","host":"s3://npm-registry-packages-npm-production"}},"20.5.0":{"name":"@mmstack/di","version":"20.5.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"a66ccf9f33fed79df4d09118f7c6e710a1d98889","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.0.tgz","fileCount":6,"integrity":"sha512-jQgrdIjE6RMEycyAEhNid81tL7eRy3c50hOYaXN239b06PHB0wPif7vbJl7VmTRzng+fAJvrwKo37n3zQhor3g==","signatures":[{"sig":"MEUCIQCQaBoPain0vLt3Ttxgr4sYg1/VnLRE+a/fmLoF0k8HuwIgKs2S+Tk2J22o/xadQ0VzYRVUWMFmg557KZqLL5EGKiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25781},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"cd2f78fddd7ba736150c06b2b5daefe822773cb8","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.7.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.0_1772607960284_0.7227732334749906","host":"s3://npm-registry-packages-npm-production"}},"21.0.2":{"name":"@mmstack/di","version":"21.0.2","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.2","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"98dbc16df5e43a590c4f5077261139e5d3b7fc0b","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.2.tgz","fileCount":6,"integrity":"sha512-S3/yIhrJ5Ub4wjQc7UElGdOXamWITWjZu6cY43TFND4LQIhA2RWk1DKAFB99lV9sQPpgmYNaNjlBqkk23qTS7Q==","signatures":[{"sig":"MEUCIQDDJy7s4iB7DsTBIMK1aBZTGhwEfgK6bjel/1h0OYurdQIgEVD0hDZc6S4rQJRun1I7FvHVucx1LNGv2yFdOesX1VY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28777},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"fa08ef642d9ceb7521e15f1e70c08dd9fb2b2d90","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.2_1774961262450_0.08455782536224365","host":"s3://npm-registry-packages-npm-production"}},"19.3.1":{"name":"@mmstack/di","version":"19.3.1","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.1","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"9217b83dd58775e50f37d26ae5d67ccfb192923a","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.1.tgz","fileCount":9,"integrity":"sha512-Y12h6f6Xfihpupwipk3l/4hKRk1YdO0v8mM5GZXN0rfxBNPD0gbCLoYGAbq9tNt5bLXnNgeyU/4ffSU2O8uWsg==","signatures":[{"sig":"MEUCIQCrvkvD1DOIisvG1ht4wTqvh1kq3Wcd/FhhPcMy2/V99QIgIp48ISWSD8X3VI3u3f+8U0P5sdFs5c9apxvnkO3qa/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27802},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"0e9a564a001985bb92f994d3bdff28d3e15d45b1","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.1_1774961456164_0.8921006615222047","host":"s3://npm-registry-packages-npm-production"}},"20.5.1":{"name":"@mmstack/di","version":"20.5.1","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.1","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"ac42abd0b3ce43ba11b2c55352a269b17745dc34","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.1.tgz","fileCount":6,"integrity":"sha512-62mGdMKVPcYe9Xnhyot6B2P7Zf7YTsYZmD4b88V/8hNuXtwC/hM5xWKQ2t10HYAeVyCwY6mdx7pC8tl2HTJNKw==","signatures":[{"sig":"MEUCIQD1Nn6axwq5gReTpg9baCeayRv7S/BxV60mdVX3ZiG4mwIgERo+bPkAwNQBx9aL9RrRWJo2AqjOhYnHA/92RGT4UoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27256},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"c7655959fe6a16409466aed5e1be8b33ab5c3e71","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.1_1774961556197_0.5869416156079859","host":"s3://npm-registry-packages-npm-production"}},"21.0.3":{"name":"@mmstack/di","version":"21.0.3","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.3","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"0117c99ac2012a906f3cb8ba721120779bc6d9d3","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.3.tgz","fileCount":6,"integrity":"sha512-MLnwD1FX5sf4/dfGAcHsrRYxvHEtAps0xow7NMjH7Zve8mjaTQ1ijmDBL63nFswAGTK+ChbyghIEpBSaRz+iCw==","signatures":[{"sig":"MEUCIQDhH0BwNyO/HW3u8/sT4ogj69Ssf1LpyfAtodLKnJ7lFwIgMCf7puik4gniHHh5NrvSw6MN+ZL1BJys1beYmTZ8xUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33294},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"9eeee626f9289c489f21866c03abcd4e6f92a589","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.3_1775018925646_0.9465310045358291","host":"s3://npm-registry-packages-npm-production"}},"19.3.2":{"name":"@mmstack/di","version":"19.3.2","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.2","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"eb1d02c8730ad2b0d9b37108062629e8e0919eda","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.2.tgz","fileCount":9,"integrity":"sha512-wR/Vlf9Diy+Ph8KYFereCqm+kqeMX3vTUDpVT2urJd2tlfTvc12AB7KpNMS07tpRRLASY4NxeKRdhaWs8YRu6Q==","signatures":[{"sig":"MEQCIC+onJgPDKSmHYvYOYulo9UR/DKIQBije6mOudcs9Jp1AiA3kFI4HtrSKL9AuaR+SZ2V5HchhIi3G7OgRorkroHwWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32319},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"0e9a564a001985bb92f994d3bdff28d3e15d45b1","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.2_1775018978806_0.5922217059097286","host":"s3://npm-registry-packages-npm-production"}},"20.5.2":{"name":"@mmstack/di","version":"20.5.2","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.2","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"9dd3e6b6bb2b7845ef17b6eaf26cbd38e8f77e72","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.2.tgz","fileCount":6,"integrity":"sha512-+J1JqIzrVh0aV+AgNsMVTIjb4g+vnA7KAvJNQEUTGyaLks63CkMgA1KY5QiUa1MzaFknG8MVm3NykfpkzP3+ng==","signatures":[{"sig":"MEUCIFpZZYpL3xcoEkZSDFdR6JnWIUF7k0tvpQUhtVbROTIVAiEAtjy4/qyn0jNZUB/B7pFppQv8AOseoDH8xRGzDP6ScrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31773},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"daa12849a859c476d614a58895e89e776ff32d32","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.2_1775019036298_0.8901193761846748","host":"s3://npm-registry-packages-npm-production"}},"21.0.4":{"name":"@mmstack/di","version":"21.0.4","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.4","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"03baaad829f4fba52e8f6ea00a039511130b7d9d","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.4.tgz","fileCount":6,"integrity":"sha512-hF9eBZDIJ9QPzRpHg7kfeTys2jAkQJ7T/2wXvVfABr6IGk7tBorcdFcu7BzHbaeRopzfDFH59l6MOebrLQ7J1g==","signatures":[{"sig":"MEQCID1QhPxrPNnW97HFTPD24MYki7M2p2Y9NdN3awjbmHthAiA16XjszoORyjWUBOdg8x89x+fNukhHowMl9xfVJwKYHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46464},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"c5dea41c9a89d16a67291f8a4b2016f91cb663d1","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.4_1775026335330_0.59315322208945","host":"s3://npm-registry-packages-npm-production"}},"19.3.3":{"name":"@mmstack/di","version":"19.3.3","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.3","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"abb397b27145f9943fc9736668f258628c15b4fc","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.3.tgz","fileCount":11,"integrity":"sha512-U9lzsxaXBti9cSUyCKXL2JZBqzwMal+m0qsfqgmg0GtKoVhTz34L1a8tiQvKWz0Li0SBvbrS7wV0zF6u8NqUkw==","signatures":[{"sig":"MEYCIQCuaf8qkMwsW0fNJU8pYYxubLC/MAoH1WKX3CSc6MMkXAIhALry/eSAveGhR2nb7tgYv+e1/oaquleSoIXm1ck/bfdY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45682},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"681eab9ec2a0ac282b956565bf3eebc4492f548e","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.3_1775026516591_0.4103650499407774","host":"s3://npm-registry-packages-npm-production"}},"20.5.3":{"name":"@mmstack/di","version":"20.5.3","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.3","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"f925bc6ddd8403fa79c1470a68086335051bfa2d","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.3.tgz","fileCount":6,"integrity":"sha512-78ekJprE0miNKjuHrsA8q5JFUm0nVwdE0/aksnIfNhhrM5Y0mOCdcSkUfK2qrAp4vYEdZwCfkhzNzNcJAhX29w==","signatures":[{"sig":"MEUCIQDbiZQ0nusY50dygg9Hg4D+DYph2mkwTpDtYh1m81kGQwIgTGtz+yxig/f/Abq/uKzSbe0fMCsX5bWeWOpNamWfm2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44942},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"daa12849a859c476d614a58895e89e776ff32d32","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.3_1775026586131_0.9151189103105426","host":"s3://npm-registry-packages-npm-production"}},"21.0.5":{"name":"@mmstack/di","version":"21.0.5","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.5","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"1f0debe6314756f98e6b2a24c3251dc2c9bbb06e","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.5.tgz","fileCount":6,"integrity":"sha512-2JHWH0BxbJJUqF7LCYQGPX8TSseUstUwnHEyoxEzXwgdOuJEs+MF9fao7LTV7FH1RF1XyMPmPoMT860avJGW7w==","signatures":[{"sig":"MEUCIQDhPMLNaIEVrnqCOScno8b6Zj/TYlMktt6WRnRuIjBTLAIgc4+UziNjsjWbzrADWriXDLydJ28h+S2b0DuAUt05YDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47981},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"4ad8034938d4ad6ab456bdab7bc4779db045a254","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.5_1775404462370_0.5601419687476605","host":"s3://npm-registry-packages-npm-production"}},"19.3.4":{"name":"@mmstack/di","version":"19.3.4","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.4","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"547cf72d9ddf596a78b18db1a80dfe6d606acd2f","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.4.tgz","fileCount":11,"integrity":"sha512-irhl0VvgJ/iRWq2HmKSOFCWVeeRpAv+XEiWEbNDG7sS1tm6yFlxy88y4b99pVeoqJV4pYrQsVXSAfetdlJe8mA==","signatures":[{"sig":"MEYCIQDg6AM9JfCIXPmwLNJbOZAMjapRXdPsxmadX8EmtbZVqgIhAO1HmIAhvuI/d5XALipj/b5o9i71/5WVXW1Yn/OLm6EI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46912},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3284eea75d040a079a845b2cd4c6f262d8f1ea56","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.4_1775404582570_0.7807170929053311","host":"s3://npm-registry-packages-npm-production"}},"20.5.4":{"name":"@mmstack/di","version":"20.5.4","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.4","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"d0105126bc0a01febe000a95da5cd26cbef619de","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.4.tgz","fileCount":6,"integrity":"sha512-0BgozttQVkkY9QIjjt8hab7mPgCFytsOQxD/6JfoI2hghQKvih1iMjXdGcbGtY3HKs0jw8PWSoyI7wXbVDhtzg==","signatures":[{"sig":"MEQCIB9T2jtOXrQR+U78rNws1I1iIcmQywfSuv2jJPGCaaHdAiBkLO9MACOo2eegnPAyS9Yb44TjHCRCQkvV+jmcOAKuUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46482},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"adf5c4093a0c73d2dc0bf83e1946dc88f6bb3b3a","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.11.0","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.4_1775404671162_0.39999839007943105","host":"s3://npm-registry-packages-npm-production"}},"21.0.6":{"name":"@mmstack/di","version":"21.0.6","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.6","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"b03ff5f86dd90d30d36ce568999edd39745bbb19","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.6.tgz","fileCount":6,"integrity":"sha512-CSV1PINQicYZC5+3UTskdcVpgeJ/6bxK5i56UtRRw0WKoVEICPdaiNYhsGvrwPMDuZfXmtfiCaTjJZE/lpPUYw==","signatures":[{"sig":"MEYCIQDk4hTSasghBJayE0PFQAvj62qKMwXa/x1U1ayak6YoJwIhAM7Gu2NUYKGLlA886S/C1qGhXEPsAmMWBI1k6jbcEKRy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58749},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"6bfea0c729525e991360147ba2db159d13f03260","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.6_1780399507494_0.08255162825914963","host":"s3://npm-registry-packages-npm-production"}},"19.3.5":{"name":"@mmstack/di","version":"19.3.5","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.5","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"c5e9b7d152f1461c5b3de8e00688a72c10bf5472","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.5.tgz","fileCount":11,"integrity":"sha512-PQodaD+mOPgk2YUJG4C+yBuYOPNPXEsMMfMmOpfHqJ5k5f92gQEdR0RuFffHY/mvQ0bxqNn1KKsALssai9yZrQ==","signatures":[{"sig":"MEUCIEtpVS8NIOUHHztnWZFt2NyrHveGD96Z+5JWIp7NomhQAiEAz7Tq+gdxuSFskWXm5O18obKGEqMxkkvvbDEzzua3Hds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59126},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"c8696af7709046f47a1e02aa96507018230f29a0","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.5_1780399728240_0.8838166347142682","host":"s3://npm-registry-packages-npm-production"}},"20.5.5":{"name":"@mmstack/di","version":"20.5.5","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.5","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"954a3416172cf0d4a1d7600687caa3a293d01739","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.5.tgz","fileCount":6,"integrity":"sha512-0D+4w0z4QumZvCaV79PVTsiMOnXjvNFi6idXK4ys5UyB+OMJcMAlZaTYESz04mvRk/rt62ZERsXaeOIsPnHNfg==","signatures":[{"sig":"MEUCIQDSLueMwPkfKQcb65bYriVEKivIpVLKHHwCVYDti5rIQAIgMDyT8rbIC5sh8BFDrw/rVfHZu75T0uNk0OeTDlAULNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58689},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b56724d0c70c448315958e40879f83801e9ad3d7","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.5_1780400050379_0.09465258816493116","host":"s3://npm-registry-packages-npm-production"}},"21.0.7":{"name":"@mmstack/di","version":"21.0.7","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.7","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"0382ab59fb2b85687bbd708aae15eb00300e1378","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.7.tgz","fileCount":6,"integrity":"sha512-ddf2o8mExYg8fMuAO3OtqBCMdeg5GFGdGpiJdvrcfyUsl/Co4gdb1jrcuWtAs99BkTWfZQvMDVPlsoqgYDGarg==","signatures":[{"sig":"MEQCIFV19FDRjGdp9HsAyVeeWhZ4XgS/LEQfEYGC97IuwNvYAiATgcYljvEpS2t/e5SuQda2LKdfC5er+76+yWmoa8taHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58749},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"36df0062961e489dd2cb9d4ca7315abf21631e67","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.7_1780670462181_0.8049284561064003","host":"s3://npm-registry-packages-npm-production"}},"22.0.0":{"name":"@mmstack/di","version":"22.0.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@22.0.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"d1ef8d7e3eb6a37c04ab9920509e6bce05c88b1b","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-22.0.0.tgz","fileCount":6,"integrity":"sha512-2jFOOhwKMUHXHDf5Tku7Y4ws0onpVBs7d/zEh5WtXpfu6fRMI891weE6YWESDXLRgXQwiHktfr0v2d6IyJ2zbA==","signatures":[{"sig":"MEUCIQD2EQqZ1IdKYSITQzlnR7oBPo37HWHrCPcSHS2WsFtscwIgHJZK6HZ5j0ycq3qrYFNA7HOMSTdg7dOEYdQcmh3nMXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58746},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"36df0062961e489dd2cb9d4ca7315abf21631e67","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=22 <23"},"_npmOperationalInternal":{"tmp":"tmp/di_22.0.0_1780674773004_0.5158572872883462","host":"s3://npm-registry-packages-npm-production"}},"19.3.6":{"name":"@mmstack/di","version":"19.3.6","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.6","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"a37123d0aafa45301edcfa743ba762be7387a432","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.6.tgz","fileCount":12,"integrity":"sha512-AQdwjb7WkthPiTYIwhhfBLnCyOLwWkseI2lX2VJsyZ+apZyNKQdTUxar/fDd2jQf0zNYFCdJrHHawDGYj+SnBA==","signatures":[{"sig":"MEYCIQCQ+UkKLb6olI/T1C2Hukc5/S4c0fQXvvcTeVZ3qbk7dwIhAJfqs5cdPQj2eL50HXS/nQbAr71z/IWJHe7MbsYjx2Ue","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80959},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"052c08691b880f2fda5a4bfdcd0b75d5e0eee531","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.6_1781340827440_0.08566856994143701","host":"s3://npm-registry-packages-npm-production"}},"20.5.6":{"name":"@mmstack/di","version":"20.5.6","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.6","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"40ddde9e730a43c16129ef0a0cfb0011c5f7d8aa","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.6.tgz","fileCount":6,"integrity":"sha512-/y+PJPS3wK06IkCRzDCnHaB7Emg/+xsN+jyRghw7zuaa5bYpJS5B1kLpMRmKrgg11MSdvdSmgfs9mk6ysdPafQ==","signatures":[{"sig":"MEQCIBXZcqGUhyb05unV5OuMi3pCfI1rZKR9l6XGq1VR2h0RAiAcW/Zl8GEqiZlfCrVohy6baSkiywhtaRiuZSC9FkDmug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80435},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"fa5985342f4138205024d244c1100f0541538040","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.6_1781340938132_0.23236853881956154","host":"s3://npm-registry-packages-npm-production"}},"21.0.8":{"name":"@mmstack/di","version":"21.0.8","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.8","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"74ac001a6587ab5600a5eb0031f4768dacffeef7","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.8.tgz","fileCount":6,"integrity":"sha512-oRyKZ6Dow2Jf1dJhwwbtNBJ8OBplFoUfpXfBgE9VCGUwPm+M53CpFK8zD/k+3HoeXySpzDjGdwseI3Mc2QTH3Q==","signatures":[{"sig":"MEUCIHqchUQmFWHctAh9Y79CTdbpMRhtTdTCjWvrBrPDcsMeAiEAiYYc+O/vY9iYqfNEDw2kSw5TPckF9XMf3L1hftnCJoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80517},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"79f53fe8cbe9284b7d1cdf54b93d1f8ac94d0844","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.8_1781341142140_0.6376583634953323","host":"s3://npm-registry-packages-npm-production"}},"22.0.1":{"name":"@mmstack/di","version":"22.0.1","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@22.0.1","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"83b5231d7d4f110219592dbf6d47a4b3a9aa64ab","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-22.0.1.tgz","fileCount":6,"integrity":"sha512-X+w3qvDwQrGNZROfOzxfmsISXJ37UD7rpnzOnrE1fR1uHAoYeiIT9yk6vPA7A2i9WHdjDVElvzzzczlK7zn17g==","signatures":[{"sig":"MEYCIQD9CQCqw4mCRfuX15LHWlnkM/5QR1QDGAJ0SUCthBAMNAIhAMClKlRaTMYkonyNy9MJg29+2sj4+tW3Vj45zYMYGSga","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80514},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ebdbf24b143923417757a011ed9504eaeb7175e7","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=22 <23"},"_npmOperationalInternal":{"tmp":"tmp/di_22.0.1_1781341216202_0.45042572844187534","host":"s3://npm-registry-packages-npm-production"}},"22.0.2":{"name":"@mmstack/di","version":"22.0.2","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@22.0.2","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"f97ea52b6f9b05735cf2952238fbed328f877311","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-22.0.2.tgz","fileCount":6,"integrity":"sha512-PFHpKOahK2sC6gBP3qNg/OitAlXuLMNfUnWSUWtnH5oLtlWtJHL13nBhr+n96cVUDRK3Pzb6G9zF/0mZrzY5Tg==","signatures":[{"sig":"MEUCIG5IR9lShnR9uEM4HASXHuWbTY5sCivF1SltvNU6LFDGAiEA25YDmU9TDZCQ0znQpy6/qQHC4ZaAK0oO6M/veB48LWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118748},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"62ec0d08d36cf5ae8a10d804703e073b5cc4725b","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=22 <23","@angular/common":">=22 <23"},"_npmOperationalInternal":{"tmp":"tmp/di_22.0.2_1781506246491_0.9179608213705355","host":"s3://npm-registry-packages-npm-production"}},"19.3.7":{"name":"@mmstack/di","version":"19.3.7","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.3.7","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"56fc8f0919509616ec1733dba5b26e0e522cffd5","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.3.7.tgz","fileCount":14,"integrity":"sha512-o/AdyUBkfDibiAeP5VeRD54e83nVn0DQvx0xEzBK9kaKIffnZwYs2lMB18h8cy91wcukQpecNM4Fo76N0V5rrA==","signatures":[{"sig":"MEUCIQDuO1HwN6OPnyflKU7fOkU7RnSpicKht2Lez1I/hdTDmwIgI9mapCFisd/clR8xjGIOVhRgr+LgOpAV3t8UGvQ67/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120804},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"d4d7370e35a7e96b3a3e2beda1c71accc6e1a2d0","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20","@angular/common":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.3.7_1781506350341_0.755087946288012","host":"s3://npm-registry-packages-npm-production"}},"20.5.7":{"name":"@mmstack/di","version":"20.5.7","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.5.7","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"16dc573ce0a1ca77ca1b31e374d6045a524e0456","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.5.7.tgz","fileCount":6,"integrity":"sha512-KUFYytOQAaya+uYNv31Wva/HUv0CfleRgM50x0PIEEuBZlp9usCUenEYJlE7xBqVN6AIS2BeGh3aygA+Tf/tYA==","signatures":[{"sig":"MEUCICbgkYOhfekle+UCTH/0NB9YxkYxdE8QrgZgXVFsmDuUAiEAs4pJarZVSG4UfyivpLQ69NSy8+dQ+sKdQRkCEL6Ph5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119092},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"bcbb5989a98d9e697c15bacfb4b0dfe8160069e9","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21","@angular/common":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.5.7_1781506405860_0.5963197346382925","host":"s3://npm-registry-packages-npm-production"}},"21.0.9":{"name":"@mmstack/di","version":"21.0.9","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.0.9","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"ea6318514fd5f05497e9c7cfdd9da070b540eac6","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.0.9.tgz","fileCount":6,"integrity":"sha512-QvorPG7wH9w2QTmYWwCA2DkZqr2xR9ugjp1GDhNKOvLKZgMWwP6uFJCa62vD7VE75YadrlZgIcp6mAUnjIIUVg==","signatures":[{"sig":"MEUCIQD+nQOB8R7WpMiMIA4RPXU2drlpXdJNu0pj5r62TXZPiAIgEvY8LOpbRF7mvy5H9gQhhqi8c67zPuJeaNqdNssIRwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119174},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"97edcda20587736e330aa3130f40ba3431c3c2eb","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=21 <22","@angular/common":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.0.9_1781506465998_0.000578423600885003","host":"s3://npm-registry-packages-npm-production"}},"22.1.0":{"name":"@mmstack/di","version":"22.1.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@22.1.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"b49749cdc4fd8d01b723ecb7f9ba8134de7d1773","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-22.1.0.tgz","fileCount":6,"integrity":"sha512-gznj7id9KgnNeQoWWB7QMvU8mw29NSCLw8li8JO3md5ppMBjt/GqrLuLndPlwwP0A7gdVaZwGJW2cSo+/hQKQg==","signatures":[{"sig":"MEQCIDWa4BvMjB/Jczr7GLBBXIHpyONVDEwxmYXE6P6T+6T7AiB0ldfLnyeJiaoTHVUVnnA3nA9LnPJKCkV5OovtKny0hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119743},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"aef91dfceb36f885ca3e2fc6fc5202d9a6fab71a","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=22 <23","@angular/common":">=22 <23"},"_npmOperationalInternal":{"tmp":"tmp/di_22.1.0_1782722186879_0.9497173980016778","host":"s3://npm-registry-packages-npm-production"}},"19.4.0":{"name":"@mmstack/di","version":"19.4.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@19.4.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"ef44a95988368f3bb4e97797cac5a16530836eef","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-19.4.0.tgz","fileCount":14,"integrity":"sha512-0iv0A0J1sS64bbtnA+eAl1g7RcdXv1oemOiqqR2Nu4ERrUFyQw6YWjxNA8G++Lfv33uuiN/Gt4mLhDVy1Mdk+Q==","signatures":[{"sig":"MEYCIQCtcIkCO+WWCU6fpkFWOg91A5nLlf5tQEOvwShWu+g6MwIhAOG7qOrI4Vf+mgNGwAM6ioT/NY0arRtRcpYv2gpi4PpJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121799},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"9e2c341a5cb386d10eed2f7a7eedaeb3e92db614","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=19 <20","@angular/common":">=19 <20"},"_npmOperationalInternal":{"tmp":"tmp/di_19.4.0_1782722226068_0.025422837651807084","host":"s3://npm-registry-packages-npm-production"}},"20.6.0":{"name":"@mmstack/di","version":"20.6.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@20.6.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"80f5e620d7510b8b92b559c30ce16ab85b6b291f","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-20.6.0.tgz","fileCount":6,"integrity":"sha512-tHA4vF18CY3Xs0J6Z6KuiVX/5I22Sv2/hL+45i442hSs70XL3wPd/wANfvNR75SSSLkhorJgx/JljqEil5LDSg==","signatures":[{"sig":"MEYCIQDKQzEC2TObbzLqay2Ae2Ga4wmeNQB3zSWzLSIGl6I79wIhALokFvN4M3slEpQkLpUthaUIAdVHfAndC05ozHkKdBMj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120087},"module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3f611f1bdfb662050e347449821a02ed530e5fea","typings":"index.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=20 <21","@angular/common":">=20 <21"},"_npmOperationalInternal":{"tmp":"tmp/di_20.6.0_1782722259298_0.7471514677563933","host":"s3://npm-registry-packages-npm-production"}},"21.1.0":{"name":"@mmstack/di","version":"21.1.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.1.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"5c476137c6b4c4c5ac48e015412d826e04b64286","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.1.0.tgz","fileCount":6,"integrity":"sha512-xpuC/dFD1rbpOtPo+gAIWX730IqVeWktKQaKBwjjyCtEYjPJV+bQf1bJfMEMfVy7zIyP3P8iZWC5PCf2ymPmXA==","signatures":[{"sig":"MEUCIQC8OTDCMJTNWOm+6alBgpLGeYB+kgXgtl4FzR31ioc67QIgWLx5ce1rvle2wRzpOOHWfx8wYseN7XCiV0AXti8QMkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120169},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"aa6129928a1319cc700c761fa469ea1a5b4b979e","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=21 <22","@angular/common":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.1.0_1782722311414_0.8760355919965142","host":"s3://npm-registry-packages-npm-production"}},"21.2.0":{"name":"@mmstack/di","version":"21.2.0","keywords":["angular","dependency injection","di","singleton","provider","inject"],"license":"MIT","_id":"@mmstack/di@21.2.0","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"898014cd68394a6aac1ffbc5aa60a4be24f4a00a","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-21.2.0.tgz","fileCount":6,"integrity":"sha512-xQ7bKzZ8kwrhmYTkX/M7b68mtm4ccnfK6ZbE6mxJMQfdXfFp0tQe1VkeDJ6McC090Ov6mQSiR1u1UOxoGtGrQw==","signatures":[{"sig":"MEYCIQCVDPyOkBmIfJseG9cPsL2NSfiTs/3+eXBkRe9ReuMl9gIhALu8ZuTXzxOEpqMXI6Y4oP8kTV0wYjc9YMoDYxZsn5sF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICy1czc3ceFor2eRR1rtcMnyJzUBb0FeLka77nasIlnPAiEAqmgoX7r9XAY8uNfQ1hy9FvYc/RQrMT6huQrd+DCP+7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117816},"type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b9ce76818f286e5b38fcaee521e96276b3214c0d","typings":"types/mmstack-di.d.ts","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@angular/core":">=21 <22"},"_npmOperationalInternal":{"tmp":"tmp/di_21.2.0_1789379383082_0.3771283244985948","host":"s3://npm-registry-packages-npm-production"}},"22.2.0":{"_id":"@mmstack/di@22.2.0","bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"dist":{"shasum":"9b09bd2a5389477ab425e8fbeee0fc16a3813246","tarball":"https://registry.npmjs.org/@mmstack/di/-/di-22.2.0.tgz","fileCount":6,"integrity":"sha512-hZgvE7HOJwMzoSplc/MAXjEAh3G+FCwCwrBBRRt7Z2/Te+qu+QfxD69eWI9RVGo0pzRsrM1daXB+Tuh3HxA7lg==","signatures":[{"sig":"MEUCID53+KbOExfiyu1NcmkRK4ybWirtITpBFZynwcZRu1ynAiEA2capsKKiaou5NKhThCY6IZInqWO28mcheW4YLNvO9OE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDhDb7khZcVZKix7qRr2nvzniEwOTtdUMAp57axMNK2VAiEAs+YZPsUPjq65e3jzXrMJBnooZjk3hqbMeIiKmdhfm/0="}],"unpackedSize":117395},"name":"@mmstack/di","type":"module","module":"fesm2022/mmstack-di.mjs","exports":{".":{"types":"./types/mmstack-di.d.ts","default":"./fesm2022/mmstack-di.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"0baea29ba83e97e768572f0baad57e7772cbbac1","license":"MIT","typings":"types/mmstack-di.d.ts","version":"22.2.0","_npmUser":{"name":"mmstack","email":"mulec.mihaj@gmail.com"},"homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","keywords":["angular","dependency injection","di","singleton","provider","inject"],"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"_npmVersion":"11.14.1","description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","directories":{},"maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=22 <23"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/di_22.2.0_1789379572009_0.5116506276639994"}}},"time":{"created":"2026-02-04T07:43:13.823Z","modified":"2026-09-14T09:52:52.274Z","21.0.0":"2026-02-04T07:43:14.091Z","21.0.1":"2026-02-04T07:45:28.601Z","19.3.0":"2026-03-04T06:52:44.718Z","20.5.0":"2026-03-04T07:06:00.421Z","21.0.2":"2026-03-31T12:47:42.581Z","19.3.1":"2026-03-31T12:50:56.305Z","20.5.1":"2026-03-31T12:52:36.364Z","21.0.3":"2026-04-01T04:48:45.807Z","19.3.2":"2026-04-01T04:49:38.952Z","20.5.2":"2026-04-01T04:50:36.442Z","21.0.4":"2026-04-01T06:52:15.449Z","19.3.3":"2026-04-01T06:55:16.726Z","20.5.3":"2026-04-01T06:56:26.268Z","21.0.5":"2026-04-05T15:54:22.517Z","19.3.4":"2026-04-05T15:56:22.723Z","20.5.4":"2026-04-05T15:57:51.301Z","21.0.6":"2026-06-02T11:25:07.633Z","19.3.5":"2026-06-02T11:28:48.415Z","20.5.5":"2026-06-02T11:34:10.549Z","21.0.7":"2026-06-05T14:41:02.313Z","22.0.0":"2026-06-05T15:52:53.148Z","19.3.6":"2026-06-13T08:53:47.571Z","20.5.6":"2026-06-13T08:55:38.293Z","21.0.8":"2026-06-13T08:59:02.265Z","22.0.1":"2026-06-13T09:00:16.335Z","22.0.2":"2026-06-15T06:50:46.639Z","19.3.7":"2026-06-15T06:52:30.495Z","20.5.7":"2026-06-15T06:53:26.003Z","21.0.9":"2026-06-15T06:54:26.126Z","22.1.0":"2026-06-29T08:36:27.021Z","19.4.0":"2026-06-29T08:37:06.207Z","20.6.0":"2026-06-29T08:37:39.470Z","21.1.0":"2026-06-29T08:38:31.564Z","21.2.0":"2026-09-14T09:49:43.186Z","22.2.0":"2026-09-14T09:52:52.096Z"},"bugs":{"url":"https://github.com/mihajm/mmstack/issues"},"license":"MIT","homepage":"https://github.com/mihajm/mmstack/blob/master/packages/di","keywords":["angular","dependency injection","di","singleton","provider","inject"],"repository":{"url":"git+https://github.com/mihajm/mmstack.git","type":"git","directory":"packages/di"},"description":"A collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.","maintainers":[{"name":"mmstack","email":"mulec.mihaj@gmail.com"}],"readme":"# @mmstack/di\n\nA collection of dependency injection utilities for Angular that simplify working with InjectionTokens and provide type-safe patterns for creating injectable services.\n\n[![npm version](https://badge.fury.io/js/%40mmstack%2Fdi.svg)](https://badge.fury.io/js/%40mmstack%2Fdi)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mihajm/mmstack/blob/master/packages/di/LICENSE)\n\n## Installation\n\n```bash\nnpm install @mmstack/di\n```\n\n## Utilities\n\nThis library provides the following utilities:\n\n- `injectable` - Creates a typed InjectionToken with inject and provide helper functions for type-safe dependency injection.\n- `injectLazy` - Defers the resolution and instantiation of a token until it is actually accessed.\n- `injectAsync` - Lazily loads a service's code chunk (a dynamic `import()`) and resolves it from DI on first access. A v19+ port of Angular v22's `injectAsync` that additionally works for non-root services and adds prefetch/scoping options.\n- `provideLazy` - Registers a lazy dependency against a token: drop its provider into any `providers` array and inject a memoized async getter deep in the tree, without statically importing the module.\n- `createRunInInjectionContext` - Captures an injection context and returns a runner function, useful for `inject()` inside async callbacks.\n- `rootInjectable` - Creates a lazily-initialized root-level injectable that maintains a per-application singleton instance.\n- `createScope` - Creates a dependency injection scope that caches singletons based on the factory function.\n- `provideAs` - Tiny helper that builds a `useValue` or `useFactory` provider depending on what you hand it.\n\n## When to use what\n\nAngular's own DI primitives cover a lot of ground — these helpers are thin, named conveniences on top of them, and a couple of Angular's newer built-ins may already be exactly what you need:\n\n| You want to…                                                                     | Reach for                                                            |\n| -------------------------------------------------------------------------------- | -------------------------------------------------------------------- |\n| Inject a service, normally                                                       | Angular's `inject()`                                                 |\n| A class singleton for the whole app                                              | Angular's `@Injectable({ providedIn: 'root' })`                      |\n| A typed token + provide/inject pair without the `InjectionToken` boilerplate     | `injectable` (think `createContext` for Angular)                     |\n| Defer **constructing** an already-bundled service until first use                | `injectLazy`                                                         |\n| Lazy-load the code for a `providedIn: 'root'` / `@Service()` service (v22+)      | Angular's native `injectAsync` — built in, nothing needed here 🎉    |\n| Lazy-load a service that **isn't** root-provided, or support v19–v21             | `injectAsync` (this lib)                                             |\n| Register a lazy dependency in a `providers` array and inject it deep in the tree | `provideLazy`                                                        |\n| A factory-built (non-class) app-wide singleton                                   | `rootInjectable`                                                     |\n| A whole family of factory-built singletons scoped to a component subtree         | `createScope`                                                        |\n| Run `inject()` later, in a callback that lost the context                        | `createRunInInjectionContext` (or Angular's `runInInjectionContext`) |\n\n**Native `injectAsync` vs this one.** On Angular v22+, if the lazily-loaded service is auto-provided (`@Injectable({ providedIn: 'root' })` or `@Service()`), Angular's built-in `injectAsync` is all you need. Reach for **this** library's `injectAsync` when either is true: you're on **v19–v21** (no built-in), or the service **isn't** root-provided — a plain `@Injectable()`, or one you want scoped to a component/route. Native rejects those; this one auto-provides and scopes them (and adds `optional`, `prefetch`, `providedWith`, and lifecycle-tied teardown). `provideLazy` builds on it for the \"provide once, inject anywhere below\" pattern.\n\n`injectLazy` and `injectAsync` also compose: `injectAsync` gets the code onto the page, `injectLazy` decides when an instance is constructed.\n\n### A note on SSR\n\nFallbacks (`injectable`'s `fallback`/`lazyFallback`) and `rootInjectable` singletons are implemented as **token factories**, which Angular caches _per root injector_. That means every application — including every server-side request, which gets its own root injector — lazily constructs its own instance. Module-scope definition, per-app state: you can define these at the top of a file without anything leaking between requests, tests, or multiple apps on one page.\n\n---\n\n## injectable\n\nCreates a typed InjectionToken with convenient, type-safe inject and provider functions, eliminating boilerplate and ensuring type safety throughout your dependency injection flow. It returns a tuple of `[injectFn, provideFn, token]` that work together seamlessly (the raw token is there for interop — destructure it only when you need it).\n\nThe `injectable` function supports four patterns:\n\n1. **Basic** - Returns `T | null` when not provided\n2. **With Fallback** - Returns a default value when not provided\n3. **With Lazy Fallback** - Same as with fallback, but the fallback is lazily evaluated — useful for expensive fallbacks or ones that require injection. Evaluated at most once _per application_ (SSR-safe, see the note above).\n4. **With Error** - Throws a custom error message when not provided\n\n### Basic Usage\n\n```typescript\nimport { Component, Injectable } from '@angular/core';\nimport { injectable } from '@mmstack/di';\n\n// Create a typed injectable\nconst [injectLogger, provideLogger] = injectable<Logger>('Logger');\n\n// Provide the value in a component or module\n@Component({\n  selector: 'app-root',\n  providers: [\n    provideLogger({\n      log: (msg) => console.log(`[LOG]: ${msg}`),\n      error: (msg) => console.error(`[ERROR]: ${msg}`),\n    }),\n  ],\n})\nexport class AppComponent {}\n\n// Inject it anywhere in the component tree\n@Injectable()\nexport class DataService {\n  private logger = injectLogger(); // Logger | null\n\n  fetchData() {\n    this.logger?.log('Fetching data...');\n  }\n}\n```\n\n### With Factory Dependencies\n\n```typescript\nimport { HttpClient } from '@angular/common/http';\nimport { injectable } from '@mmstack/di';\n\ntype ApiConfig = {\n  baseUrl: string;\n  timeout: number;\n};\n\nconst [injectApiConfig, provideApiConfig] = injectable<ApiConfig>('ApiConfig');\n\n// Provide using a factory with dependencies\n@Component({\n  providers: [\n    provideApiConfig(\n      (http: HttpClient) => ({\n        baseUrl: 'https://api.example.com',\n        timeout: 5000,\n      }),\n      [HttpClient], // Dependencies array\n    ),\n  ],\n})\nexport class AppComponent {}\n```\n\nA zero-dependency factory needs no `deps` array — pass the factory alone. It runs\nlazily in an injection context, so it can still use `inject()`:\n\n```typescript\nprovideApiConfig(() => ({ baseUrl: inject(BASE_URL), timeout: 5000 }));\n```\n\n### With Fallback Value\n\nWhen you want to provide a default value instead of returning `null`:\n\n```typescript\nimport { injectable } from '@mmstack/di';\n\ntype Theme = {\n  primary: string;\n  secondary: string;\n}\n\nconst [injectTheme, provideTheme] = injectable<Theme>('Theme', {\n  fallback: {\n    primary: '#007bff',\n    secondary: '#6c757d',\n  },\n});\n\n// or if you need inject/lazy evaluation\nconst [injectTheme, provideTheme] = injectable<Theme>('Theme', {\n  lazyFallback: () => {\n    return {\n      primary: inject(APP_PRIMARY),\n      secondary: '#6c757d',\n    },\n  }\n});\n\n@Injectable()\nexport class ThemeService {\n  // Always returns a Theme, never null\n  private theme = injectTheme();\n\n  getPrimaryColor() {\n    return this.theme.primary; // Safe to access\n  }\n}\n```\n\n### With Error Message\n\nWhen you want to enforce that the value must be provided:\n\n```typescript\nimport { injectable } from '@mmstack/di';\n\nconst [injectApiKey, provideApiKey] = injectable<string>('ApiKey', {\n  errorMessage: 'API Key is required! Please provide it using provideApiKey().',\n});\n\n@Injectable()\nexport class ApiService {\n  // Throws error if not provided\n  private apiKey = injectApiKey();\n\n  makeRequest() {\n    // apiKey is guaranteed to exist here\n    return fetch(`https://api.example.com?key=${this.apiKey}`);\n  }\n}\n```\n\n### Providing functions as values\n\n`provide` treats any function as a factory (so `provide(() => x)` is a zero-arg\nfactory — no `deps` needed). When your token's type is itself a function, wrap\nthe value in a factory that returns it, otherwise it would be called as a factory:\n\n```typescript\nimport { injectable } from '@mmstack/di';\n\ntype Validator = (value: string) => boolean;\nconst isLongEnough: Validator = (value) => value.length > 5;\n\nconst [injectValidator, provideValidator] = injectable<Validator>('Validator');\n\n@Component({\n  providers: [\n    provideValidator(() => isLongEnough), // ✅ factory returns the function value\n    // provideValidator(isLongEnough),     // ❌ compile error — would be called as a factory\n  ],\n})\nexport class FormComponent {\n  private validator = injectValidator();\n\n  validate(input: string) {\n    return this.validator?.(input) ?? false;\n  }\n}\n```\n\n### Interop: the raw token\n\nThe third tuple element is the underlying `InjectionToken` — handy for `deps` arrays, `Injector.create`, or `TestBed.overrideProvider`:\n\n```typescript\nconst [injectApi, provideApi, API_TOKEN] = injectable<ApiClient>('Api');\n\n// In a classic factory provider elsewhere:\n{ provide: OTHER, useFactory: (api: ApiClient) => new Other(api), deps: [API_TOKEN] }\n\n// In a test:\nTestBed.overrideProvider(API_TOKEN, { useValue: fakeApi });\n```\n\n### Advanced: Scoped Context Pattern\n\nCreate context-like dependency injection patterns:\n\n```typescript\nimport { Component, Injectable } from '@angular/core';\nimport { injectable } from '@mmstack/di';\n\ntype FormContext = {\n  formId: string;\n  isDirty: boolean;\n  submit: () => void;\n};\n\nconst [injectFormContext, provideFormContext] = injectable<FormContext>(\n  'FormContext',\n  {\n    errorMessage: 'FormContext must be provided by a parent form component',\n  },\n);\n\n@Component({\n  selector: 'app-form',\n  providers: [\n    provideFormContext({\n      formId: 'user-form',\n      isDirty: false,\n      submit: () => console.log('Submitting form...'),\n    }),\n  ],\n  template: `\n    <form>\n      <app-form-field></app-form-field>\n      <app-form-actions></app-form-actions>\n    </form>\n  `,\n})\nexport class FormComponent {}\n\n@Component({\n  selector: 'app-form-field',\n  template: `<input [id]=\"formContext.formId + '-input'\" />`,\n})\nexport class FormFieldComponent {\n  // Automatically gets the context from parent\n  formContext = injectFormContext();\n}\n\n@Component({\n  selector: 'app-form-actions',\n  template: `<button (click)=\"formContext.submit()\">Submit</button>`,\n})\nexport class FormActionsComponent {\n  formContext = injectFormContext();\n}\n```\n\n---\n\n## injectLazy\n\nDefers the resolution and instantiation of an injection token until the returned getter function is actually called.\n\nAngular's native `inject()` resolves and instantiates dependencies immediately during the construction phase. If a service is heavily resource-intensive but only needed conditionally (like an export service or a complex editor), `injectLazy` allows you to capture the injection context immediately while delaying instantiation. The resolved value is cached, acting as a standard scoped singleton on subsequent calls.\n\n> **`injectLazy` vs `injectAsync`:** they solve adjacent problems. `injectAsync(() => import('./heavy'))` defers _loading the code_ (a separate bundle chunk) and returns a `Promise`; `injectLazy(Heavy)` defers _constructing_ an already-bundled service and stays synchronous. If your goal is bundle size, use [`injectAsync`](#injectasync). If your goal is construction timing (or you need a sync getter), `injectLazy` is the fit. They also compose.\n\n### Basic Usage\n\n```typescript\nimport { Component, HostListener } from '@angular/core';\nimport { injectLazy } from '@mmstack/di';\n\n@Component({\n  selector: 'app-export-button',\n  template: `<button>Export Data</button>`,\n})\nexport class ExportButtonComponent {\n  // Captures the Injector but does NOT instantiate HeavyExportService yet\n  private getExportService = injectLazy(HeavyExportService);\n\n  @HostListener('click')\n  export() {\n    // HeavyExportService is instantiated on the first click, then cached\n    const service = this.getExportService();\n    service.doExport();\n  }\n}\n```\n\n### With Options\n\nIt fully supports Angular's `InjectOptions` and guarantees correct return types (e.g., returning `T | null` when `optional: true`):\n\n```typescript\nconst getOptionalDep = injectLazy(MyToken, { optional: true });\n\n// Later...\nconst dep = getOptionalDep(); // MyToken | null\n```\n\n---\n\n## injectAsync\n\nLazily loads a service's code chunk via a dynamic `import()` and resolves it from DI on first access — a v19+ port of Angular v22's native [`injectAsync`](https://angular.dev/api/core/injectAsync). It returns a memoized getter; the loader runs at most once, and the resolved instance is cached. Must be called in an injection context.\n\n**Use the native one when you can.** On Angular v22+, if the service is auto-provided (`@Injectable({ providedIn: 'root' })` or `@Service()`), reach for Angular's built-in `injectAsync` — nothing here is needed. This implementation exists for the cases the built-in can't cover:\n\n- **Angular v19–v21**, which have no `injectAsync` at all.\n- **Services that aren't root-provided** — a plain `@Injectable()`, or one you want scoped to a component/route. The native API _requires_ `providedIn: 'root'` / `@Service()` because it resolves via `injector.get(token)`. This version instead does a behavioral probe: if the token resolves through normal DI you get that instance (identical to native, including the root singleton); otherwise, if it's a class, it's **auto-provided** in a child injector scoped to — and destroyed with — the target injector.\n\n### Basic Usage\n\n```typescript\nimport { Component } from '@angular/core';\nimport { injectAsync } from '@mmstack/di';\n\n@Component({\n  selector: 'app-editor',\n  template: `<button (click)=\"preview()\">Preview</button>`,\n})\nexport class EditorComponent {\n  // MarkdownService lives in its own chunk — not loaded until preview() runs.\n  private readonly markdown = injectAsync(() =>\n    import('./markdown.service').then((m) => m.MarkdownService),\n  );\n\n  async preview(src: string) {\n    const svc = await this.markdown(); // loads + resolves on first call, cached after\n    return svc.render(src);\n  }\n}\n```\n\nA default-export module works too — `injectAsync(() => import('./markdown.service'))` when `MarkdownService` is the module's `default` export.\n\n### Options\n\n`injectAsync(loader, options?)` accepts:\n\n- **`optional`, `self`, `skipSelf`, `host`** — the same `InjectOptions` flags as `injectLazy`. `{ optional: true }` widens the getter to `Promise<T | null>` (returned when a token loader has no provider; a loaded _class_ always resolves).\n- **`prefetch`** — eagerly load ahead of the first access. Pass `'idle'`, a millisecond deadline (`number`), or a custom `() => Promise<void>` trigger. Only runs in the browser, and is skipped on slow / data-saver connections.\n- **`providedWith`** — an `Injector` (or `InjectionToken<Injector>`) to resolve/auto-provide against, instead of the call-site injector. This is the knob `provideLazy` builds on.\n\n```typescript\n// Prefetch the chunk when the browser goes idle:\nprivate readonly heavy = injectAsync(\n  () => import('./heavy.service').then((m) => m.HeavyService),\n  { prefetch: 'idle' },\n);\n```\n\n> **SSR:** `injectAsync` holds no module-level state — everything is captured per-call (per request), and `prefetch` is a no-op on the server. Like the native API, the in-flight import is **not** registered with `PendingTasks`, so it won't hold server rendering — it's meant for interaction-time services, not render-blocking data.\n\n---\n\n## provideLazy\n\nRegisters a lazily-loaded dependency against a token and returns a `[injectFn, provideFn, token]` tuple. The provided value is a **loader** (a dynamic `import()`) rather than an eager value — so you can declare a lazy dependency in a route's (or component's) `providers` and inject it deep in the tree, without that consumer statically importing the module.\n\nIt's built on `injectAsync`, so it inherits auto-provisioning, lifecycle-tied teardown, and the options above. **Scope-shared:** every consumer under the same provider boundary shares one instance and one in-flight load — the resolver is built once at the provide site, matching what putting something in `providers` means.\n\n```typescript\nimport { Component } from '@angular/core';\nimport { Routes } from '@angular/router';\nimport { provideLazy } from '@mmstack/di';\n\nconst [injectMarkdown, provideMarkdown] =\n  provideLazy<MarkdownService>('Markdown');\n\n// Register the lazy dependency at a route boundary:\nconst routes: Routes = [\n  {\n    path: 'docs',\n    providers: [\n      provideMarkdown(() =>\n        import('./markdown.service').then((m) => m.MarkdownService),\n      ),\n    ],\n    loadComponent: () => import('./docs.component'),\n  },\n];\n\n// Consume it anywhere under that route — no static import of the module:\n@Component({\n  selector: 'app-docs',\n  template: `...`,\n})\nexport class DocsComponent {\n  private readonly markdown = injectMarkdown(); // () => Promise<MarkdownService>, memoized & shared\n  async preview(src: string) {\n    return (await this.markdown()).render(src);\n  }\n}\n```\n\n`injectFn()` accepts `{ optional: true }` (resolves `null` if no loader was provided rather than throwing), and the third tuple element is the raw loader `InjectionToken` — handy for `TestBed.overrideProvider(token, { useValue: mockLoader })`.\n\n---\n\n## createRunInInjectionContext\n\nCaptures an injection context securely and returns a runner function.\n\nThis utility allows you to execute callbacks inside the captured context at a later time. It solves the common pain point of needing to use `inject()` inside asynchronous callbacks, RxJS streams, or external event listeners where the framework's implicit injection context has been lost.\n\n### Basic Usage\n\n```typescript\nimport { Component, OnInit, inject } from '@angular/core';\nimport { createRunInInjectionContext } from '@mmstack/di';\n\n@Component({\n  selector: 'app-dialog-trigger',\n  template: `<button>Open Dialog</button>`,\n})\nexport class DialogTriggerComponent implements OnInit {\n  // Grabs the current injector during construction\n  private runInContext = createRunInInjectionContext();\n\n  ngOnInit() {\n    // someExternalLibrary is out of Angular's zone/context\n    someExternalLibrary.on('openEvent', () => {\n      this.runInContext(() => {\n        // We can safely use `inject()` here even though we are inside an async callback!\n        const dialog = inject(DialogService);\n        dialog.open();\n      });\n    });\n  }\n}\n```\n\n### With Explicit Injector\n\nYou can also completely bypass the ambient capture and provide an `Injector` explicitly:\n\n```typescript\n// Outside of normal injection context\nconst runner = createRunInInjectionContext(appRef.injector);\n\nrunner(() => {\n  const router = inject(Router);\n  router.navigate(['/home']);\n});\n```\n\n---\n\n## rootInjectable\n\nCreates a lazily-initialized root-level injectable that maintains a singleton instance across your entire application. The factory function runs in the root injection context on first access, allowing you to inject other dependencies.\n\n**Important:** This should only be used for pure singletons. If you need scoped instances, use regular `@Injectable` services with `providedIn` or component-level providers.\n\n### Basic Usage\n\n```typescript\nimport { Injectable } from '@angular/core';\nimport { rootInjectable } from '@mmstack/di';\n\ntype Logger = {\n  log: (message: string) => void;\n};\n\n// Create a root-level injectable\nconst injectLogger = rootInjectable<Logger>(() => ({\n  log: (message) => console.log(`[${new Date().toISOString()}] ${message}`),\n}));\n\n@Injectable()\nexport class DataService {\n  private logger = injectLogger();\n\n  fetchData() {\n    this.logger.log('Fetching data...');\n  }\n}\n\n@Injectable()\nexport class UserService {\n  private logger = injectLogger(); // Same instance as above\n\n  saveUser() {\n    this.logger.log('Saving user...');\n  }\n}\n```\n\n### With Dependencies\n\nThe factory function receives the root injector, allowing you to inject other services:\n\n```typescript\nimport { HttpClient } from '@angular/common/http';\nimport { rootInjectable } from '@mmstack/di';\n\ntype ApiClient = {\n  get: (url: string) => Promise<any>;\n  post: (url: string, data: any) => Promise<any>;\n};\n\nconst injectApiClient = rootInjectable<ApiClient>((injector) => {\n  const http = injector.get(HttpClient); // or just inject(HttpClient)\n\n  return {\n    get: (url) => fetch(url).then((r) => r.json()),\n    post: (url, data) =>\n      fetch(url, {\n        method: 'POST',\n        body: JSON.stringify(data),\n      }).then((r) => r.json()),\n  };\n});\n\n@Injectable()\nexport class ProductService {\n  private api = injectApiClient(); // Singleton instance\n\n  loadProducts() {\n    return this.api.get('/api/products');\n  }\n}\n```\n\n### State Management Example\n\nCreate a simple global state manager:\n\n```typescript\nimport { signal, computed } from '@angular/core';\nimport { rootInjectable } from '@mmstack/di';\n\ntype User = {\n  id: string;\n  name: string;\n  email: string;\n};\n\ntype AuthState = {\n  user: User | null;\n  isAuthenticated: boolean;\n};\n\nconst injectAuthStore = rootInjectable(() => {\n  const user = signal<User | null>(null);\n  const isAuthenticated = computed(() => user() !== null);\n\n  return {\n    user: user.asReadonly(),\n    isAuthenticated,\n    login: (userData: User) => user.set(userData),\n    logout: () => user.set(null),\n  };\n});\n\n@Injectable()\nexport class AuthService {\n  private store = injectAuthStore(); // Singleton across app\n\n  login(email: string, password: string) {\n    // Perform authentication...\n    this.store.login({\n      id: '123',\n      name: 'John Doe',\n      email,\n    });\n  }\n\n  logout() {\n    this.store.logout();\n  }\n}\n\n@Component({\n  selector: 'app-navbar',\n  template: `\n    @if (authStore.isAuthenticated()) {\n      <span>{{ authStore.user()?.name }}</span>\n      <button (click)=\"logout()\">Logout</button>\n    }\n  `,\n})\nexport class NavbarComponent {\n  authStore = injectAuthStore(); // Same instance\n\n  logout() {\n    this.authStore.logout();\n  }\n}\n```\n\n---\n\n## createScope\n\nCreates a dependency injection scope using a dynamic `InjectionToken` representing a caching registry. Factories executed within the scope run in the Angular injection context and their results are cached, effectively creating scoped singletons, that are destroyed when the scoped provider is. It returns a tuple of `[injectable, provider]`.\n\n### Basic Usage\n\n```typescript\nimport { Component, inject } from '@angular/core';\nimport { createScope } from '@mmstack/di';\n\n// Create the scope\nconst [injectableFeatureItem, provideFeatureScope] =\n  createScope('FeatureScope');\n\n// Provide the scope at a specific component level boundary\n@Component({\n  selector: 'app-feature',\n  providers: [provideFeatureScope()],\n  template: `<app-child></app-child>`,\n})\nexport class FeatureComponent {}\n\n// Use the scope to register an item factory\n// The factory will run in the injection context so you can use inject()\nconst useFeatureItem = injectableFeatureItem(() => {\n  const someDep = inject(SomeDependency);\n  return {\n    id: Math.random(),\n    doWork: () => someDep.work(),\n  };\n});\n\n@Component({\n  selector: 'app-child',\n  template: `<div>Child Item ID: {{ item.id }}</div>`,\n})\nexport class ChildComponent {\n  // Always returns the exact same instance for this specific scope provider boundary\n  item = useFeatureItem();\n}\n```\n\nEach subtree that provides the scope gets its **own** set of instances — two sibling `<app-feature>` components don't share anything.\n\n### Overrides (testing / Storybook)\n\nThe provide function accepts `overrides` — pairs of `[injectFn, replacementFactory]` that swap a specific registration at that boundary only. Dependents resolve the override transitively:\n\n```typescript\nconst [register, provideFeatureScope] = createScope('FeatureScope');\n\nconst injectLogger = register(() => inject(RealLogger));\nconst injectWorker = register(() => createWorker(injectLogger()));\n\n// In a test or story — same scope, stubbed logger:\nTestBed.configureTestingModule({\n  providers: [\n    provideFeatureScope({\n      overrides: [[injectLogger, () => ({ log: () => void 0 })]],\n    }),\n  ],\n});\n// injectWorker() now receives the stub too\n```\n\n---\n\n## provideAs\n\nA tiny convenience that builds a provider from either a plain value (`useValue`) or a zero-arg factory (`useFactory`). The factory branch runs in an injection context, so it can use `inject()`:\n\n```typescript\nimport { provideAs } from '@mmstack/di';\n\nproviders: [\n  provideAs(RETRY_COUNT, 3), // useValue\n  provideAs(API_CONFIG, () => ({ baseUrl: inject(BASE_URL) })), // useFactory, inject() works\n];\n```\n\n> **Heads up:** functions are _always_ treated as factories. If your token holds a function type, wrap the value: `provideAs(VALIDATOR, () => myValidatorFn)` — passing it bare would call it as a factory.\n\n---\n\n## License\n\nMIT © [Miha Mulec](https://github.com/mihajm)\n","readmeFilename":"README.md"}