{"_id":"@amazon/vinyl-di","_rev":"11-91ae114fcf03f13fa8f06654fa7f200c","name":"@amazon/vinyl-di","dist-tags":{"hotfix-chromos":"1.2.1","latest":"3.2.0"},"versions":{"1.0.0":{"name":"@amazon/vinyl-di","version":"1.0.0","license":"UNLICENSED","_id":"@amazon/vinyl-di@1.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"afdff855d2f134e6ea974db9df462c051a11ee20","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-1.0.0.tgz","fileCount":31,"integrity":"sha512-lCSOybh+GPpK18u8Lpqnqu4hgkLlgbSFTwv2paFdOdEV+e0yllbWNMvh8b88TijaiAVG3GKIB0Lz61v3jvhblg==","signatures":[{"sig":"MEQCIG/jd5cJdJMUePcglbQuHa/mO4FY6U9VOZki+948ZAjiAiAcoDQBq4ADfOrgBahnTpeCqdLJV3Z64bmTtl9MEkNFBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146422},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"899b0a1f00cde05a1cc83870e04e3e75a023f8df","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.12.0","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.0.0","@amazon/vinyl-jasmine-wrapper":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_1.0.0_1779924428605_0.2926990179875115","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amazon/vinyl-di","version":"1.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-di@1.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"eb3c403c67a1e73fd1ca693764ed2ad89abc8a8a","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-1.1.0.tgz","fileCount":32,"integrity":"sha512-8ebkxNNkcTPn5FnX/z/rw3+s8PzGR7ZOCdJo3EJ1KTZr0xHFH0PlbY4vaKZiRSD8+cd0DMavjbom1nEtgPwJjw==","signatures":[{"sig":"MEUCIGMS1SYK2NFdvVUHxwVQgYgrnq2merjcKqMKtU0y5ploAiEAsdszKd3f2Q+tXgoxY2dOvKrBDZhKiqk2cpzVHpa47FQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156623},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"ea13070fb52c1903723f08f31c356465d2f3279e","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.0","@amazon/vinyl-jasmine-wrapper":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_1.1.0_1779979864520_0.007519717477056709","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@amazon/vinyl-di","version":"1.1.1","license":"Apache-2.0","_id":"@amazon/vinyl-di@1.1.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"9cc538b76ebc3178eb41c431db81dfee2bde80d2","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-1.1.1.tgz","fileCount":32,"integrity":"sha512-YCtwTDJaipSUKkxs0PYzqvLaQqINqfxn8smP6HQpJd1c0ERNCZQ8SlNXJn9Xj6qvUQEs9FjAQNawga1abwWOVQ==","signatures":[{"sig":"MEUCIQDdM1u+H8i8e8qg/eDERNjAQTlPT07nBYb4LMxWDLIbIAIgGzXXR7E1AG1KFFhuLkB7S04NTlfaUV3fXm7gaNVSvrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157242},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e5a3429d802564132b16808a5b8a8e15a023a548","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.1","@amazon/vinyl-jasmine-wrapper":"^1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_1.1.1_1779992629894_0.04926836272980384","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amazon/vinyl-di","version":"1.2.0","license":"Apache-2.0","_id":"@amazon/vinyl-di@1.2.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"66b4f2768cf49e8170c5f23446f4e7f3c2377654","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-1.2.0.tgz","fileCount":33,"integrity":"sha512-GladJhwSRytvwbG7zw7qydXtx+Ik4/ghpJ7O7Ot/0QgbxXDcsRMH9nBRjra71JcCueStFJIshJpCYVC4/VPBxQ==","signatures":[{"sig":"MEUCIApRS9G6I1fad5Np+gWTjmW26F01hbMxX73Ugp555YENAiEAutEPxtAbnSRxv0mEAlLAhmWImSPloxOIRzR9Aen7nFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217297},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"fbb8f1c60c5ada4a11f13954bb6bcb52f3cb0c5a","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.18.0","dependencies":{"@amazon/vinyl-util":"^1.2.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.2.0","@amazon/vinyl-jasmine-wrapper":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_1.2.0_1783026527768_0.5118430948984349","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@amazon/vinyl-di","version":"2.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-di@2.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"43824ff6c76642cf294b8e625a111a213b9fdf6e","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-2.0.0.tgz","fileCount":33,"integrity":"sha512-hxKaEhw5idxW2la9ZZ9QGU9Sm45DfAcVtjUsp2kFRIx4psfY3Llk+7iQDmLWtijfHysfcbv0Nhx5rmgA2V/nDg==","signatures":[{"sig":"MEYCIQDSjpITSvJwv5VhJqQ46MPckxmExDnHtrkEyYr7RLJGqwIhAO9zhmm7+nYxH+fD6Vput5DXnzP23oGRrtvfTwAjnGFM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227010},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"88ece0504b080347bbea6f240cf587ee863b7ff3","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.19.0+x64 (linux)","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.0","@amazon/vinyl-jasmine-wrapper":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_2.0.0_1787786880168_0.2630711894991338","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@amazon/vinyl-di","version":"2.0.4","license":"Apache-2.0","_id":"@amazon/vinyl-di@2.0.4","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"4f3f465df90415e5b5f0aedee7620ce19f67d1b3","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-2.0.4.tgz","fileCount":33,"integrity":"sha512-/7ONUuvjCgHXXDx3b1YpUoT9GfOWi5H4BekkNSZ1t8QqtDNHdUvRrlBBsQZpGywD0S99YOOaCj5Xf/5J6ilvrw==","signatures":[{"sig":"MEUCICftqTubs8xgCW940FsDTeQ7cYtaOIZYW+BOYPfhK3tjAiEAxlvUj5SQ51T3nJVXhOcAUqkb8266WmPVSAgAcYZOwjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226963},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"32017124d52ad4afe1f3d22569f13c5536db7799","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.4"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.4","@amazon/vinyl-jasmine-wrapper":"^2.0.4"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_2.0.4_1787815858263_0.32031145227918767","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@amazon/vinyl-di","version":"3.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-di@3.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"e033c661636442d4b46d4d409ecf23fcdf887564","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-3.0.0.tgz","fileCount":33,"integrity":"sha512-qV0BirFFRlEgkbt4Se/DD5XHfll2KgIWmjdCSzPGI86OS0nM0AgkHUecKK19sBhFUb0vquE+TYEMmm+ZoQjgkQ==","signatures":[{"sig":"MEQCICXW0hRlBdDOxqWCgOOnZxWM4kHGD3S14KAVHZ29dHHgAiA0gHCvn8kyD6Hh1hIYBEL+MtpALFWVq3ztMHbMpxw17w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226963},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"972f64a1f8c67bd131ce66000bcfed4f6ddce214","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.0","@amazon/vinyl-jasmine-wrapper":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_3.0.0_1787938269627_0.7886426193632499","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@amazon/vinyl-di","version":"3.0.1","license":"Apache-2.0","_id":"@amazon/vinyl-di@3.0.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"9c614da24ce65e6b19a8e788dd3fa6ac252a6708","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-3.0.1.tgz","fileCount":33,"integrity":"sha512-xS18RO9kpDDln9JSVMiZ38EBFBOLDC7FBL/DzjrgNPMXIUN17g5888J2qzKlyLpzGprMbAFkZr21BzkwHNQcsw==","signatures":[{"sig":"MEQCIHM2ElnZYVJi/EA8OtWPNz9Z1KUkH6hkK48ynljjHBYXAiBk7nqwo+1JOyozUUTmu9rnQjVEJ6PF17gFASTaWBebDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":226963},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e92800262ee42893adbc6f7e3a5a7391b54859d2","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.1"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.1","@amazon/vinyl-jasmine-wrapper":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_3.0.1_1787963970566_0.679003550739651","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@amazon/vinyl-di","version":"1.2.1","license":"Apache-2.0","_id":"@amazon/vinyl-di@1.2.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"0be5bc083dacca0c7cb38210fa4d9c902ee7ff52","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-1.2.1.tgz","fileCount":33,"integrity":"sha512-8OktZUEuC2QMaJeXj3cuRvIpcG5TvpQYNX0YlJiBVofU3v14uOY77/dbrTv4hzSL4+4crgjpXSETSDmyKPo9nw==","signatures":[{"sig":"MEQCID4ZMk/SM68eKIwn0DEivOaOiFGGCdlViyqF12siGIMjAiBws0mErR547C8dMOgPh+ojedMHRBMvWtMZHsGmXQJ/Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217693},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"7991713ee8da012613849053b979cd2517f1336c","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.12.0","dependencies":{"@amazon/vinyl-util":"^1.2.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@amazon/vinyl-build-utils":"^1.2.1","@amazon/vinyl-jasmine-wrapper":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_1.2.1_1788370002107_0.8907478667468349","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@amazon/vinyl-di","version":"3.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-di@3.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"c4be2a408802c0f78b2df3d3b19ca78be44f0200","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-3.1.0.tgz","fileCount":33,"integrity":"sha512-Nzu+LNlm8WVS/RpPvLA9Od7WnCRlx3BGi4Pvau78JjLLlsuYPbX3gRPdBMY8O6C6eh14rTqIOpK+U4ENS7LZUQ==","signatures":[{"sig":"MEYCIQCT3aPDt/FLclULfVh5gYmHaGEOKIefWROAJbUhnttzSgIhAJvOEi9IS/FMMU3DPEwcMpq5ogcDjG31e9XK0C6jBMQ5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227071},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"9e3200fa30db5543427e4618e8e2f0a20cf57996","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Simple dependency injection","directories":{},"sideEffects":["test/**/*"],"_nodeVersion":"24.20.0","dependencies":{"@amazon/vinyl-util":"^3.1.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.1.0","@amazon/vinyl-jasmine-wrapper":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-di_3.1.0_1788627297436_0.26879233977439787","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@amazon/vinyl-di","version":"3.2.0","description":"Simple dependency injection","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"license":"Apache-2.0","module":"./dist/index.js","main":"./dist/index.cjs","types":"./dist/types/ts3.7/index.d.ts","type":"module","sideEffects":["test/**/*"],"typesVersions":{">=5.4":{"*":["./dist/types/current/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]}},"exports":{".":{"types@>=5.4":"./dist/types/current/index.d.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"scripts":{"analyzeExports":"tsx buildSrc/analyzeExports.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","build":"tsx buildSrc/build.ts","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","test:coverage":"c8 npm run test","watch":"tsx buildSrc/build.ts --watch","watch:release":"tsx buildSrc/build.ts --watch --release","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix"},"devDependencies":{"@amazon/vinyl-build-utils":"^3.2.0","@amazon/vinyl-jasmine-wrapper":"^3.2.0"},"dependencies":{"@amazon/vinyl-util":"^3.2.0"},"publishConfig":{"access":"public"},"gitHead":"9b169bdcf10b790dc725df50f1bb6f175fc9a351","_id":"@amazon/vinyl-di@3.2.0","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"homepage":"https://github.com/amazonmusic/vinyl#readme","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-iw7mWlgWnJQrB56Zf73BxsFhl1jj9YNXeRRgsvm6hE0h5nr8ArEPTVktYCLc2+FzNYA6sqyCohZ5IsYfVcwRPw==","shasum":"be885849a5db5bc66c5345f54aba6c9f93dca2c4","tarball":"https://registry.npmjs.org/@amazon/vinyl-di/-/vinyl-di-3.2.0.tgz","fileCount":33,"unpackedSize":227071,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-di@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHY1asfMZqpGebVjBetnDMqO4vVTQlmrwfQ7VhgiBtOdAiEAtI2+pfFbGF+vTubtH1OUxGD1Me0NvLVxpgLCAuCpBwY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36f9d216-01c9-477b-90ca-95695b9570f7"}},"directories":{},"maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vinyl-di_3.2.0_1788999330472_0.6598961525343658"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T23:27:08.422Z","modified":"2026-09-10T00:15:31.043Z","1.0.0":"2026-05-27T23:27:08.741Z","1.1.0":"2026-05-28T14:51:04.657Z","1.1.1":"2026-05-28T18:23:50.037Z","1.2.0":"2026-07-02T21:08:47.904Z","2.0.0":"2026-08-26T23:28:00.309Z","2.0.4":"2026-08-27T07:30:58.398Z","3.0.0":"2026-08-28T17:31:09.746Z","3.0.1":"2026-08-29T00:39:30.757Z","1.2.1":"2026-09-02T17:26:42.250Z","3.1.0":"2026-09-05T16:54:57.577Z","3.2.0":"2026-09-10T00:15:30.620Z"},"bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"license":"Apache-2.0","homepage":"https://github.com/amazonmusic/vinyl#readme","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"description":"Simple dependency injection","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"readme":"# @amazon/vinyl-di\n\n[![Website](https://img.shields.io/badge/website-amazonmusic.github.io%2Fvinyl-blue)](https://amazonmusic.github.io/vinyl)\n[![npm](https://img.shields.io/npm/v/@amazon/vinyl-di.svg)](https://www.npmjs.com/package/@amazon/vinyl-di)\n[![size](https://img.shields.io/bundlejs/size/@amazon/vinyl-di.svg?label=size)](https://bundlejs.com/?q=@amazon/vinyl-di)\n\nConstructor-based dependency injection with a compile-time-checked dependency\ngraph. Used internally by Amazon Vinyl, but standalone.\n\n## Install\n\n```shell\nnpm install @amazon/vinyl-di\n```\n\n## Dependency Injection\n\nAmazon Vinyl uses the most common form of dependency injection; requesting\ndependencies through constructors.\n\nClass constructors have a `deps` parameter describing the required dependencies.\n\nE.g.\n\n```typescript\n/**\n * Dependencies for {@link RequesterImpl}\n */\nexport type RequesterImplDeps = {\n    readonly networkState: NetworkState\n    readonly fetch: Fetch\n    readonly networkMetricsController: NetworkMetricsController\n}\n\nexport class RequesterImpl {\n    constructor(protected readonly deps: RequesterImplDeps) {}\n\n    // ...\n}\n\nconst requester = new Requester({\n    networkState: new NetworkStateImpl(),\n    fetch: new FetchImpl(),\n})\n```\n\nThere are two steps to dependency injection: creating a record of dependency\nfactories, then creating a container that uses the factories to construct\nimplementations.\n\nWhen creating a record of dependency factories, the keys match the dependency\nproperties, and the values are functions that produce a dependency. The factory\nfunctions may accept a single argument indicating any dependencies required for\nthe implementation. Wrap the record in a call to `validateFactories` which is a\ncompile-time-only check that ensures the dependency graph is sound. That is,\nthere are no cyclic dependencies, missing dependencies, or incompatible types.\n\nExample:\n\n```typescript\nimport { validateFactories } from '@amazon/vinyl-di'\n\nclass A {}\n\ntype BDependencies = {\n    readonly a: A\n}\n\nclass B {\n    constructor(deps: BDependencies) {}\n}\n\ntype CDependencies = {\n    readonly a: A\n    readonly b: B\n}\n\nclass C {\n    constructor(deps: CDependencies) {}\n}\n\nconst factories = validateFactories({\n    a: () => new A(),\n    b: (deps: BDependencies) => new B(deps),\n    c: (deps: CDependencies) => new C(deps),\n} as const)\n```\n\nThese factories will be used to create implementations. Use `createContainer` to\ncreate a container that may be disposed and provides an object with getters to\nlazily construct implementations from the provided factories.\n\n```typescript\nimport { createContainer } from '@amazon/vinyl-di'\nimport { createDisposer } from '@amazon/vinyl-util'\n\nconst { add, dispose } = createDisposer()\n\nconst deps = add(createContainer(factories)).dependencies\n\ndeps.a // A {}\ndeps.b // B {}\ndeps.c // C {}\n```\n\n## External Dependencies\n\nSometimes you need to inject existing instances into a dependency container\nwithout transferring ownership. Use `externalDependencies` to wrap external\ndependencies that should not be disposed when the container is disposed.\n\n```typescript\nimport {\n    externalDependencies,\n    validateFactories,\n    createContainer,\n} from '@amazon/vinyl-di'\n\n// External services managed elsewhere\nconst logger = new Logger()\nconst options = { port: 8080, host: 'localhost' }\n\nconst factories = validateFactories({\n    // These won't be disposed by the container\n    ...externalDependencies({ logger, options }),\n\n    // This will be disposed by the container [if Server implements Disposable]\n    server: (deps: {\n        readonly options: ServerOptions\n        readonly logger: Logger\n    }) => new Server(deps.options, deps.logger),\n})\n\nconst container = createContainer(factories)\n\n// Use dependencies normally\ncontainer.dependencies.server.start()\n\n// Only server.dispose() is called, logger and options are left alone\ncontainer.dispose()\n```\n\nAs a general guideline, when defining a dependency to be provided, the interface\nrequested should be the minimum API needed, and disposal should be the\nresponsibility of the creator.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}