{"_id":"@catalist-nestjs/di","_rev":"9-9fc5ce3f076f8fe62add08e21a0892f1","name":"@catalist-nestjs/di","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.0":{"name":"@catalist-nestjs/di","version":"0.0.0","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","catalistfinance","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.0","gitHead":"a067d7c3d940e000e7de499da95f6b0214196f88","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-BXln5MmKOmvzKifLLuCrB6YcQ1Ghq8IZ0N4AsuQdZhiWFdttu62VdtVeSipOfS++PoETd5HMDF8x9L8YciHoYQ==","shasum":"aee20f15e9880dc9f59b0806cc76b3ee559f8c2e","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.0.tgz","fileCount":20,"unpackedSize":14951,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsWaTLqoY0hxEhwN7sqzMvBvj8fq2iEtlPbaW6VZt/QwIgWdLjv07+sH50BPhkQ67vF1O490njGlxe10oQsnQ69+k="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.0_1712559349560_0.8820292860766585"},"_hasShrinkwrap":false},"0.0.1":{"name":"@catalist-nestjs/di","version":"0.0.1","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.1","gitHead":"c4220e6b353b93055c334fcd9bada601c29e2625","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-oodD6cEhgi+KKKv+GzA9drF4WAyXyFn6PsC1lM8IELGZBoEhxwKzUfmBi083FLyWjJnGByfrAxxfL6evmkVdoQ==","shasum":"2d7e932127a461d87e59266b70f37a72d9cfd483","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.1.tgz","fileCount":20,"unpackedSize":14947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIALCSHRvp90otzmQ4EoQC7f0ycqYzc0dPAuTghD6Um6CAiBzttX+q+Shim++c/FeY3z+3CeMhNw5PHFtGc92vfGanA=="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.1_1713236155166_0.9507423211656292"},"_hasShrinkwrap":false},"0.0.3":{"name":"@catalist-nestjs/di","version":"0.0.3","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.3","gitHead":"eecc7653b7d450ad39236d4e8f0f50300c01008a","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-rJF6Ik1LEH3l23ZyH1B5U17AB4SKXxgJWPWPGElvGOdiCjsTFPbtG/baO4G9Pw2mJMI1YrdYT+P+4Kh33+Cwgg==","shasum":"2e02640159ea9cc61c39d3e3b8978a4a111cc3f3","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.3.tgz","fileCount":20,"unpackedSize":14947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgH+6H9xQVScOxgaW+CRBxaP7P2yXkJUi08vtUxmC1lAiAvwjo+apEpN0oC89nwzeXwbgbVDxrtNchlHZdUDqb3uQ=="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.3_1713252416296_0.17335482021245885"},"_hasShrinkwrap":false},"0.0.4":{"name":"@catalist-nestjs/di","version":"0.0.4","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.4","gitHead":"eecc7653b7d450ad39236d4e8f0f50300c01008a","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-Am83VQRsyv4sM3elIy2W5TO5Gw3q5mHHqwD4UkqehgnxWdAplPD05ly2aF9lOInx8ZaiIrKdAtleuQ3umLPkAw==","shasum":"72ad7025ae721a457ef5ddd59e1615605b44ae4d","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.4.tgz","fileCount":20,"unpackedSize":14947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDA2Gsi5Y/OYNSNiJk2ILX9X3xuOWE5f6WX0z3uxKs4xAiEAzkLAXDiBEqjtW+jF8FBcnKlzSgd6KqSZWaQ7M+7fHfw="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.4_1713252618083_0.5758761227211824"},"_hasShrinkwrap":false},"0.0.5":{"name":"@catalist-nestjs/di","version":"0.0.5","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"gitHead":"30d9a05ba7ed4497bc32f79dda50ff17ed19be7d","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_id":"@catalist-nestjs/di@0.0.5","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-dZtfOcsRISkshHUsQf+SllkwxYnF5Cul3U1cWimHiD6Ez1MKbC09MKGLxueL1seuqwJ5VDi47P5jtAUUgcF+TA==","shasum":"dc483dfeeae3a4b32c90a6bf5b3dec04436276bb","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.5.tgz","fileCount":20,"unpackedSize":14947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6ijLxXe9opbxxtXSm4KhUn2BfyIazjMfpsfZrbCtJWAiEA/JygVIwACzSEeBFzskLSciO9eyhuazv6R6iaUBwXUFQ="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.5_1713336154062_0.22514192225557528"},"_hasShrinkwrap":false},"0.0.6":{"name":"@catalist-nestjs/di","version":"0.0.6","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"gitHead":"30d9a05ba7ed4497bc32f79dda50ff17ed19be7d","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_id":"@catalist-nestjs/di@0.0.6","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-2vdBP46aP8JtI0MDRC5VVyH4Z7DBZuKpCUJszK5KhG+X4Ynf4DnXM1G+duCtXoBObwsSYd8BO8zYLh4p3C1x2Q==","shasum":"4197ca51e9a0d4df6589f9c28e2619002a3c150b","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.6.tgz","fileCount":20,"unpackedSize":14946,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlhECkot4kMBLdKsA66i3DYl3zUQs3eBHkV9kKgqDXeAIhAMp4HbW9JELbbFAWqX3oS1EglFGYq0sBu8qAQ+KXa0cr"}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.6_1713490803869_0.024060454760269412"},"_hasShrinkwrap":false},"0.0.7":{"name":"@catalist-nestjs/di","version":"0.0.7","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.7","gitHead":"30d9a05ba7ed4497bc32f79dda50ff17ed19be7d","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-uDTJouBwjAAu+GRpEGHh2A9YrLcwO6zjagLM+q0RLEbDy4Ez7CYwWJmxSc4fyUlAc8EqMuBnQIY1wRiMg3iSOg==","shasum":"58c2bed0fe2d972ab6c13a6d77d9bc181faa0034","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.7.tgz","fileCount":20,"unpackedSize":14946,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPr/i2F2L2iaUlFU0lBxkuaKJh78CTA8r11QKAnsn6mAiEA/l36RrZCKuFsXqg0NQVt6XiOgxY6zqQqr3YnsuDBbLk="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.7_1713491428803_0.43531575940886813"},"_hasShrinkwrap":false},"0.0.8":{"name":"@catalist-nestjs/di","version":"0.0.8","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.8","gitHead":"ccca55597f66fcceff2177cd14bcb457e789512c","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-nJMijLYnCBk4Htby2Gvyd09+nTudpcl42cDZIvkgPAr/AUieBJzUy/bsxiKHcrRfw+LFzt/zHXWf/KvywgoP9Q==","shasum":"235357b71518dd2742196b60850fca51a3939ed9","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.8.tgz","fileCount":20,"unpackedSize":14946,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtPk2bBxnb7FkxvXSv43A7We1i3fxZLnEZuUrWK24kAwIgJGSDfl0iPAeTtwxI6WZeEHYOs8QhKPlS+L2NaDTnPss="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.8_1714458504008_0.5641122652944277"},"_hasShrinkwrap":false},"0.0.9":{"name":"@catalist-nestjs/di","version":"0.0.9","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"_id":"@catalist-nestjs/di@0.0.9","gitHead":"ccca55597f66fcceff2177cd14bcb457e789512c","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-1ImoTVz+Y7wJttyD13NWv41puV+om1g0J1CCw467bPiAlGGYPdJUG30SkE/acyt6nLIsp+Sqi8mR31ioxFHQdA==","shasum":"7789ba63d7aa4bd572d8906ec5de0d3674e7b56f","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-0.0.9.tgz","fileCount":20,"unpackedSize":14946,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDK6Jooiq5pcQskH2cZ5blVmF+KxrbXL2UaPfJv0eEXsAiA/h3hO64ZbatnzgvYaU7/l3tzmzWeIrRojF7XClgKXRw=="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_0.0.9_1714458732191_0.3141424945800506"},"_hasShrinkwrap":false},"1.0.0":{"name":"@catalist-nestjs/di","version":"1.0.0","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"sideEffects":false,"keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2","tslib":"^2.3.1"},"devDependencies":{"@nestjs/common":"^8.2.5","@nestjs/core":"^8.2.5","@nestjs/testing":"^8.2.5","reflect-metadata":"^0.1.13","rxjs":"^7.5.2"},"gitHead":"ccca55597f66fcceff2177cd14bcb457e789512c","description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","_id":"@catalist-nestjs/di@1.0.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-2TmA1Ncs3Dbpmos2hTowtJfKcaKxMPNpmDG+NwYwIZwyz3dPsGxZ08U5SdRDJv2TcbJT1WKjJekJZRkHzQMJMw==","shasum":"a5c82326ab4fc43c48163ce27c151d67145d740e","tarball":"https://registry.npmjs.org/@catalist-nestjs/di/-/di-1.0.0.tgz","fileCount":20,"unpackedSize":14946,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAewi4w6EZfoHuv7eDo1e1Iofy6jOF6ynjwCpGl9lp4FAiBA4Yd6L4xI7d4VcPXlcjVJ92NutKIjxbh8L12AgfYknw=="}]},"_npmUser":{"name":"upvu","email":"uncommonlab.io@gmail.com"},"directories":{},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/di_1.0.0_1714459854810_0.9547770777353997"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-08T06:55:49.496Z","0.0.0":"2024-04-08T06:55:49.700Z","modified":"2024-04-30T06:50:55.257Z","0.0.1":"2024-04-16T02:55:55.360Z","0.0.3":"2024-04-16T07:26:56.472Z","0.0.4":"2024-04-16T07:30:18.288Z","0.0.5":"2024-04-17T06:42:34.201Z","0.0.6":"2024-04-19T01:40:04.008Z","0.0.7":"2024-04-19T01:50:28.950Z","0.0.8":"2024-04-30T06:28:24.191Z","0.0.9":"2024-04-30T06:32:12.365Z","1.0.0":"2024-04-30T06:50:55.023Z"},"maintainers":[{"name":"upvu","email":"uncommonlab.io@gmail.com"}],"description":"NestJS Dependency Injection runtime helpers for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)","homepage":"https://github.com/blockarchivelabs/catalist-nestjs-modules","keywords":["catalist","catalist-nestjs","catalist-nestjs-modules","uncommonlab","di"],"repository":{"type":"git","url":"git+https://github.com/blockarchivelabs/catalist-nestjs-modules.git","directory":"packages/di"},"bugs":{"url":"https://github.com/blockarchivelabs/catalist-nestjs-modules/issues"},"license":"MIT","readme":"# Nest JS Dependency Injection runtime helpers\n\nNestJS Dependency Injection runtime helpers for Catalist Finance projects.\nPart of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)\n\n## Install\n\n```bash\nyarn add @catalist-nestjs/di\n```\n\n## Motivation\n\nThis module exists to solve following things:\n\n1. the lack of runtime interfaces in Typescript\n2. necessity of `@Inject` decorators for constructor arguments when working with NestJS\n3. use of `Symbol` to point to specific implementation when working with NestJS\n\n## The problem\n\nWhen working with NestJS in case you need two different implementations of one interface,\nyou have to introduce multiple tokens (symbols), which point to different implementations.\n\n```ts\n// bar-service.interface.ts\nexport interface BarServiceInterface {\n  someMethod(): string;\n}\n```\n\n```ts\n// bar-service-a.ts\nexport const BarServiceAToken = Symbol();\n\nexport class BarServiceA implements BarServiceInterface {\n  someMethod(): string {\n    return 'BarServiceA';\n  }\n}\n```\n\n```ts\n// bar-service-b.ts\nexport const BarServiceBToken = Symbol();\n\nexport class BarServiceB implements BarServiceInterface {\n  someMethod(): string {\n    return 'BarServiceB';\n  }\n}\n```\n\n```ts\n// foo-service.ts\nimport { Inject, Injectable } from '@nestjs/common';\nimport { BarServiceInterface } from './bar-service.interface';\nimport { BarServiceAToken } from './bar-service-a';\nimport { BarServiceBToken } from './bar-service-b';\n\n@Injectable()\nexport class FooService {\n  // it's necessary to inject `BarServiceAToken` symbol here to point to specific implementation\n  public constructor(\n    @Inject(BarServiceAToken) private barService: BarServiceInterface,\n  ) {}\n\n  public checkInstanceOf() {\n    // this is impossible because Typescript types do not exist in runtime\n    this.barService instanceof BarServiceInterface;\n  }\n}\n```\n\n## Solution\n\nModule exposes two primitives:\n\n1. `createInterface<I>(nameOfInterface: string): InterfaceTag<I>` function.\n\nCreates special interface-like anonymous class `InterfaceTag` that acts like an interface\nutilizing `Symbol.hasInstance` method that allows to override behavior of `instanceof` operator.\n\n2. `@ImplementsAtRuntime<T>(interfaceTag: InterfaceTag<T>): ClassDecorator` class decorator\n\nClass decorator indicating that class implements interface at runtime with the help of `Reflect`.\nNeeded for proper work of `instanceof` operator for class instances.\n\n## Usage\n\n### Basic usage\n\n```ts\nimport { createInterface, ImplementsAtRuntime } from '@catalist-nestjs/di';\n\ninterface FooInterface {\n  foo(): string;\n}\n\ninterface BarInterface {\n  bar(): number;\n}\n\nconst FooInterface = createInterface<FooInterface>('FooInterface');\nconst BarInterface = createInterface<BarInterface>('BarInterface');\n\n@ImplementsAtRuntime(FooInterface)\nexport class FooBar implements FooInterface, BarInterface {\n  bar(): number {\n    return 2;\n  }\n\n  foo(): string {\n    return 'bar';\n  }\n}\n\nconst foobar = new FooBar();\n\nconsole.log(foobar instanceof FooInterface === true); // true\nconsole.log(foobar instanceof BarInterface === true); // true\n```\n\n### Nest.js usage\n\n```ts\n// service.interface.ts\nimport { createInterface } from '@catalist-nestjs/di';\n\nexport interface ServiceInterface {\n  doSmth(): string;\n}\n// the interface name and the name of the constant should be the same\nexport const ServiceInterface =\n  createInterface<ServiceInterface>('ServiceInterface');\n```\n\n```ts\n// service.ts\nimport { ImplementsAtRuntime } from '@catalist-nestjs/di';\nimport { Injectable } from '@nestjs/common';\n\n// here, we are importing the type and the constant in one variable 'ServiceInterface'\nimport { ServiceInterface } from './service.interface';\n\n@Injectable()\n@ImplementsAtRuntime(ServiceInterface)\nexport class ServiceA implements ServiceInterface {\n  doSmth(): string {\n    return 'serviceA';\n  }\n}\n\n@Injectable()\n@ImplementsAtRuntime(ServiceInterface)\nexport class ServiceB implements ServiceInterface {\n  doSmth(): string {\n    return 'serviceB';\n  }\n}\n```\n\n```ts\n// service.module.ts\nimport { Injectable } from '@nestjs/common';\nimport { ServiceA, ServiceB } from './service';\nimport { ServiceInterface } from './service.interface';\n\nexport interface ServiceModuleOptions {\n  service: 'A' | 'B';\n}\n\n@Module({})\nexport class ServiceModule {\n  static forRoot(options?: ServiceModuleOptions): DynamicModule {\n    return {\n      global: true,\n      ...this.forFeature(options),\n    };\n  }\n\n  static forFeature(options?: ServiceModuleOptions): DynamicModule {\n    return {\n      module: ServiceModule,\n      // depending on the options module can provide\n      // different immplementation for `ServiceInterface`\n      providers: [\n        options?.service === 'A'\n          ? {\n              provide: ServiceInterface,\n              useClass: ServiceA,\n            }\n          : {\n              provide: ServiceInterface,\n              useClass: ServiceB,\n            },\n      ],\n      exports: [ServiceInterface],\n    };\n  }\n}\n```\n\n```ts\n// some-other-service.ts\nexport class SomeOtherService {\n  // no `@Inject` decorator here\n  public constructor(private service: ServiceInterface) {}\n\n  public someMethod() {\n    // implementation of doSmth depends on `ServiceModuleOptions` value\n    this.service.doSmth();\n  }\n}\n```\n","readmeFilename":"README.md"}