@eggjs/development 4.0.0 → 4.0.1-beta.2

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/README.md +9 -13
  2. package/dist/agent.d.ts +11 -0
  3. package/dist/agent.js +80 -0
  4. package/dist/app/middleware/egg_loader_trace.d.ts +6 -0
  5. package/dist/app/middleware/egg_loader_trace.js +37 -0
  6. package/dist/app.d.ts +10 -0
  7. package/dist/app.js +14 -0
  8. package/dist/{commonjs/config → config}/config.default.d.ts +7 -3
  9. package/dist/config/config.default.js +23 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/{src/types.ts → dist/types.d.ts} +5 -4
  13. package/dist/types.js +1 -0
  14. package/dist/utils.d.ts +4 -0
  15. package/dist/utils.js +7 -0
  16. package/package.json +44 -65
  17. package/dist/commonjs/agent.d.ts +0 -7
  18. package/dist/commonjs/agent.js +0 -98
  19. package/dist/commonjs/app/middleware/egg_loader_trace.d.ts +0 -3
  20. package/dist/commonjs/app/middleware/egg_loader_trace.js +0 -44
  21. package/dist/commonjs/app.d.ts +0 -6
  22. package/dist/commonjs/app.js +0 -17
  23. package/dist/commonjs/config/config.default.js +0 -24
  24. package/dist/commonjs/config/loader_trace.html +0 -49
  25. package/dist/commonjs/index.d.ts +0 -1
  26. package/dist/commonjs/index.js +0 -4
  27. package/dist/commonjs/package.json +0 -3
  28. package/dist/commonjs/types.d.ts +0 -35
  29. package/dist/commonjs/types.js +0 -3
  30. package/dist/commonjs/utils.d.ts +0 -3
  31. package/dist/commonjs/utils.js +0 -25
  32. package/dist/esm/agent.d.ts +0 -7
  33. package/dist/esm/agent.js +0 -92
  34. package/dist/esm/app/middleware/egg_loader_trace.d.ts +0 -3
  35. package/dist/esm/app/middleware/egg_loader_trace.js +0 -39
  36. package/dist/esm/app.d.ts +0 -6
  37. package/dist/esm/app.js +0 -14
  38. package/dist/esm/config/config.default.d.ts +0 -15
  39. package/dist/esm/config/config.default.js +0 -22
  40. package/dist/esm/config/loader_trace.html +0 -49
  41. package/dist/esm/index.d.ts +0 -1
  42. package/dist/esm/index.js +0 -2
  43. package/dist/esm/package.json +0 -3
  44. package/dist/esm/types.d.ts +0 -35
  45. package/dist/esm/types.js +0 -2
  46. package/dist/esm/utils.d.ts +0 -3
  47. package/dist/esm/utils.js +0 -17
  48. package/dist/package.json +0 -4
  49. package/src/agent.ts +0 -106
  50. package/src/app/middleware/egg_loader_trace.ts +0 -39
  51. package/src/app.ts +0 -17
  52. package/src/config/config.default.ts +0 -23
  53. package/src/config/loader_trace.html +0 -49
  54. package/src/index.ts +0 -1
  55. package/src/typings/index.d.ts +0 -4
  56. package/src/utils.ts +0 -19
package/README.md CHANGED
@@ -1,21 +1,17 @@
1
1
  # @eggjs/development
2
2
 
3
3
  [![NPM version][npm-image]][npm-url]
