From cc5deceb3a51da13531e51ec5f5aeb3123d2f821 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 16 Nov 2021 21:01:42 -0600 Subject: [PATCH] Past container to PostInjection --- package.json | 2 +- src/container.spec.ts | 6 +++--- src/container.ts | 2 +- src/decorators/post-injection.ts | 4 ++-- src/injector.ts | 3 ++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 5351f00..576b795 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@technove/inject", "description": "Dependency injection for TypeScript", - "version": "0.1.11", + "version": "0.1.12", "author": "PaulBGD", "license": "MIT", "scripts": { diff --git a/src/container.spec.ts b/src/container.spec.ts index de0decb..d45487f 100644 --- a/src/container.spec.ts +++ b/src/container.spec.ts @@ -212,13 +212,13 @@ describe("Container", () => { private dep!: Dependency; @PostInjection() - private afterInit() { - retrievedValue = this.dep.val; + private afterInit(container: Container) { + retrievedValue = container.get(Dependency).val + this.dep.val; } } container.get(B); - expect(retrievedValue).to.be.equal(5); + expect(retrievedValue).to.be.equal(10); }); it("handles after initialization with promise", async () => { diff --git a/src/container.ts b/src/container.ts index aabccc2..de7105a 100644 --- a/src/container.ts +++ b/src/container.ts @@ -132,7 +132,7 @@ export class Container { let anyPromises = false; const mapped = injectData.postInjection.map((func) => { - const val = func.call(service); + const val = func.call(service, this); anyPromises ||= val instanceof Promise; return val; }); diff --git a/src/decorators/post-injection.ts b/src/decorators/post-injection.ts index 6326354..c554a7d 100644 --- a/src/decorators/post-injection.ts +++ b/src/decorators/post-injection.ts @@ -14,8 +14,8 @@ export const PostInjection: () => MethodDecorator = throw new Error("Expected function"); } - if (func.length !== 0) { - throw new Error("Expected function to have 0 parameters"); + if (func.length !== 0 && func.length !== 1) { + throw new Error("Expected function to have 0-1 parameters"); } data.postInjection.push(func); diff --git a/src/injector.ts b/src/injector.ts index 2861552..41af8a7 100644 --- a/src/injector.ts +++ b/src/injector.ts @@ -1,9 +1,10 @@ import { ParameterProvider, Provider } from "./types"; +import { Container } from "./container"; export interface InjectedData { properties: Provider[]; parameters: ParameterProvider[]; - postInjection: (() => Promise | unknown)[]; + postInjection: ((container: Container) => Promise | unknown)[]; } const INJECT_KEY = "__inject__";