diff --git a/CHANGELOG.md b/CHANGELOG.md index f43c01864..3dccfe17c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +## [7.10.0] + +### Added +- Added `InjectFromBaseOptionsLifecycle`. +- Added `InjectFromHierarchyOptionsLifecycle`. + +### Changed +- Updated `injectFromBase` with `lifecycle` property. +- Updated `injectFromHierarchy` with `lifecycle` property. + ## [7.9.1] ### Changed diff --git a/package.json b/package.json index ccfe65c1c..c6e749a58 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "description": "A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.", "dependencies": { "@inversifyjs/common": "1.5.2", - "@inversifyjs/container": "1.12.7", - "@inversifyjs/core": "8.0.0" + "@inversifyjs/container": "1.13.0", + "@inversifyjs/core": "9.0.0" }, "devEngines": { "packageManager": { @@ -89,5 +89,5 @@ "test:cjs": "nyc --reporter=lcov mocha lib/cjs/test/*.test.js lib/cjs/test/**/*.test.js --reporter spec" }, "sideEffects": false, - "version": "7.9.1" + "version": "7.10.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d25c1eb0e..451a7d8ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: specifier: 1.5.2 version: 1.5.2 '@inversifyjs/container': - specifier: 1.12.7 - version: 1.12.7(reflect-metadata@0.2.2) + specifier: 1.13.0 + version: 1.13.0(reflect-metadata@0.2.2) '@inversifyjs/core': - specifier: 8.0.0 - version: 8.0.0(reflect-metadata@0.2.2) + specifier: 9.0.0 + version: 9.0.0(reflect-metadata@0.2.2) reflect-metadata: specifier: ~0.2.2 version: 0.2.2 @@ -238,13 +238,13 @@ packages: '@inversifyjs/common@1.5.2': resolution: {integrity: sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==} - '@inversifyjs/container@1.12.7': - resolution: {integrity: sha512-gmZCrg+4FnC0K16b1oKp+HER50WCcvJ29x6S9GC5duVfIfrTve704Gx5Plj1sAiovRbY9d45TEFN96zH/QQrpg==} + '@inversifyjs/container@1.13.0': + resolution: {integrity: sha512-bnacT6u3oihcGoUKhy2RTB96QPA/2CQHgiXYNpN4Ydd21SeN4FfDrZKu0TQf0uHMOSDc5mCi3PUifje7M/61qg==} peerDependencies: reflect-metadata: ~0.2.2 - '@inversifyjs/core@8.0.0': - resolution: {integrity: sha512-rYmI6lT9NbhujCRu/cMRAqvpM+I0leYmgHidA418f8VbMeRexxr9WbjPb8KaUG/dQpTUzHkHDxh+0ocp/fb+Ng==} + '@inversifyjs/core@9.0.0': + resolution: {integrity: sha512-V/s1iM4hhUkJfRZoq5LCVKKXztO5rvBJi4og8arcfK1k3DInL08/HJ5rG/dPZz5f2reBbGM0KzVxyz3/rIySvQ==} '@inversifyjs/plugin@0.2.0': resolution: {integrity: sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==} @@ -252,8 +252,8 @@ packages: '@inversifyjs/prototype-utils@0.1.2': resolution: {integrity: sha512-WZAEycwVd8zVCPCQ7GRzuQmjYF7X5zbjI9cGigDbBoTHJ8y5US9om00IAp0RYislO+fYkMzgcB2SnlIVIzyESA==} - '@inversifyjs/reflect-metadata-utils@1.3.0': - resolution: {integrity: sha512-JJVnIRq75+nF8FP4WwFPdVQ4sgqf09acXbODi3B7vVtJo+0Mo0YQOOdSWw/cHmbP8+5MAKi4PBYOK3yqn4tGNg==} + '@inversifyjs/reflect-metadata-utils@1.4.0': + resolution: {integrity: sha512-J+Wb0dcFEkdCtPODH7dG/EwWyaEGIj/RPoBHrH4A8dxaV8QdJ97rSDnHk7nbJ/KKZ2K0lI+7J+POA6EGNd8V3w==} peerDependencies: reflect-metadata: 0.2.2 @@ -1977,19 +1977,19 @@ snapshots: '@inversifyjs/common@1.5.2': {} - '@inversifyjs/container@1.12.7(reflect-metadata@0.2.2)': + '@inversifyjs/container@1.13.0(reflect-metadata@0.2.2)': dependencies: '@inversifyjs/common': 1.5.2 - '@inversifyjs/core': 8.0.0(reflect-metadata@0.2.2) + '@inversifyjs/core': 9.0.0(reflect-metadata@0.2.2) '@inversifyjs/plugin': 0.2.0 - '@inversifyjs/reflect-metadata-utils': 1.3.0(reflect-metadata@0.2.2) + '@inversifyjs/reflect-metadata-utils': 1.4.0(reflect-metadata@0.2.2) reflect-metadata: 0.2.2 - '@inversifyjs/core@8.0.0(reflect-metadata@0.2.2)': + '@inversifyjs/core@9.0.0(reflect-metadata@0.2.2)': dependencies: '@inversifyjs/common': 1.5.2 '@inversifyjs/prototype-utils': 0.1.2 - '@inversifyjs/reflect-metadata-utils': 1.3.0(reflect-metadata@0.2.2) + '@inversifyjs/reflect-metadata-utils': 1.4.0(reflect-metadata@0.2.2) transitivePeerDependencies: - reflect-metadata @@ -1999,7 +1999,7 @@ snapshots: dependencies: '@inversifyjs/common': 1.5.2 - '@inversifyjs/reflect-metadata-utils@1.3.0(reflect-metadata@0.2.2)': + '@inversifyjs/reflect-metadata-utils@1.4.0(reflect-metadata@0.2.2)': dependencies: reflect-metadata: 0.2.2 diff --git a/src/index.ts b/src/index.ts index b50555484..ac115a8c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -41,10 +41,15 @@ export { GetAllOptions, GetOptions, GetOptionsTagConstraint, + InjectFromBaseOptions, + InjectFromBaseOptionsLifecycle, + InjectFromHierarchyOptions, + InjectFromHierarchyOptionsLifecycle, MetadataName, MetadataTag, MultiInjectOptions, OptionalGetOptions, + // eslint-disable-next-line @typescript-eslint/no-deprecated Provider, ResolutionContext, bindingScopeValues, diff --git a/src/test/annotation/post_construct.test.ts b/src/test/annotation/post_construct.test.ts index b42690cd6..b6d024c28 100644 --- a/src/test/annotation/post_construct.test.ts +++ b/src/test/annotation/post_construct.test.ts @@ -9,12 +9,8 @@ describe('@postConstruct', () => { function setup() { class Katana { @postConstruct() - public testMethod1() { - /* ... */ - } - @postConstruct() - public testMethod2() { + public testMethod1() { /* ... */ } } diff --git a/src/test/bugs/issue_1297.test.ts b/src/test/bugs/issue_1297.test.ts index ced501905..669b7ed60 100644 --- a/src/test/bugs/issue_1297.test.ts +++ b/src/test/bugs/issue_1297.test.ts @@ -76,17 +76,24 @@ describe('Issue 1297', () => { const container: Container = new Container(); const onActivationHandlerSpy: sinon.SinonSpy< + // eslint-disable-next-line @typescript-eslint/no-deprecated [ResolutionContext, Provider], + // eslint-disable-next-line @typescript-eslint/no-deprecated Provider > = sinon.spy< ( _: ResolutionContext, + // eslint-disable-next-line @typescript-eslint/no-deprecated injectableObj: Provider, + // eslint-disable-next-line @typescript-eslint/no-deprecated ) => Provider + // eslint-disable-next-line @typescript-eslint/no-deprecated >((_: ResolutionContext, injectableObj: Provider) => injectableObj); container + // eslint-disable-next-line @typescript-eslint/no-deprecated .bind>('Provider') + // eslint-disable-next-line @typescript-eslint/no-deprecated .toProvider( (_context: ResolutionContext) => async () => Promise.resolve(new Katana()), diff --git a/src/test/features/provider.test.ts b/src/test/features/provider.test.ts index 0ca29e1a8..276df9679 100644 --- a/src/test/features/provider.test.ts +++ b/src/test/features/provider.test.ts @@ -39,6 +39,7 @@ describe('Provider', () => { const container: Container = new Container(); container.bind('Ninja').to(Ninja).inSingletonScope(); + // eslint-disable-next-line @typescript-eslint/no-deprecated container.bind('Provider').toProvider( (context: ResolutionContext) => async () => new Promise( @@ -109,8 +110,10 @@ describe('Provider', () => { container.bind('Sword').to(Katana); + // eslint-disable-next-line @typescript-eslint/no-deprecated type SwordProvider = Provider; + // eslint-disable-next-line @typescript-eslint/no-deprecated container.bind('SwordProvider').toProvider( (context: ResolutionContext): SwordProvider => async (material: string, damage: number) => @@ -162,6 +165,7 @@ describe('Provider', () => { container.bind('Warrior').to(Ninja).inSingletonScope(); // Value is singleton! + // eslint-disable-next-line @typescript-eslint/no-deprecated container.bind('WarriorProvider').toProvider( (context: ResolutionContext) => async (increaseLevel: number) => new Promise((resolve: (value: Warrior) => void) => { diff --git a/src/test/inversify.test.ts b/src/test/inversify.test.ts index 121ad9486..41d78b8d9 100644 --- a/src/test/inversify.test.ts +++ b/src/test/inversify.test.ts @@ -911,6 +911,7 @@ describe('InversifyJS', () => { container.bind('Ninja').to(NinjaWithProvider); container.bind('Katana').to(Katana); + // eslint-disable-next-line @typescript-eslint/no-deprecated container.bind('Provider').toProvider( (context: ResolutionContext) => async () => new Promise((resolve: (value: Katana) => void) => {