{"_id":"@dmytromykhailiuk/dependency-injection-container","_rev":"5-ffbe27f44abb0f72486c554cd637d570","name":"@dmytromykhailiuk/dependency-injection-container","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.2":{"name":"@dmytromykhailiuk/dependency-injection-container","version":"1.0.2","author":{"name":"Dmytro Mykhailiuk"},"license":"ISC","_id":"@dmytromykhailiuk/dependency-injection-container@1.0.2","maintainers":[{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"}],"homepage":"https://github.com/dmytromykhailiuk/dependency-injection-container#readme","bugs":{"url":"https://github.com/dmytromykhailiuk/dependency-injection-container/issues"},"dist":{"shasum":"0b87203804490e2a472ef3ed5f7423d48292a125","tarball":"https://registry.npmjs.org/@dmytromykhailiuk/dependency-injection-container/-/dependency-injection-container-1.0.2.tgz","fileCount":12,"integrity":"sha512-7sYPkrYDCUPPnV8zguNlnx5noaRjOt7nipj2kFzzuGJRHUEW6TQe9YyJjOUTIiIPZRtR0HaQTtQTS3opphlSTg==","signatures":[{"sig":"MEUCIQCCazkz+Yf3r2Xcy3AyH3CTcuPZkRypTu0p73JYcZJw0wIgLCnOUYYBlX4ZqVDzmoYzmLKPSkEne+MRv/qVUq1xFaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCmfgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHCA//feCD3dVhXMCq0+koEd8BI3mbyHPcr4/kQUF/ALOfLFhlntf/\r\nSaCy3Lzg4jVqzs/ipYnkWx9Cz7BD7LQ0Jl7UeLQWGvoZdmo27tfds8C2BRUy\r\nVhj0P2vFuk5Vxei6JxV6+BtHtjnuMXG36PjG7n+dlyPOgw9X6XPXxK1b5L9m\r\n3Nv1AwndFuZ874hq3PdwRQ+CIJR/YW/v7cECBG01YA6BQCRpHiq7cEQ747KD\r\n6tVlMuaLyEIE8eC08rn6WL13cmia10hc2EM/8XonWYfKi3qX6ha3oUEJN6wq\r\nGzIqpVhRsl+GfGBlhO/G7cz4ikzLhVlffvnTbLD21AyNUmuOzOTv5fuEo4c1\r\n9rTnyaJTO2UhMA2RSefTCnLJWzivfBd5qHbQut0UjlSCij+acJ9Ez3lWlSW7\r\nccE/ebEI4iPMiM9cL9b6/d9EcGToU+o8wbJ0EiwrU83mb0j1Cu+iUowtB8Xr\r\nwi6N7oSZ6FweJBgYFBCDcGQUuOoST0n3Ohp6maOJkEXb/WAECZ5Y4wDwPHJ5\r\nv4QaO7IDtPg3lQS39yG4CM5EpxA7Czw19xbuwV/hCN0PVQ8B7gZRG5809EuT\r\nGj1tqAVzE7G9hEScT8ofIoBB/U3rCqLv248PZXZsfkJiLv64feRO89RJoaA+\r\nbeCQziQEGJbPw5x9uc/QDNHur3HJnNWLH9U=\r\n=FQ14\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"0188eeac855cfc7b8ef598e5374f00ef8ce8ee67","scripts":{"compile":"npx tsc"},"_npmUser":{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"},"repository":{"url":"git+https://github.com/dmytromykhailiuk/dependency-injection-container.git","type":"git"},"_npmVersion":"8.19.2","description":"Solution for Dependency creation and management","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","eslint":"^8.35.0","prettier":"^2.8.4","typescript":"^4.9.5","@types/node":"^18.15.0","eslint-config-prettier":"^8.7.0","@typescript-eslint/parser":"^5.54.1","eslint-config-airbnb-typescript":"^17.0.0","@typescript-eslint/eslint-plugin":"^5.54.1"},"_npmOperationalInternal":{"tmp":"tmp/dependency-injection-container_1.0.2_1678403551839_0.8895553127015987","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.3":{"name":"@dmytromykhailiuk/dependency-injection-container","version":"1.0.3","author":{"name":"Dmytro Mykhailiuk"},"license":"ISC","_id":"@dmytromykhailiuk/dependency-injection-container@1.0.3","maintainers":[{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"}],"homepage":"https://github.com/dmytromykhailiuk/dependency-injection-container#readme","bugs":{"url":"https://github.com/dmytromykhailiuk/dependency-injection-container/issues"},"dist":{"shasum":"45538d0aeca1220c756c0d9e995025a3586aa662","tarball":"https://registry.npmjs.org/@dmytromykhailiuk/dependency-injection-container/-/dependency-injection-container-1.0.3.tgz","fileCount":12,"integrity":"sha512-ZYh1l6A8MTbED0PMf9Mt/5E1mAGshcfMrlF/VkTXlSLOZ5MrzFnf5AqKpd+qy1SH9p0Kn/IY+ptUBccVl/ro3g==","signatures":[{"sig":"MEUCIHo/PAE/uyUSRMXZB9y9gZxuiwxNE7NBro/RGvgz3pJSAiEAiHhtTDNtwpU0S1kxZr6622tK3LnALzSZ/o9Ja2XgF5E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCv4ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJ6Q//SwnDP5MNzmy8cMJJOm3G6cueUdyOIkYQbb9KnRaZKfVtl49l\r\nUiJpY4odnQkez7LD93ywFwaJze9zEoNWdXj/W6zgSqB/ERdQvf0toOEnUIyc\r\n+xJtwnymRJ9GkOzWPbsj0wj5POepCTCYqtCxENHrX7K1AvlHz7Nh9hICS8vG\r\nQ0E8wTAZairGHlUw3hw3kiPhpbzxRjeU1TqgShyHDtnqp1oER7ZKWFUIbcsE\r\nMsM16N/0QkxmOugqOxIjhupd/vvWTWdnm23UYtpLTaqbCMlI8+SbWUK+StTF\r\neSqXswjq6j5vzMuQ9jWigIeC2yvkBFBlD6ekjt660I7tLtEOLLL3VeappSGh\r\ng79fSXsLkRviNBXtECsgORkwxRfR9GZdxImMbJ6SL8AfjfKE1l4OXPscfMNQ\r\nlJF3y9FgdgZF0yP+1KX4hwPKjD9MQeW57GmpO44FKEY3HfCCixvkZRvtcYV+\r\nnTzvuVzLgqCo0Kd3awQbbRfqY6Nc/ymBl+DNYOO6upVcVhDlQiIovuPKOw4V\r\n32IhGkKolLtn6n7RQ8M1mu/TUmM1WNHIo++RhzO58wPqiXK5rEj2o7ijFrC2\r\nz03cR/gPkBhlfB+DrAuE7WzcqEkCL/XbxNqPvlCfq7+SQ5RtkUWgsc9iLWLK\r\nzBo+cWpg+L6fxrfClHyypG9DPj8EAPWHn6o=\r\n=fkds\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"710e61db6063b5c7aac928d180b74fd4d5da1375","scripts":{"compile":"npx tsc"},"_npmUser":{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"},"repository":{"url":"git+https://github.com/dmytromykhailiuk/dependency-injection-container.git","type":"git"},"_npmVersion":"8.19.2","description":"Solution for Dependency creation and management","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","eslint":"^8.35.0","prettier":"^2.8.4","typescript":"^4.9.5","@types/node":"^18.15.0","eslint-config-prettier":"^8.7.0","@typescript-eslint/parser":"^5.54.1","eslint-config-airbnb-typescript":"^17.0.0","@typescript-eslint/eslint-plugin":"^5.54.1"},"_npmOperationalInternal":{"tmp":"tmp/dependency-injection-container_1.0.3_1678442009066_0.8371315975578049","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.4":{"name":"@dmytromykhailiuk/dependency-injection-container","version":"1.0.4","author":{"name":"Dmytro Mykhailiuk"},"license":"ISC","_id":"@dmytromykhailiuk/dependency-injection-container@1.0.4","maintainers":[{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"}],"homepage":"https://github.com/dmytromykhailiuk/dependency-injection-container#readme","bugs":{"url":"https://github.com/dmytromykhailiuk/dependency-injection-container/issues"},"dist":{"shasum":"ebca9b3fbc7a6ecda530e94dc2651215a8b67817","tarball":"https://registry.npmjs.org/@dmytromykhailiuk/dependency-injection-container/-/dependency-injection-container-1.0.4.tgz","fileCount":12,"integrity":"sha512-kYu5RR25W4vOZc1RmC50DNLL8gU8bPeAHX6Aol2KOfiq/26AGBypyPQYNhg8BCaW56jSgZ2pMdwTQxNIvFHeVg==","signatures":[{"sig":"MEQCIEtNlq6EjG65O7cJ2Zm+Qqui7wcd1fojt1U0jurhVZDKAiBZ89UZXQT403l9Sd74jHU5AVyESF+bLygGx4CT4oIz3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCwLQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLGRAAl/5kIHIWHss9/7kmSWB3IRxo4N/woSHjqh/fJEYNCnSNlVDO\r\nrcoht7ihvSfb9YSzBRzYbhY5l9cvfBpPFzoT39RaCZIyBjtJbmA+5zs3Lsq3\r\nH6RDY/Frw9R28oyWdvLhrMenBLrJ4F6QcFNjmsS463YsWfbxOb3IzfouT/Nm\r\nprEOwHH9UWzueH+G92i2fHpsacP+KB95RI9sjAueGoPTYYei8fwgamt5DTZj\r\nufptPx4pT3yREb7BiovuO1tKuicFm8+wgZFexj8OjInZeX3NyePzQKNw0ziL\r\nIYoyWnaoAwJLycKyNaxd06zJnSAOSvrFijhk2g3L0jsBq7M4E04srmXLomWJ\r\nXKPD6XM/iUGYzZoQNkKbaRhPFLVRxzAlZF7YwOsanvPKNj4Z0GMD3jD4QkE1\r\nAWWl2N8jPxSMYHF5lBkmWzfAqOw2lpjiwxjaW8pYhsT5PDTPrbcwMXtRWOtO\r\nhC9dB9r8ZiILlYx7jq3pIY7Ige3ZJcKXg70xoV5CguaxJmPkaAE+UCNUmVPU\r\nGvJP4bc4YmP0dZr3CDK/3rD+yXAskA725yOwOWZ1VlSDZKubIScvpTTsaizZ\r\nh03SPYV3h+3dohcJopKTaUpwbapsZUTwPxZU5r+k8ED1UOShVhhCs+P6F5Ri\r\n393YYe10MiNnwkP4q4sWhon00uz1eOeszCU=\r\n=bowi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"67a97eede86fbf4ae21417049c2ab52a63308372","scripts":{"compile":"npx tsc"},"_npmUser":{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"},"repository":{"url":"git+https://github.com/dmytromykhailiuk/dependency-injection-container.git","type":"git"},"_npmVersion":"8.19.2","description":"Solution for Dependency creation and management","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","eslint":"^8.35.0","prettier":"^2.8.4","typescript":"^4.9.5","@types/node":"^18.15.0","eslint-config-prettier":"^8.7.0","@typescript-eslint/parser":"^5.54.1","eslint-config-airbnb-typescript":"^17.0.0","@typescript-eslint/eslint-plugin":"^5.54.1"},"_npmOperationalInternal":{"tmp":"tmp/dependency-injection-container_1.0.4_1678443216486_0.006541349271548702","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.5":{"name":"@dmytromykhailiuk/dependency-injection-container","version":"1.0.5","author":{"name":"Dmytro Mykhailiuk"},"license":"ISC","_id":"@dmytromykhailiuk/dependency-injection-container@1.0.5","maintainers":[{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"}],"homepage":"https://github.com/dmytromykhailiuk/dependency-injection-container#readme","bugs":{"url":"https://github.com/dmytromykhailiuk/dependency-injection-container/issues"},"dist":{"shasum":"845540290c647a8a97aa22ebe9d6ec87cd6e2f92","tarball":"https://registry.npmjs.org/@dmytromykhailiuk/dependency-injection-container/-/dependency-injection-container-1.0.5.tgz","fileCount":12,"integrity":"sha512-SM3CHInnkTQKH7OImJay4YWUN9m9VRM5Hmcu9S1tpiAJypN4C7vkcwH1CNC9zxTlHn++VnY4Dl19FPpxDWJDJw==","signatures":[{"sig":"MEQCIBRTjWrPNBBzSJS/HV8D4X/wlPEvxo9O40vpJ4hHAGk3AiBX1XYJe2AzOhduYmztoZVmJfphy984bicUVruW6WjS8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkC1xmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQzBAAigJl+EIfodg4Uw5/kzoHtUvvfVRchDn4d8+ZNBHgvIMbGLQ+\r\n+D2+Z4zHi5MWnQmvhf5y9eXFUXLYyPaorZKCRurDQ+6Ai1q6tpx2apQMvbET\r\nRzfWbYeAuvcv+BpqTRdmYibIjE5wlBEkGb1vWOU0fXVJW4Yj4MKha6eWqK1c\r\nWTNo6uv+dOOo268LcK9tZOiD+DZ/o/1yssG2J7UyTcW8EiuvttsD15DLBQPZ\r\noXnFmmH23eFFpzEaBOB/ha8y2j8FbPoDRfV9TNyKa5sZiHhh5ORY8dM+3Z3v\r\nOVKuU0//5ewfTJJNrBqSIRonwfY87gVjFhK26cucPu6pIuAK3h/Qw+25NkCI\r\nfqPuEZ3scWoh4P/eyaJf0g+z6/KJPNebqJPWKljY6YxdlM+MgkSh2f4UIJsq\r\njC7cfse8FHYgiyhNore2U0M5sIVeUXSA+/S3GbfenuyPspiwaRts7jqbXgNr\r\nx4AsMACYlEl4ZHaXZMtyEfBu5QpCSv5kSaa+71N6qYae5hcifEMJwWfK7vAf\r\noWKHbndlnpcob1/dGzi6HZxNgoBHrhhVzmQ/vME0vJFZgnZ+7J5wZ8TiCIb3\r\nAfpvbAFvLtSjRPRPUzUkU/tWFNmjib5CcK9ficgKQ+zFfmgF3d3DdEir87PG\r\nDqLD8fgtCMJJjPmh5JIn7vckc8JAtD36Muo=\r\n=YXcD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"7fb52bec8546ad13a513ec1f70892753a9122929","scripts":{"compile":"npx tsc"},"_npmUser":{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"},"repository":{"url":"git+https://github.com/dmytromykhailiuk/dependency-injection-container.git","type":"git"},"_npmVersion":"8.19.2","description":"Solution for Dependency creation and management","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","eslint":"^8.35.0","prettier":"^2.8.4","typescript":"^4.9.5","@types/node":"^18.15.0","eslint-config-prettier":"^8.7.0","@typescript-eslint/parser":"^5.54.1","eslint-config-airbnb-typescript":"^17.0.0","@typescript-eslint/eslint-plugin":"^5.54.1"},"_npmOperationalInternal":{"tmp":"tmp/dependency-injection-container_1.0.5_1678466150319_0.9992993356592133","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2023-03-09T23:12:31.726Z","modified":"2026-08-12T16:09:55.465Z","1.0.2":"2023-03-09T23:12:32.028Z","1.0.3":"2023-03-10T09:53:29.223Z","1.0.4":"2023-03-10T10:13:36.646Z","1.0.5":"2023-03-10T16:35:50.471Z"},"bugs":{"url":"https://github.com/dmytromykhailiuk/dependency-injection-container/issues"},"author":{"name":"Dmytro Mykhailiuk"},"license":"ISC","homepage":"https://github.com/dmytromykhailiuk/dependency-injection-container#readme","repository":{"url":"git+https://github.com/dmytromykhailiuk/dependency-injection-container.git","type":"git"},"description":"Solution for Dependency creation and management","maintainers":[{"name":"dmytromykhailiuk","email":"dimamykhayluk@gmail.com"}],"readme":"# Dependency injection container\n\n**Solution for Dependency creation and management**\n\n(DI Container with inheritance similar to Angular and NestJS implementation)\n\n## Installation\n\n```sh\nnpm i @dmytromykhailiuk/dependency-injection-container\n```\n\n**Interesting packages**\n\n- [Dependency Injection Container](https://www.npmjs.com/package/@dmytromykhailiuk/dependency-injection-container)\n- [React Dependency Injection Module](https://www.npmjs.com/package/@dmytromykhailiuk/react-di-module)\n- [RxJS React Redux Effects](https://www.npmjs.com/package/@dmytromykhailiuk/rx-react-redux-effect)\n- [Condition Flow Engine](https://www.npmjs.com/package/@dmytromykhailiuk/condition-flow-engine)\n\n### Basic example of usage\n\n```typescript\n\nimport { Container } from '@dmytromykhailiuk/dependency-injection-container';\n\nclass Logger {\n  log(message: string) {\n    console.log(message);\n  }\n}\n\nclass ApiService {\n  static injectDependencies = [Logger];\n\n  constructor(private logger: Logger) {}\n\n  async makeCall(url: string) {\n    this.logger.log(`makeCall to ${url}`);\n\n    const result = await (await fetch(url)).json();\n\n    this.logger.log(`makeCall to ${url} Success -> result: ${JSON.stringify(result)}`);\n\n    return result;\n  }\n}\n\nclass UserService {\n  static injectDependencies = [ApiService, USER_URL];\n\n  constructor(private apiService: ApiService, private userUrl: string) {}\n\n  getUser(id: string) {\n    return this.apiService.makeCall(`${this.userUrl}/${id}`);\n  }\n}\n\nclass UserFacade {\n  static injectDependencies = [UserService]; // need to define this property for DI\n\n  currentUserId: string;\n\n  constructor(private userService: UserService) {}\n\n  getCurrentUser() {\n    return this.userService.getUser(this.currentUserId);\n  }\n}\n\nconst container = new Container();\n\ncontainer.registerProviders([\n  UserFacade,\n  UserService,\n  ApiService,\n  Logger,\n  {\n    useValue: 'https://example-user/',\n    provider: USER_URL,\n  },\n]);\n\nconst userFacade = container.inject<UserFacade>(UserFacade);\n\nuserFacade.getCurrentUser().then((user) => {\n  console.log(user);\n});\n\n```\n\n### Ways to register provider:\n\n#### using Class\n\n```typescript\n\ncontainer.registerProviders([SomeClass]); // instance of SomeClass will be created\n\n```\n\n#### using object with useValue proprty\n\n```typescript\n\nconst SECRET_KEY_TOKEN = 'SECRET_KEY_TOKEN';\n\ncontainer.registerProviders([\n  {\n    useValue: 'secret_key',\n    provider: SECRET_KEY_TOKEN\n  }\n]); // secret_key value will be registered using SECRET_KEY_TOKEN injection token\n\n```\n\n#### using object with useClass proprty\n\n```typescript\n\nclass ClassABC {\n  a() {  /* do something 1 */ }\n  b() {  /* do something 2 */ }\n  c() {  /* do something 3 */ }\n}\n\nabstract class ClassB {\n  abstract b: () => void\n}\n\ncontainer.registerProviders([\n  {\n    useClass: ClassABC,\n    provider: ClassB\n  }\n]); // instance of class ClassABC will be created with ClassB type/token \n\n```\n\n#### using object with useExisting proprty\n\n```typescript\n\ncontainer.registerProviders([\n  {\n    useValue: 1\n    provider: 'Token 1'\n  },\n  {\n    useExisting: 'Token 1',\n    provider: 'Token 2'\n  }\n]); // register new provider with extisting data/object in container\n\n```\n\n#### using object with useFactory proprty with deps\n\n```typescript\n\ncontainer.registerProviders([\n  {\n    useValue: 1\n    provider: 'Token 1'\n  },\n  {\n    useValue: 2,\n    provider: 'Token 2'\n  }\n  {\n    useFactory: (dataFromFirstToken, dataFromSecondToken) => {\n      // do something\n      \n      return newResultingProvider;\n    }\n    deps: ['Token 1', 'Token 2'],\n    provider: 'Token 3'\n  }\n]); // call factory function to register provider\n\n```\n\n#### using multi true\n```typescript\n\ncontainer.registerProviders([\n  {\n    useValue: 1,\n    multi: true,\n    provider: 'Token'\n  },\n  {\n    useValue: 2,\n    multi: true,\n    provider: 'Token'\n  }\n]);\n\nconst data = container.inject<number>('Token'); // [1, 2] // return values for \"Token\" provider\n\n```\n","readmeFilename":"README.md"}