egg 3.26.0 → 4.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.
- package/README.md +1 -1
- package/README.zh-CN.md +6 -5
- package/dist/commonjs/agent.d.ts +4 -0
- package/dist/commonjs/agent.js +10 -0
- package/dist/commonjs/app/middleware/body_parser.d.ts +2 -0
- package/dist/commonjs/app/middleware/body_parser.js +8 -0
- package/dist/commonjs/app/middleware/meta.d.ts +11 -0
- package/dist/commonjs/app/middleware/meta.js +22 -0
- package/dist/commonjs/app/middleware/notfound.d.ts +8 -0
- package/dist/commonjs/app/middleware/notfound.js +31 -0
- package/dist/commonjs/app/middleware/override_method.d.ts +2 -0
- package/dist/commonjs/app/middleware/override_method.js +8 -0
- package/dist/commonjs/app/middleware/site_file.d.ts +7 -0
- package/dist/commonjs/app/middleware/site_file.js +40 -0
- package/dist/commonjs/config/config.default.d.ts +9 -0
- package/dist/commonjs/config/config.default.js +378 -0
- package/dist/commonjs/config/config.local.d.ts +8 -0
- package/dist/commonjs/config/config.local.js +12 -0
- package/dist/commonjs/config/config.unittest.d.ts +7 -0
- package/dist/commonjs/config/config.unittest.js +11 -0
- package/dist/commonjs/config/plugin.d.ts +122 -0
- package/dist/commonjs/config/plugin.js +125 -0
- package/dist/commonjs/index.d.ts +61 -0
- package/dist/commonjs/index.js +89 -0
- package/dist/commonjs/lib/agent.d.ts +19 -0
- package/dist/commonjs/lib/agent.js +58 -0
- package/dist/commonjs/lib/application.d.ts +66 -0
- package/dist/commonjs/lib/application.js +281 -0
- package/dist/commonjs/lib/core/base_context_class.d.ts +14 -0
- package/dist/commonjs/lib/core/base_context_class.js +22 -0
- package/dist/commonjs/lib/core/base_context_logger.d.ts +36 -0
- package/dist/commonjs/lib/core/base_context_logger.js +64 -0
- package/dist/commonjs/lib/core/base_hook_class.d.ts +11 -0
- package/dist/commonjs/lib/core/base_hook_class.js +30 -0
- package/dist/commonjs/lib/core/context_httpclient.d.ts +16 -0
- package/dist/commonjs/lib/core/context_httpclient.js +30 -0
- package/dist/commonjs/lib/core/httpclient.d.ts +14 -0
- package/dist/commonjs/lib/core/httpclient.js +40 -0
- package/dist/commonjs/lib/core/logger.d.ts +3 -0
- package/dist/commonjs/lib/core/logger.js +40 -0
- package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +50 -0
- package/dist/commonjs/lib/core/messenger/IMessenger.js +3 -0
- package/dist/commonjs/lib/core/messenger/index.d.ts +7 -0
- package/dist/commonjs/lib/core/messenger/index.js +14 -0
- package/dist/commonjs/lib/core/messenger/ipc.d.ts +57 -0
- package/dist/commonjs/lib/core/messenger/ipc.js +126 -0
- package/dist/commonjs/lib/core/messenger/local.d.ts +61 -0
- package/dist/commonjs/lib/core/messenger/local.js +134 -0
- package/dist/commonjs/lib/core/singleton.d.ts +23 -0
- package/dist/commonjs/lib/core/singleton.js +120 -0
- package/dist/commonjs/lib/core/utils.d.ts +2 -0
- package/dist/commonjs/lib/core/utils.js +77 -0
- package/dist/commonjs/lib/egg.d.ts +267 -0
- package/dist/commonjs/lib/egg.js +595 -0
- package/dist/commonjs/lib/loader/AgentWorkerLoader.d.ts +12 -0
- package/dist/commonjs/lib/loader/AgentWorkerLoader.js +24 -0
- package/dist/commonjs/lib/loader/AppWorkerLoader.d.ts +17 -0
- package/dist/commonjs/lib/loader/AppWorkerLoader.js +43 -0
- package/dist/commonjs/lib/loader/EggApplicationLoader.d.ts +4 -0
- package/dist/commonjs/lib/loader/EggApplicationLoader.js +8 -0
- package/dist/commonjs/lib/loader/index.d.ts +3 -0
- package/dist/commonjs/lib/loader/index.js +22 -0
- package/dist/commonjs/lib/start.d.ts +15 -0
- package/dist/commonjs/lib/start.js +49 -0
- package/dist/commonjs/lib/type.d.ts +295 -0
- package/dist/commonjs/lib/type.js +3 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/esm/agent.d.ts +4 -0
- package/dist/esm/agent.js +7 -0
- package/dist/esm/app/middleware/body_parser.d.ts +2 -0
- package/dist/esm/app/middleware/body_parser.js +3 -0
- package/dist/esm/app/middleware/meta.d.ts +11 -0
- package/dist/esm/app/middleware/meta.js +20 -0
- package/dist/esm/app/middleware/notfound.d.ts +8 -0
- package/dist/esm/app/middleware/notfound.js +29 -0
- package/dist/esm/app/middleware/override_method.d.ts +2 -0
- package/dist/esm/app/middleware/override_method.js +3 -0
- package/dist/esm/app/middleware/site_file.d.ts +7 -0
- package/dist/esm/app/middleware/site_file.js +35 -0
- package/dist/esm/config/config.default.d.ts +9 -0
- package/dist/esm/config/config.default.js +373 -0
- package/dist/esm/config/config.local.d.ts +8 -0
- package/dist/esm/config/config.local.js +10 -0
- package/dist/esm/config/config.unittest.d.ts +7 -0
- package/dist/esm/config/config.unittest.js +9 -0
- package/dist/esm/config/favicon.png +0 -0
- package/dist/esm/config/plugin.d.ts +122 -0
- package/dist/esm/config/plugin.js +123 -0
- package/dist/esm/index.d.ts +61 -0
- package/dist/esm/index.js +65 -0
- package/dist/esm/lib/agent.d.ts +19 -0
- package/dist/esm/lib/agent.js +54 -0
- package/dist/esm/lib/application.d.ts +66 -0
- package/dist/esm/lib/application.js +274 -0
- package/dist/esm/lib/core/base_context_class.d.ts +14 -0
- package/dist/esm/lib/core/base_context_class.js +18 -0
- package/dist/esm/lib/core/base_context_logger.d.ts +36 -0
- package/dist/esm/lib/core/base_context_logger.js +60 -0
- package/dist/esm/lib/core/base_hook_class.d.ts +11 -0
- package/dist/esm/lib/core/base_hook_class.js +23 -0
- package/dist/esm/lib/core/context_httpclient.d.ts +16 -0
- package/dist/esm/lib/core/context_httpclient.js +26 -0
- package/dist/esm/lib/core/httpclient.d.ts +14 -0
- package/dist/esm/lib/core/httpclient.js +33 -0
- package/dist/esm/lib/core/logger.d.ts +3 -0
- package/dist/esm/lib/core/logger.js +37 -0
- package/dist/esm/lib/core/messenger/IMessenger.d.ts +50 -0
- package/dist/esm/lib/core/messenger/IMessenger.js +2 -0
- package/dist/esm/lib/core/messenger/index.d.ts +7 -0
- package/dist/esm/lib/core/messenger/index.js +11 -0
- package/dist/esm/lib/core/messenger/ipc.d.ts +57 -0
- package/dist/esm/lib/core/messenger/ipc.js +119 -0
- package/dist/esm/lib/core/messenger/local.d.ts +61 -0
- package/dist/esm/lib/core/messenger/local.js +127 -0
- package/dist/esm/lib/core/singleton.d.ts +23 -0
- package/dist/esm/lib/core/singleton.js +113 -0
- package/dist/esm/lib/core/utils.d.ts +2 -0
- package/dist/esm/lib/core/utils.js +70 -0
- package/dist/esm/lib/egg.d.ts +267 -0
- package/dist/esm/lib/egg.js +565 -0
- package/dist/esm/lib/loader/AgentWorkerLoader.d.ts +12 -0
- package/dist/esm/lib/loader/AgentWorkerLoader.js +20 -0
- package/dist/esm/lib/loader/AppWorkerLoader.d.ts +17 -0
- package/dist/esm/lib/loader/AppWorkerLoader.js +39 -0
- package/dist/esm/lib/loader/EggApplicationLoader.d.ts +4 -0
- package/dist/esm/lib/loader/EggApplicationLoader.js +4 -0
- package/dist/esm/lib/loader/index.d.ts +3 -0
- package/dist/esm/lib/loader/index.js +4 -0
- package/dist/esm/lib/start.d.ts +15 -0
- package/dist/esm/lib/start.js +43 -0
- package/dist/esm/lib/type.d.ts +295 -0
- package/dist/esm/lib/type.js +2 -0
- package/dist/esm/package.json +3 -0
- package/dist/package.json +4 -0
- package/package.json +83 -70
- package/src/agent.ts +7 -0
- package/src/app/middleware/body_parser.ts +3 -0
- package/{app/middleware/meta.js → src/app/middleware/meta.ts} +12 -4
- package/{app/middleware/notfound.js → src/app/middleware/notfound.ts} +9 -3
- package/src/app/middleware/override_method.ts +3 -0
- package/src/app/middleware/site_file.ts +49 -0
- package/{config/config.default.js → src/config/config.default.ts} +21 -42
- package/src/config/config.local.ts +11 -0
- package/src/config/config.unittest.ts +10 -0
- package/src/config/favicon.png +0 -0
- package/{config/plugin.js → src/config/plugin.ts} +1 -3
- package/src/index.ts +78 -0
- package/src/lib/agent.ts +66 -0
- package/{lib/application.js → src/lib/application.ts} +79 -120
- package/src/lib/core/base_context_class.ts +21 -0
- package/src/lib/core/base_context_logger.ts +67 -0
- package/src/lib/core/base_hook_class.ts +30 -0
- package/src/lib/core/context_httpclient.ts +33 -0
- package/src/lib/core/httpclient.ts +52 -0
- package/src/lib/core/logger.ts +42 -0
- package/src/lib/core/messenger/IMessenger.ts +58 -0
- package/src/lib/core/messenger/index.ts +15 -0
- package/{lib/core/messenger/ipc.js → src/lib/core/messenger/ipc.ts} +25 -29
- package/{lib/core/messenger/local.js → src/lib/core/messenger/local.ts} +27 -21
- package/{lib/core/singleton.js → src/lib/core/singleton.ts} +56 -33
- package/src/lib/core/utils.ts +77 -0
- package/{lib/egg.js → src/lib/egg.ts} +252 -218
- package/src/lib/loader/AgentWorkerLoader.ts +21 -0
- package/src/lib/loader/AppWorkerLoader.ts +42 -0
- package/src/lib/loader/EggApplicationLoader.ts +5 -0
- package/src/lib/loader/index.ts +3 -0
- package/src/lib/start.ts +56 -0
- package/src/lib/type.ts +329 -0
- package/agent.js +0 -11
- package/app/middleware/body_parser.js +0 -3
- package/app/middleware/override_method.js +0 -3
- package/app/middleware/site_file.js +0 -31
- package/config/config.local.js +0 -7
- package/config/config.unittest.js +0 -8
- package/index.d.ts +0 -1285
- package/index.js +0 -68
- package/lib/agent.js +0 -95
- package/lib/core/base_context_class.js +0 -20
- package/lib/core/base_context_logger.js +0 -64
- package/lib/core/base_hook_class.js +0 -31
- package/lib/core/context_httpclient.js +0 -26
- package/lib/core/dnscache_httpclient.js +0 -93
- package/lib/core/httpclient.js +0 -108
- package/lib/core/httpclient_next.js +0 -45
- package/lib/core/logger.js +0 -35
- package/lib/core/messenger/index.js +0 -14
- package/lib/core/utils.js +0 -73
- package/lib/loader/agent_worker_loader.js +0 -27
- package/lib/loader/app_worker_loader.js +0 -48
- package/lib/loader/index.js +0 -5
- package/lib/start.js +0 -39
- /package/{config → dist/commonjs/config}/favicon.png +0 -0
- /package/{app → src/app}/extend/context.js +0 -0
- /package/{app → src/app}/extend/helper.js +0 -0
- /package/{app → src/app}/extend/request.js +0 -0
- /package/{app → src/app}/extend/response.js +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppWorkerLoader = void 0;
|
|
4
|
+
const EggApplicationLoader_js_1 = require("./EggApplicationLoader.js");
|
|
5
|
+
/**
|
|
6
|
+
* App worker process Loader, will load plugins
|
|
7
|
+
* @see https://github.com/eggjs/egg-core/blob/master/src/loader/egg_loader.ts
|
|
8
|
+
*/
|
|
9
|
+
class AppWorkerLoader extends EggApplicationLoader_js_1.EggApplicationLoader {
|
|
10
|
+
/**
|
|
11
|
+
* loadPlugin first, then loadConfig
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
async loadConfig() {
|
|
15
|
+
await this.loadPlugin();
|
|
16
|
+
await super.loadConfig();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Load all directories in convention
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
async load() {
|
|
23
|
+
// app > plugin > core
|
|
24
|
+
await this.loadApplicationExtend();
|
|
25
|
+
await this.loadRequestExtend();
|
|
26
|
+
await this.loadResponseExtend();
|
|
27
|
+
await this.loadContextExtend();
|
|
28
|
+
await this.loadHelperExtend();
|
|
29
|
+
await this.loadCustomLoader();
|
|
30
|
+
// app > plugin
|
|
31
|
+
await this.loadCustomApp();
|
|
32
|
+
// app > plugin
|
|
33
|
+
await this.loadService();
|
|
34
|
+
// app > plugin > core
|
|
35
|
+
await this.loadMiddleware();
|
|
36
|
+
// app
|
|
37
|
+
await this.loadController();
|
|
38
|
+
// app
|
|
39
|
+
await this.loadRouter(); // Depend on controllers
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.AppWorkerLoader = AppWorkerLoader;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwV29ya2VyTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9sb2FkZXIvQXBwV29ya2VyTG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVFQUFpRTtBQUVqRTs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsOENBQW9CO0lBQ3ZEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsTUFBTSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1Isc0JBQXNCO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU5QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTlCLGVBQWU7UUFDZixNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixlQUFlO1FBQ2YsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsc0JBQXNCO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVCLE1BQU07UUFDTixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixNQUFNO1FBQ04sTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7SUFDbkQsQ0FBQztDQUNGO0FBbkNELDBDQW1DQyJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EggApplicationLoader = void 0;
|
|
4
|
+
const core_1 = require("@eggjs/core");
|
|
5
|
+
class EggApplicationLoader extends core_1.EggLoader {
|
|
6
|
+
}
|
|
7
|
+
exports.EggApplicationLoader = EggApplicationLoader;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnQXBwbGljYXRpb25Mb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2xvYWRlci9FZ2dBcHBsaWNhdGlvbkxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBd0M7QUFFeEMsTUFBc0Isb0JBQXFCLFNBQVEsZ0JBQVM7Q0FFM0Q7QUFGRCxvREFFQyJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.EggApplicationLoader = void 0;
|
|
18
|
+
var EggApplicationLoader_js_1 = require("./EggApplicationLoader.js");
|
|
19
|
+
Object.defineProperty(exports, "EggApplicationLoader", { enumerable: true, get: function () { return EggApplicationLoader_js_1.EggApplicationLoader; } });
|
|
20
|
+
__exportStar(require("./AppWorkerLoader.js"), exports);
|
|
21
|
+
__exportStar(require("./AgentWorkerLoader.js"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2xvYWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFFQUFpRTtBQUF4RCwrSEFBQSxvQkFBb0IsT0FBQTtBQUM3Qix1REFBcUM7QUFDckMseURBQXVDIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Application } from './application.js';
|
|
2
|
+
export interface StartEggOptions {
|
|
3
|
+
/** specify framework that can be absolute path or npm package */
|
|
4
|
+
framework?: string;
|
|
5
|
+
/** directory of application, default to `process.cwd()` */
|
|
6
|
+
baseDir?: string;
|
|
7
|
+
/** ignore single process mode warning */
|
|
8
|
+
ignoreWarning?: boolean;
|
|
9
|
+
mode?: 'single';
|
|
10
|
+
env?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Start egg with single process
|
|
14
|
+
*/
|
|
15
|
+
export declare function startEgg(options?: StartEggOptions): Promise<Application>;
|
|
@@ -0,0 +1,49 @@
|
|
|
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.startEgg = startEgg;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const utility_1 = require("utility");
|
|
9
|
+
const utils_1 = require("@eggjs/utils");
|
|
10
|
+
const agent_js_1 = require("./agent.js");
|
|
11
|
+
const application_js_1 = require("./application.js");
|
|
12
|
+
/**
|
|
13
|
+
* Start egg with single process
|
|
14
|
+
*/
|
|
15
|
+
async function startEgg(options = {}) {
|
|
16
|
+
options.baseDir = options.baseDir ?? process.cwd();
|
|
17
|
+
options.mode = 'single';
|
|
18
|
+
// get agent from options.framework and package.egg.framework
|
|
19
|
+
if (!options.framework) {
|
|
20
|
+
try {
|
|
21
|
+
const pkg = await (0, utility_1.readJSON)(node_path_1.default.join(options.baseDir, 'package.json'));
|
|
22
|
+
options.framework = pkg.egg.framework;
|
|
23
|
+
}
|
|
24
|
+
catch (_) {
|
|
25
|
+
// ignore
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
let AgentClass = agent_js_1.Agent;
|
|
29
|
+
let ApplicationClass = application_js_1.Application;
|
|
30
|
+
if (options.framework) {
|
|
31
|
+
const framework = await (0, utils_1.importModule)(options.framework, { paths: [options.baseDir] });
|
|
32
|
+
AgentClass = framework.Agent;
|
|
33
|
+
ApplicationClass = framework.Application;
|
|
34
|
+
}
|
|
35
|
+
const agent = new AgentClass({
|
|
36
|
+
...options,
|
|
37
|
+
});
|
|
38
|
+
await agent.ready();
|
|
39
|
+
const application = new ApplicationClass({
|
|
40
|
+
...options,
|
|
41
|
+
});
|
|
42
|
+
application.agent = agent;
|
|
43
|
+
agent.application = application;
|
|
44
|
+
await application.ready();
|
|
45
|
+
// emit egg-ready message in agent and application
|
|
46
|
+
application.messenger.broadcast('egg-ready');
|
|
47
|
+
return application;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBb0JBLDRCQW1DQztBQXZERCwwREFBNkI7QUFDN0IscUNBQW1DO0FBQ25DLHdDQUE0QztBQUM1Qyx5Q0FBbUM7QUFDbkMscURBQStDO0FBYS9DOztHQUVHO0FBQ0ksS0FBSyxVQUFVLFFBQVEsQ0FBQyxVQUEyQixFQUFFO0lBQzFELE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkQsT0FBTyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFFeEIsNkRBQTZEO0lBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLGtCQUFRLEVBQUMsbUJBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDeEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxTQUFTO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLFVBQVUsR0FBRyxnQkFBSyxDQUFDO0lBQ3ZCLElBQUksZ0JBQWdCLEdBQUcsNEJBQVcsQ0FBQztJQUNuQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsb0JBQVksRUFBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBRSxFQUFFLENBQUMsQ0FBQztRQUN4RixVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM3QixnQkFBZ0IsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQztRQUMzQixHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7SUFDSCxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDO1FBQ3ZDLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztJQUNILFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLEtBQUssQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2hDLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTFCLGtEQUFrRDtJQUNsRCxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QyxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIn0=
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import type { Socket } from 'node:net';
|
|
2
|
+
import type { EggCoreContext } from '@eggjs/core';
|
|
3
|
+
import type { RequestOptions as HttpClientRequestOptions } from 'urllib';
|
|
4
|
+
import type { EggLoggerOptions, EggLoggersOptions } from 'egg-logger';
|
|
5
|
+
import type { FileLoaderOptions } from '@eggjs/core';
|
|
6
|
+
import type { EggApplicationCore } from './egg.js';
|
|
7
|
+
import type { MetaMiddlewareOptions } from '../app/middleware/meta.js';
|
|
8
|
+
import type { NotFoundMiddlewareOptions } from '../app/middleware/notfound.js';
|
|
9
|
+
import type { SiteFileMiddlewareOptions } from '../app/middleware/site_file.js';
|
|
10
|
+
type IgnoreItem = string | RegExp | ((ctx: EggCoreContext) => boolean);
|
|
11
|
+
type IgnoreOrMatch = IgnoreItem | IgnoreItem[];
|
|
12
|
+
export type Next = () => Promise<void>;
|
|
13
|
+
export interface ClientErrorResponse {
|
|
14
|
+
body: string | Buffer;
|
|
15
|
+
status: number;
|
|
16
|
+
headers: {
|
|
17
|
+
[key: string]: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** egg env type */
|
|
21
|
+
export type EggEnvType = 'local' | 'unittest' | 'prod' | string;
|
|
22
|
+
/** logger config of egg */
|
|
23
|
+
export interface EggLoggerConfig extends Omit<EggLoggersOptions, 'type'> {
|
|
24
|
+
/** custom config of coreLogger */
|
|
25
|
+
coreLogger?: Partial<EggLoggerOptions>;
|
|
26
|
+
/** allow debug log at prod, defaults to `false` */
|
|
27
|
+
allowDebugAtProd?: boolean;
|
|
28
|
+
/** disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`. */
|
|
29
|
+
disableConsoleAfterReady?: boolean;
|
|
30
|
+
/** [deprecated] Defaults to `true`. */
|
|
31
|
+
enablePerformanceTimer?: boolean;
|
|
32
|
+
/** using the app logger instead of EggContextLogger, defaults to `false` */
|
|
33
|
+
enableFastContextLogger?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Custom Loader Configuration */
|
|
36
|
+
export interface CustomLoaderConfig extends Omit<FileLoaderOptions, 'inject' | 'target'> {
|
|
37
|
+
/**
|
|
38
|
+
* an object you wanner load to, value can only be 'ctx' or 'app'. default to app
|
|
39
|
+
*/
|
|
40
|
+
inject?: 'ctx' | 'app';
|
|
41
|
+
/**
|
|
42
|
+
* whether need to load files in plugins or framework, default to false
|
|
43
|
+
*/
|
|
44
|
+
loadunit?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface EggAppConfig {
|
|
47
|
+
workerStartTimeout: number;
|
|
48
|
+
baseDir: string;
|
|
49
|
+
middleware: string[];
|
|
50
|
+
coreMiddleware: string[];
|
|
51
|
+
/**
|
|
52
|
+
* The option of `bodyParser` middleware
|
|
53
|
+
*
|
|
54
|
+
* @member Config#bodyParser
|
|
55
|
+
* @property {Boolean} enable - enable bodyParser or not, default to true
|
|
56
|
+
* @property {String | RegExp | Function | Array} ignore - won't parse request body when url path hit ignore pattern, can not set `ignore` when `match` presented
|
|
57
|
+
* @property {String | RegExp | Function | Array} match - will parse request body only when url path hit match pattern
|
|
58
|
+
* @property {String} encoding - body encoding config, default utf8
|
|
59
|
+
* @property {String} formLimit - form body size limit, default 1mb
|
|
60
|
+
* @property {String} jsonLimit - json body size limit, default 1mb
|
|
61
|
+
* @property {String} textLimit - json body size limit, default 1mb
|
|
62
|
+
* @property {Boolean} strict - json body strict mode, if set strict value true, then only receive object and array json body
|
|
63
|
+
* @property {Number} queryString.arrayLimit - from item array length limit, default 100
|
|
64
|
+
* @property {Number} queryString.depth - json value deep length, default 5
|
|
65
|
+
* @property {Number} queryString.parameterLimit - parameter number limit, default 1000
|
|
66
|
+
* @property {String[]} enableTypes - parser will only parse when request type hits enableTypes, default is ['json', 'form']
|
|
67
|
+
* @property {Object} extendTypes - support extend types
|
|
68
|
+
* @property {String} onProtoPoisoning - Defines what action must take when parsing a JSON object with `__proto__`. Possible values are `'error'`, `'remove'` and `'ignore'`. Default is `'error'`, it will return `400` response when `Prototype-Poisoning` happen.
|
|
69
|
+
*/
|
|
70
|
+
bodyParser: {
|
|
71
|
+
enable: boolean;
|
|
72
|
+
encoding: string;
|
|
73
|
+
formLimit: string;
|
|
74
|
+
jsonLimit: string;
|
|
75
|
+
textLimit: string;
|
|
76
|
+
strict: boolean;
|
|
77
|
+
queryString: {
|
|
78
|
+
arrayLimit: number;
|
|
79
|
+
depth: number;
|
|
80
|
+
parameterLimit: number;
|
|
81
|
+
};
|
|
82
|
+
ignore?: IgnoreOrMatch;
|
|
83
|
+
match?: IgnoreOrMatch;
|
|
84
|
+
enableTypes?: string[];
|
|
85
|
+
extendTypes?: {
|
|
86
|
+
json: string[];
|
|
87
|
+
form: string[];
|
|
88
|
+
text: string[];
|
|
89
|
+
};
|
|
90
|
+
/** Default is `'error'`, it will return `400` response when `Prototype-Poisoning` happen. */
|
|
91
|
+
onProtoPoisoning: 'error' | 'remove' | 'ignore';
|
|
92
|
+
onerror(err: any, ctx: EggCoreContext): void;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* logger options
|
|
96
|
+
* @member Config#logger
|
|
97
|
+
* @property {String} dir - directory of log files
|
|
98
|
+
* @property {String} encoding - log file encoding, defaults to utf8
|
|
99
|
+
* @property {String} level - default log level, could be: DEBUG, INFO, WARN, ERROR or NONE, defaults to INFO in production
|
|
100
|
+
* @property {String} consoleLevel - log level of stdout, defaults to `INFO` in local serverEnv, defaults to `WARN` in unittest, others is `NONE`
|
|
101
|
+
* @property {Boolean} disableConsoleAfterReady - disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`.
|
|
102
|
+
* @property {Boolean} outputJSON - log as JSON or not, defaults to `false`
|
|
103
|
+
* @property {Boolean} buffer - if enabled, flush logs to disk at a certain frequency to improve performance, defaults to true
|
|
104
|
+
* @property {String} errorLogName - file name of errorLogger
|
|
105
|
+
* @property {String} coreLogName - file name of coreLogger
|
|
106
|
+
* @property {String} agentLogName - file name of agent worker log
|
|
107
|
+
* @property {Object} coreLogger - custom config of coreLogger
|
|
108
|
+
* @property {Boolean} allowDebugAtProd - allow debug log at prod, defaults to false
|
|
109
|
+
* @property {Boolean} enableFastContextLogger - using the app logger instead of EggContextLogger, defaults to false
|
|
110
|
+
*/
|
|
111
|
+
logger: Partial<EggLoggerConfig>;
|
|
112
|
+
/** custom logger of egg */
|
|
113
|
+
customLogger: {
|
|
114
|
+
[key: string]: EggLoggerOptions;
|
|
115
|
+
};
|
|
116
|
+
/** Configuration of httpclient in egg. */
|
|
117
|
+
httpclient: {
|
|
118
|
+
/** Request timeout */
|
|
119
|
+
timeout?: number;
|
|
120
|
+
/** Default request args for httpclient */
|
|
121
|
+
request?: HttpClientRequestOptions;
|
|
122
|
+
};
|
|
123
|
+
development: {
|
|
124
|
+
/**
|
|
125
|
+
* dirs needed watch, when files under these change, application will reload, use relative path
|
|
126
|
+
*/
|
|
127
|
+
watchDirs: string[];
|
|
128
|
+
/**
|
|
129
|
+
* dirs don't need watch, including subdirectories, use relative path
|
|
130
|
+
*/
|
|
131
|
+
ignoreDirs: string[];
|
|
132
|
+
/**
|
|
133
|
+
* don't wait all plugins ready, default is true.
|
|
134
|
+
*/
|
|
135
|
+
fastReady: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* whether reload on debug, default is true.
|
|
138
|
+
*/
|
|
139
|
+
reloadOnDebug: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* whether override default watchDirs, default is false.
|
|
142
|
+
*/
|
|
143
|
+
overrideDefault: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* whether override default ignoreDirs, default is false.
|
|
146
|
+
*/
|
|
147
|
+
overrideIgnore: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* whether to reload, use https://github.com/sindresorhus/multimatch
|
|
150
|
+
*/
|
|
151
|
+
reloadPattern: string[] | string;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* customLoader config
|
|
155
|
+
*/
|
|
156
|
+
customLoader: {
|
|
157
|
+
[key: string]: CustomLoaderConfig;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* It will ignore special keys when dumpConfig
|
|
161
|
+
*/
|
|
162
|
+
dump: {
|
|
163
|
+
ignore: Set<string | RegExp>;
|
|
164
|
+
timing: {
|
|
165
|
+
slowBootActionMinDuration: number;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* The environment of egg
|
|
170
|
+
*/
|
|
171
|
+
env: EggEnvType;
|
|
172
|
+
/**
|
|
173
|
+
* The current HOME directory
|
|
174
|
+
*/
|
|
175
|
+
HOME: string;
|
|
176
|
+
hostHeaders: string;
|
|
177
|
+
/**
|
|
178
|
+
* I18n options
|
|
179
|
+
*/
|
|
180
|
+
i18n: {
|
|
181
|
+
/**
|
|
182
|
+
* default value EN_US
|
|
183
|
+
*/
|
|
184
|
+
defaultLocale: string;
|
|
185
|
+
/**
|
|
186
|
+
* i18n resource file dir, not recommend to change default value
|
|
187
|
+
*/
|
|
188
|
+
dirs: string[];
|
|
189
|
+
/**
|
|
190
|
+
* custom the locale value field, default `query.locale`, you can modify this config, such as `query.lang`
|
|
191
|
+
*/
|
|
192
|
+
queryField: string;
|
|
193
|
+
/**
|
|
194
|
+
* The locale value key in the cookie, default is locale.
|
|
195
|
+
*/
|
|
196
|
+
cookieField: string;
|
|
197
|
+
/**
|
|
198
|
+
* Locale cookie expire time, default `1y`, If pass number value, the unit will be ms
|
|
199
|
+
*/
|
|
200
|
+
cookieMaxAge: string | number;
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* Detect request' ip from specified headers, not case-sensitive. Only worked when config.proxy set to true.
|
|
204
|
+
*/
|
|
205
|
+
ipHeaders: string;
|
|
206
|
+
protocolHeaders: string;
|
|
207
|
+
maxProxyCount: number;
|
|
208
|
+
maxIpsCount: number;
|
|
209
|
+
proxy: boolean;
|
|
210
|
+
cookies: {
|
|
211
|
+
sameSite?: string;
|
|
212
|
+
httpOnly?: boolean;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* jsonp options
|
|
216
|
+
* @member Config#jsonp
|
|
217
|
+
* @property {String} callback - jsonp callback method key, default to `_callback`
|
|
218
|
+
* @property {Number} limit - callback method name's max length, default to `50`
|
|
219
|
+
* @property {Boolean} csrf - enable csrf check or not. default to false
|
|
220
|
+
* @property {String|RegExp|Array} whiteList - referrer white list
|
|
221
|
+
*/
|
|
222
|
+
jsonp: {
|
|
223
|
+
limit: number;
|
|
224
|
+
callback: string;
|
|
225
|
+
csrf: boolean;
|
|
226
|
+
whiteList: string | RegExp | Array<string | RegExp>;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* The key that signing cookies. It can contain multiple keys separated by .
|
|
230
|
+
*/
|
|
231
|
+
keys: string;
|
|
232
|
+
/**
|
|
233
|
+
* The name of the application
|
|
234
|
+
*/
|
|
235
|
+
name: string;
|
|
236
|
+
/**
|
|
237
|
+
* package.json
|
|
238
|
+
*/
|
|
239
|
+
pkg: Record<string, any>;
|
|
240
|
+
rundir: string;
|
|
241
|
+
security: {
|
|
242
|
+
domainWhiteList: string[];
|
|
243
|
+
protocolWhiteList: string[];
|
|
244
|
+
defaultMiddleware: string;
|
|
245
|
+
csrf: any;
|
|
246
|
+
ssrf: {
|
|
247
|
+
ipBlackList: string[];
|
|
248
|
+
ipExceptionList: string[];
|
|
249
|
+
checkAddress?(ip: string): boolean;
|
|
250
|
+
};
|
|
251
|
+
xframe: {
|
|
252
|
+
enable: boolean;
|
|
253
|
+
value: 'SAMEORIGIN' | 'DENY' | 'ALLOW-FROM';
|
|
254
|
+
};
|
|
255
|
+
hsts: any;
|
|
256
|
+
methodnoallow: {
|
|
257
|
+
enable: boolean;
|
|
258
|
+
};
|
|
259
|
+
noopen: {
|
|
260
|
+
enable: boolean;
|
|
261
|
+
};
|
|
262
|
+
xssProtection: any;
|
|
263
|
+
csp: any;
|
|
264
|
+
};
|
|
265
|
+
siteFile: SiteFileMiddlewareOptions;
|
|
266
|
+
meta: MetaMiddlewareOptions;
|
|
267
|
+
notfound: NotFoundMiddlewareOptions;
|
|
268
|
+
overrideMethod: {
|
|
269
|
+
enable: boolean;
|
|
270
|
+
allowedMethods: string[];
|
|
271
|
+
};
|
|
272
|
+
watcher: Record<string, any>;
|
|
273
|
+
onClientError?(err: Error, socket: Socket, app: EggApplicationCore): ClientErrorResponse | Promise<ClientErrorResponse>;
|
|
274
|
+
/**
|
|
275
|
+
* server timeout in milliseconds, default to 0 (no timeout).
|
|
276
|
+
*
|
|
277
|
+
* for special request, just use `ctx.req.setTimeout(ms)`
|
|
278
|
+
*
|
|
279
|
+
* @see https://nodejs.org/api/http.html#http_server_timeout
|
|
280
|
+
*/
|
|
281
|
+
serverTimeout: number | null;
|
|
282
|
+
cluster: {
|
|
283
|
+
listen: {
|
|
284
|
+
path: string;
|
|
285
|
+
port: number;
|
|
286
|
+
hostname: string;
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
clusterClient: {
|
|
290
|
+
maxWaitTime: number;
|
|
291
|
+
responseTimeout: number;
|
|
292
|
+
};
|
|
293
|
+
[prop: string]: any;
|
|
294
|
+
}
|
|
295
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseHookClass } from './lib/core/base_hook_class.js';
|
|
2
|
+
export default class EggAgentHook extends BaseHookClass {
|
|
3
|
+
configDidLoad() {
|
|
4
|
+
this.agent._wrapMessenger();
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLGFBQWE7SUFDckQsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import bodyparser from 'koa-bodyparser';
|
|
2
|
+
export default bodyparser;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keV9wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL21pZGRsZXdhcmUvYm9keV9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsZUFBZSxVQUFVLENBQUMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meta middleware, should be the first middleware
|
|
3
|
+
*/
|
|
4
|
+
import type { EggCoreContext } from '@eggjs/core';
|
|
5
|
+
import type { Next } from '../../lib/type.js';
|
|
6
|
+
export interface MetaMiddlewareOptions {
|
|
7
|
+
enable: boolean;
|
|
8
|
+
logging: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const _default: (options: MetaMiddlewareOptions) => (ctx: EggCoreContext, next: Next) => Promise<void>;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meta middleware, should be the first middleware
|
|
3
|
+
*/
|
|
4
|
+
import { performance } from 'node:perf_hooks';
|
|
5
|
+
export default (options) => {
|
|
6
|
+
return async function meta(ctx, next) {
|
|
7
|
+
if (options.logging) {
|
|
8
|
+
ctx.coreLogger.info('[meta] request started, host: %s, user-agent: %s', ctx.host, ctx.header['user-agent']);
|
|
9
|
+
}
|
|
10
|
+
await next();
|
|
11
|
+
// total response time header
|
|
12
|
+
if (ctx.performanceStarttime) {
|
|
13
|
+
ctx.set('x-readtime', Math.floor((performance.now() - ctx.performanceStarttime) * 1000) / 1000);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
ctx.set('x-readtime', Date.now() - ctx.starttime);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9tZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUzlDLGVBQWUsQ0FBQyxPQUE4QixFQUFFLEVBQUU7SUFDaEQsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQW1CLEVBQUUsSUFBVTtRQUN4RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrREFBa0QsRUFDcEUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDYiw2QkFBNkI7UUFDN0IsSUFBSSxHQUFHLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xHLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EggCoreContext } from '@eggjs/core';
|
|
2
|
+
import type { Next } from '../../lib/type.js';
|
|
3
|
+
export interface NotFoundMiddlewareOptions {
|
|
4
|
+
enable: boolean;
|
|
5
|
+
pageUrl: string;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: (options: NotFoundMiddlewareOptions) => (ctx: EggCoreContext, next: Next) => Promise<void>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export default (options) => {
|
|
2
|
+
return async function notfound(ctx, next) {
|
|
3
|
+
await next();
|
|
4
|
+
if (ctx.status !== 404 || ctx.body) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
// set status first, make sure set body not set status
|
|
8
|
+
ctx.status = 404;
|
|
9
|
+
if (ctx.acceptJSON) {
|
|
10
|
+
ctx.body = {
|
|
11
|
+
message: 'Not Found',
|
|
12
|
+
};
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const notFoundHtml = '<h1>404 Not Found</h1>';
|
|
16
|
+
// notfound handler is unimplemented
|
|
17
|
+
if (options.pageUrl && ctx.path === options.pageUrl) {
|
|
18
|
+
ctx.body = `${notFoundHtml}<p><pre><code>config.notfound.pageUrl(${options.pageUrl})</code></pre> is unimplemented</p>`;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (options.pageUrl) {
|
|
22
|
+
ctx.realStatus = 404;
|
|
23
|
+
ctx.redirect(options.pageUrl);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
ctx.body = notFoundHtml;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Zm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL21pZGRsZXdhcmUvbm90Zm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsZUFBZSxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBbUIsRUFBRSxJQUFVO1FBQzVELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFYixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUVqQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUNULE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDO1FBRTlDLG9DQUFvQztRQUNwQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEQsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLFlBQVkseUNBQXlDLE9BQU8sQ0FBQyxPQUFPLHFDQUFxQyxDQUFDO1lBQ3hILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import override from 'koa-override';
|
|
2
|
+
export default override;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVfbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL292ZXJyaWRlX21ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxjQUFjLENBQUM7QUFFcEMsZUFBZSxRQUFRLENBQUMifQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EggCoreContext } from '@eggjs/core';
|
|
2
|
+
export type SiteFileContentFun = (ctx: EggCoreContext) => Promise<Buffer | string>;
|
|
3
|
+
export interface SiteFileMiddlewareOptions {
|
|
4
|
+
enable: boolean;
|
|
5
|
+
cacheControl: string;
|
|
6
|
+
[key: string]: string | Buffer | boolean | SiteFileContentFun;
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
module.exports = (options) => {
|
|
3
|
+
return async function siteFile(ctx, next) {
|
|
4
|
+
if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {
|
|
5
|
+
return next();
|
|
6
|
+
}
|
|
7
|
+
/* istanbul ignore if */
|
|
8
|
+
if (ctx.path[0] !== '/') {
|
|
9
|
+
return next();
|
|
10
|
+
}
|
|
11
|
+
let content = options[ctx.path];
|
|
12
|
+
if (!content) {
|
|
13
|
+
return next();
|
|
14
|
+
}
|
|
15
|
+
// '/favicon.ico': 'https://eggjs.org/favicon.ico' or '/favicon.ico': async (ctx) => 'https://eggjs.org/favicon.ico'
|
|
16
|
+
// content is function
|
|
17
|
+
if (typeof content === 'function') {
|
|
18
|
+
content = await content(ctx);
|
|
19
|
+
}
|
|
20
|
+
// content is url
|
|
21
|
+
if (typeof content === 'string') {
|
|
22
|
+
return ctx.redirect(content);
|
|
23
|
+
}
|
|
24
|
+
// '/robots.txt': Buffer <xx..
|
|
25
|
+
// content is buffer
|
|
26
|
+
if (Buffer.isBuffer(content)) {
|
|
27
|
+
ctx.set('cache-control', options.cacheControl);
|
|
28
|
+
ctx.body = content;
|
|
29
|
+
ctx.type = path.extname(ctx.path);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
return next();
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZV9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3NpdGVfZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFZN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUN0RCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBbUIsRUFBRSxJQUFVO1FBQzVELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCx3QkFBd0I7UUFDeEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsb0hBQW9IO1FBQ3BILHNCQUFzQjtRQUN0QixJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsaUJBQWlCO1FBQ2pCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsb0JBQW9CO1FBQ3BCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxHQUFHLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EggAppInfo } from '@eggjs/core';
|
|
2
|
+
import type { EggAppConfig } from '../lib/type.js';
|
|
3
|
+
/**
|
|
4
|
+
* The configuration of egg application, can be access by `app.config`
|
|
5
|
+
* @class Config
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
declare const _default: (appInfo: EggAppInfo) => Partial<EggAppConfig>;
|
|
9
|
+
export default _default;
|