@eggjs/core 6.3.0-beta.0 → 6.3.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 (56) hide show
  1. package/dist/commonjs/base_context_class.d.ts +3 -3
  2. package/dist/commonjs/base_context_class.js +1 -1
  3. package/dist/commonjs/egg.d.ts +17 -10
  4. package/dist/commonjs/egg.js +30 -4
  5. package/dist/commonjs/index.d.ts +2 -0
  6. package/dist/commonjs/index.js +2 -1
  7. package/dist/commonjs/lifecycle.d.ts +5 -2
  8. package/dist/commonjs/lifecycle.js +35 -15
  9. package/dist/commonjs/loader/context_loader.d.ts +3 -3
  10. package/dist/commonjs/loader/context_loader.js +1 -1
  11. package/dist/commonjs/loader/egg_loader.d.ts +4 -40
  12. package/dist/commonjs/loader/egg_loader.js +56 -39
  13. package/dist/commonjs/loader/file_loader.d.ts +5 -1
  14. package/dist/commonjs/loader/file_loader.js +18 -5
  15. package/dist/commonjs/singleton.d.ts +29 -0
  16. package/dist/commonjs/singleton.js +125 -0
  17. package/dist/commonjs/types.d.ts +53 -0
  18. package/dist/commonjs/types.js +3 -0
  19. package/dist/commonjs/utils/index.js +10 -5
  20. package/dist/commonjs/utils/sequencify.js +1 -1
  21. package/dist/commonjs/utils/timing.js +1 -1
  22. package/dist/esm/base_context_class.d.ts +3 -3
  23. package/dist/esm/base_context_class.js +1 -1
  24. package/dist/esm/egg.d.ts +17 -10
  25. package/dist/esm/egg.js +30 -4
  26. package/dist/esm/index.d.ts +2 -0
  27. package/dist/esm/index.js +2 -1
  28. package/dist/esm/lifecycle.d.ts +5 -2
  29. package/dist/esm/lifecycle.js +35 -15
  30. package/dist/esm/loader/context_loader.d.ts +3 -3
  31. package/dist/esm/loader/context_loader.js +1 -1
  32. package/dist/esm/loader/egg_loader.d.ts +4 -40
  33. package/dist/esm/loader/egg_loader.js +60 -43
  34. package/dist/esm/loader/file_loader.d.ts +5 -1
  35. package/dist/esm/loader/file_loader.js +17 -4
  36. package/dist/esm/singleton.d.ts +29 -0
  37. package/dist/esm/singleton.js +118 -0
  38. package/dist/esm/types.d.ts +53 -0
  39. package/dist/esm/types.js +2 -0
  40. package/dist/esm/utils/index.js +10 -5
  41. package/dist/esm/utils/sequencify.js +1 -1
  42. package/dist/esm/utils/timing.js +1 -1
  43. package/dist/package.json +1 -1
  44. package/package.json +16 -15
  45. package/src/base_context_class.ts +3 -3
  46. package/src/egg.ts +40 -12
  47. package/src/index.ts +2 -0
  48. package/src/lifecycle.ts +40 -15
  49. package/src/loader/context_loader.ts +4 -4
  50. package/src/loader/egg_loader.ts +76 -90
  51. package/src/loader/file_loader.ts +16 -4
  52. package/src/singleton.ts +149 -0
  53. package/src/types.ts +56 -0
  54. package/src/utils/index.ts +9 -4
  55. package/src/utils/sequencify.ts +1 -1
  56. package/src/utils/timing.ts +1 -1
