@eggjs/core 6.0.0-beta.0

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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +296 -0
  3. package/dist/commonjs/base_context_class.d.ts +16 -0
  4. package/dist/commonjs/base_context_class.js +41 -0
  5. package/dist/commonjs/egg.d.ts +204 -0
  6. package/dist/commonjs/egg.js +346 -0
  7. package/dist/commonjs/index.d.ts +5 -0
  8. package/dist/commonjs/index.js +26 -0
  9. package/dist/commonjs/lifecycle.d.ts +75 -0
  10. package/dist/commonjs/lifecycle.js +306 -0
  11. package/dist/commonjs/loader/context_loader.d.ts +24 -0
  12. package/dist/commonjs/loader/context_loader.js +109 -0
  13. package/dist/commonjs/loader/egg_loader.d.ts +405 -0
  14. package/dist/commonjs/loader/egg_loader.js +1497 -0
  15. package/dist/commonjs/loader/file_loader.d.ts +96 -0
  16. package/dist/commonjs/loader/file_loader.js +248 -0
  17. package/dist/commonjs/package.json +3 -0
  18. package/dist/commonjs/types.d.ts +1 -0
  19. package/dist/commonjs/types.js +403 -0
  20. package/dist/commonjs/utils/index.d.ts +14 -0
  21. package/dist/commonjs/utils/index.js +146 -0
  22. package/dist/commonjs/utils/sequencify.d.ts +13 -0
  23. package/dist/commonjs/utils/sequencify.js +59 -0
  24. package/dist/commonjs/utils/timing.d.ts +22 -0
  25. package/dist/commonjs/utils/timing.js +100 -0
  26. package/dist/esm/base_context_class.d.ts +16 -0
  27. package/dist/esm/base_context_class.js +37 -0
  28. package/dist/esm/egg.d.ts +204 -0
  29. package/dist/esm/egg.js +339 -0
  30. package/dist/esm/index.d.ts +5 -0
  31. package/dist/esm/index.js +6 -0
  32. package/dist/esm/lifecycle.d.ts +75 -0
  33. package/dist/esm/lifecycle.js +276 -0
  34. package/dist/esm/loader/context_loader.d.ts +24 -0
  35. package/dist/esm/loader/context_loader.js +102 -0
  36. package/dist/esm/loader/egg_loader.d.ts +405 -0
  37. package/dist/esm/loader/egg_loader.js +1490 -0
  38. package/dist/esm/loader/file_loader.d.ts +96 -0
  39. package/dist/esm/loader/file_loader.js +241 -0
  40. package/dist/esm/package.json +3 -0
  41. package/dist/esm/types.d.ts +1 -0
  42. package/dist/esm/types.js +402 -0
  43. package/dist/esm/utils/index.d.ts +14 -0
  44. package/dist/esm/utils/index.js +141 -0
  45. package/dist/esm/utils/sequencify.d.ts +13 -0
  46. package/dist/esm/utils/sequencify.js +56 -0
  47. package/dist/esm/utils/timing.d.ts +22 -0
  48. package/dist/esm/utils/timing.js +93 -0
  49. package/package.json +103 -0
  50. package/src/base_context_class.ts +39 -0
  51. package/src/egg.ts +430 -0
  52. package/src/index.ts +6 -0
  53. package/src/lifecycle.ts +363 -0
  54. package/src/loader/context_loader.ts +121 -0
  55. package/src/loader/egg_loader.ts +1703 -0
  56. package/src/loader/file_loader.ts +295 -0
  57. package/src/types.ts +447 -0
  58. package/src/utils/index.ts +154 -0
  59. package/src/utils/sequencify.ts +70 -0
  60. package/src/utils/timing.ts +114 -0
