@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,346 @@
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.EggCore = void 0;
7
+ /* eslint-disable prefer-spread */
8
+ const node_assert_1 = __importDefault(require("node:assert"));
9
+ const node_util_1 = require("node:util");
10
+ const is_type_of_1 = __importDefault(require("is-type-of"));
11
+ const koa_1 = __importDefault(require("@eggjs/koa"));
12
+ const egg_logger_1 = require("egg-logger");
13
+ const router_1 = require("@eggjs/router");
14
+ const base_context_class_js_1 = require("./base_context_class.js");
15
+ const timing_js_1 = require("./utils/timing.js");
16
+ const lifecycle_js_1 = require("./lifecycle.js");
17
+ const egg_loader_js_1 = require("./loader/egg_loader.js");
18
+ const index_js_1 = __importDefault(require("./utils/index.js"));
19
+ const debug = (0, node_util_1.debuglog)('@eggjs/core:egg');
20
+ const EGG_LOADER = Symbol.for('egg#loader');
21
+ class EggCore extends koa_1.default {
22
+ options;
23
+ timing;
24
+ console;
25
+ BaseContextClass;
26
+ Controller;
27
+ Service;
28
+ Helper;
29
+ lifecycle;
30
+ loader;
31
+ #closePromise;
32
+ #router;
33
+ /** auto inject on loadService() */
34
+ serviceClasses = {};
35
+ /** auto inject on loadController() */
36
+ controller = {};
37
+ /** auto inject on loadMiddleware() */
38
+ middlewares = {};
39
+ /**
40
+ * @class
41
+ * @param {Object} options - options
42
+ * @param {String} [options.baseDir=process.cwd()] - the directory of application
43
+ * @param {String} [options.type=application|agent] - whether it's running in app worker or agent worker
44
+ * @param {Object} [options.plugins] - custom plugins
45
+ * @since 1.0.0
46
+ */
47
+ constructor(options = {}) {
48
+ options.baseDir = options.baseDir ?? process.cwd();
49
+ options.type = options.type ?? 'application';
50
+ (0, node_assert_1.default)(typeof options.baseDir === 'string', 'options.baseDir required, and must be a string');
51
+ // assert(fs.existsSync(options.baseDir), `Directory ${options.baseDir} not exists`);
52
+ // assert(fs.statSync(options.baseDir).isDirectory(), `Directory ${options.baseDir} is not a directory`);
53
+ (0, node_assert_1.default)(options.type === 'application' || options.type === 'agent', 'options.type should be application or agent');
54
+ super();
55
+ this.timing = new timing_js_1.Timing();
56
+ /**
57
+ * @member {Object} EggCore#options
58
+ * @private
59
+ * @since 1.0.0
60
+ */
61
+ this.options = options;
62
+ /**
63
+ * logging for EggCore, avoid using console directly
64
+ * @member {Logger} EggCore#console
65
+ * @private
66
+ * @since 1.0.0
67
+ */
68
+ this.console = new egg_logger_1.EggConsoleLogger();
69
+ /**
70
+ * @member {BaseContextClass} EggCore#BaseContextClass
71
+ * @since 1.0.0
72
+ */
73
+ this.BaseContextClass = base_context_class_js_1.BaseContextClass;
74
+ /**
75
+ * Base controller to be extended by controller in `app.controller`
76
+ * @class Controller
77
+ * @augments BaseContextClass
78
+ * @example
79
+ * class UserController extends app.Controller {}
80
+ */
81
+ const Controller = this.BaseContextClass;
82
+ /**
83
+ * Retrieve base controller
84
+ * @member {Controller} EggCore#Controller
85
+ * @since 1.0.0
86
+ */
87
+ this.Controller = Controller;
88
+ /**
89
+ * Base service to be extended by services in `app.service`
90
+ * @class Service
91
+ * @augments BaseContextClass
92
+ * @example
93
+ * class UserService extends app.Service {}
94
+ */
95
+ const Service = this.BaseContextClass;
96
+ /**
97
+ * Retrieve base service
98
+ * @member {Service} EggCore#Service
99
+ * @since 1.0.0
100
+ */
101
+ this.Service = Service;
102
+ this.lifecycle = new lifecycle_js_1.Lifecycle({
103
+ baseDir: options.baseDir,
104
+ app: this,
105
+ logger: this.console,
106
+ });
107
+ this.lifecycle.on('error', err => this.emit('error', err));
108
+ this.lifecycle.on('ready_timeout', id => this.emit('ready_timeout', id));
109
+ this.lifecycle.on('ready_stat', data => this.emit('ready_stat', data));
110
+ /**
111
+ * The loader instance, the default class is {@link EggLoader}.
112
+ * If you want define
113
+ * @member {EggLoader} EggCore#loader
114
+ * @since 1.0.0
115
+ */
116
+ const Loader = this[EGG_LOADER];
117
+ (0, node_assert_1.default)(Loader, 'Symbol.for(\'egg#loader\') is required');
118
+ this.loader = new Loader({
119
+ baseDir: options.baseDir,
120
+ app: this,
121
+ plugins: options.plugins,
122
+ logger: this.console,
123
+ serverScope: options.serverScope,
124
+ env: options.env ?? '',
125
+ EggCoreClass: EggCore,
126
+ });
127
+ }
128
+ /**
129
+ * override koa's app.use, support generator function
130
+ * @since 1.0.0
131
+ */
132
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
133
+ // @ts-ignore
134
+ use(fn) {
135
+ (0, node_assert_1.default)(is_type_of_1.default.function(fn), 'app.use() requires a function');
136
+ debug('[use] add middleware: %o', fn._name || fn.name || '-');
137
+ this.middleware.push(fn);
138
+ return this;
139
+ }
140
+ /**
141
+ * Whether `application` or `agent`
142
+ * @member {String}
143
+ * @since 1.0.0
144
+ */
145
+ get type() {
146
+ return this.options.type;
147
+ }
148
+ /**
149
+ * The current directory of application
150
+ * @member {String}
151
+ * @see {@link AppInfo#baseDir}
152
+ * @since 1.0.0
153
+ */
154
+ get baseDir() {
155
+ return this.options.baseDir;
156
+ }
157
+ /**
158
+ * Alias to {@link https://npmjs.com/package/depd}
159
+ * @member {Function}
160
+ * @since 1.0.0
161
+ */
162
+ get deprecate() {
163
+ return index_js_1.default.deprecated;
164
+ }
165
+ /**
166
+ * The name of application
167
+ * @member {String}
168
+ * @see {@link AppInfo#name}
169
+ * @since 1.0.0
170
+ */
171
+ get name() {
172
+ return this.loader ? this.loader.pkg.name : '';
173
+ }
174
+ /**
175
+ * Retrieve enabled plugins
176
+ * @member {Object}
177
+ * @since 1.0.0
178
+ */
179
+ get plugins() {
180
+ return this.loader ? this.loader.plugins : {};
181
+ }
182
+ /**
183
+ * The configuration of application
184
+ * @member {Config}
185
+ * @since 1.0.0
186
+ */
187
+ get config() {
188
+ return this.loader ? this.loader.config : {};
189
+ }
190
+ /**
191
+ * Execute scope after loaded and before app start.
192
+ *
193
+ * Notice:
194
+ * This method is now NOT recommanded and reguarded as a deprecated one,
195
+ * For plugin development, we should use `didLoad` instead.
196
+ * For application development, we should use `willReady` instead.
197
+ *
198
+ * @see https://eggjs.org/en/advanced/loader.html#beforestart
199
+ *
200
+ * @param {Function|AsyncFunction} scope function will execute before app start
201
+ * @param {string} [name] scope name, default is empty string
202
+ */
203
+ beforeStart(scope, name) {
204
+ this.deprecate('Please use "Life Cycles" instead, see https://www.eggjs.org/advanced/loader#life-cycles');
205
+ this.lifecycle.registerBeforeStart(scope, name ?? '');
206
+ }
207
+ /**
208
+ * register an callback function that will be invoked when application is ready.
209
+ * @see https://github.com/node-modules/get-ready
210
+ * @since 1.0.0
211
+ * @example
212
+ * const app = new Application(...);
213
+ * app.ready(err => {
214
+ * if (err) throw err;
215
+ * console.log('done');
216
+ * });
217
+ */
218
+ ready(flagOrFunction) {
219
+ return this.lifecycle.ready(flagOrFunction);
220
+ }
221
+ /**
222
+ * If a client starts asynchronously, you can register `readyCallback`,
223
+ * then the application will wait for the callback to ready
224
+ *
225
+ * It will log when the callback is not invoked after 10s
226
+ *
227
+ * Recommend to use {@link EggCore#beforeStart}
228
+ * @since 1.0.0
229
+ *
230
+ * @param {String} name - readyCallback task name
231
+ * @param {object} opts -
232
+ * - {Number} [timeout=10000] - emit `ready_timeout` when it doesn't finish but reach the timeout
233
+ * - {Boolean} [isWeakDep=false] - whether it's a weak dependency
234
+ * @return {Function} - a callback
235
+ * @example
236
+ * const done = app.readyCallback('mysql');
237
+ * mysql.ready(done);
238
+ */
239
+ readyCallback(name, opts) {
240
+ this.deprecate('Please use "Life Cycles" instead, see https://www.eggjs.org/advanced/loader#life-cycles');
241
+ return this.lifecycle.legacyReadyCallback(name, opts);
242
+ }
243
+ /**
244
+ * Register a function that will be called when app close.
245
+ *
246
+ * Notice:
247
+ * This method is now NOT recommanded directly used,
248
+ * Developers SHOULDN'T use app.beforeClose directly now,
249
+ * but in the form of class to implement beforeClose instead.
250
+ *
251
+ * @see https://eggjs.org/en/advanced/loader.html#beforeclose
252
+ *
253
+ * @param {Function} fn - the function that can be generator function or async function.
254
+ */
255
+ beforeClose(fn) {
256
+ this.deprecate('Please use "Life Cycles" instead, see https://www.eggjs.org/advanced/loader#life-cycles');
257
+ this.lifecycle.registerBeforeClose(fn);
258
+ }
259
+ /**
260
+ * Close all, it will close
261
+ * - callbacks registered by beforeClose
262
+ * - emit `close` event
263
+ * - remove add listeners
264
+ *
265
+ * If error is thrown when it's closing, the promise will reject.
266
+ * It will also reject after following call.
267
+ * @return {Promise} promise
268
+ * @since 1.0.0
269
+ */
270
+ async close() {
271
+ if (this.#closePromise)
272
+ return this.#closePromise;
273
+ this.#closePromise = this.lifecycle.close();
274
+ return this.#closePromise;
275
+ }
276
+ /**
277
+ * get router
278
+ * @member {Router} EggCore#router
279
+ * @since 1.0.0
280
+ */
281
+ get router() {
282
+ if (this.#router) {
283
+ return this.#router;
284
+ }
285
+ const router = this.#router = new router_1.EggRouter({ sensitive: true }, this);
286
+ return router;
287
+ }
288
+ /**
289
+ * Alias to {@link Router#url}
290
+ * @param {String} name - Router name
291
+ * @param {Object} params - more parameters
292
+ * @return {String} url
293
+ */
294
+ url(name, params) {
295
+ return this.router.url(name, params);
296
+ }
297
+ head(...args) {
298
+ this.router.head.apply(this.router, args);
299
+ return this;
300
+ }
301
+ get(...args) {
302
+ this.router.get.apply(this.router, args);
303
+ return this;
304
+ }
305
+ put(...args) {
306
+ this.router.put.apply(this.router, args);
307
+ return this;
308
+ }
309
+ patch(...args) {
310
+ this.router.patch.apply(this.router, args);
311
+ return this;
312
+ }
313
+ post(...args) {
314
+ this.router.post.apply(this.router, args);
315
+ return this;
316
+ }
317
+ delete(...args) {
318
+ this.router.delete.apply(this.router, args);
319
+ return this;
320
+ }
321
+ del(...args) {
322
+ this.router.del.apply(this.router, args);
323
+ return this;
324
+ }
325
+ all(...args) {
326
+ this.router.all.apply(this.router, args);
327
+ return this;
328
+ }
329
+ resources(...args) {
330
+ this.router.resources.apply(this.router, args);
331
+ return this;
332
+ }
333
+ redirect(source, destination, status = 301) {
334
+ this.router.redirect(source, destination, status);
335
+ return this;
336
+ }
337
+ register(path, methods, middleware, opts) {
338
+ this.router.register(path, methods, middleware, opts);
339
+ return this;
340
+ }
341
+ get [EGG_LOADER]() {
342
+ return egg_loader_js_1.EggLoader;
343
+ }
344
+ }
345
+ exports.EggCore = EggCore;
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWdnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VnZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrQ0FBa0M7QUFDbEMsOERBQWlDO0FBQ2pDLHlDQUFxQztBQUNyQyw0REFBNEI7QUFDNUIscURBQXdDO0FBRXhDLDJDQUE4QztBQUM5QywwQ0FBMEY7QUFFMUYsbUVBQTJEO0FBQzNELGlEQUEyQztBQUUzQyxpREFBMkM7QUFDM0MsMERBQW1EO0FBQ25ELGdFQUFxQztBQUVyQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBdUI1QyxNQUFhLE9BQVEsU0FBUSxhQUFjO0lBQ3pDLE9BQU8sQ0FBaUI7SUFDeEIsTUFBTSxDQUFTO0lBQ2YsT0FBTyxDQUFtQjtJQUMxQixnQkFBZ0IsQ0FBMEI7SUFDMUMsVUFBVSxDQUEwQjtJQUNwQyxPQUFPLENBQTBCO0lBQ2pDLE1BQU0sQ0FBMkI7SUFDakMsU0FBUyxDQUFZO0lBQ3JCLE1BQU0sQ0FBWTtJQUNsQixhQUFhLENBQWlCO0lBQzlCLE9BQU8sQ0FBVTtJQUVqQixtQ0FBbUM7SUFDMUIsY0FBYyxHQUF3QixFQUFFLENBQUM7SUFDbEQsc0NBQXNDO0lBQzdCLFVBQVUsR0FBd0IsRUFBRSxDQUFDO0lBQzlDLHNDQUFzQztJQUM3QixXQUFXLEdBQStELEVBQUUsQ0FBQztJQUt0Rjs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxVQUE4QixFQUFFO1FBQzFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQztRQUM3QyxJQUFBLHFCQUFNLEVBQUMsT0FBTyxPQUFPLENB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
@@ -0,0 +1,5 @@
1
+ import utils from './utils/index.js';
2
+ export * from './egg.js';
3
+ export * from './loader/egg_loader.js';
4
+ export * from './base_context_class.js';
5
+ export { utils };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.utils = void 0;
21
+ const index_js_1 = __importDefault(require("./utils/index.js"));
22
+ exports.utils = index_js_1.default;
23
+ __exportStar(require("./egg.js"), exports);
24
+ __exportStar(require("./loader/egg_loader.js"), exports);
25
+ __exportStar(require("./base_context_class.js"), exports);
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBcUM7QUFLNUIsZ0JBTEYsa0JBQUssQ0FLRTtBQUhkLDJDQUF5QjtBQUN6Qix5REFBdUM7QUFDdkMsMERBQXdDIn0=
@@ -0,0 +1,75 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'node:events';
3
+ import type { ReadyFunctionArg } from 'get-ready';
4
+ import { Ready } from 'ready-callback';
5
+ import { EggConsoleLogger } from 'egg-logger';
6
+ import type { Fun } from './utils/index.js';
7
+ import type { EggCore } from './egg.js';
8
+ export interface ILifecycleBoot {
9
+ fullPath?: string;
10
+ /**
11
+ * Ready to call configDidLoad,
12
+ * Config, plugin files are referred,
13
+ * this is the last chance to modify the config.
14
+ */
15
+ configWillLoad?(): void;
16
+ /**
17
+ * Config, plugin files have loaded
18
+ */
19
+ configDidLoad?(): void;
20
+ /**
21
+ * All files have loaded, start plugin here
22
+ */
23
+ didLoad?(): Promise<void>;
24
+ /**
25
+ * All plugins have started, can do some thing before app ready
26
+ */
27
+ willReady?(): Promise<void>;
28
+ /**
29
+ * Worker is ready, can do some things,
30
+ * don't need to block the app boot
31
+ */
32
+ didReady?(err?: Error): Promise<void>;
33
+ /**
34
+ * Server is listening
35
+ */
36
+ serverDidReady?(): Promise<void>;
37
+ /**
38
+ * Do some thing before app close
39
+ */
40
+ beforeClose?(): Promise<void>;
41
+ }
42
+ export type BootImplClass<T = object> = (new (...args: any[]) => T) & ILifecycleBoot;
43
+ export interface LifecycleOptions {
44
+ baseDir: string;
45
+ app: EggCore;
46
+ logger: EggConsoleLogger;
47
+ }
48
+ export declare class Lifecycle extends EventEmitter {
49
+ #private;
50
+ loadReady: Ready;
51
+ bootReady: Ready;
52
+ options: LifecycleOptions;
53
+ readyTimeout: number;
54
+ constructor(options: Partial<LifecycleOptions>);
55
+ ready(arg?: ReadyFunctionArg): Promise<void> | undefined;
56
+ get app(): EggCore;
57
+ get logger(): EggConsoleLogger<import("egg-logger").LoggerOptions>;
58
+ get timing(): import("./utils/timing.js").Timing;
59
+ legacyReadyCallback(name: string, opt?: object): (...args: any[]) => void;
60
+ addBootHook(bootHootOrBootClass: BootImplClass | ILifecycleBoot): void;
61
+ addFunctionAsBootHook<T = EggCore>(hook: (app: T) => void): void;
62
+ /**
63
+ * init boots and trigger config did config
64
+ */
65
+ init(): void;
66
+ registerBeforeStart(scope: Fun, name: string): void;
67
+ registerBeforeClose(fn: Fun): void;
68
+ close(): Promise<void>;
69
+ triggerConfigWillLoad(): void;
70
+ triggerConfigDidLoad(): void;
71
+ triggerDidLoad(): void;
72
+ triggerWillReady(): void;
73
+ triggerDidReady(err?: Error): Promise<void>;
74
+ triggerServerDidReady(): Promise<void>;
75
+ }