{"_id":"@bulatlib/di","_rev":"7-9713ef19e02957921dcac35ce16f4062","name":"@bulatlib/di","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.2":{"name":"@bulatlib/di","version":"0.0.2","keywords":["di","dependency","injection","container"],"author":{"name":"bulatsan"},"license":"MIT","_id":"@bulatlib/di@0.0.2","maintainers":[{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"}],"homepage":"https://github.com/bulatsan/di-js#readme","bugs":{"url":"https://github.com/bulatsan/di-js/issues"},"dist":{"shasum":"129a5ae292c87209e7ac8302c5061488dbb4580f","tarball":"https://registry.npmjs.org/@bulatlib/di/-/di-0.0.2.tgz","fileCount":7,"integrity":"sha512-W9MlAtz+WdY15LCroJibMCER3IJX6fHYTsBTLupsv7uNbXGkcH2CBHWYnCz3DPdc5rLpWWJ1CGCjmUmMy0HzLA==","signatures":[{"sig":"MEUCIFZkOBOdtKRAdTJfqAuM9BZNsb0wypq9OGZajc/d9raRAiEAlR/KF0a4nzmJns00K2hAbsm6aqwHFPDZxw3goV+KGNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5752},"main":"./dist/index.cjs.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","default":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./package.json":"./package.json"},"gitHead":"427c4298b4295a93e9a30b47b379683dc62fd985","private":false,"scripts":{"fmt":"prettier --write .","pack":"rm -rf pack && mkdir -p pack && npm pack --pack-destination ./pack","build":"tsc -b && vite build -c vite.config.ts","prepare":"bun run build"},"_npmUser":{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"},"repository":{"url":"git+https://github.com/bulatsan/di-js.git","type":"git"},"_npmVersion":"11.5.1","description":"A simple dependency injection container","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.4","prettier":"^3.6.2","inversify":"^7.9.1","typescript":"^5.9.2","@types/node":"^24.3.0","vite-plugin-dts":"^4.5.4","@tsconfig/strictest":"^2.0.5"},"peerDependencies":{"inversify":">=5 <8"},"_npmOperationalInternal":{"tmp":"tmp/di_0.0.2_1756809994078_0.36750680958081383","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@bulatlib/di","version":"0.0.3","keywords":["di","dependency","injection","container"],"author":{"name":"bulatsan"},"license":"MIT","_id":"@bulatlib/di@0.0.3","maintainers":[{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"}],"homepage":"https://github.com/bulatsan/di-js#readme","bugs":{"url":"https://github.com/bulatsan/di-js/issues"},"dist":{"shasum":"0e34405964ecd25c5ab1d503115c0521dc06a48f","tarball":"https://registry.npmjs.org/@bulatlib/di/-/di-0.0.3.tgz","fileCount":11,"integrity":"sha512-QNfiJM/tGET0GYqAKddfHa3kMrHGxbMHe4XoOqK2b04bRbLDNGugx4g6j3Q4fUuUFg0MCjInjXanw5BKzAiI1w==","signatures":[{"sig":"MEUCIQDaPRSMRT3EFVI1uh2A+krmXus1AIlJScCPW1yr4/e0kwIgFGrgHZ9qZF/+UJxRXCawZI6KSJpSO5NrHen6UbkYquU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6013},"main":"./dist/index.cjs.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","default":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./package.json":"./package.json"},"gitHead":"8149f233ad399f1a8ecbfa2621ea9936e47629f4","private":false,"scripts":{"fmt":"prettier --write .","pack":"rm -rf pack &&  bun pm cache rm && bun run build && mkdir -p pack && npm pack --pack-destination ./pack","test":"vitest run","build":"tsc -b && vite build -c vite.config.ts"},"_npmUser":{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"},"repository":{"url":"git+https://github.com/bulatsan/di-js.git","type":"git"},"_npmVersion":"11.5.1","description":"A simple dependency injection container","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.4","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.0","vite-plugin-dts":"^4.5.4","@tsconfig/strictest":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/di_0.0.3_1756909176231_0.06957156356818572","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bulatlib/di","version":"0.0.4","keywords":["di","dependency","injection","container"],"author":{"name":"bulatsan"},"license":"MIT","_id":"@bulatlib/di@0.0.4","maintainers":[{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"}],"homepage":"https://github.com/bulatsan/di-js#readme","bugs":{"url":"https://github.com/bulatsan/di-js/issues"},"dist":{"shasum":"d7d59faf9c481ec4d92c030d02c27f72071f24d5","tarball":"https://registry.npmjs.org/@bulatlib/di/-/di-0.0.4.tgz","fileCount":11,"integrity":"sha512-UWyI2qsprXvxHUA6L+Kh53xrK04fiHQ4rbCVjsMAX3RRx0baRGTIaFVcTInbdEtyEZHC3dxNb3eHSCvMBHwD7A==","signatures":[{"sig":"MEQCIFcTmD8tlzEGYMSfwEErYydcn1ZDhKI40b9IU1yAhFjPAiBG8lEx5ibbyCrrzvH4+Ty0nnVlBel1R8Anv499qY2BtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5993},"main":"./dist/index.cjs.js","types":"./dist/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","default":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./package.json":"./package.json"},"gitHead":"8149f233ad399f1a8ecbfa2621ea9936e47629f4","private":false,"scripts":{"fmt":"prettier --write .","pack":"rm -rf pack &&  bun pm cache rm && bun run build && mkdir -p pack && npm pack --pack-destination ./pack","test":"vitest run","build":"tsc -b && vite build -c vite.config.ts"},"_npmUser":{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"},"repository":{"url":"git+https://github.com/bulatsan/di-js.git","type":"git"},"_npmVersion":"11.5.1","description":"A simple dependency injection container","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.4","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.0","vite-plugin-dts":"^4.5.4","@tsconfig/strictest":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/di_0.0.4_1757255947343_0.25255311878892583","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bulatlib/di","author":{"name":"bulatsan"},"version":"0.0.5","description":"A simple dependency injection container","license":"MIT","private":false,"publishConfig":{"access":"public"},"sideEffects":false,"main":"./dist/index.cjs.js","module":"./dist/index.es.js","types":"./dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/bulatsan/di-js.git"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js","default":"./dist/index.es.js"},"./package.json":"./package.json"},"keywords":["di","dependency","injection","container"],"scripts":{"test":"vitest run","build":"tsc -b && vite build -c vite.config.ts","pack":"rm -rf pack &&  bun pm cache rm && bun run build && mkdir -p pack && npm pack --pack-destination ./pack","lint":"biome check .","fmt":"biome format --write . && biome check . --fix"},"devDependencies":{"@biomejs/biome":"^2.3.11","@tsconfig/strictest":"^2.0.5","@types/node":"^24.3.0","prettier":"^3.6.2","typescript":"^5.9.2","vite":"^7.1.4","vite-plugin-dts":"^4.5.4","vitest":"^3.2.4"},"gitHead":"a74c200c1c62116965bfb3eaaf08a3411991468b","_id":"@bulatlib/di@0.0.5","bugs":{"url":"https://github.com/bulatsan/di-js/issues"},"homepage":"https://github.com/bulatsan/di-js#readme","_nodeVersion":"25.3.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-YdWhqysB/JsPoArHAf6/cwAVxiTlDsuoJz0cE4E3iMAK5B5ZDNXc6a2Z5nF6zYYn5clOZgTrAg8K06yJNqSTZw==","shasum":"b8bf743434f552abcc6ca0f059bdf8ffbd0547bf","tarball":"https://registry.npmjs.org/@bulatlib/di/-/di-0.0.5.tgz","fileCount":11,"unpackedSize":6188,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBi1vyCYL3F4nliPjH4hBY3SZqlbp0BwCHmVzcn+wGZaAiAP3SKQhlMix/zHigS30eTq8mKw55Yv75fDp7nNE80nzg=="}]},"_npmUser":{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"},"directories":{},"maintainers":[{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/di_0.0.5_1768508287658_0.4300313195312875"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-02T10:46:34.004Z","modified":"2026-01-15T20:18:07.942Z","0.0.1":"2025-09-01T15:01:32.251Z","0.0.2":"2025-09-02T10:46:34.248Z","0.0.3":"2025-09-03T14:19:36.398Z","0.0.4":"2025-09-07T14:39:07.527Z","0.0.5":"2026-01-15T20:18:07.797Z"},"bugs":{"url":"https://github.com/bulatsan/di-js/issues"},"author":{"name":"bulatsan"},"license":"MIT","homepage":"https://github.com/bulatsan/di-js#readme","keywords":["di","dependency","injection","container"],"repository":{"type":"git","url":"git+https://github.com/bulatsan/di-js.git"},"description":"A simple dependency injection container","maintainers":[{"name":"bulatsan","email":"bulat.akhmanov@gmail.com"}],"readme":"## @bulatlib/di — A simple dependency injection container\n\n### Install\n\n```bash\nnpm i @bulatlib/di\n# or\npnpm add @bulatlib/di\n# or\nbun add @bulatlib/di\n```\n\n### Quick start\n\n```ts\nimport { p, init } from '@bulatlib/di';\n\nconst createApi = () => {\n  return {\n    ping: () => 'pong',\n  };\n};\n\nconst createService = (api: { ping: () => string } = di.api.get()) => {\n  return {\n    run: () => api.ping(),\n  };\n};\n\nconst di = init(\n  {\n    api: p(() => createApi()),\n    service: p(() => createService()),\n  },\n  {\n    onBind: (name) => console.log('binding:', name),\n  },\n);\n\n// binding: di.service\n// binding: di.api\n\nconsole.log(di.service.get().run());\n// pong\n```\n\n### Override in tests\n\nYou can rebind any provider before the first `.get()`:\n\n```ts\nlet di = init({ api: p(() => new Api()) });\ndi.api.bind(() => new MockApi());\nconst api = di.api.get();\n```\n\n### API\n\n- `p(() => T)`: create a provider of `T`.\n- `init(deps, { initialKey = 'di', onBind? })` → returns initialized `deps`.\n- `Provider.bind(builder?)`: bind with optional custom factory.\n- `Provider.get()`: get a singleton instance.\n\nNotes:\n- All providers are singletons by default.\n- No decorators or `reflect-metadata` are required.\n","readmeFilename":"README.md"}