@@ -0,0 +1,29 @@
1
+ import type { EggCore } from './egg.js';
2
+ export type SingletonCreateMethod = (config: Record<string, any>, app: EggCore, clientName: string) => unknown | Promise<unknown>;
3
+ export interface SingletonOptions {
4
+ name: string;
5
+ app: EggCore;
6
+ create: SingletonCreateMethod;
7
+ }
8
+ export declare class Singleton<T = any> {
9
+ #private;
10
+ readonly clients: Map<string, T>;
11
+ readonly app: EggCore;
12
+ readonly create: SingletonCreateMethod;
13
+ readonly name: string;
14
+ readonly options: Record<string, any>;
15
+ constructor(options: SingletonOptions);
16
+ init(): void | Promise<void>;
17
+ initSync(): void;
18
+ initAsync(): Promise<void>;
19
+ /**
20
+ * @deprecated please use `getSingletonInstance(id)` instead
21
+ */
22
+ get(id: string): NonNullable<T>;
23
+ /**
24
+ * Get singleton instance by id
25
+ */
26
+ getSingletonInstance(id: string): NonNullable<T>;
27
+ createInstance(config: Record<string, any>, clientName: string): T;
28
+ createInstanceAsync(config: Record<string, any>, clientName: string): Promise<T>;
29
+ }
@@ -0,0 +1,125 @@
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.Singleton = void 0;
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const is_type_of_1 = require("is-type-of");
9
+ class Singleton {
10
+ clients = new Map();
11
+ app;
12
+ create;
13
+ name;
14
+ options;
15
+ constructor(options) {
16
+ (0, node_assert_1.default)(options.name, '[@eggjs/core/singleton] Singleton#constructor options.name is required');
17
+ (0, node_assert_1.default)(options.app, '[@eggjs/core/singleton] Singleton#constructor options.app is required');
18
+ (0, node_assert_1.default)(options.create, '[@eggjs/core/singleton] Singleton#constructor options.create is required');
19
+ (0, node_assert_1.default)(!(options.name in options.app), `[@eggjs/core/singleton] ${options.name} is already exists in app`);
20
+ this.app = options.app;
21
+ this.name = options.name;
22
+ this.create = options.create;
23
+ this.options = options.app.config[this.name] ?? {};
24
+ }
25
+ init() {
26
+ return (0, is_type_of_1.isAsyncFunction)(this.create) ? this.initAsync() : this.initSync();
27
+ }
28
+ initSync() {
29
+ const options = this.options;
30
+ (0, node_assert_1.default)(!(options.client && options.clients), `[@eggjs/core/singleton] ${this.name} can not set options.client and options.clients both`);
31
+ // alias app[name] as client, but still support createInstance method
32
+ if (options.client) {
33
+ const client = this.createInstance(options.client, options.name);
34
+ this.#setClientToApp(client);
35
+ this.#extendDynamicMethods(client);
36
+ return;
37
+ }
38
+ // multi client, use app[name].getSingletonInstance(id)
39
+ if (options.clients) {
40
+ Object.keys(options.clients).forEach(id => {
41
+ const client = this.createInstance(options.clients[id], id);
42
+ this.clients.set(id, client);
43
+ });
44
+ this.#setClientToApp(this);
45
+ return;
46
+ }
47
+ // no config.clients and config.client
48
+ this.#setClientToApp(this);
49
+ }
50
+ async initAsync() {
51
+ const options = this.options;
52
+ (0, node_assert_1.default)(!(options.client && options.clients), `[@eggjs/core/singleton] ${this.name} can not set options.client and options.clients both`);
53
+ // alias app[name] as client, but still support createInstance method
54
+ if (options.client) {
55
+ const client = await this.createInstanceAsync(options.client, options.name);
56
+ this.#setClientToApp(client);
57
+ this.#extendDynamicMethods(client);
58
+ return;
59
+ }
60
+ // multi client, use app[name].getInstance(id)
61
+ if (options.clients) {
62
+ await Promise.all(Object.keys(options.clients).map((id) => {
63
+ return this.createInstanceAsync(options.clients[id], id)
64
+ .then(client => this.clients.set(id, client));
65
+ }));
66
+ this.#setClientToApp(this);
67
+ return;
68
+ }
69
+ // no config.clients and config.client
70
+ this.#setClientToApp(this);
71
+ }
72
+ #setClientToApp(client) {
73
+ Reflect.set(this.app, this.name, client);
74
+ }
75
+ /**
76
+ * @deprecated please use `getSingletonInstance(id)` instead
77
+ */
78
+ get(id) {
79
+ return this.clients.get(id);
80
+ }
81
+ /**
82
+ * Get singleton instance by id
83
+ */
84
+ getSingletonInstance(id) {
85
+ return this.clients.get(id);
86
+ }
87
+ createInstance(config, clientName) {
88
+ // async creator only support createInstanceAsync
89
+ (0, node_assert_1.default)(!(0, is_type_of_1.isAsyncFunction)(this.create), `[@eggjs/core/singleton] ${this.name} only support synchronous creation, please use createInstanceAsync`);
90
+ // options.default will be merge in to options.clients[id]
91
+ config = {
92
+ ...this.options.default,
93
+ ...config,
94
+ };
95
+ return this.create(config, this.app, clientName);
96
+ }
97
+ async createInstanceAsync(config, clientName) {
98
+ // options.default will be merge in to options.clients[id]
99
+ config = {
100
+ ...this.options.default,
101
+ ...config,
102
+ };
103
+ return await this.create(config, this.app, clientName);
104
+ }
105
+ #extendDynamicMethods(client) {
106
+ (0, node_assert_1.default)(!client.createInstance, '[@eggjs/core/singleton] singleton instance should not have createInstance method');
107
+ (0, node_assert_1.default)(!client.createInstanceAsync, '[@eggjs/core/singleton] singleton instance should not have createInstanceAsync method');
108
+ try {
109
+ let extendable = client;
110
+ // Object.preventExtensions() or Object.freeze()
111
+ if (!Object.isExtensible(client) || Object.isFrozen(client)) {
112
+ // eslint-disable-next-line no-proto
113
+ extendable = client.__proto__ || client;
114
+ }
115
+ extendable.createInstance = this.createInstance.bind(this);
116
+ extendable.createInstanceAsync = this.createInstanceAsync.bind(this);
117
+ }
118
+ catch (err) {
119
+ this.app.coreLogger.warn('[@eggjs/core/singleton] %s dynamic create is disabled because of client is un-extendable', this.name);
120
+ this.app.coreLogger.warn(err);
121
+ }
122
+ }
123
+ }
124
+ exports.Singleton = Singleton;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBaUM7QUFDakMsMkNBQTZDO0FBWTdDLE1BQWEsU0FBUztJQUNYLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO0lBQy9CLEdBQUcsQ0FBVTtJQUNiLE1BQU0sQ0FBd0I7SUFDOUIsSUFBSSxDQUFTO0lBQ2IsT0FBTyxDQUFzQjtJQUV0QyxZQUFZLE9BQXlCO1FBQ25DLElBQUEscUJBQU0sRUFBQyxPQUFPLENBQUMsSUFBSSxFQUFFLHdFQUF3RSxDQUFDLENBQUM7UUFDL0YsSUFBQSxxQkFBTSxFQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsdUVBQXVFLENBQUMsQ0FBQztRQUM3RixJQUFBLHFCQUFNLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSwwRUFBMEUsQ0FBQyxDQUFDO1FBQ25HLElBQUEscUJBQU0sRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsMkJBQTJCLE9BQU8sQ0FBQyxJQUFJLDJCQUEyQixDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFBLDRCQUFlLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENB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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
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -9,7 +9,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
9
9
  const promises_1 = require("node:fs/promises");
