/
metadata-per-mod.ts
74 lines (69 loc) · 2.44 KB
/
metadata-per-mod.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { NormalizedModuleMetadata } from '#types/normalized-module-metadata.js';
import { ControllerMetadata1, ControllerMetadata2 } from './controller-metadata.js';
import { ExtensionProvider, ModuleType, ModuleWithParams, NormalizedGuard, ServiceProvider } from './mix.js';
/**
* @todo Rename this.
*/
export class ImportObj<T extends ServiceProvider = ServiceProvider> {
module: ModuleType | ModuleWithParams;
providers: T[] = [];
}
export class GlobalProviders {
importedProvidersPerMod = new Map<any, ImportObj>();
importedProvidersPerRou = new Map<any, ImportObj>();
importedProvidersPerReq = new Map<any, ImportObj>();
importedMultiProvidersPerMod = new Map<ModuleType | ModuleWithParams, ServiceProvider[]>();
importedMultiProvidersPerRou = new Map<ModuleType | ModuleWithParams, ServiceProvider[]>();
importedMultiProvidersPerReq = new Map<ModuleType | ModuleWithParams, ServiceProvider[]>();
importedExtensions = new Map<ModuleType | ModuleWithParams, ExtensionProvider[]>();
}
/**
* Metadata collected using `ModuleFactory`.
*/
export class MetadataPerMod1 {
prefixPerMod: string;
guardsPerMod: NormalizedGuard[];
/**
* Snapshot of NormalizedModuleMetadata. If you modify any array in this object,
* the original array will remain unchanged.
*/
meta: NormalizedModuleMetadata;
/**
* The controller metadata collected from all controllers of current module.
*/
aControllersMetadata1: ControllerMetadata1[];
/**
* Map between a token and its ImportObj per scope.
*/
importedTokensMap: ImportedTokensMap;
}
export interface ImportedTokensMap {
perMod: Map<any, ImportObj>;
perRou: Map<any, ImportObj>;
perReq: Map<any, ImportObj>;
multiPerMod: Map<ModuleType | ModuleWithParams, ServiceProvider[]>;
multiPerRou: Map<ModuleType | ModuleWithParams, ServiceProvider[]>;
multiPerReq: Map<ModuleType | ModuleWithParams, ServiceProvider[]>;
extensions: Map<ModuleType | ModuleWithParams, ExtensionProvider[]>;
}
/**
* This metadata is generated by `ROUTES_EXTENSIONS` group, and available for other extensions
* that need set routes.
*/
export class MetadataPerMod2 {
module: ModuleType | ModuleWithParams;
moduleName: string;
/**
* Providers per a module.
*/
providersPerMod: ServiceProvider[];
/**
* Providers per a route.
*/
providersPerRou: ServiceProvider[];
/**
* Providers per a request.
*/
providersPerReq: ServiceProvider[];
aControllersMetadata2: ControllerMetadata2[];
}