Skip to content

Commit db9f95b

Browse files
Merge branch 'module-token-factory-replacer' of https://github.com/zenozen/nest into zenozen-module-token-factory-replacer
2 parents dc219bf + 5fca173 commit db9f95b

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

packages/core/injector/module-token-factory.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class ModuleTokenFactory {
2525
): string {
2626
// Uses safeStringify instead of JSON.stringify
2727
// to support circular dynamic modules
28-
return dynamicModuleMetadata ? stringify(dynamicModuleMetadata) : '';
28+
return dynamicModuleMetadata ? stringify(dynamicModuleMetadata, this.replacer) : '';
2929
}
3030

3131
public getModuleName(metatype: Type<any>): string {
@@ -50,4 +50,12 @@ export class ModuleTokenFactory {
5050
const scope = Reflect.getMetadata(SHARED_MODULE_METADATA, metatype);
5151
return scope ? scope : 'global';
5252
}
53+
54+
private replacer(key: string, value: any) {
55+
if (typeof value === 'function') {
56+
return value.name;
57+
} else {
58+
return value;
59+
}
60+
}
5361
}

packages/core/test/injector/module-token-factory.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ describe('ModuleTokenFactory', () => {
6565
JSON.stringify(metadata),
6666
);
6767
});
68+
it('should return hash with class', () => {
69+
class Provider {}
70+
const metadata = { providers: [Provider], exports: [Provider] };
71+
expect(factory.getDynamicMetadataToken(metadata)).to.be.eql(
72+
'{"providers":["Provider"],"exports":["Provider"]}'
73+
);
74+
});
6875
});
6976
describe('when metadata does not exist', () => {
7077
it('should return empty string', () => {

0 commit comments

Comments
 (0)