@@ -0,0 +1,22 @@
1
+ interface TimingItem {
2
+ name: string;
3
+ start: number;
4
+ end?: number;
5
+ duration?: number;
6
+ pid: number;
7
+ index: number;
8
+ }
9
+ export declare class Timing {
10
+ #private;
11
+ constructor();
12
+ init(): void;
13
+ start(name?: string, start?: number): TimingItem | undefined;
14
+ end(name?: string): TimingItem | undefined;
15
+ enable(): void;
16
+ disable(): void;
17
+ clear(): void;
18
+ toJSON(): TimingItem[];
19
+ itemToString(timelineEnd: number, item: TimingItem, times: number): string;
20
+ toString(prefix?: string, width?: number): string;
21
+ }
22
+ export {};
@@ -0,0 +1,100 @@
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.Timing = void 0;
7
+ const node_os_1 = require("node:os");
8
+ const node_util_1 = require("node:util");
9
+ const node_assert_1 = __importDefault(require("node:assert"));
10
+ const debug = (0, node_util_1.debuglog)('@eggjs/core:utils:timing');
11
+ class Timing {
12
+ #enable;
13
+ #startTime;
14
+ #map;
15
+ #list;
16
+ constructor() {
17
+ this.#enable = true;
18
+ this.#startTime = null;
19
+ this.#map = new Map();
20
+ this.#list = [];
21
+ this.init();
22
+ }
23
+ init() {
24
+ // process start time
25
+ this.start('Process Start', Date.now() - Math.floor(process.uptime() * 1000));
26
+ this.end('Process Start');
27
+ if ('scriptStartTime' in process && typeof process.scriptStartTime === 'number') {
28
+ // js script start execute time
29
+ this.start('Script Start', process.scriptStartTime);
30
+ this.end('Script Start');
31
+ }
32
+ }
33
+ start(name, start) {
34
+ if (!name || !this.#enable)
35
+ return;
36
+ if (this.#map.has(name)) {
37
+ this.end(name);
38
+ }
39
+ start = start || Date.now();
40
+ if (this.#startTime === null) {
41
+ this.#startTime = start;
42
+ }
43
+ const item = {
44
+ name,
45
+ start,
46
+ pid: process.pid,
47
+ index: this.#list.length,
48
+ };
49
+ this.#map.set(name, item);
50
+ this.#list.push(item);
51
+ debug('start %j', item);
52
+ return item;
53
+ }
54
+ end(name) {
55
+ if (!name || !this.#enable)
56
+ return;
57
+ (0, node_assert_1.default)(this.#map.has(name), `should run timing.start('${name}') first`);
58
+ const item = this.#map.get(name);
59
+ item.end = Date.now();
60
+ item.duration = item.end - item.start;
61
+ debug('end %j', item);
62
+ return item;
63
+ }
64
+ enable() {
65
+ this.#enable = true;
66
+ }
67
+ disable() {
68
+ this.#enable = false;
69
+ }
70
+ clear() {
71
+ this.#map.clear();
72
+ this.#list = [];
73
+ }
74
+ toJSON() {
75
+ return this.#list;
76
+ }
77
+ itemToString(timelineEnd, item, times) {
78
+ const isEnd = typeof item.duration === 'number';
79
+ const duration = isEnd ? item.duration : timelineEnd - item.start;
80
+ const offset = item.start - this.#startTime;
81
+ const status = `${duration}ms${isEnd ? '' : ' NOT_END'}`;
82
+ const timespan = Math.floor(Number((offset * times).toFixed(6)));
83
+ let timeline = Math.floor(Number((duration * times).toFixed(6)));
84
+ timeline = timeline > 0 ? timeline : 1; // make sure there is at least one unit
85
+ const message = `#${item.index} ${item.name}`;
86
+ return ' '.repeat(timespan) + '▇'.repeat(timeline) + ` [${status}] - ${message}`;
87
+ }
88
+ toString(prefix = 'egg start timeline:', width = 50) {
89
+ const timelineEnd = Date.now();
90
+ const timelineDuration = timelineEnd - this.#startTime;
91
+ let times = 1;
92
+ if (timelineDuration > width) {
93
+ times = width / timelineDuration;
94
+ }
95
+ // follow https://github.com/node-modules/time-profile/blob/master/lib/profiler.js#L88
96
+ return prefix + node_os_1.EOL + this.#list.map(item => this.itemToString(timelineEnd, item, times)).join(node_os_1.EOL);
97
+ }
98
+ }
99
+ exports.Timing = Timing;
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RpbWluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQ0FBOEI7QUFDOUIseUNBQXFDO0FBQ3JDLDhEQUFpQztBQUVqQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsMEJBQTBCLENBQUMsQ0FBQztBQVduRCxNQUFhLE1BQU07SUFDakIsT0FBTyxDQUFVO0lBQ2pCLFVBQVUsQ0FBZ0I7SUFDMUIsSUFBSSxDQUEwQjtJQUM5QixLQUFLLENBQWU7SUFDcEI7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUk7UUFDRixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQixJQUFJLGlCQUFpQixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEYsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FB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
@@ -0,0 +1,16 @@
1
+ import type { EggCore, EggCoreContext } from './egg.js';
2
+ /**
3
+ * BaseContextClass is a base class that can be extended,
4
+ * it's instantiated in context level,
5
+ * {@link Helper}, {@link Service} is extending it.
6
+ */
7
+ export declare class BaseContextClass {
8
+ ctx: EggCoreContext;
9
+ app: EggCore;
10
+ config: Record<string, any>;
11
+ service: BaseContextClass;
12
+ /**
13
+ * @since 1.0.0
14
+ */
15
+ constructor(ctx: EggCoreContext);
16
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * BaseContextClass is a base class that can be extended,
3
+ * it's instantiated in context level,
4
+ * {@link Helper}, {@link Service} is extending it.
5
+ */
6
+ export class BaseContextClass {
7
+ ctx;
8
+ app;
9
+ config;
10
+ service;
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+ constructor(ctx) {
15
+ /**
16
+ * @member {Context} BaseContextClass#ctx
17
+ * @since 1.0.0
18
+ */
19
+ this.ctx = ctx;
20
+ /**
21
+ * @member {Application} BaseContextClass#app
22
+ * @since 1.0.0
23
+ */
24
+ this.app = ctx.app;
25
+ /**
26
+ * @member {Config} BaseContextClass#config
27
+ * @since 1.0.0
28
+ */
29
+ this.config = ctx.app.config;
30
+ /**
31
+ * @member {Service} BaseContextClass#service
32
+ * @since 1.0.0
33
+ */
34
+ this.service = ctx.service;
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2VfY29udGV4dF9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixHQUFHLENBQWlCO0lBQ3BCLEdBQUcsQ0FBVTtJQUNiLE1BQU0sQ0FBc0I7SUFDNUIsT0FBTyxDQUFtQjtJQUUxQjs7T0FFRztJQUNILFlBQVksR0FBbUI7UUFDN0I7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbkI7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM3Qjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
@@ -0,0 +1,204 @@
1
+ import KoaApplication from '@eggjs/koa';
2
+ import type { ContextDelegation, Next } from '@eggjs/koa';
3
+ import { EggConsoleLogger } from 'egg-logger';
4
+ import { RegisterOptions, ResourcesController, EggRouter as Router } from '@eggjs/router';
5
+ import type { ReadyFunctionArg } from 'get-ready';
6
+ import { BaseContextClass } from './base_context_class.js';
7
+ import { Timing } from './utils/timing.js';
8
+ import type { Fun } from './utils/index.js';
9
+ import { Lifecycle } from './lifecycle.js';
10
+ import { EggLoader } from './loader/egg_loader.js';
11
+ declare const EGG_LOADER: unique symbol;
12
+ export interface EggCoreOptions {
13
+ baseDir: string;
14
+ type: 'application' | 'agent';
15
+ plugins?: any;
16
+ serverScope?: string;
17
+ env?: string;
18
+ }
19
+ export type EggCoreInitOptions = Partial<EggCoreOptions>;
20
+ type Middleware = (ctx: EggCoreContext, next: Next) => Promise<void> | void;
21
+ export type MiddlewareFunc = Middleware & {
22
+ _name?: string;
23
+ };
24
+ export interface EggCoreContext extends ContextDelegation {
25
+ app: EggCore;
26
+ }
27
+ export declare class EggCore extends KoaApplication {
28
+ #private;
29
+ options: EggCoreOptions;
30
+ timing: Timing;
31
+ console: EggConsoleLogger;
32
+ BaseContextClass: typeof BaseContextClass;
33
+ Controller: typeof BaseContextClass;
34
+ Service: typeof BaseContextClass;
35
+ Helper?: typeof BaseContextClass;
36
+ lifecycle: Lifecycle;
37
+ loader: EggLoader;
38
+ /** auto inject on loadService() */
39
+ readonly serviceClasses: Record<string, any>;
40
+ /** auto inject on loadController() */
41
+ readonly controller: Record<string, any>;
42
+ /** auto inject on loadMiddleware() */
43
+ readonly middlewares: Record<string, (opt: any, app: EggCore) => MiddlewareFunc>;
44
+ middleware: MiddlewareFunc[];
45
+ /**
46
+ * @class
47
+ * @param {Object} options - options
48
+ * @param {String} [options.baseDir=process.cwd()] - the directory of application
49
+ * @param {String} [options.type=application|agent] - whether it's running in app worker or agent worker
50
+ * @param {Object} [options.plugins] - custom plugins
51
+ * @since 1.0.0
52
+ */
53
+ constructor(options?: EggCoreInitOptions);
54
+ /**
55
+ * override koa's app.use, support generator function
56
+ * @since 1.0.0
57
+ */
58
+ use(fn: MiddlewareFunc): this;
59
+ /**
60
+ * Whether `application` or `agent`
61
+ * @member {String}
62
+ * @since 1.0.0
63
+ */
64
+ get type(): "application" | "agent";
65
+ /**
66
+ * The current directory of application
67
+ * @member {String}
68
+ * @see {@link AppInfo#baseDir}
69
+ * @since 1.0.0
70
+ */
71
+ get baseDir(): string;
72
+ /**
73
+ * Alias to {@link https://npmjs.com/package/depd}
74
+ * @member {Function}
75
+ * @since 1.0.0
76
+ */
77
+ get deprecate(): (message: string) => void;
78
+ /**
79
+ * The name of application
80
+ * @member {String}
81
+ * @see {@link AppInfo#name}
82
+ * @since 1.0.0
83
+ */
84
+ get name(): any;
85
+ /**
86
+ * Retrieve enabled plugins
87
+ * @member {Object}
88
+ * @since 1.0.0
89
+ */
90
+ get plugins(): Record<string, import("./loader/egg_loader.js").EggPluginInfo>;
91
+ /**
92
+ * The configuration of application
93
+ * @member {Config}
94
+ * @since 1.0.0
95
+ */
96
+ get config(): Record<string, any>;
97
+ /**
98
+ * Execute scope after loaded and before app start.
99
+ *
100
+ * Notice:
101
+ * This method is now NOT recommanded and reguarded as a deprecated one,
102
+ * For plugin development, we should use `didLoad` instead.
103
+ * For application development, we should use `willReady` instead.
104
+ *
105
+ * @see https://eggjs.org/en/advanced/loader.html#beforestart
106
+ *
107
+ * @param {Function|AsyncFunction} scope function will execute before app start
108
+ * @param {string} [name] scope name, default is empty string
109
+ */
110
+ beforeStart(scope: Fun, name?: string): void;
111
+ /**
112
+ * register an callback function that will be invoked when application is ready.
113
+ * @see https://github.com/node-modules/get-ready
114
+ * @since 1.0.0
115
+ * @example
116
+ * const app = new Application(...);
117
+ * app.ready(err => {
118
+ * if (err) throw err;
119
+ * console.log('done');
120
+ * });
121
+ */
122
+ ready(flagOrFunction?: ReadyFunctionArg): Promise<void> | undefined;
123
+ /**
124
+ * If a client starts asynchronously, you can register `readyCallback`,
125
+ * then the application will wait for the callback to ready
126
+ *
127
+ * It will log when the callback is not invoked after 10s
128
+ *
129
+ * Recommend to use {@link EggCore#beforeStart}
130
+ * @since 1.0.0
131
+ *
132
+ * @param {String} name - readyCallback task name
133
+ * @param {object} opts -
134
+ * - {Number} [timeout=10000] - emit `ready_timeout` when it doesn't finish but reach the timeout
135
+ * - {Boolean} [isWeakDep=false] - whether it's a weak dependency
136
+ * @return {Function} - a callback
137
+ * @example
138
+ * const done = app.readyCallback('mysql');
139
+ * mysql.ready(done);
140
+ */
141
+ readyCallback(name: string, opts: object): (...args: any[]) => void;
142
+ /**
143
+ * Register a function that will be called when app close.
144
+ *
145
+ * Notice:
146
+ * This method is now NOT recommanded directly used,
147
+ * Developers SHOULDN'T use app.beforeClose directly now,
148
+ * but in the form of class to implement beforeClose instead.
149
+ *
150
+ * @see https://eggjs.org/en/advanced/loader.html#beforeclose
151
+ *
152
+ * @param {Function} fn - the function that can be generator function or async function.
153
+ */
154
+ beforeClose(fn: Fun): void;
155
+ /**
156
+ * Close all, it will close
157
+ * - callbacks registered by beforeClose
158
+ * - emit `close` event
159
+ * - remove add listeners
160
+ *
161
+ * If error is thrown when it's closing, the promise will reject.
162
+ * It will also reject after following call.
163
+ * @return {Promise} promise
164
+ * @since 1.0.0
165
+ */
166
+ close(): Promise<void>;
167
+ /**
168
+ * get router
169
+ * @member {Router} EggCore#router
170
+ * @since 1.0.0
171
+ */
172
+ get router(): Router;
173
+ /**
174
+ * Alias to {@link Router#url}
175
+ * @param {String} name - Router name
176
+ * @param {Object} params - more parameters
177
+ * @return {String} url
178
+ */
179
+ url(name: string, params?: any): string;
180
+ head(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
181
+ head(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
182
+ get(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
183
+ get(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
184
+ put(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
185
+ put(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
186
+ patch(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
187
+ patch(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
188
+ post(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
189
+ post(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
190
+ delete(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
191
+ delete(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
192
+ del(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
193
+ del(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
194
+ all(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
195
+ all(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): EggCore;
196
+ resources(prefix: string, controller: string | ResourcesController): EggCore;
197
+ resources(prefix: string, middleware: MiddlewareFunc, controller: string | ResourcesController): EggCore;
198
+ resources(name: string, prefix: string, controller: string | ResourcesController): EggCore;
199
+ resources(name: string, prefix: string, middleware: MiddlewareFunc, controller: string | ResourcesController): EggCore;
200
+ redirect(source: string, destination: string, status?: number): this;
201
+ register(path: string | RegExp | (string | RegExp)[], methods: string[], middleware: MiddlewareFunc | MiddlewareFunc[], opts?: RegisterOptions): this;
202
+ get [EGG_LOADER](): typeof EggLoader;
203
+ }
204
+ export {};