Skip to content

Commit

Permalink
fix: factory instances should save proxied
Browse files Browse the repository at this point in the history
  • Loading branch information
bytemain committed Dec 3, 2023
1 parent 4a9e4a3 commit dad48a8
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 9 deletions.
9 changes: 3 additions & 6 deletions src/injector.ts
Expand Up @@ -272,7 +272,7 @@ export class Injector {

const instance = creator.instance;

let maybePromise: Promise<unknown> | void;
let maybePromise: Promise<unknown> | void | undefined;
if (instance) {
const disposeFns = Array.from(instance.values())
.map((instanceItem) => {
Expand Down Expand Up @@ -525,19 +525,16 @@ export class Injector {

// mount injector on the instance, so that the inner object can access the injector in the future.
setInjector(ret, injector);
Object.assign(ret, {
__injectorId: injector.id,
});

return applyHooks(ret, token, this.hookStore);
}

private createInstanceFromFactory(ctx: Context<FactoryCreator>) {
const { creator, token } = ctx;

const value = creator.useFactory(this);
const value = applyHooks(creator.useFactory(this), token, this.hookStore);
creator.instance = new Set([value]);

return applyHooks(value, token, this.hookStore);
return value;
}
}
7 changes: 4 additions & 3 deletions test/injector.test.ts
Expand Up @@ -19,6 +19,7 @@ import {
IAfterThrowingJoinPoint,
} from '../src';
import * as InjectorError from '../src/error';
import { getInjectorOfInstance } from '../src/helper';

describe('test injector work', () => {
@Injectable()
Expand Down Expand Up @@ -425,9 +426,9 @@ describe('test injector work', () => {
const instance2 = injector.get(A);
const instance3 = injector.get(B);

expect((instance1 as any).__injectorId).toBe(injector.id);
expect((instance2 as any).__injectorId).toBe(injector.id);
expect((instance3 as any).__injectorId).toBe(injector.id);
expect(getInjectorOfInstance(instance1)!.id).toBe(injector.id);
expect(getInjectorOfInstance(instance2)!.id).toBe(injector.id);
expect(getInjectorOfInstance(instance3)!.id).toBe(injector.id);
});
});

Expand Down

0 comments on commit dad48a8

Please sign in to comment.