@eggjs/tegg-config 4.0.0-beta.2 → 4.0.0-beta.30

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/README.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # `@eggjs/tegg-config`
2
2
 
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![Known Vulnerabilities][snyk-image]][snyk-url]
5
+ [![npm download][download-image]][download-url]
6
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/tegg-config.svg?style=flat)](https://nodejs.org/en/download/)
7
+
8
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-config.svg?style=flat-square
9
+ [npm-url]: https://npmjs.org/package/@eggjs/tegg-config
10
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-config/badge.svg?style=flat-square
11
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-config
12
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-config.svg?style=flat-square
13
+ [download-url]: https://npmjs.org/package/@eggjs/tegg-config
14
+
3
15
  Egg plugin to load module config(module.yml/module.json)
4
16
 
5
17
  # Usage
@@ -0,0 +1,2 @@
1
+ import TeggConfigAppHook from './app.ts';
2
+ export default TeggConfigAppHook;
package/dist/agent.js ADDED
@@ -0,0 +1,3 @@
1
+ import TeggConfigAppHook from "./app.js";
2
+ export default TeggConfigAppHook;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxpQkFBaUIsTUFBTSxVQUFVLENBQUM7QUFFekMsZUFBZSxpQkFBaUIsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
- import type { Application, IBoot } from 'egg';
2
- export default class App implements IBoot {
1
+ import type { Application, ILifecycleBoot } from 'egg';
2
+ export default class App implements ILifecycleBoot {
3
3
  private readonly app;
4
4
  constructor(app: Application);
5
5
  configWillLoad(): void;
package/dist/app.js ADDED
@@ -0,0 +1,37 @@
1
+ import { debuglog } from 'node:util';
2
+ import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
3
+ import { ModuleScanner } from "./lib/ModuleScanner.js";
4
+ const debug = debuglog('egg/tegg/plugin/config/app');
5
+ export default class App {
6
+ app;
7
+ constructor(app) {
8
+ this.app = app;
9
+ const configNames = this.app.loader.getTypeFiles('module');
10
+ ModuleConfigUtil.setConfigNames(configNames);
11
+ }
12
+ configWillLoad() {
13
+ const { readModuleOptions } = this.app.config.tegg;
14
+ const moduleScanner = new ModuleScanner(this.app.baseDir, readModuleOptions);
15
+ this.app.moduleReferences = moduleScanner.loadModuleReferences();
16
+ debug('load moduleReferences: %o', this.app.moduleReferences);
17
+ this.app.moduleConfigs = {};
18
+ for (const reference of this.app.moduleReferences) {
19
+ const absoluteRef = {
20
+ path: ModuleConfigUtil.resolveModuleDir(reference.path, this.app.baseDir),
21
+ name: reference.name,
22
+ optional: reference.optional,
23
+ };
24
+ const moduleName = ModuleConfigUtil.readModuleNameSync(absoluteRef.path);
25
+ this.app.moduleConfigs[moduleName] = {
26
+ name: moduleName,
27
+ reference: absoluteRef,
28
+ config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path),
29
+ };
30
+ }
31
+ debug('load moduleConfigs: %o', this.app.moduleConfigs);
32
+ }
33
+ async beforeClose() {
34
+ ModuleConfigUtil.setConfigNames(undefined);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUVyRCxNQUFNLENBQUMsT0FBTyxPQUFPLEdBQUc7SUFDTCxHQUFHLENBQWM7SUFFbEMsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2pFLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xELE1BQU0sV0FBVyxHQUFvQjtnQkFDbkMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO2FBQzdCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUc7Z0JBQ25DLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsV0FBVztnQkFDdEIsTUFBTSxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7YUFDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIn0=
@@ -0,0 +1,3 @@
1
+ import type { EggAppInfo, PartialEggConfig } from 'egg';
2
+ declare function configFactory(appInfo: EggAppInfo): PartialEggConfig;
3
+ export default configFactory;
@@ -0,0 +1,13 @@
1
+ function configFactory(appInfo) {
2
+ return {
3
+ tegg: {
4
+ readModuleOptions: {
5
+ // https://github.com/eggjs/tegg/blob/33e749cc82a74411684db360b30f24ed0083dd95/core/common-util/src/ModuleConfig.ts#L29
6
+ deep: 10,
7
+ cwd: appInfo.baseDir,
8
+ },
9
+ },
10
+ };
11
+ }
12
+ export default configFactory;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsYUFBYSxDQUFDLE9BQW1CO0lBQ3hDLE9BQU87UUFDTCxJQUFJLEVBQUU7WUFDSixpQkFBaUIsRUFBRTtnQkFDakIsdUhBQXVIO2dCQUN2SCxJQUFJLEVBQUUsRUFBRTtnQkFDUixHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU87YUFDckI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsZUFBZSxhQUFhLENBQUMifQ==
@@ -0,0 +1 @@
1
+ import './types.ts';
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
1
+ import "./types.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUMifQ==
@@ -1,4 +1,4 @@
1
- import { ModuleReference, ReadModuleReferenceOptions } from '@eggjs/tegg-common-util';
1
+ import { type ModuleReference, type ReadModuleReferenceOptions } from '@eggjs/tegg-common-util';
2
2
  export declare class ModuleScanner {
3
3
  private readonly baseDir;
4
4
  private readonly readModuleOptions;
@@ -0,0 +1,43 @@
1
+ import path from 'node:path';
2
+ import { readFileSync } from 'node:fs';
3
+ import { debuglog } from 'node:util';
4
+ import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
5
+ import { importResolve } from '@eggjs/utils';
6
+ const debug = debuglog('egg/tegg/plugin/config/ModuleScanner');
7
+ export class ModuleScanner {
8
+ baseDir;
9
+ readModuleOptions;
10
+ constructor(baseDir, readModuleOptions) {
11
+ this.baseDir = baseDir;
12
+ this.readModuleOptions = readModuleOptions;
13
+ }
14
+ /**
15
+ * - load module references from config or scan from baseDir
16
+ * - load framework module as optional module reference
17
+ */
18
+ loadModuleReferences() {
19
+ const moduleReferences = ModuleConfigUtil.readModuleReference(this.baseDir, this.readModuleOptions || {});
20
+ const appPkg = JSON.parse(readFileSync(path.join(this.baseDir, 'package.json'), 'utf-8'));
21
+ const framework = appPkg.egg?.framework;
22
+ if (!framework) {
23
+ return moduleReferences;
24
+ }
25
+ const frameworkPkg = importResolve(`${framework}/package.json`, {
26
+ paths: [this.baseDir],
27
+ });
28
+ const frameworkDir = path.dirname(frameworkPkg);
29
+ debug('loadModuleReferences from framework:%o, frameworkDir:%o', framework, frameworkDir);
30
+ const optionalModuleReferences = ModuleConfigUtil.readModuleReference(frameworkDir, this.readModuleOptions || {});
31
+ const result = [...moduleReferences];
32
+ for (const optionalModuleReference of optionalModuleReferences) {
33
+ if (!result.some((t) => t.path === optionalModuleReference.path)) {
34
+ result.push({
35
+ ...optionalModuleReference,
36
+ optional: true,
37
+ });
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTW9kdWxlU2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBeUQsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRS9ELE1BQU0sT0FBTyxhQUFhO0lBQ1AsT0FBTyxDQUFTO0lBQ2hCLGlCQUFpQixDQUE2QjtJQUUvRCxZQUFZLE9BQWUsRUFBRSxpQkFBNkM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0I7UUFDbEIsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRyxNQUFNLE1BQU0sR0FBcUMsSUFBSSxDQUFDLEtBQUssQ0FDekQsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDL0QsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxHQUFHLFNBQVMsZUFBZSxFQUFFO1lBQzlELEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMseURBQXlELEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFGLE1BQU0sd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxLQUFLLE1BQU0sdUJBQXVCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLEdBQUcsdUJBQXVCO29CQUMxQixRQUFRLEVBQUUsSUFBSTtpQkFDZixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
@@ -0,0 +1,17 @@
1
+ import type { ReadModuleReferenceOptions, ModuleReference, ModuleConfigHolder } from '@eggjs/tegg-common-util';
2
+ declare module 'egg' {
3
+ interface EggAppConfig {
4
+ /**
5
+ * tegg config
6
+ */
7
+ tegg: {
8
+ readModuleOptions: ReadModuleReferenceOptions;
9
+ };
10
+ }
11
+ interface ModuleConfig {
12
+ }
13
+ interface EggApplicationCore {
14
+ moduleReferences: readonly ModuleReference[];
15
+ moduleConfigs: Record<string, ModuleConfigHolder>;
16
+ }
17
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "eggPlugin": {
4
4
  "name": "teggConfig"
5
5
  },
6
- "version": "4.0.0-beta.2",
6
+ "version": "4.0.0-beta.30",
7
7
  "description": "module config plugin for egg",
8
8
  "keywords": [
9
9
  "egg",
@@ -14,55 +14,54 @@
14
14
  "tegg"
15
15
  ],
16
16
  "files": [
17
- "app.js",
18
- "app.d.ts",
19
- "typings/index.d.ts",
20
- "lib/**/*.js",
21
- "lib/**/*.d.ts",
22
- "agent.js",
23
- "agent.d.ts",
24
- "index.js",
25
- "index.d.ts"
17
+ "dist"
26
18
  ],
27
19
  "type": "module",
28
20
  "exports": {
29
- ".": {
30
- "types": "./index.d.ts",
31
- "default": "./index.js"
32
- },
21
+ ".": "./dist/index.js",
22
+ "./agent": "./dist/agent.js",
23
+ "./app": "./dist/app.js",
24
+ "./config/config.default": "./dist/config/config.default.js",
25
+ "./lib/ModuleScanner": "./dist/lib/ModuleScanner.js",
26
+ "./types": "./dist/types.js",
33
27
  "./package.json": "./package.json"
34
28
  },
35
- "scripts": {
36
- "clean": "tsc -b --clean",
37
- "tsc": "npm run clean && tsc -p ./tsconfig.json",
38
- "tsc:pub": "npm run tsc",
39
- "prepublishOnly": "npm run tsc"
40
- },
41
- "homepage": "https://github.com/eggjs/tegg",
29
+ "homepage": "https://github.com/eggjs/egg/tree/next/tegg/plugin/config",
42
30
  "bugs": {
43
- "url": "https://github.com/eggjs/tegg/issues"
31
+ "url": "https://github.com/eggjs/egg/issues"
44
32
  },
45
33
  "repository": {
46
34
  "type": "git",
47
- "url": "git@github.com:eggjs/tegg.git",
48
- "directory": "plugin/config"
35
+ "url": "git@github.com:eggjs/egg.git",
36
+ "directory": "tegg/plugin/config"
49
37
  },
50
38
  "engines": {
51
- "node": ">=20.0.0"
39
+ "node": ">=22.18.0"
52
40
  },
53
41
  "dependencies": {
54
- "@eggjs/tegg-common-util": "^4.0.0-beta.2",
55
- "@eggjs/utils": "^4.3.0"
42
+ "@eggjs/tegg-common-util": "4.0.0-beta.30",
43
+ "@eggjs/utils": "5.0.0-beta.30"
44
+ },
45
+ "peerDependencies": {
46
+ "egg": "4.1.0-beta.30"
56
47
  },
57
48
  "devDependencies": {
58
- "@eggjs/mock": "6",
59
- "@types/node": "22",
60
- "egg": "4",
61
- "ts-node": "10",
62
- "typescript": "5"
49
+ "@types/node": "^24.9.1",
50
+ "typescript": "^5.9.3",
51
+ "tsdown": "0.15.9",
52
+ "unplugin-unused": "^0.5.4",
53
+ "@eggjs/mock": "7.0.0-beta.30",
54
+ "egg": "4.1.0-beta.30"
63
55
  },
64
56
  "publishConfig": {
65
57
  "access": "public"
66
58
  },
67
- "gitHead": "7e29d49dcc2eb26909697d5543b3c4f596c9e927"
68
- }
59
+ "main": "./dist/index.js",
60
+ "module": "./dist/index.js",
61
+ "types": "./dist/index.d.ts",
62
+ "scripts": {
63
+ "clean": "rimraf dist *.tsbuildinfo",
64
+ "build": "tsdown && npm run clean && tsc -p tsconfig.build.json",
65
+ "typecheck": "tsc --noEmit"
66
+ }
67
+ }
package/agent.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import TeggConfigAppHook from './app.js';
2
- export default TeggConfigAppHook;
package/agent.js DELETED
@@ -1,3 +0,0 @@
1
- import TeggConfigAppHook from './app.js';
2
- export default TeggConfigAppHook;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGlCQUFpQixNQUFNLFVBQVUsQ0FBQztBQUV6QyxlQUFlLGlCQUFpQixDQUFDIn0=
package/app.js DELETED
@@ -1,33 +0,0 @@
1
- import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
2
- import { ModuleScanner } from './lib/ModuleScanner.js';
3
- export default class App {
4
- app;
5
- constructor(app) {
6
- this.app = app;
7
- const configNames = this.app.loader.getTypeFiles('module');
8
- ModuleConfigUtil.setConfigNames(configNames);
9
- }
10
- configWillLoad() {
11
- const { readModuleOptions } = this.app.config.tegg || {};
12
- const moduleScanner = new ModuleScanner(this.app.baseDir, readModuleOptions);
13
- this.app.moduleReferences = moduleScanner.loadModuleReferences();
14
- this.app.moduleConfigs = {};
15
- for (const reference of this.app.moduleReferences) {
16
- const absoluteRef = {
17
- path: ModuleConfigUtil.resolveModuleDir(reference.path, this.app.baseDir),
18
- name: reference.name,
19
- optional: reference.optional,
20
- };
21
- const moduleName = ModuleConfigUtil.readModuleNameSync(absoluteRef.path);
22
- this.app.moduleConfigs[moduleName] = {
23
- name: moduleName,
24
- reference: absoluteRef,
25
- config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path),
26
- };
27
- }
28
- }
29
- async beforeClose() {
30
- ModuleConfigUtil.setConfigNames(undefined);
31
- }
32
- }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLEdBQUc7SUFDTCxHQUFHLENBQWM7SUFFbEMsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVqRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEQsTUFBTSxXQUFXLEdBQW9CO2dCQUNuQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFDekUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7YUFDN0IsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRztnQkFDbkMsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzthQUNoRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YifQ==
package/index.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { ModuleReference as ModuleReferenceAlias } from '@eggjs/tegg-common-util';
2
- declare module '@eggjs/core' {
3
- type ModuleReference = ModuleReferenceAlias;
4
- interface ModuleConfig {
5
- }
6
- interface ModuleConfigHolder {
7
- name: string;
8
- config: ModuleConfig;
9
- reference: ModuleReference;
10
- }
11
- interface ModuleConfigApplication {
12
- moduleReferences: readonly ModuleReference[];
13
- moduleConfigs: Record<string, ModuleConfigHolder>;
14
- }
15
- interface EggCore extends ModuleConfigApplication {
16
- }
17
- }
@@ -1,44 +0,0 @@
1
- import path from 'node:path';
2
- import { readFileSync } from 'node:fs';
3
- import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
4
- import { importResolve } from '@eggjs/utils';
5
- export class ModuleScanner {
6
- baseDir;
7
- readModuleOptions;
8
- constructor(baseDir, readModuleOptions) {
9
- this.baseDir = baseDir;
10
- this.readModuleOptions = readModuleOptions;
11
- }
12
- /**
13
- * - load module references from config or scan from baseDir
14
- * - load framework module as optional module reference
15
- */
16
- loadModuleReferences() {
17
- const moduleReferences = ModuleConfigUtil.readModuleReference(this.baseDir, this.readModuleOptions || {});
18
- // eslint-disable-next-line @typescript-eslint/no-var-requires
19
- const appPkg = JSON.parse(readFileSync(path.join(this.baseDir, 'package.json'), 'utf-8'));
20
- const framework = appPkg.egg?.framework;
21
- if (!framework) {
22
- return moduleReferences;
23
- }
24
- // eslint-disable-next-line @typescript-eslint/no-var-requires
25
- const frameworkPkg = importResolve(`${framework}/package.json`, {
26
- paths: [this.baseDir],
27
- });
28
- const frameworkDir = path.dirname(frameworkPkg);
29
- const optionalModuleReferences = ModuleConfigUtil.readModuleReference(frameworkDir, this.readModuleOptions || {});
30
- const result = [
31
- ...moduleReferences,
32
- ];
33
- for (const optionalModuleReference of optionalModuleReferences) {
34
- if (!result.some(t => t.path === optionalModuleReference.path)) {
35
- result.push({
36
- ...optionalModuleReference,
37
- optional: true,
38
- });
39
- }
40
- }
41
- return result;
42
- }
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZHVsZVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUErQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxPQUFPLGFBQWE7SUFDUCxPQUFPLENBQVM7SUFDaEIsaUJBQWlCLENBQTZCO0lBRS9ELFlBQVksT0FBZSxFQUFFLGlCQUE2QztRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUNsQixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLDhEQUE4RDtRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7UUFDRCw4REFBOEQ7UUFDOUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsU0FBUyxlQUFlLEVBQUU7WUFDOUQsS0FBSyxFQUFFLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRTtTQUN4QixDQUFDLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsSCxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsZ0JBQWdCO1NBQ3BCLENBQUM7UUFDRixLQUFLLE1BQU0sdUJBQXVCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixHQUFHLHVCQUF1QjtvQkFDMUIsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- import 'egg';