10
10
  const node_module_1 = __importDefault(require("node:module"));
11
11
  const utils_1 = require("@eggjs/utils");
12
- const debug = (0, node_util_1.debuglog)('@eggjs/core:utils');
12
+ const debug = (0, node_util_1.debuglog)('@eggjs/core/utils');
13
13
  // Guard against poorly mocked module constructors.
14
14
  const Module = typeof module !== 'undefined' && module.constructor.length > 1
15
15
  ? module.constructor
@@ -51,11 +51,11 @@ function getCalleeFromStack(withLine, stackIndex) {
51
51
  exports.default = {
52
52
  deprecated(message) {
53
53
  if (debug.enabled) {
54
- console.trace('[@eggjs/core:deprecated] %s', message);
54
+ console.trace('[@eggjs/core/deprecated] %s', message);
55
55
  }
56
56
  else {
57
- console.warn('[@eggjs/core:deprecated] %s', message);
58
- console.warn('[@eggjs/core:deprecated] set NODE_DEBUG=@eggjs/core:utils can show call stack');
57
+ console.log('[@eggjs/core/deprecated] %s', message);
58
+ console.log('[@eggjs/core/deprecated] set NODE_DEBUG=@eggjs/core/utils can show call stack');
59
59
  }
60
60
  },
61
61
  extensions,
@@ -80,6 +80,11 @@ exports.default = {
80
80
  return obj;
81
81
  }
82
82
  catch (e) {
83
+ if (!e.message && typeof e !== 'string') {
84
+ // ts error: test/fixtures/apps/app-ts/app/extend/context.ts(5,17): error TS2339: Property 'url' does not exist on type 'Context'
85
+ console.trace(e);
86
+ throw e;
87
+ }
83
88
  const err = new Error(`[@eggjs/core] load file: ${filepath}, error: ${e.message}`);
84
89
  err.cause = e;
85
90
  debug('[loadFile] handle %s error: %s', filepath, e);
@@ -109,4 +114,4 @@ exports.default = {
109
114
  function prepareObjectStackTrace(_obj, stack) {
110
115
  return stack;
111
116
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsMERBQTZCO0FBQzdCLHNEQUF5QjtBQUN6QiwrQ0FBd0M7QUFDeEMsOERBQXdDO0FBQ3hDLHdDQUEyRDtBQUUzRCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUk1QyxtREFBbUQ7QUFDbkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7SUFDM0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO0lBQ3BCLDBCQUEwQjtJQUMxQixDQUFDLENBQUMscUJBQWEsQ0FBQztBQUVsQixNQUFNLFVBQVUsR0FBSSxNQUFjLENBQUMsV0FBVyxDQUFDO0FBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBRSxDQUFDLENBQUM7QUFDMUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBRS9DLFNBQVMsa0JBQWtCLENBQUMsUUFBa0IsRUFBRSxVQUFtQjtJQUNqRSxVQUFVLEdBQUcsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFFckMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLG9CQUFvQjtJQUNwQixNQUFNLEdB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
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsMERBQTZCO0FBQzdCLHNEQUF5QjtBQUN6QiwrQ0FBd0M7QUFDeEMsOERBQXdDO0FBQ3hDLHdDQUEyRDtBQUUzRCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUk1QyxtREFBbUQ7QUFDbkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7SUFDM0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO0lBQ3BCLDBCQUEwQjtJQUMxQixDQUFDLENBQUMscUJBQWEsQ0FBQztBQUVsQixNQUFNLFVBQVUsR0FBSSxNQUFjLENBQUMsV0FBVyxDQUFDO0FBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBRSxDQUFDLENBQUM7QUFDMUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBRS9DLFNBQVMsa0JBQWtCLENBQUMsUUFBa0IsRUFBRSxVQUFtQjtJQUNqRSxVQUFVLEdBQUcsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFFckMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLG9CQUFvQjtJQUNwQixNQUFNLEdB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
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = sequencify;
4
4
  const node_util_1 = require("node:util");
5
- const debug = (0, node_util_1.debuglog)('@eggjs/core:utils:sequencify');
5
+ const debug = (0, node_util_1.debuglog)('@eggjs/core/utils/sequencify');
6
6
  function sequence(tasks, names, result, missing, recursive, nest, optional, parent) {
7
7
  names.forEach(function (name) {
8
8
  if (result.requires[name])
@@ -7,7 +7,7 @@ exports.Timing = void 0;
7
7
  const node_os_1 = require("node:os");
8
8
  const node_util_1 = require("node:util");
9
9
  const node_assert_1 = __importDefault(require("node:assert"));
10
- const debug = (0, node_util_1.debuglog)('@eggjs/core:utils:timing');
10
+ const debug = (0, node_util_1.debuglog)('@eggjs/core/utils/timing');
11
11
  class Timing {
12
12
  #enable;
13
13
  #startTime;
@@ -1,16 +1,16 @@
1
- import type { EggCore, ContextDelegation } from './egg.js';
1
+ import type { EggCore, Context } from './egg.js';
2
2
  /**
3
3
  * BaseContextClass is a base class that can be extended,
4
4
  * it's instantiated in context level,
5
5
  * {@link Helper}, {@link Service} is extending it.
6
6
  */
7
7
  export declare class BaseContextClass {
8
- ctx: ContextDelegation;
8
+ ctx: Context;
9
9
  app: EggCore;
10
10
  config: Record<string, any>;
11
11
  service: BaseContextClass;
12
12
  /**
13
13
  * @since 1.0.0
14
14
  */
15
- constructor(ctx: ContextDelegation);
15
+ constructor(ctx: Context);
16
16
  }
@@ -34,4 +34,4 @@ export class BaseContextClass {
34
34
  this.service = ctx.service;
35
35
  }
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2VfY29udGV4dF9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixHQUFHLENBQW9CO0lBQ3ZCLEdBQUcsQ0FBVTtJQUNiLE1BQU0sQ0FBc0I7SUFDNUIsT0FBTyxDQUFtQjtJQUUxQjs7T0FFRztJQUNILFlBQVksR0FBc0I7UUFDaEM7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbkI7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM3Qjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250ZXh0X2NsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2VfY29udGV4dF9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixHQUFHLENBQVU7SUFDYixHQUFHLENBQVU7SUFDYixNQUFNLENBQXNCO0lBQzVCLE9BQU8sQ0FBbUI7SUFFMUI7O09BRUc7SUFDSCxZQUFZLEdBQVk7UUFDdEI7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbkI7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM3Qjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
package/dist/esm/egg.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Application as KoaApplication, Context as KoaContext, Request as KoaRequest, Response as KoaResponse } from '@eggjs/koa';
2
- import type { ContextDelegation as KoaContextDelegation, MiddlewareFunc as KoaMiddlewareFunc, Next } from '@eggjs/koa';
3
- import { EggConsoleLogger } from 'egg-logger';
2
+ import type { MiddlewareFunc as KoaMiddlewareFunc, Next } from '@eggjs/koa';
3
+ import { EggConsoleLogger, Logger } from 'egg-logger';
4
4
  import { RegisterOptions, ResourcesController, EggRouter as Router } from '@eggjs/router';
5
5
  import type { ReadyFunctionArg } from 'get-ready';
6
6
  import { BaseContextClass } from './base_context_class.js';
@@ -8,6 +8,8 @@ import { Timing } from './utils/timing.js';
8
8
  import type { Fun } from './utils/index.js';
9
9
  import { Lifecycle } from './lifecycle.js';
10
10
  import { EggLoader } from './loader/egg_loader.js';
11
+ import { EggAppConfig } from './types.js';
12
+ import { type SingletonCreateMethod } from './singleton.js';
11
13
  export declare const EGG_LOADER: unique symbol;
12
14
  export interface EggCoreOptions {
13
15
  baseDir: string;
@@ -18,16 +20,14 @@ export interface EggCoreOptions {
18
20
  }
19
21
  export type EggCoreInitOptions = Partial<EggCoreOptions>;
20
22
  export { KoaRequest, KoaResponse, KoaContext, KoaApplication, Router, };
21
- export type { Next, KoaMiddlewareFunc, KoaContextDelegation, };
23
+ export type { Next, KoaMiddlewareFunc, };
22
24
  export declare class Request extends KoaRequest {
23
25
  app: EggCore;
24
26
  response: Response;
25
- ctx: ContextDelegation;
26
27
  }
27
28
  export declare class Response extends KoaResponse {
28
29
  app: EggCore;
29
30
  request: Request;
30
- ctx: ContextDelegation;
31
31
  }
32
32
  export declare class Context extends KoaContext {
33
33
  app: EggCore;
@@ -35,8 +35,7 @@ export declare class Context extends KoaContext {
35
35
  response: Response;
36
36
  service: BaseContextClass;
37
37
  }
38
- export type ContextDelegation = KoaContextDelegation & Context;
39
- export type MiddlewareFunc<T extends ContextDelegation = ContextDelegation> = KoaMiddlewareFunc<T>;
38
+ export type MiddlewareFunc<T = Context> = KoaMiddlewareFunc<T>;
40
39
  export declare class EggCore extends KoaApplication {
41
40
  #private;
42
41
  options: EggCoreOptions;
@@ -63,6 +62,14 @@ export declare class EggCore extends KoaApplication {
63
62
  * @since 1.0.0
64
63
  */
65
64
  constructor(options?: EggCoreInitOptions);
65
+ get logger(): Logger;
66
+ get coreLogger(): Logger;
67
+ /**
68
+ * create a singleton instance
69
+ * @param {String} name - unique name for singleton
70
+ * @param {Function|AsyncFunction} create - method will be invoked when singleton instance create
71
+ */
72
+ addSingleton(name: string, create: SingletonCreateMethod): void;
66
73
  /**
67
74
  * override koa's app.use, support generator function
68
75
  * @since 1.0.0
@@ -99,13 +106,13 @@ export declare class EggCore extends KoaApplication {
99
106
  * @member {Object}
100
107
  * @since 1.0.0
101
108
  */
102
- get plugins(): Record<string, import("./loader/egg_loader.js").EggPluginInfo>;
109
+ get plugins(): Record<string, import("./types.js").EggPluginInfo>;
103
110
  /**
104
111
  * The configuration of application
105
112
  * @member {Config}
106
113
  * @since 1.0.0
107
114
  */
108
- get config(): Record<string, any>;
115
+ get config(): EggAppConfig;
109
116
  /**
110
117
  * Execute scope after loaded and before app start.
111
118
  *
@@ -164,7 +171,7 @@ export declare class EggCore extends KoaApplication {
164
171
  *
165
172
  * @param {Function} fn - the function that can be generator function or async function.
166
173
  */
167
- beforeClose(fn: Fun): void;
174
+ beforeClose(fn: Fun, name?: string): void;
168
175
  /**
169
176
  * Close all, it will close
170
177
  * - callbacks registered by beforeClose
package/dist/esm/egg.js CHANGED
@@ -9,7 +9,8 @@ import { Timing } from './utils/timing.js';
9
9
  import { Lifecycle } from './lifecycle.js';
10
10
  import { EggLoader } from './loader/egg_loader.js';
11
11
  import utils from './utils/index.js';
12
- const debug = debuglog('@eggjs/core:egg');
12
+ import { Singleton, } from './singleton.js';
13
+ const debug = debuglog('@eggjs/core/egg');
13
14
  export const EGG_LOADER = Symbol.for('egg#loader');
14
15
  // export @eggjs/koa classes
15
16
  export { KoaRequest, KoaResponse, KoaContext, KoaApplication, Router, };
@@ -127,6 +128,31 @@ export class EggCore extends KoaApplication {
127
128
  EggCoreClass: EggCore,
128
129
  });
129
130
  }
131
+ get logger() {
132
+ return this.console;
133
+ }
134
+ get coreLogger() {
135
+ return this.console;
136
+ }
137
+ /**
138
+ * create a singleton instance
139
+ * @param {String} name - unique name for singleton
140
+ * @param {Function|AsyncFunction} create - method will be invoked when singleton instance create
141
+ */
142
+ addSingleton(name, create) {
143
+ const options = {
144
+ name,
145
+ create,
146
+ app: this,
147
+ };
148
+ const singleton = new Singleton(options);
149
+ const initPromise = singleton.init();
150
+ if (initPromise) {
151
+ this.beforeStart(async () => {
152
+ await initPromise;
153
+ });
154
+ }
155
+ }
130
156
  /**
131
157
  * override koa's app.use, support generator function
132
158
  * @since 1.0.0
@@ -244,9 +270,9 @@ export class EggCore extends KoaApplication {
244
270
  *
245
271
  * @param {Function} fn - the function that can be generator function or async function.
246
272
  */
247
- beforeClose(fn) {
273
+ beforeClose(fn, name) {
248
274
  this.deprecate('`beforeClose` was deprecated, please use "Life Cycles" instead, see https://www.eggjs.org/advanced/loader#life-cycles');
249
- this.lifecycle.registerBeforeClose(fn);
275
+ this.lifecycle.registerBeforeClose(fn, name);
250
276
  }
251
277
  /**
252
278
  * Close all, it will close
@@ -334,4 +360,4 @@ export class EggCore extends KoaApplication {
334
360
  return EggLoader;
335
361
  }
336
362
  }
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWdnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VnZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUNMLFdBQVcsSUFBSSxjQUFjLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFDcEQsT0FBTyxJQUFJLFVBQVUsRUFBRSxRQUFRLElBQUksV0FBVyxHQUMvQyxNQUFNLFlBQVksQ0FBQztBQU1wQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUF3QyxTQUFTLElBQUksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBRXJDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBWW5ELDRCQUE0QjtBQUM1QixPQUFPLEVBQ0wsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUNuRCxNQUFNLEdBQ1AsQ0FBQztBQU9GLDZCQUE2QjtBQUM3QixNQUFNLE9BQU8sT0FBUSxTQUFRLFVBQVU7Q0FJdEM7QUFFRCxNQUFNLE9BQU8sUUFBUyxTQUFRLFdBQVc7Q0FJeEM7QUFFRCxNQUFNLE9BQU8sT0FB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
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWdnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VnZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUNMLFdBQVcsSUFBSSxjQUFjLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFDcEQsT0FBTyxJQUFJLFVBQVUsRUFBRSxRQUFRLElBQUksV0FBVyxHQUMvQyxNQUFNLFlBQVksQ0FBQztBQUtwQixPQUFPLEVBQUUsZ0JBQWdCLEVBQVUsTUFBTSxZQUFZLENBQUM7QUFDdEQsT0FBTyxFQUF3QyxTQUFTLElBQUksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBRXJDLE9BQU8sRUFDTCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQVluRCw0QkFBNEI7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFDbkQsTUFBTSxHQUNQLENBQUM7QUFPRiw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLE9BQVEsU0FBUSxVQUFVO0NBR3RDO0FBRUQsTUFBTSxP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
@@ -3,8 +3,10 @@ export { utils };
3
3
  export * from './egg.js';
4
4
  export * from './base_context_class.js';
5
5
  export * from './lifecycle.js';
6
+ export * from './singleton.js';
6
7
  export * from './loader/egg_loader.js';
7
8
  export * from './loader/file_loader.js';
8
9
  export * from './loader/context_loader.js';
9
10
  export * from './utils/sequencify.js';
10
11
  export * from './utils/timing.js';
12
+ export type * from './types.js';
package/dist/esm/index.js CHANGED
@@ -3,9 +3,10 @@ export { utils };
3
3
  export * from './egg.js';
4
4
  export * from './base_context_class.js';
5
5
  export * from './lifecycle.js';
6
+ export * from './singleton.js';
6
7
  export * from './loader/egg_loader.js';
7
8
  export * from './loader/file_loader.js';
8
9
  export * from './loader/context_loader.js';
9
10
  export * from './utils/sequencify.js';
10
11
  export * from './utils/timing.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sa0JBQWtCLENBQUM7QUFFckMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRWpCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUMifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sa0JBQWtCLENBQUM7QUFFckMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRWpCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQyJ9
@@ -44,6 +44,9 @@ export interface LifecycleOptions {
44
44
  app: EggCore;
45
45
  logger: EggConsoleLogger;
46
46
  }
47
+ export type FunWithFullPath = Fun & {
48
+ fullPath?: string;
49
+ };
47
50
  export declare class Lifecycle extends EventEmitter {
48
51
  #private;
49
52
  loadReady: Ready;
@@ -58,13 +61,13 @@ export declare class Lifecycle extends EventEmitter {
58
61
  get timing(): import("./index.js").Timing;
59
62
  legacyReadyCallback(name: string, opt?: object): (...args: any[]) => void;
60
63
  addBootHook(bootHootOrBootClass: BootImplClass | ILifecycleBoot): void;
61
- addFunctionAsBootHook<T = EggCore>(hook: (app: T) => void): void;
64
+ addFunctionAsBootHook<T = EggCore>(hook: (app: T) => void, fullPath?: string): void;
62
65
  /**
63
66
  * init boots and trigger config did config
64
67
  */
65
68
  init(): void;
66
69
  registerBeforeStart(scope: Fun, name: string): void;
67
- registerBeforeClose(fn: Fun): void;
70
+ registerBeforeClose(fn: FunWithFullPath, fullPath?: string): void;
68
71
  close(): Promise<void>;
69
72
  triggerConfigWillLoad(): void;
70
73
  triggerConfigDidLoad(): void;