4
- [![Node.js CI](https://github.com/eggjs/egg-development/actions/workflows/nodejs.yml/badge.svg)](https://github.com/eggjs/egg-development/actions/workflows/nodejs.yml)
5
- [![Test coverage][codecov-image]][codecov-url]
6
4
  [![Known Vulnerabilities][snyk-image]][snyk-url]
7
5
  [![npm download][download-image]][download-url]
8
- [![Node.js Version](https://img.shields.io/node/v/egg-development.svg?style=flat)](https://nodejs.org/en/download/)
6
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/development.svg?style=flat)](https://nodejs.org/en/download/)
9
7
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
10
8
 
11
- [npm-image]: https://img.shields.io/npm/v/egg-development.svg?style=flat-square
12
- [npm-url]: https://npmjs.org/package/egg-development
13
- [codecov-image]: https://img.shields.io/codecov/c/github/eggjs/egg-development.svg?style=flat-square
14
- [codecov-url]: https://codecov.io/github/eggjs/egg-development?branch=master
15
- [snyk-image]: https://snyk.io/test/npm/egg-development/badge.svg?style=flat-square
16
- [snyk-url]: https://snyk.io/test/npm/egg-development
17
- [download-image]: https://img.shields.io/npm/dm/egg-development.svg?style=flat-square
18
- [download-url]: https://npmjs.org/package/egg-development
9
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/development.svg?style=flat-square
10
+ [npm-url]: https://npmjs.org/package/@eggjs/development
11
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/development/badge.svg?style=flat-square
12
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/development
13
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/development.svg?style=flat-square
14
+ [download-url]: https://npmjs.org/package/@eggjs/development
19
15
 
20
16
  This is an egg plugin for local development, under development environment enabled by default, and closed under other environment.
21
17
 
@@ -27,7 +23,7 @@ This is an egg plugin for local development, under development environment enabl
27
23
 
28
24
  ## Configuration
29
25
 
30
- see [config/config.default.ts](https://github.com/eggjs/egg-development/blob/master/src/config/config.default.ts) for more detail.
26
+ see [config/config.default.ts](https://github.com/eggjs/egg/blob/master/plugins/development/src/config/config.default.ts) for more detail.
31
27
 
32
28
  ## Features
33
29
 
@@ -82,6 +78,6 @@ Please open an issue [here](https://github.com/eggjs/egg/issues).
82
78
 
83
79
  ## Contributors
84
80
 
85
- [![Contributors](https://contrib.rocks/image?repo=eggjs/development)](https://github.com/eggjs/development/graphs/contributors)
81
+ [![Contributors](https://contrib.rocks/image?repo=eggjs/egg)](https://github.com/eggjs/egg/graphs/contributors)
86
82
 
87
83
  Made with [contributors-img](https://contrib.rocks).
@@ -0,0 +1,11 @@
1
+ import { Agent, ILifecycleBoot } from "egg";
2
+
3
+ //#region src/agent.d.ts
4
+ declare class AgentBoot implements ILifecycleBoot {
5
+ #private;
6
+ constructor(agent: Agent);
7
+ didLoad(): Promise<void>;
8
+ serverDidReady(): Promise<void>;
9
+ }
10
+ //#endregion
11
+ export { AgentBoot as default };
package/dist/agent.js ADDED
@@ -0,0 +1,80 @@
1
+ import { isTimingFile } from "./utils.js";
2
+ import path from "node:path";
3
+ import fs from "node:fs/promises";
4
+ import debounce from "debounce";
5
+ import multimatch from "multimatch";
6
+ import { exists } from "utility";
7
+
8
+ //#region src/agent.ts
9
+ var AgentBoot = class {
10
+ #agent;
11
+ constructor(agent) {
12
+ this.#agent = agent;
13
+ }
14
+ async didLoad() {
15
+ const rundir = this.#agent.config.rundir;
16
+ if (!await exists(rundir)) return;
17
+ const files = await fs.readdir(rundir);
18
+ for (const file of files) {
19
+ if (!isTimingFile(file)) continue;
20
+ await fs.rm(path.join(rundir, file), {
21
+ force: true,
22
+ recursive: true
23
+ });
24
+ }
25
+ }
26
+ async serverDidReady() {
27
+ const agent = this.#agent;
28
+ if (agent.options && Reflect.get(agent.options, "mode") === "single") return;
29
+ const logger = agent.logger;
30
+ const baseDir = agent.config.baseDir;
31
+ const config = agent.config.development;
32
+ let watchDirs = config.overrideDefault ? [] : [
33
+ "app",
34
+ "config",
35
+ "mocks",
36
+ "mocks_proxy",
37
+ "app.js"
38
+ ];
39
+ watchDirs = watchDirs.concat(config.watchDirs).map((dir) => path.resolve(baseDir, dir));
40
+ let ignoreReloadFileDirs = config.overrideIgnore ? [] : [
41
+ "app/views",
42
+ "app/view",
43
+ "app/assets",
44
+ "app/public",
45
+ "app/web"
46
+ ];
47
+ ignoreReloadFileDirs = ignoreReloadFileDirs.concat(config.ignoreDirs).map((dir) => path.resolve(baseDir, dir));
48
+ const reloadFile = debounce(function(info) {
49
+ logger.warn(`[agent:development] reload worker because ${info.path} ${info.event}`);
50
+ process.send({
51
+ to: "master",
52
+ action: "reload-worker"
53
+ });
54
+ }, 200);
55
+ /**
56
+ * reload app worker:
57
+ * [AgentWorker] - on file change
58
+ * |-> emit reload-worker
59
+ * [Master] - receive reload-worker event
60
+ * |-> TODO: Mark worker will die
61
+ * |-> Fork new worker
62
+ * |-> kill old worker
63
+ *
64
+ * @param {Object} info - changed fileInfo
65
+ */
66
+ agent.watcher.watch(watchDirs, (info) => {
67
+ if (!config.reloadOnDebug) return;
68
+ if (isAssetsDir(info.path) || info.isDirectory) return;
69
+ if (config.reloadPattern && multimatch(info.path, config.reloadPattern).length === 0) return;
70
+ reloadFile(info);
71
+ });
72
+ function isAssetsDir(filepath) {
73
+ for (const ignorePath of ignoreReloadFileDirs) if (filepath.startsWith(ignorePath)) return true;
74
+ return false;
75
+ }
76
+ }
77
+ };
78
+
79
+ //#endregion
80
+ export { AgentBoot as default };
@@ -0,0 +1,6 @@
1
+ import { Application, MiddlewareFunc } from "egg";
2
+
3
+ //#region src/app/middleware/egg_loader_trace.d.ts
4
+ declare function createEggLoaderTraceMiddleware(_options: unknown, app: Application): MiddlewareFunc;
5
+ //#endregion
6
+ export { createEggLoaderTraceMiddleware as default };
@@ -0,0 +1,37 @@
1
+ import { isTimingFile } from "../../utils.js";
2
+ import path from "node:path";
3
+ import fs from "node:fs/promises";
4
+ import { readJSON } from "utility";
5
+
6
+ //#region src/app/middleware/egg_loader_trace.ts
7
+ function createEggLoaderTraceMiddleware(_options, app) {
8
+ return async (ctx, next) => {
9
+ if (ctx.path !== "/__loader_trace__") return await next();
10
+ const templatePath = path.join(import.meta.dirname, "loader_trace.html");
11
+ const template = await fs.readFile(templatePath, "utf8");
12
+ const data = await loadTimingData(app);
13
+ ctx.body = template.replace("{{placeholder}}", JSON.stringify(data));
14
+ };
15
+ }
16
+ async function loadTimingData(app) {
17
+ const rundir = app.config.rundir;
18
+ const files = await fs.readdir(rundir);
19
+ const data = [];
20
+ for (const file of files) {
21
+ if (!isTimingFile(file)) continue;
22
+ const json = await readJSON(path.join(rundir, file));
23
+ const isAgent = file.startsWith("agent");
24
+ for (const item of json) {
25
+ if (isAgent) item.type = "agent";
26
+ else item.type = `app_${item.pid}`;
27
+ item.pid = String(item.pid);
28
+ item.range = [item.start, item.end];
29
+ item.title = `${item.type}(${item.index})`;
30
+ data.push(item);
31
+ }
32
+ }
33
+ return data;
34
+ }
35
+
36
+ //#endregion
37
+ export { createEggLoaderTraceMiddleware as default };
package/dist/app.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { Application, ILifecycleBoot } from "egg";
2
+
3
+ //#region src/app.d.ts
4
+ declare class AppBoot implements ILifecycleBoot {
5
+ #private;
6
+ constructor(app: Application);
7
+ configWillLoad(): Promise<void>;
8
+ }
9
+ //#endregion
10
+ export { AppBoot as default };
package/dist/app.js ADDED
@@ -0,0 +1,14 @@
1
+ //#region src/app.ts
2
+ var AppBoot = class {
3
+ #app;
4
+ constructor(app) {
5
+ this.#app = app;
6
+ if (app.config.development.fastReady) process.nextTick(() => this.#app.ready(true));
7
+ }
8
+ async configWillLoad() {
9
+ this.#app.config.coreMiddleware.push("eggLoaderTrace");
10
+ }
11
+ };
12
+
13
+ //#endregion
14
+ export { AppBoot as default };
@@ -1,4 +1,7 @@
1
- import type { DevelopmentConfig } from '../types.js';
1
+ import { DevelopmentConfig } from "../types.js";
2
+
3
+ //#region src/config/config.default.d.ts
4
+
2
5
  /**
3
6
  * @member Config#development
4
7
  * @property {Array} watchDirs - dirs needed watch, when files under these change, application will reload, use relative path
@@ -10,6 +13,7 @@ import type { DevelopmentConfig } from '../types.js';
10
13
  * @property {Array|String} reloadPattern - whether to reload, use https://github.com/sindresorhus/multimatch
11
14
  */
12
15
  declare const _default: {
13
- development: DevelopmentConfig;
16
+ development: DevelopmentConfig;
14
17
  };
15
- export default _default;
18
+ //#endregion
19
+ export { _default as default };
@@ -0,0 +1,23 @@
1
+ //#region src/config/config.default.ts
2
+ /**
3
+ * @member Config#development
4
+ * @property {Array} watchDirs - dirs needed watch, when files under these change, application will reload, use relative path
5
+ * @property {Array} ignoreDirs - dirs don't need watch, including subdirectories, use relative path
6
+ * @property {Boolean} fastReady - don't wait all plugins ready, default is false.
7
+ * @property {Boolean} reloadOnDebug - whether reload on debug, default is true.
8
+ * @property {Boolean} overrideDefault - whether override default watchDirs, default is false.
9
+ * @property {Boolean} overrideIgnore - whether override default ignoreDirs, default is false.
10
+ * @property {Array|String} reloadPattern - whether to reload, use https://github.com/sindresorhus/multimatch
11
+ */
12
+ var config_default_default = { development: {
13
+ watchDirs: [],
14
+ ignoreDirs: [],
15
+ fastReady: false,
16
+ reloadOnDebug: true,
17
+ overrideDefault: false,
18
+ overrideIgnore: false,
19
+ reloadPattern: void 0
20
+ } };
21
+
22
+ //#endregion
23
+ export { config_default_default as default };
@@ -0,0 +1 @@
1
+ export { };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export { };
@@ -1,4 +1,5 @@
1
- export interface DevelopmentConfig {
1
+ //#region src/types.d.ts
2
+ interface DevelopmentConfig {
2
3
  /**
3
4
  * dirs needed watch, when files under these change, application will reload, use relative path
4
5
  */
@@ -28,10 +29,10 @@ export interface DevelopmentConfig {
28
29
  */
29
30
  reloadPattern?: string[] | string;
30
31
  }
31
-
32
- declare module '@eggjs/core' {
33
- // add EggAppConfig overrides types
32
+ declare module 'egg' {
34
33
  interface EggAppConfig {
35
34
  development: DevelopmentConfig;
36
35
  }
37
36
  }
37
+ //#endregion
38
+ export { DevelopmentConfig };
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,4 @@
1
+ //#region src/utils.d.ts
2
+ declare function isTimingFile(file: string): boolean;
3
+ //#endregion
4
+ export { isTimingFile };
package/dist/utils.js ADDED
@@ -0,0 +1,7 @@
1
+ //#region src/utils.ts
2
+ function isTimingFile(file) {
3
+ return /^(agent|application)_timing/.test(file);
4
+ }
5
+
6
+ //#endregion
7
+ export { isTimingFile };
package/package.json CHANGED
@@ -1,10 +1,27 @@
1
1
  {
2
2
  "name": "@eggjs/development",
3
- "version": "4.0.0",
3
+ "version": "4.0.1-beta.2",
4
+ "description": "development tool for egg",
4
5
  "publishConfig": {
5
6
  "access": "public"
6
7
  },
7
- "description": "development tool for egg",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": "./dist/index.js",
11
+ "./agent": "./dist/agent.js",
12
+ "./app": "./dist/app.js",
13
+ "./app/middleware/egg_loader_trace": "./dist/app/middleware/egg_loader_trace.js",
14
+ "./config/config.default": "./dist/config/config.default.js",
15
+ "./types": "./dist/types.js",
16
+ "./utils": "./dist/utils.js",
17
+ "./package.json": "./package.json"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "types": "./dist/index.d.ts",
23
+ "main": "./dist/index.js",
24
+ "module": "./dist/index.js",
8
25
  "eggPlugin": {
9
26
  "name": "development",
10
27
  "env": [
@@ -12,12 +29,7 @@
12
29
  ],
13
30
  "dependencies": [
14
31
  "watcher"
15
- ],
16
- "exports": {
17
- "import": "./dist/esm",
18
- "require": "./dist/commonjs",
19
- "typescript": "./src"
20
- }
32
+ ]
21
33
  },
22
34
  "keywords": [
23
35
  "egg",
@@ -26,73 +38,40 @@
26
38
  "eggPlugin"
27
39
  ],
28
40
  "dependencies": {
29
- "@eggjs/core": "^6.2.11",
30
41
  "debounce": "^2.2.0",
31
- "multimatch": "^5.0.0",
32
- "utility": "^2.4.0"
42
+ "multimatch": "^7.0.0",
43
+ "utility": "^2.5.0"
44
+ },
45
+ "peerDependencies": {
46
+ "egg": "4.1.0-beta.8"
33
47
  },
34
48
  "devDependencies": {
35
- "@arethetypeswrong/cli": "^0.17.2",
36
- "@eggjs/bin": "7",
37
- "@eggjs/mock": "6",
38
- "@eggjs/supertest": "8",
39
- "@eggjs/tsconfig": "1",
40
- "@types/mocha": "10",
41
- "@types/node": "22",
42
- "egg": "beta",
43
- "eslint": "8",
44
- "eslint-config-egg": "14",
49
+ "@types/node": "24",
45
50
  "rimraf": "^6.0.1",
46
- "tshy": "3",
47
- "tshy-after": "1",
48
- "typescript": "5"
51
+ "tsdown": "^0.15.0",
52
+ "typescript": "5.9.2",
53
+ "@eggjs/mock": "6.1.0-beta.8",
54
+ "@eggjs/tsconfig": "3.1.0-beta.8",
55
+ "@eggjs/supertest": "8.3.0-beta.8"
49
56
  },
50
57
  "engines": {
51
- "node": ">=18.19.0"
52
- },
53
- "scripts": {
54
- "lint": "eslint --cache src test --ext .ts",
55
- "pretest": "npm run clean && npm run lint -- --fix",
56
- "test": "egg-bin test",
57
- "preci": "npm run clean && npm run lint",
58
- "ci": "egg-bin cov",
59
- "postci": "npm run prepublishOnly && npm run clean",
60
- "clean": "rimraf dist",
61
- "prepublishOnly": "tshy && tshy-after && attw --pack"
58
+ "node": ">= 20.19.0"
62
59
  },
63
60
  "repository": {
64
61
  "type": "git",
65
- "url": "git+https://github.com/eggjs/development.git"
62
+ "url": "git://github.com/eggjs/egg.git",
63
+ "directory": "plugins/development"
66
64
  },
67
65
  "bugs": "https://github.com/eggjs/egg/issues",
68
- "homepage": "https://github.com/eggjs/development#readme",
66
+ "homepage": "https://github.com/eggjs/egg/tree/master/plugins/development#readme",
69
67
  "author": "jtyjty99999",
70
68
  "license": "MIT",
71
- "type": "module",
72
- "tshy": {
73
- "exports": {
74
- ".": "./src/index.ts",
75
- "./package.json": "./package.json"
76
- }
77
- },
78
- "exports": {
79
- ".": {
80
- "import": {
81
- "types": "./dist/esm/index.d.ts",
82
- "default": "./dist/esm/index.js"
83
- },
84
- "require": {
85
- "types": "./dist/commonjs/index.d.ts",
86
- "default": "./dist/commonjs/index.js"
87
- }
88
- },
89
- "./package.json": "./package.json"
90
- },
91
- "files": [
92
- "dist",
93
- "src"
94
- ],
95
- "types": "./dist/commonjs/index.d.ts",
96
- "main": "./dist/commonjs/index.js",
97
- "module": "./dist/esm/index.js"
98
- }
69
+ "scripts": {
70
+ "lint": "oxlint --type-aware",
71
+ "typecheck": "tsc --noEmit",
72
+ "pretest": "pnpm run clean",
73
+ "test": "vitest run",
74
+ "clean": "rimraf dist",
75
+ "build": "tsdown"
76
+ }
77
+ }
@@ -1,7 +0,0 @@
1
- import type { ILifecycleBoot, EggCore } from '@eggjs/core';
2
- export default class AgentBoot implements ILifecycleBoot {
3
- #private;
4
- constructor(agent: EggCore);
5
- didLoad(): Promise<void>;
6
- serverDidReady(): Promise<void>;
7
- }
@@ -1,98 +0,0 @@
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
- const node_path_1 = __importDefault(require("node:path"));
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const debounce_1 = __importDefault(require("debounce"));
9
- const multimatch_1 = __importDefault(require("multimatch"));
10
- const utility_1 = require("utility");
11
- const utils_js_1 = require("./utils.js");
12
- class AgentBoot {
13
- #agent;
14
- constructor(agent) {
15
- this.#agent = agent;
16
- }
17
- async didLoad() {
18
- // clean all timing json
19
- const rundir = this.#agent.config.rundir;
20
- const stat = await (0, utility_1.exists)(rundir);
21
- if (!stat)
22
- return;
23
- const files = await promises_1.default.readdir(rundir);
24
- for (const file of files) {
25
- if (!(0, utils_js_1.isTimingFile)(file))
26
- continue;
27
- await promises_1.default.rm(node_path_1.default.join(rundir, file), { force: true, recursive: true });
28
- }
29
- }
30
- async serverDidReady() {
31
- const agent = this.#agent;
32
- // single process mode don't watch and reload
33
- if (agent.options && Reflect.get(agent.options, 'mode') === 'single') {
34
- return;
35
- }
36
- const logger = agent.logger;
37
- const baseDir = agent.config.baseDir;
38
- const config = agent.config.development;
39
- let watchDirs = config.overrideDefault ? [] : [
40
- 'app',
41
- 'config',
42
- 'mocks',
43
- 'mocks_proxy',
44
- 'app.js',
45
- ];
46
- watchDirs = watchDirs.concat(config.watchDirs).map(dir => node_path_1.default.resolve(baseDir, dir));
47
- let ignoreReloadFileDirs = config.overrideIgnore ? [] : [
48
- 'app/views',
49
- 'app/view',
50
- 'app/assets',
51
- 'app/public',
52
- 'app/web',
53
- ];
54
- ignoreReloadFileDirs = ignoreReloadFileDirs.concat(config.ignoreDirs).map(dir => node_path_1.default.resolve(baseDir, dir));
55
- const reloadFile = (0, debounce_1.default)(function (info) {
56
- logger.warn(`[agent:development] reload worker because ${info.path} ${info.event}`);
57
- process.send({
58
- to: 'master',
59
- action: 'reload-worker',
60
- });
61
- }, 200);
62
- // watch dirs to reload worker, will debounce 200ms
63
- /**
64
- * reload app worker:
65
- * [AgentWorker] - on file change
66
- * |-> emit reload-worker
67
- * [Master] - receive reload-worker event
68
- * |-> TODO: Mark worker will die
69
- * |-> Fork new worker
70
- * |-> kill old worker
71
- *
72
- * @param {Object} info - changed fileInfo
73
- */
74
- agent.watcher.watch(watchDirs, info => {
75
- if (!config.reloadOnDebug) {
76
- return;
77
- }
78
- if (isAssetsDir(info.path) || info.isDirectory) {
79
- return;
80
- }
81
- // don't reload if don't match
82
- if (config.reloadPattern && (0, multimatch_1.default)(info.path, config.reloadPattern).length === 0) {
83
- return;
84
- }
85
- reloadFile(info);
86
- });
87
- function isAssetsDir(filepath) {
88
- for (const ignorePath of ignoreReloadFileDirs) {
89
- if (filepath.startsWith(ignorePath)) {
90
- return true;
91
- }
92
- }
93
- return false;
94
- }
95
- }
96
- }
97
- exports.default = AgentBoot;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBNkI7QUFDN0IsZ0VBQWtDO0FBQ2xDLHdEQUFnQztBQUNoQyw0REFBb0M7QUFDcEMscUNBQWlDO0FBRWpDLHlDQUEwQztBQUUxQyxNQUFxQixTQUFTO0lBQzVCLE1BQU0sQ0FBVTtJQUVoQixZQUFZLEtBQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsd0JBQXdCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxrQkFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFBLHVCQUFZLEVBQUMsSUFBSSxDQUFDO2dCQUFFLFNBQVM7WUFDbEMsTUFBTSxrQkFBRSxDQUFDLEVBQUUsQ0FBQyxtQkFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQiw2Q0FBNkM7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FB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
@@ -1,3 +0,0 @@
1
- import type { EggCore, MiddlewareFunc } from '@eggjs/core';
2
- declare const _default: (_: unknown, app: EggCore) => MiddlewareFunc;
3
- export default _default;
@@ -1,44 +0,0 @@
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
- const node_path_1 = __importDefault(require("node:path"));
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const utility_1 = require("utility");
9
- const utils_js_1 = require("../../utils.js");
10
- exports.default = (_, app) => {
11
- return async (ctx, next) => {
12
- if (ctx.path !== '/__loader_trace__') {
13
- return await next();
14
- }
15
- const template = await promises_1.default.readFile((0, utils_js_1.getSourceFile)('config/loader_trace.html'), 'utf8');
16
- const data = await loadTimingData(app);
17
- ctx.body = template.replace('{{placeholder}}', JSON.stringify(data));
18
- };
19
- };
20
- async function loadTimingData(app) {
21
- const rundir = app.config.rundir;
22
- const files = await promises_1.default.readdir(rundir);
23
- const data = [];
24
- for (const file of files) {
25
- if (!(0, utils_js_1.isTimingFile)(file))
26
- continue;
27
- const json = await (0, utility_1.readJSON)(node_path_1.default.join(rundir, file));
28
- const isAgent = /^agent/.test(file);
29
- for (const item of json) {
30
- if (isAgent) {
31
- item.type = 'agent';
32
- }
33
- else {
34
- item.type = `app_${item.pid}`;
35
- }
36
- item.pid = String(item.pid);
37
- item.range = [item.start, item.end];
38
- item.title = `${item.type}(${item.index})`;
39
- data.push(item);
40
- }
41
- }
42
- return data;
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWdnX2xvYWRlcl90cmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9lZ2dfbG9hZGVyX3RyYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTZCO0FBQzdCLGdFQUFrQztBQUNsQyxxQ0FBbUM7QUFFbkMsNkNBQTZEO0FBRTdELGtCQUFlLENBQUMsQ0FBVSxFQUFFLEdBQVksRUFBa0IsRUFBRTtJQUMxRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDekIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFLENBQUM7WUFDckMsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLElBQUEsd0JBQWEsRUFBQywwQkFBMEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsS0FBSyxVQUFVLGNBQWMsQ0FBQyxHQUFZO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ3ZCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUEsdUJBQVksRUFBQyxJQUFJLENBQUM7WUFBRSxTQUFTO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxrQkFBUSxFQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
@@ -1,6 +0,0 @@
1
- import type { ILifecycleBoot, EggCore } from '@eggjs/core';
2
- export default class AppBoot implements ILifecycleBoot {
3
- #private;
4
- constructor(app: EggCore);
5
- configWillLoad(): Promise<void>;
6
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class AppBoot {
4
- #app;
5
- constructor(app) {
6
- this.#app = app;
7
- // if true, then don't need to wait at local development mode
8
- if (app.config.development.fastReady) {
9
- process.nextTick(() => this.#app.ready(true));
10
- }
11
- }
12
- async configWillLoad() {
13
- this.#app.config.coreMiddleware.push('eggLoaderTrace');
14
- }
15
- }
16
- exports.default = AppBoot;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQXFCLE9BQU87SUFDMUIsSUFBSSxDQUFVO0lBRWQsWUFBWSxHQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLDZEQUE2RDtRQUM3RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFkRCwwQkFjQyJ9