@eggjs/tegg-loader 3.51.2 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +24 -23
- package/{dist/src → src}/LoaderFactory.d.ts +1 -1
- package/src/LoaderFactory.js +42 -0
- package/{dist/src → src}/LoaderUtil.d.ts +2 -1
- package/src/LoaderUtil.js +70 -0
- package/{dist/src → src}/impl/ModuleLoader.d.ts +1 -1
- package/src/impl/ModuleLoader.js +37 -0
- package/src/impl/index.d.ts +1 -0
- package/src/impl/index.js +2 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +4 -0
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -20
- package/dist/src/LoaderFactory.js +0 -46
- package/dist/src/LoaderUtil.js +0 -69
- package/dist/src/impl/ModuleLoader.js +0 -39
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-loader",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-beta.1",
|
|
4
4
|
"description": "tegg default loader implement",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
@@ -8,18 +8,22 @@
|
|
|
8
8
|
"loader",
|
|
9
9
|
"tegg"
|
|
10
10
|
],
|
|
11
|
-
"
|
|
11
|
+
"type": "module",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./src/index.d.ts",
|
|
15
|
+
"default": "./src/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
12
18
|
"files": [
|
|
13
|
-
"
|
|
14
|
-
"
|
|
19
|
+
"src/**/*.js",
|
|
20
|
+
"src/**/*.d.ts"
|
|
15
21
|
],
|
|
16
|
-
"typings": "dist/index.d.ts",
|
|
17
22
|
"scripts": {
|
|
18
|
-
"test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
|
|
19
23
|
"clean": "tsc -b --clean",
|
|
20
24
|
"tsc": "npm run clean && tsc -p ./tsconfig.json",
|
|
21
|
-
"tsc:pub": "npm run
|
|
22
|
-
"prepublishOnly": "npm run tsc
|
|
25
|
+
"tsc:pub": "npm run tsc",
|
|
26
|
+
"prepublishOnly": "npm run tsc"
|
|
23
27
|
},
|
|
24
28
|
"author": "killagu <killa123@126.com>",
|
|
25
29
|
"license": "MIT",
|
|
@@ -33,26 +37,23 @@
|
|
|
33
37
|
"directory": "core/loader"
|
|
34
38
|
},
|
|
35
39
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
40
|
+
"node": ">=20.0.0"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
|
-
"@eggjs/core-decorator": "^
|
|
40
|
-
"@eggjs/tegg-common-util": "^
|
|
41
|
-
"@eggjs/tegg-types": "^
|
|
42
|
-
"globby": "^
|
|
43
|
-
"is-type-of": "^
|
|
43
|
+
"@eggjs/core-decorator": "^4.0.0-beta.1",
|
|
44
|
+
"@eggjs/tegg-common-util": "^4.0.0-beta.1",
|
|
45
|
+
"@eggjs/tegg-types": "^4.0.0-beta.1",
|
|
46
|
+
"globby": "^14.1.0",
|
|
47
|
+
"is-type-of": "^2.2.0"
|
|
44
48
|
},
|
|
45
49
|
"publishConfig": {
|
|
46
50
|
"access": "public"
|
|
47
51
|
},
|
|
48
52
|
"devDependencies": {
|
|
49
|
-
"@eggjs/tegg-metadata": "^
|
|
50
|
-
"@types/
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"typescript": "^5.0.4"
|
|
56
|
-
},
|
|
57
|
-
"gitHead": "b310ec3c772067b98b4f91342d877bebcee4e673"
|
|
53
|
+
"@eggjs/tegg-metadata": "^4.0.0-beta.1",
|
|
54
|
+
"@types/node": "22",
|
|
55
|
+
"ts-node": "10",
|
|
56
|
+
"typescript": "5"
|
|
57
|
+
},
|
|
58
|
+
"gitHead": "79a22905272d6de7fe06152231dff65d213d9166"
|
|
58
59
|
}
|
|
@@ -5,5 +5,5 @@ export declare class LoaderFactory {
|
|
|
5
5
|
private static loaderCreatorMap;
|
|
6
6
|
static createLoader(unitPath: string, type: EggLoadUnitTypeLike): Loader;
|
|
7
7
|
static registerLoader(type: EggLoadUnitTypeLike, creator: LoaderCreator): void;
|
|
8
|
-
static loadApp(moduleReferences: readonly ModuleReference[]): ModuleDescriptor[]
|
|
8
|
+
static loadApp(moduleReferences: readonly ModuleReference[]): Promise<ModuleDescriptor[]>;
|
|
9
9
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EggLoadUnitType } from '@eggjs/tegg-types';
|
|
2
|
+
import { PrototypeUtil } from '@eggjs/core-decorator';
|
|
3
|
+
export class LoaderFactory {
|
|
4
|
+
static loaderCreatorMap = new Map();
|
|
5
|
+
static createLoader(unitPath, type) {
|
|
6
|
+
const creator = this.loaderCreatorMap.get(type);
|
|
7
|
+
if (!creator) {
|
|
8
|
+
throw new Error(`not find creator for loader type ${type}`);
|
|
9
|
+
}
|
|
10
|
+
return creator(unitPath);
|
|
11
|
+
}
|
|
12
|
+
static registerLoader(type, creator) {
|
|
13
|
+
this.loaderCreatorMap.set(type, creator);
|
|
14
|
+
}
|
|
15
|
+
static async loadApp(moduleReferences) {
|
|
16
|
+
const result = [];
|
|
17
|
+
const multiInstanceClazzList = [];
|
|
18
|
+
for (const moduleReference of moduleReferences) {
|
|
19
|
+
const loader = LoaderFactory.createLoader(moduleReference.path, moduleReference.loaderType || EggLoadUnitType.MODULE);
|
|
20
|
+
const res = {
|
|
21
|
+
name: moduleReference.name,
|
|
22
|
+
unitPath: moduleReference.path,
|
|
23
|
+
clazzList: [],
|
|
24
|
+
protos: [],
|
|
25
|
+
multiInstanceClazzList,
|
|
26
|
+
optional: moduleReference.optional,
|
|
27
|
+
};
|
|
28
|
+
result.push(res);
|
|
29
|
+
const clazzList = await loader.load();
|
|
30
|
+
for (const clazz of clazzList) {
|
|
31
|
+
if (PrototypeUtil.isEggPrototype(clazz)) {
|
|
32
|
+
res.clazzList.push(clazz);
|
|
33
|
+
}
|
|
34
|
+
else if (PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
35
|
+
res.multiInstanceClazzList.push(clazz);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkxvYWRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBbUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVySCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJdEQsTUFBTSxPQUFPLGFBQWE7SUFDaEIsTUFBTSxDQUFDLGdCQUFnQixHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXJGLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxJQUF5QjtRQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQXlCLEVBQUUsT0FBc0I7UUFDckUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUE0QztRQUMvRCxNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sc0JBQXNCLEdBQXdCLEVBQUUsQ0FBQztRQUN2RCxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxVQUFVLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RILE1BQU0sR0FBRyxHQUFxQjtnQkFDNUIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUMxQixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQzlCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLE1BQU0sRUFBRSxFQUFFO2dCQUNWLHNCQUFzQjtnQkFDdEIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2FBQ25DLENBQUM7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzlCLElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN4QyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztxQkFBTSxJQUFJLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM1RCxHQUFHLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDIn0=
|
|
@@ -5,8 +5,9 @@ interface LoaderUtilConfig {
|
|
|
5
5
|
export declare class LoaderUtil {
|
|
6
6
|
static config: LoaderUtilConfig;
|
|
7
7
|
static setConfig(config: LoaderUtilConfig): void;
|
|
8
|
+
static supportExtensions(): string[];
|
|
8
9
|
static get extension(): ".ts" | ".js";
|
|
9
10
|
static filePattern(): string[];
|
|
10
|
-
static loadFile(filePath: string): EggProtoImplClass[]
|
|
11
|
+
static loadFile(filePath: string): Promise<EggProtoImplClass[]>;
|
|
11
12
|
}
|
|
12
13
|
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { PrototypeUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import BuiltinModule from 'node:module';
|
|
3
|
+
import { isClass } from 'is-type-of';
|
|
4
|
+
// Guard against poorly mocked module constructors.
|
|
5
|
+
const Module = globalThis.module?.constructor?.length > 1
|
|
6
|
+
? globalThis.module.constructor
|
|
7
|
+
/* istanbul ignore next */
|
|
8
|
+
: BuiltinModule;
|
|
9
|
+
export class LoaderUtil {
|
|
10
|
+
static config = {};
|
|
11
|
+
static setConfig(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
static supportExtensions() {
|
|
15
|
+
const extensions = Object.keys(Module._extensions);
|
|
16
|
+
if (process.env.VITEST === 'true' && !extensions.includes('.ts')) {
|
|
17
|
+
extensions.push('.ts');
|
|
18
|
+
}
|
|
19
|
+
return extensions;
|
|
20
|
+
}
|
|
21
|
+
static get extension() {
|
|
22
|
+
return LoaderUtil.supportExtensions().includes('.ts') ? '.ts' : '.js';
|
|
23
|
+
}
|
|
24
|
+
static filePattern() {
|
|
25
|
+
const extensions = LoaderUtil.supportExtensions();
|
|
26
|
+
const extensionPattern = extensions.map(t => t.substring(1))
|
|
27
|
+
// JSON file will not export class
|
|
28
|
+
.filter(t => t !== 'json')
|
|
29
|
+
.join('|');
|
|
30
|
+
const filePattern = [
|
|
31
|
+
// load file end with node module allow extensions
|
|
32
|
+
`**/*.(${extensionPattern})`,
|
|
33
|
+
// not load files in .xxx/
|
|
34
|
+
'!**/+(.*)/**',
|
|
35
|
+
// not load node module
|
|
36
|
+
'!**/node_modules',
|
|
37
|
+
// node load type definitions
|
|
38
|
+
'!**/*.d.ts',
|
|
39
|
+
// not load test/coverage files
|
|
40
|
+
'!**/test',
|
|
41
|
+
'!**/coverage',
|
|
42
|
+
// extra file pattern
|
|
43
|
+
...(this.config.extraFilePattern || []),
|
|
44
|
+
];
|
|
45
|
+
return filePattern;
|
|
46
|
+
}
|
|
47
|
+
static async loadFile(filePath) {
|
|
48
|
+
let exports;
|
|
49
|
+
try {
|
|
50
|
+
exports = await import(filePath);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
console.error('[tegg/loader] loadFile %s error:', filePath);
|
|
54
|
+
console.error(e);
|
|
55
|
+
throw new Error(`[tegg/loader] load ${filePath} failed: ${e.message}`);
|
|
56
|
+
}
|
|
57
|
+
const clazzList = [];
|
|
58
|
+
const exportNames = Object.keys(exports);
|
|
59
|
+
for (const exportName of exportNames) {
|
|
60
|
+
const clazz = exports[exportName];
|
|
61
|
+
const isEggProto = isClass(clazz) && (PrototypeUtil.isEggPrototype(clazz) || PrototypeUtil.isEggMultiInstancePrototype(clazz));
|
|
62
|
+
if (!isEggProto) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
clazzList.push(clazz);
|
|
66
|
+
}
|
|
67
|
+
return clazzList;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkxvYWRlclV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sYUFBYSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDLG1EQUFtRDtBQUNuRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN2RCxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXO0lBQy9CLDBCQUEwQjtJQUMxQixDQUFDLENBQUMsYUFBYSxDQUFDO0FBTWxCLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUNyQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXdCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUUsTUFBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLEtBQUssU0FBUztRQUNsQixPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsa0NBQWtDO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7YUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWIsTUFBTSxXQUFXLEdBQUc7WUFDbEIsa0RBQWtEO1lBQ2xELFNBQVMsZ0JBQWdCLEdBQUc7WUFDNUIsMEJBQTBCO1lBQzFCLGNBQWM7WUFDZCx1QkFBdUI7WUFDdkIsa0JBQWtCO1lBQ2xCLDZCQUE2QjtZQUM3QixZQUFZO1lBQ1osK0JBQStCO1lBQy9CLFVBQVU7WUFDVixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztTQUN4QyxDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ3BDLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixRQUFRLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9ILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsU0FBUztZQUNYLENBQUM7WUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDIn0=
|
|
@@ -3,6 +3,6 @@ export declare class ModuleLoader implements Loader {
|
|
|
3
3
|
private readonly moduleDir;
|
|
4
4
|
private protoClazzList;
|
|
5
5
|
constructor(moduleDir: string);
|
|
6
|
-
load(): EggProtoImplClass[]
|
|
6
|
+
load(): Promise<EggProtoImplClass[]>;
|
|
7
7
|
static createModuleLoader(path: string): ModuleLoader;
|
|
8
8
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { debuglog } from 'node:util';
|
|
3
|
+
import { globby } from 'globby';
|
|
4
|
+
import { LoaderUtil } from '../LoaderUtil.js';
|
|
5
|
+
import { LoaderFactory } from '../LoaderFactory.js';
|
|
6
|
+
const debug = debuglog('@eggjs/tegg-loader/impl/ModuleLoader');
|
|
7
|
+
export class ModuleLoader {
|
|
8
|
+
moduleDir;
|
|
9
|
+
protoClazzList;
|
|
10
|
+
constructor(moduleDir) {
|
|
11
|
+
this.moduleDir = moduleDir;
|
|
12
|
+
}
|
|
13
|
+
async load() {
|
|
14
|
+
// optimize for EggModuleLoader
|
|
15
|
+
if (this.protoClazzList) {
|
|
16
|
+
return this.protoClazzList;
|
|
17
|
+
}
|
|
18
|
+
const protoClassList = [];
|
|
19
|
+
const filePattern = LoaderUtil.filePattern();
|
|
20
|
+
const files = await globby(filePattern, { cwd: this.moduleDir });
|
|
21
|
+
debug('load files: %o, filePattern: %o, moduleDir: %o', files, filePattern, this.moduleDir);
|
|
22
|
+
for (const file of files) {
|
|
23
|
+
const realPath = path.join(this.moduleDir, file);
|
|
24
|
+
const fileClazzList = await LoaderUtil.loadFile(realPath);
|
|
25
|
+
for (const clazz of fileClazzList) {
|
|
26
|
+
protoClassList.push(clazz);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
this.protoClazzList = Array.from(new Set(protoClassList));
|
|
30
|
+
return this.protoClazzList;
|
|
31
|
+
}
|
|
32
|
+
static createModuleLoader(path) {
|
|
33
|
+
return new ModuleLoader(path);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
LoaderFactory.registerLoader('MODULE', ModuleLoader.createModuleLoader);
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTW9kdWxlTG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUUvRCxNQUFNLE9BQU8sWUFBWTtJQUNOLFNBQVMsQ0FBUztJQUMzQixjQUFjLENBQXNCO0lBRTVDLFlBQVksU0FBaUI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQXdCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRCxNQUFNLGFBQWEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUQsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ModuleLoader.js';
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './LoaderFactory.js';
|
|
2
|
+
export * from './LoaderUtil.js';
|
|
3
|
+
export * from './impl/index.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQyJ9
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./src/LoaderFactory"), exports);
|
|
18
|
-
__exportStar(require("./src/LoaderUtil"), exports);
|
|
19
|
-
require("./src/impl/ModuleLoader");
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DO0FBQ3BDLG1EQUFpQztBQUVqQyxtQ0FBaUMifQ==
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoaderFactory = void 0;
|
|
4
|
-
const tegg_types_1 = require("@eggjs/tegg-types");
|
|
5
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
6
|
-
class LoaderFactory {
|
|
7
|
-
static createLoader(unitPath, type) {
|
|
8
|
-
const creator = this.loaderCreatorMap.get(type);
|
|
9
|
-
if (!creator) {
|
|
10
|
-
throw new Error(`not find creator for loader type ${type}`);
|
|
11
|
-
}
|
|
12
|
-
return creator(unitPath);
|
|
13
|
-
}
|
|
14
|
-
static registerLoader(type, creator) {
|
|
15
|
-
this.loaderCreatorMap.set(type, creator);
|
|
16
|
-
}
|
|
17
|
-
static loadApp(moduleReferences) {
|
|
18
|
-
const result = [];
|
|
19
|
-
const multiInstanceClazzList = [];
|
|
20
|
-
for (const moduleReference of moduleReferences) {
|
|
21
|
-
const loader = LoaderFactory.createLoader(moduleReference.path, moduleReference.loaderType || tegg_types_1.EggLoadUnitType.MODULE);
|
|
22
|
-
const res = {
|
|
23
|
-
name: moduleReference.name,
|
|
24
|
-
unitPath: moduleReference.path,
|
|
25
|
-
clazzList: [],
|
|
26
|
-
protos: [],
|
|
27
|
-
multiInstanceClazzList,
|
|
28
|
-
optional: moduleReference.optional,
|
|
29
|
-
};
|
|
30
|
-
result.push(res);
|
|
31
|
-
const clazzList = loader.load();
|
|
32
|
-
for (const clazz of clazzList) {
|
|
33
|
-
if (core_decorator_1.PrototypeUtil.isEggPrototype(clazz)) {
|
|
34
|
-
res.clazzList.push(clazz);
|
|
35
|
-
}
|
|
36
|
-
else if (core_decorator_1.PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
37
|
-
res.multiInstanceClazzList.push(clazz);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.LoaderFactory = LoaderFactory;
|
|
45
|
-
LoaderFactory.loaderCreatorMap = new Map();
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Mb2FkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFxSDtBQUVySCwwREFBc0Q7QUFJdEQsTUFBYSxhQUFhO0lBR3hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxJQUF5QjtRQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQXlCLEVBQUUsT0FBc0I7UUFDckUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQTRDO1FBQ3pELE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7UUFDdEMsTUFBTSxzQkFBc0IsR0FBd0IsRUFBRSxDQUFDO1FBQ3ZELEtBQUssTUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLFVBQVUsSUFBSSw0QkFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RILE1BQU0sR0FBRyxHQUFxQjtnQkFDNUIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUMxQixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQzlCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLE1BQU0sRUFBRSxFQUFFO2dCQUNWLHNCQUFzQjtnQkFDdEIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2FBQ25DLENBQUM7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLDhCQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixDQUFDO3FCQUFNLElBQUksOEJBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM1RCxHQUFHLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQXZDSCxzQ0F3Q0M7QUF2Q2dCLDhCQUFnQixHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDIn0=
|
package/dist/src/LoaderUtil.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.LoaderUtil = void 0;
|
|
7
|
-
const core_decorator_1 = require("@eggjs/core-decorator");
|
|
8
|
-
const module_1 = __importDefault(require("module"));
|
|
9
|
-
const is_type_of_1 = __importDefault(require("is-type-of"));
|
|
10
|
-
// Guard against poorly mocked module constructors.
|
|
11
|
-
const Module = module.constructor.length > 1
|
|
12
|
-
? module.constructor
|
|
13
|
-
/* istanbul ignore next */
|
|
14
|
-
: module_1.default;
|
|
15
|
-
class LoaderUtil {
|
|
16
|
-
static setConfig(config) {
|
|
17
|
-
this.config = config;
|
|
18
|
-
}
|
|
19
|
-
static get extension() {
|
|
20
|
-
return Object.keys(Module._extensions).find(t => t === '.ts') ? '.ts' : '.js';
|
|
21
|
-
}
|
|
22
|
-
static filePattern() {
|
|
23
|
-
const extensions = Object.keys(Module._extensions);
|
|
24
|
-
const extensionPattern = extensions.map(t => t.substring(1))
|
|
25
|
-
// JSON file will not export class
|
|
26
|
-
.filter(t => t !== 'json')
|
|
27
|
-
.join('|');
|
|
28
|
-
const filePattern = [
|
|
29
|
-
// load file end with node module allow extensions
|
|
30
|
-
`**/*.(${extensionPattern})`,
|
|
31
|
-
// not load files in .xxx/
|
|
32
|
-
'!**/+(.*)/**',
|
|
33
|
-
// not load node module
|
|
34
|
-
'!**/node_modules',
|
|
35
|
-
// node load type defintions
|
|
36
|
-
'!**/*.d.ts',
|
|
37
|
-
// not load test/coverage files
|
|
38
|
-
'!**/test',
|
|
39
|
-
'!**/coverage',
|
|
40
|
-
// extra file pattern
|
|
41
|
-
...(this.config.extraFilePattern || []),
|
|
42
|
-
];
|
|
43
|
-
return filePattern;
|
|
44
|
-
}
|
|
45
|
-
static loadFile(filePath) {
|
|
46
|
-
let exports;
|
|
47
|
-
try {
|
|
48
|
-
exports = require(filePath);
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
e.message = '[tegg/loader] load ' + filePath + ' failed: ' + e.message;
|
|
52
|
-
throw e;
|
|
53
|
-
}
|
|
54
|
-
const clazzList = [];
|
|
55
|
-
const exportNames = Object.keys(exports);
|
|
56
|
-
for (const exportName of exportNames) {
|
|
57
|
-
const clazz = exports[exportName];
|
|
58
|
-
const isEggProto = is_type_of_1.default.class(clazz) && (core_decorator_1.PrototypeUtil.isEggPrototype(clazz) || core_decorator_1.PrototypeUtil.isEggMultiInstancePrototype(clazz));
|
|
59
|
-
if (!isEggProto) {
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
clazzList.push(clazz);
|
|
63
|
-
}
|
|
64
|
-
return clazzList;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.LoaderUtil = LoaderUtil;
|
|
68
|
-
LoaderUtil.config = {};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Mb2FkZXJVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUFzRDtBQUV0RCxvREFBbUM7QUFDbkMsNERBQTRCO0FBRTVCLG1EQUFtRDtBQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVztJQUNwQiwwQkFBMEI7SUFDMUIsQ0FBQyxDQUFDLGdCQUFhLENBQUM7QUFNbEIsTUFBYSxVQUFVO0lBRXJCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBd0I7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sS0FBSyxTQUFTO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBRSxNQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6RixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVc7UUFDaEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBRSxNQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxrQ0FBa0M7YUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQzthQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixNQUFNLFdBQVcsR0FBRztZQUNsQixrREFBa0Q7WUFDbEQsU0FBUyxnQkFBZ0IsR0FBRztZQUM1QiwwQkFBMEI7WUFDMUIsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLFlBQVk7WUFDWiwrQkFBK0I7WUFDL0IsVUFBVTtZQUNWLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1NBQ3hDLENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQjtRQUM5QixJQUFJLE9BQU8sQ0FBQztRQUNaLElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsT0FBTyxHQUFHLHFCQUFxQixHQUFHLFFBQVEsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN2RSxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsb0JBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyw4QkFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSw4QkFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixTQUFTO1lBQ1gsQ0FBQztZQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O0FBdkRILGdDQXdEQztBQXZEUSxpQkFBTSxHQUFxQixFQUFFLENBQUMifQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ModuleLoader = void 0;
|
|
7
|
-
const globby_1 = __importDefault(require("globby"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const LoaderUtil_1 = require("../LoaderUtil");
|
|
10
|
-
const LoaderFactory_1 = require("../LoaderFactory");
|
|
11
|
-
class ModuleLoader {
|
|
12
|
-
constructor(moduleDir) {
|
|
13
|
-
this.moduleDir = moduleDir;
|
|
14
|
-
}
|
|
15
|
-
load() {
|
|
16
|
-
// optimise for EggModuleLoader
|
|
17
|
-
if (this.protoClazzList) {
|
|
18
|
-
return this.protoClazzList;
|
|
19
|
-
}
|
|
20
|
-
const protoClassList = [];
|
|
21
|
-
const filePattern = LoaderUtil_1.LoaderUtil.filePattern();
|
|
22
|
-
const files = globby_1.default.sync(filePattern, { cwd: this.moduleDir });
|
|
23
|
-
for (const file of files) {
|
|
24
|
-
const realPath = node_path_1.default.join(this.moduleDir, file);
|
|
25
|
-
const fileClazzList = LoaderUtil_1.LoaderUtil.loadFile(realPath);
|
|
26
|
-
for (const clazz of fileClazzList) {
|
|
27
|
-
protoClassList.push(clazz);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
this.protoClazzList = Array.from(new Set(protoClassList));
|
|
31
|
-
return this.protoClazzList;
|
|
32
|
-
}
|
|
33
|
-
static createModuleLoader(path) {
|
|
34
|
-
return new ModuleLoader(path);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.ModuleLoader = ModuleLoader;
|
|
38
|
-
LoaderFactory_1.LoaderFactory.registerLoader('MODULE', ModuleLoader.createModuleLoader);
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltcGwvTW9kdWxlTG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwREFBNkI7QUFDN0IsOENBQTJDO0FBRTNDLG9EQUFpRDtBQUVqRCxNQUFhLFlBQVk7SUFJdkIsWUFBWSxTQUFpQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSTtRQUNGLCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUF3QixFQUFFLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsdUJBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU3QyxNQUFNLEtBQUssR0FBRyxnQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pELE1BQU0sYUFBYSxHQUFHLHVCQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3BDLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBL0JELG9DQStCQztBQUVELDZCQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyJ9
|