@eggjs/core 6.2.10 → 6.2.12
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/dist/commonjs/egg.d.ts +5 -4
- package/dist/commonjs/egg.js +1 -1
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/loader/egg_loader.d.ts +4 -40
- package/dist/commonjs/loader/egg_loader.js +14 -11
- package/dist/commonjs/loader/file_loader.d.ts +5 -1
- package/dist/commonjs/loader/file_loader.js +10 -4
- package/dist/commonjs/types.d.ts +53 -0
- package/dist/commonjs/types.js +3 -0
- package/dist/esm/egg.d.ts +5 -4
- package/dist/esm/egg.js +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/loader/egg_loader.d.ts +4 -40
- package/dist/esm/loader/egg_loader.js +15 -12
- package/dist/esm/loader/file_loader.d.ts +5 -1
- package/dist/esm/loader/file_loader.js +9 -3
- package/dist/esm/types.d.ts +53 -0
- package/dist/esm/types.js +2 -0
- package/dist/package.json +1 -1
- package/package.json +2 -2
- package/src/egg.ts +5 -4
- package/src/index.ts +1 -0
- package/src/loader/egg_loader.ts +20 -52
- package/src/loader/file_loader.ts +8 -3
- package/src/types.ts +56 -0
|
@@ -8,6 +8,12 @@ import utils from '../utils/index.js';
|
|
|
8
8
|
const debug = debuglog('@eggjs/core/file_loader');
|
|
9
9
|
export const FULLPATH = Symbol('EGG_LOADER_ITEM_FULLPATH');
|
|
10
10
|
export const EXPORTS = Symbol('EGG_LOADER_ITEM_EXPORTS');
|
|
11
|
+
export var CaseStyle;
|
|
12
|
+
(function (CaseStyle) {
|
|
13
|
+
CaseStyle["camel"] = "camel";
|
|
14
|
+
CaseStyle["lower"] = "lower";
|
|
15
|
+
CaseStyle["upper"] = "upper";
|
|
16
|
+
})(CaseStyle || (CaseStyle = {}));
|
|
11
17
|
/**
|
|
12
18
|
* Load files from directory to target object.
|
|
13
19
|
* @since 1.0.0
|
|
@@ -38,7 +44,7 @@ export class FileLoader {
|
|
|
38
44
|
assert(options.directory, 'options.directory is required');
|
|
39
45
|
assert(options.target, 'options.target is required');
|
|
40
46
|
this.options = {
|
|
41
|
-
caseStyle:
|
|
47
|
+
caseStyle: CaseStyle.camel,
|
|
42
48
|
call: true,
|
|
43
49
|
override: false,
|
|
44
50
|
...options,
|
|
@@ -46,7 +52,7 @@ export class FileLoader {
|
|
|
46
52
|
// compatible old options _lowercaseFirst_
|
|
47
53
|
if (this.options.lowercaseFirst === true) {
|
|
48
54
|
utils.deprecated('lowercaseFirst is deprecated, use caseStyle instead');
|
|
49
|
-
this.options.caseStyle =
|
|
55
|
+
this.options.caseStyle = CaseStyle.lower;
|
|
50
56
|
}
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
@@ -245,4 +251,4 @@ function defaultCamelize(filepath, caseStyle) {
|
|
|
245
251
|
return first + property.substring(1);
|
|
246
252
|
});
|
|
247
253
|
}
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9hZGVyL2ZpbGVfbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4RixPQUFPLEtBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXpELE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsNEJBQWUsQ0FBQTtJQUNmLDRCQUFlLENBQUE7SUFDZiw0QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQW9DRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVRLE9BQU8sQ0FBcUU7SUFFckY7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFlBQVksT0FBMEI7UUFDcEMsTUFBTSxDQUFDLE9BQU8s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
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface EggAppInfo {
|
|
2
|
+
/** package.json */
|
|
3
|
+
pkg: Record<string, any>;
|
|
4
|
+
/** the application name from package.json */
|
|
5
|
+
name: string;
|
|
6
|
+
/** current directory of application */
|
|
7
|
+
baseDir: string;
|
|
8
|
+
/** equals to serverEnv */
|
|
9
|
+
env: string;
|
|
10
|
+
/** equals to serverScope */
|
|
11
|
+
scope: string;
|
|
12
|
+
/** home directory of the OS */
|
|
13
|
+
HOME: string;
|
|
14
|
+
/** baseDir when local and unittest, HOME when other environment */
|
|
15
|
+
root: string;
|
|
16
|
+
}
|
|
17
|
+
export interface EggPluginInfo {
|
|
18
|
+
/** the plugin name, it can be used in `dep` */
|
|
19
|
+
name: string;
|
|
20
|
+
/** the package name of plugin */
|
|
21
|
+
package?: string;
|
|
22
|
+
version?: string;
|
|
23
|
+
/** whether enabled */
|
|
24
|
+
enable: boolean;
|
|
25
|
+
implicitEnable?: boolean;
|
|
26
|
+
/** the directory of the plugin package */
|
|
27
|
+
path?: string;
|
|
28
|
+
/** the dependent plugins, you can use the plugin name */
|
|
29
|
+
dependencies: string[];
|
|
30
|
+
/** the optional dependent plugins. */
|
|
31
|
+
optionalDependencies: string[];
|
|
32
|
+
dependents?: string[];
|
|
33
|
+
/** specify the serverEnv that only enable the plugin in it */
|
|
34
|
+
env: string[];
|
|
35
|
+
/** the file plugin config in. */
|
|
36
|
+
from: string;
|
|
37
|
+
}
|
|
38
|
+
export interface CustomLoaderConfigItem {
|
|
39
|
+
/** the directory of the custom loader */
|
|
40
|
+
directory: string;
|
|
41
|
+
/** the inject object, it can be app or ctx */
|
|
42
|
+
inject: string;
|
|
43
|
+
/** whether load unit files */
|
|
44
|
+
loadunit?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface EggAppConfig extends Record<string, any> {
|
|
47
|
+
coreMiddleware: string[];
|
|
48
|
+
middleware: string[];
|
|
49
|
+
customLoader?: Record<string, CustomLoaderConfigItem>;
|
|
50
|
+
controller?: {
|
|
51
|
+
supportParams?: boolean;
|
|
52
|
+
};
|
|
53
|
+
}
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/core",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.12",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/eggjs/core#readme",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@eggjs/koa": "^2.20.
|
|
41
|
+
"@eggjs/koa": "^2.20.6",
|
|
42
42
|
"@eggjs/router": "^3.0.5",
|
|
43
43
|
"@eggjs/utils": "^4.1.5",
|
|
44
44
|
"egg-logger": "^3.5.0",
|
package/src/egg.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type { Fun } from './utils/index.js';
|
|
|
18
18
|
import { Lifecycle } from './lifecycle.js';
|
|
19
19
|
import { EggLoader } from './loader/egg_loader.js';
|
|
20
20
|
import utils from './utils/index.js';
|
|
21
|
+
import { EggAppConfig } from './types.js';
|
|
21
22
|
|
|
22
23
|
const debug = debuglog('@eggjs/core/egg');
|
|
23
24
|
|
|
@@ -50,7 +51,7 @@ export class Request extends KoaRequest {
|
|
|
50
51
|
declare response: Response;
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
export class Response extends KoaResponse
|
|
54
|
+
export class Response extends KoaResponse {
|
|
54
55
|
declare app: EggCore;
|
|
55
56
|
declare request: Request;
|
|
56
57
|
}
|
|
@@ -63,7 +64,7 @@ export class Context extends KoaContext {
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
// export @eggjs/core types
|
|
66
|
-
export type MiddlewareFunc<T
|
|
67
|
+
export type MiddlewareFunc<T = Context> = KoaMiddlewareFunc<T>;
|
|
67
68
|
|
|
68
69
|
export class EggCore extends KoaApplication {
|
|
69
70
|
options: EggCoreOptions;
|
|
@@ -247,8 +248,8 @@ export class EggCore extends KoaApplication {
|
|
|
247
248
|
* @member {Config}
|
|
248
249
|
* @since 1.0.0
|
|
249
250
|
*/
|
|
250
|
-
get config() {
|
|
251
|
-
return this.loader ? this.loader.config : {};
|
|
251
|
+
get config(): EggAppConfig {
|
|
252
|
+
return this.loader ? this.loader.config : {} as EggAppConfig;
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
/**
|
package/src/index.ts
CHANGED
package/src/loader/egg_loader.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { extend } from 'extend2';
|
|
|
10
10
|
import { Request, Response, Application, Context as KoaContext } from '@eggjs/koa';
|
|
11
11
|
import { pathMatching, type PathMatchingOptions } from 'egg-path-matching';
|
|
12
12
|
import { now, diff } from 'performance-ms';
|
|
13
|
-
import { FULLPATH, FileLoader, FileLoaderOptions } from './file_loader.js';
|
|
13
|
+
import { CaseStyle, FULLPATH, FileLoader, FileLoaderOptions } from './file_loader.js';
|
|
14
14
|
import { ContextLoader, ContextLoaderOptions } from './context_loader.js';
|
|
15
15
|
import utils, { Fun } from '../utils/index.js';
|
|
16
16
|
import sequencify from '../utils/sequencify.js';
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
Context, EggCore, MiddlewareFunc,
|
|
20
20
|
} from '../egg.js';
|
|
21
21
|
import type { BaseContextClass } from '../base_context_class.js';
|
|
22
|
+
import type { EggAppConfig, EggAppInfo, EggPluginInfo } from '../types.js';
|
|
22
23
|
|
|
23
24
|
const debug = debuglog('@eggjs/core/loader/egg_loader');
|
|
24
25
|
|
|
@@ -29,44 +30,6 @@ const originalPrototypes: Record<string, any> = {
|
|
|
29
30
|
application: Application.prototype,
|
|
30
31
|
};
|
|
31
32
|
|
|
32
|
-
export interface EggAppInfo {
|
|
33
|
-
/** package.json */
|
|
34
|
-
pkg: Record<string, any>;
|
|
35
|
-
/** the application name from package.json */
|
|
36
|
-
name: string;
|
|
37
|
-
/** current directory of application */
|
|
38
|
-
baseDir: string;
|
|
39
|
-
/** equals to serverEnv */
|
|
40
|
-
env: string;
|
|
41
|
-
/** equals to serverScope */
|
|
42
|
-
scope: string;
|
|
43
|
-
/** home directory of the OS */
|
|
44
|
-
HOME: string;
|
|
45
|
-
/** baseDir when local and unittest, HOME when other environment */
|
|
46
|
-
root: string;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface EggPluginInfo {
|
|
50
|
-
/** the plugin name, it can be used in `dep` */
|
|
51
|
-
name: string;
|
|
52
|
-
/** the package name of plugin */
|
|
53
|
-
package?: string;
|
|
54
|
-
version?: string;
|
|
55
|
-
/** whether enabled */
|
|
56
|
-
enable: boolean;
|
|
57
|
-
implicitEnable?: boolean;
|
|
58
|
-
/** the directory of the plugin package */
|
|
59
|
-
path?: string;
|
|
60
|
-
/** the dependent plugins, you can use the plugin name */
|
|
61
|
-
dependencies: string[];
|
|
62
|
-
/** the optional dependent plugins. */
|
|
63
|
-
optionalDependencies: string[];
|
|
64
|
-
dependents?: string[];
|
|
65
|
-
/** specify the serverEnv that only enable the plugin in it */
|
|
66
|
-
env: string[];
|
|
67
|
-
/** the file plugin config in. */
|
|
68
|
-
from: string;
|
|
69
|
-
}
|
|
70
33
|
|
|
71
34
|
export interface EggLoaderOptions {
|
|
72
35
|
/** server env */
|
|
@@ -845,7 +808,7 @@ export class EggLoader {
|
|
|
845
808
|
|
|
846
809
|
/** start Config loader */
|
|
847
810
|
configMeta: Record<string, any>;
|
|
848
|
-
config:
|
|
811
|
+
config: EggAppConfig;
|
|
849
812
|
|
|
850
813
|
/**
|
|
851
814
|
* Load config/config.js
|
|
@@ -859,7 +822,10 @@ export class EggLoader {
|
|
|
859
822
|
this.timing.start('Load Config');
|
|
860
823
|
this.configMeta = {};
|
|
861
824
|
|
|
862
|
-
const target:
|
|
825
|
+
const target: EggAppConfig = {
|
|
826
|
+
middleware: [],
|
|
827
|
+
coreMiddleware: [],
|
|
828
|
+
};
|
|
863
829
|
|
|
864
830
|
// Load Application config first
|
|
865
831
|
const appConfig = await this.#preloadAppConfig();
|
|
@@ -1208,7 +1174,7 @@ export class EggLoader {
|
|
|
1208
1174
|
const servicePaths = this.getLoadUnits().map(unit => path.join(unit.path, 'app/service'));
|
|
1209
1175
|
options = {
|
|
1210
1176
|
call: true,
|
|
1211
|
-
caseStyle:
|
|
1177
|
+
caseStyle: CaseStyle.lower,
|
|
1212
1178
|
fieldClass: 'serviceClasses',
|
|
1213
1179
|
directory: servicePaths,
|
|
1214
1180
|
...options,
|
|
@@ -1248,7 +1214,7 @@ export class EggLoader {
|
|
|
1248
1214
|
opt = {
|
|
1249
1215
|
call: false,
|
|
1250
1216
|
override: true,
|
|
1251
|
-
caseStyle:
|
|
1217
|
+
caseStyle: CaseStyle.lower,
|
|
1252
1218
|
directory: middlewarePaths,
|
|
1253
1219
|
...opt,
|
|
1254
1220
|
};
|
|
@@ -1323,7 +1289,7 @@ export class EggLoader {
|
|
|
1323
1289
|
this.timing.start('Load Controller');
|
|
1324
1290
|
const controllerBase = path.join(this.options.baseDir, 'app/controller');
|
|
1325
1291
|
opt = {
|
|
1326
|
-
caseStyle:
|
|
1292
|
+
caseStyle: CaseStyle.lower,
|
|
1327
1293
|
directory: controllerBase,
|
|
1328
1294
|
initializer: (obj, opt) => {
|
|
1329
1295
|
// return class if it exports a function
|
|
@@ -1403,7 +1369,7 @@ export class EggLoader {
|
|
|
1403
1369
|
case 'ctx': {
|
|
1404
1370
|
assert(!(property in this.app.context), `customLoader should not override ctx.${property}`);
|
|
1405
1371
|
const options = {
|
|
1406
|
-
caseStyle:
|
|
1372
|
+
caseStyle: CaseStyle.lower,
|
|
1407
1373
|
fieldClass: `${property}Classes`,
|
|
1408
1374
|
...loaderConfig,
|
|
1409
1375
|
directory,
|
|
@@ -1414,7 +1380,7 @@ export class EggLoader {
|
|
|
1414
1380
|
case 'app': {
|
|
1415
1381
|
assert(!(property in this.app), `customLoader should not override app.${property}`);
|
|
1416
1382
|
const options = {
|
|
1417
|
-
caseStyle:
|
|
1383
|
+
caseStyle: CaseStyle.lower,
|
|
1418
1384
|
initializer: (Clazz: unknown) => {
|
|
1419
1385
|
return isClass(Clazz) ? new Clazz(this.app) : Clazz;
|
|
1420
1386
|
},
|
|
@@ -1533,10 +1499,11 @@ export class EggLoader {
|
|
|
1533
1499
|
* @param {Object} options - see {@link FileLoader}
|
|
1534
1500
|
* @since 1.0.0
|
|
1535
1501
|
*/
|
|
1536
|
-
async loadToApp(directory: string | string[], property: string | symbol,
|
|
1502
|
+
async loadToApp(directory: string | string[], property: string | symbol,
|
|
1503
|
+
options?: Omit<FileLoaderOptions, 'inject' | 'target'>) {
|
|
1537
1504
|
const target = {};
|
|
1538
1505
|
Reflect.set(this.app, property, target);
|
|
1539
|
-
|
|
1506
|
+
const loadOptions: FileLoaderOptions = {
|
|
1540
1507
|
...options,
|
|
1541
1508
|
directory: options?.directory ?? directory,
|
|
1542
1509
|
target,
|
|
@@ -1545,7 +1512,7 @@ export class EggLoader {
|
|
|
1545
1512
|
|
|
1546
1513
|
const timingKey = `Load "${String(property)}" to Application`;
|
|
1547
1514
|
this.timing.start(timingKey);
|
|
1548
|
-
await new FileLoader(
|
|
1515
|
+
await new FileLoader(loadOptions).load();
|
|
1549
1516
|
this.timing.end(timingKey);
|
|
1550
1517
|
}
|
|
1551
1518
|
|
|
@@ -1556,8 +1523,9 @@ export class EggLoader {
|
|
|
1556
1523
|
* @param {Object} options - see {@link ContextLoader}
|
|
1557
1524
|
* @since 1.0.0
|
|
1558
1525
|
*/
|
|
1559
|
-
async loadToContext(directory: string | string[], property: string | symbol,
|
|
1560
|
-
options
|
|
1526
|
+
async loadToContext(directory: string | string[], property: string | symbol,
|
|
1527
|
+
options?: Omit<ContextLoaderOptions, 'inject' | 'property'>) {
|
|
1528
|
+
const loadOptions: ContextLoaderOptions = {
|
|
1561
1529
|
...options,
|
|
1562
1530
|
directory: options?.directory || directory,
|
|
1563
1531
|
property,
|
|
@@ -1566,7 +1534,7 @@ export class EggLoader {
|
|
|
1566
1534
|
|
|
1567
1535
|
const timingKey = `Load "${String(property)}" to Context`;
|
|
1568
1536
|
this.timing.start(timingKey);
|
|
1569
|
-
await new ContextLoader(
|
|
1537
|
+
await new ContextLoader(loadOptions).load();
|
|
1570
1538
|
this.timing.end(timingKey);
|
|
1571
1539
|
}
|
|
1572
1540
|
|
|
@@ -11,7 +11,12 @@ const debug = debuglog('@eggjs/core/file_loader');
|
|
|
11
11
|
export const FULLPATH = Symbol('EGG_LOADER_ITEM_FULLPATH');
|
|
12
12
|
export const EXPORTS = Symbol('EGG_LOADER_ITEM_EXPORTS');
|
|
13
13
|
|
|
14
|
-
export
|
|
14
|
+
export enum CaseStyle {
|
|
15
|
+
camel = 'camel',
|
|
16
|
+
lower = 'lower',
|
|
17
|
+
upper = 'upper',
|
|
18
|
+
}
|
|
19
|
+
|
|
15
20
|
export type CaseStyleFunction = (filepath: string) => string[];
|
|
16
21
|
export type FileLoaderInitializer = (exports: unknown, options: { path: string; pathName: string }) => unknown;
|
|
17
22
|
export type FileLoaderFilter = (exports: unknown) => boolean;
|
|
@@ -79,7 +84,7 @@ export class FileLoader {
|
|
|
79
84
|
assert(options.directory, 'options.directory is required');
|
|
80
85
|
assert(options.target, 'options.target is required');
|
|
81
86
|
this.options = {
|
|
82
|
-
caseStyle:
|
|
87
|
+
caseStyle: CaseStyle.camel,
|
|
83
88
|
call: true,
|
|
84
89
|
override: false,
|
|
85
90
|
...options,
|
|
@@ -88,7 +93,7 @@ export class FileLoader {
|
|
|
88
93
|
// compatible old options _lowercaseFirst_
|
|
89
94
|
if (this.options.lowercaseFirst === true) {
|
|
90
95
|
utils.deprecated('lowercaseFirst is deprecated, use caseStyle instead');
|
|
91
|
-
this.options.caseStyle =
|
|
96
|
+
this.options.caseStyle = CaseStyle.lower;
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
99
|
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface EggAppInfo {
|
|
2
|
+
/** package.json */
|
|
3
|
+
pkg: Record<string, any>;
|
|
4
|
+
/** the application name from package.json */
|
|
5
|
+
name: string;
|
|
6
|
+
/** current directory of application */
|
|
7
|
+
baseDir: string;
|
|
8
|
+
/** equals to serverEnv */
|
|
9
|
+
env: string;
|
|
10
|
+
/** equals to serverScope */
|
|
11
|
+
scope: string;
|
|
12
|
+
/** home directory of the OS */
|
|
13
|
+
HOME: string;
|
|
14
|
+
/** baseDir when local and unittest, HOME when other environment */
|
|
15
|
+
root: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface EggPluginInfo {
|
|
19
|
+
/** the plugin name, it can be used in `dep` */
|
|
20
|
+
name: string;
|
|
21
|
+
/** the package name of plugin */
|
|
22
|
+
package?: string;
|
|
23
|
+
version?: string;
|
|
24
|
+
/** whether enabled */
|
|
25
|
+
enable: boolean;
|
|
26
|
+
implicitEnable?: boolean;
|
|
27
|
+
/** the directory of the plugin package */
|
|
28
|
+
path?: string;
|
|
29
|
+
/** the dependent plugins, you can use the plugin name */
|
|
30
|
+
dependencies: string[];
|
|
31
|
+
/** the optional dependent plugins. */
|
|
32
|
+
optionalDependencies: string[];
|
|
33
|
+
dependents?: string[];
|
|
34
|
+
/** specify the serverEnv that only enable the plugin in it */
|
|
35
|
+
env: string[];
|
|
36
|
+
/** the file plugin config in. */
|
|
37
|
+
from: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface CustomLoaderConfigItem {
|
|
41
|
+
/** the directory of the custom loader */
|
|
42
|
+
directory: string;
|
|
43
|
+
/** the inject object, it can be app or ctx */
|
|
44
|
+
inject: string;
|
|
45
|
+
/** whether load unit files */
|
|
46
|
+
loadunit?: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface EggAppConfig extends Record<string, any> {
|
|
50
|
+
coreMiddleware: string[];
|
|
51
|
+
middleware: string[];
|
|
52
|
+
customLoader?: Record<string, CustomLoaderConfigItem>;
|
|
53
|
+
controller?: {
|
|
54
|
+
supportParams?: boolean;
|
|
55
|
+
};
|
|
56
|
+
}
|