@eggjs/bin 7.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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/esm/bin/cli.d.ts +2 -0
  4. package/dist/esm/bin/cli.js +30 -0
  5. package/dist/esm/cmd/base.d.ts +12 -0
  6. package/dist/esm/cmd/base.js +135 -0
  7. package/dist/esm/cmd/cov.d.ts +8 -0
  8. package/dist/esm/cmd/cov.js +103 -0
  9. package/dist/esm/cmd/debug.d.ts +5 -0
  10. package/dist/esm/cmd/debug.js +28 -0
  11. package/dist/esm/cmd/dev.d.ts +17 -0
  12. package/dist/esm/cmd/dev.js +118 -0
  13. package/dist/esm/cmd/test.d.ts +15 -0
  14. package/dist/esm/cmd/test.js +237 -0
  15. package/dist/esm/config/framework.d.ts +4 -0
  16. package/dist/esm/config/framework.js +4 -0
  17. package/dist/esm/config/plugin.d.ts +11 -0
  18. package/dist/esm/config/plugin.js +11 -0
  19. package/dist/esm/index.d.ts +5 -0
  20. package/dist/esm/index.js +6 -0
  21. package/dist/esm/middleware/global_options.d.ts +5 -0
  22. package/dist/esm/middleware/global_options.js +182 -0
  23. package/dist/esm/middleware/handle_error.d.ts +5 -0
  24. package/dist/esm/middleware/handle_error.js +47 -0
  25. package/dist/esm/middleware/inspect.d.ts +5 -0
  26. package/dist/esm/middleware/inspect.js +69 -0
  27. package/dist/esm/package.json +3 -0
  28. package/dist/esm/utils.d.ts +5 -0
  29. package/dist/esm/utils.js +46 -0
  30. package/dist/package.json +4 -0
  31. package/dist/scripts/postinstall.mjs +59 -0
  32. package/dist/scripts/start-cluster.mjs +14 -0
  33. package/package.json +123 -0
  34. package/scripts/postinstall.mjs +59 -0
  35. package/scripts/start-cluster.mjs +14 -0
  36. package/src/bin/cli.ts +33 -0
  37. package/src/cmd/base.ts +133 -0
  38. package/src/cmd/cov.ts +89 -0
  39. package/src/cmd/debug.ts +14 -0
  40. package/src/cmd/dev.ts +102 -0
  41. package/src/cmd/test.ts +219 -0
  42. package/src/config/framework.ts +3 -0
  43. package/src/config/plugin.ts +10 -0
  44. package/src/index.ts +5 -0
  45. package/src/middleware/global_options.ts +169 -0
  46. package/src/middleware/handle_error.ts +30 -0
  47. package/src/middleware/inspect.ts +54 -0
  48. package/src/utils.ts +47 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017-present Alibaba Group Holding Limited and other contributors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,227 @@
1
+ # egg-bin
2
+
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![build status][ci-image]][ci-url]
5
+ [![Test coverage][codecov-image]][codecov-url]
6
+ [![Known Vulnerabilities][snyk-image]][snyk-url]
7
+ [![npm download][download-image]][download-url]
8
+ [![Node.js Version][node-version-image]][node-version-url]
9
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
10
+
11
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/bin.svg?style=flat-square
12
+ [npm-url]: https://npmjs.org/package/@eggjs/bin
13
+ [ci-image]: https://github.com/eggjs/bin/actions/workflows/nodejs.yml/badge.svg
14
+ [ci-url]: https://github.com/eggjs/bin/actions/workflows/nodejs.yml
15
+ [codecov-image]: https://codecov.io/gh/eggjs/bin/branch/master/graph/badge.svg
16
+ [codecov-url]: https://codecov.io/gh/eggjs/bin
17
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/bin/badge.svg?style=flat-square
18
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/bin
19
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/bin.svg?style=flat-square
20
+ [download-url]: https://npmjs.org/package/@eggjs/bin
21
+ [node-version-image]: https://img.shields.io/node/v/@eggjs/bin.svg?style=flat-square
22
+ [node-version-url]: https://nodejs.org/en/download/
23
+
24
+ egg developer tool, extends [@artus-cli/artus-cli].
25
+
26
+ ---
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ npm i egg-bin --save-dev
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ Add `egg-bin` to `package.json` scripts:
37
+
38
+ ```json
39
+ {
40
+ "scripts": {
41
+ "dev": "egg-bin dev",
42
+ "test-local": "egg-bin test",
43
+ "test": "npm run lint -- --fix && npm run test-local",
44
+ "cov": "egg-bin cov",
45
+ "lint": "eslint .",
46
+ "ci": "npm run lint && npm run cov"
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Command
52
+
53
+ All the commands support these specific options:
54
+
55
+ - `--inspect`
56
+ - `--inspect-brk`
57
+ - `--typescript` / `--ts` enable typescript support. Auto detect from `package.json`'s `pkg.egg.typescript`,
58
+ or `pkg.dependencies.typescript`/`pkg.devDependencies.typescript`.
59
+ - `--base` / `--baseDir` application's root path, default to `process.cwd()`.
60
+ - `--require` will add to `execArgv`, support multiple. Also support read from `package.json`'s `pkg.egg.require`
61
+ - `--dry-run` / `-d` whether dry-run the test command, just show the command
62
+
63
+ ```bash
64
+ egg-bin [command] --inspect
65
+ egg-bin [command] --inspect-brk
66
+ egg-bin [command] --typescript
67
+ egg-bin [command] --base /foo/bar
68
+ ```
69
+
70
+ ### dev
71
+
72
+ Start dev cluster on `local` env, it will start a master, an agent and a worker.
73
+
74
+ ```bash
75
+ egg-bin dev
76
+ ```
77
+
78
+ #### dev options
79
+
80
+ - `--framework` egg web framework root path.
81
+ - `--port` server port. If not specified, the port is obtained in the following order: [_egg.js_ configuration](https://www.eggjs.org/basics/config) `config/config.*.js` > `process.env.EGG_BIN_DEFAULT_PORT` > 7001 > other available ports.
82
+ - `--workers` worker process number, default to `1` worker at local mode.
83
+ - `--sticky` start a sticky cluster server, default to `false`.
84
+
85
+ #### debug/inspect on VSCode
86
+
87
+ Create `.vscode/launch.json` file:
88
+
89
+ ```json
90
+ {
91
+ "version": "0.2.0",
92
+ "configurations": [
93
+ {
94
+ "type": "node",
95
+ "request": "launch",
96
+ "name": "Egg Debug",
97
+ "runtimeExecutable": "npm",
98
+ "runtimeArgs": [
99
+ "run",
100
+ "dev",
101
+ "--",
102
+ "--inspect-brk"
103
+ ],
104
+ "console": "integratedTerminal",
105
+ "restart": true,
106
+ "protocol": "auto",
107
+ "port": 9229,
108
+ "autoAttachChildProcesses": true
109
+ },
110
+ {
111
+ "type": "node",
112
+ "request": "launch",
113
+ "name": "Egg Test",
114
+ "runtimeExecutable": "npm",
115
+ "runtimeArgs": [
116
+ "run",
117
+ "test-local",
118
+ "--",
119
+ "--inspect-brk"
120
+ ],
121
+ "protocol": "auto",
122
+ "port": 9229,
123
+ "autoAttachChildProcesses": true
124
+ }
125
+ ]
126
+ }
127
+ ```
128
+
129
+ ### test
130
+
131
+ Using [mocha] to run test.
132
+
133
+ ```bash
134
+ egg-bin test [...files] [options]
135
+ ```
136
+
137
+ - `files` is optional, default to `test/**/*.test.ts`
138
+ - `test/fixtures`, `test/node_modules` is always exclude.
139
+
140
+ #### auto require `test/.setup.ts`
141
+
142
+ If `test/.setup.ts` file exists, it will be auto require as the first test file.
143
+
144
+ ```bash
145
+ test
146
+ ├── .setup.ts
147
+ └── foo.test.ts
148
+ ```
149
+
150
+ #### test options
151
+
152
+ You can pass any mocha argv.
153
+
154
+ - `--timeout` milliseconds, default to 60000
155
+ - `--changed` / `-c` only test changed test files(test files means files that match `${pwd}/test/**/*.test.(js|ts)`)
156
+ - `--parallel` enable mocha parallel mode, default to `false`.
157
+ - `--auto-agent` auto start agent in mocha master agent.
158
+ - `--jobs` number of jobs to run in parallel, default to `os.cpus().length - 1`.
159
+ - `--mochawesome` enable [mochawesome](https://github.com/adamgruber/mochawesome) reporter, default to `true`.
160
+
161
+ #### test environment
162
+
163
+ Environment is also support, will use it if options not provide.
164
+
165
+ You can set `TESTS` env to set the tests directory, it support [glob] grammar.
166
+
167
+ ```bash
168
+ TESTS=test/a.test.ts egg-bin test
169
+ ```
170
+
171
+ And the reporter can set by the `TEST_REPORTER` env, default is `spec`.
172
+
173
+ ```bash
174
+ TEST_REPORTER=doc egg-bin test
175
+ ```
176
+
177
+ The test timeout can set by `TEST_TIMEOUT` env, default is `60000` ms.
178
+
179
+ ```bash
180
+ TEST_TIMEOUT=2000 egg-bin test
181
+ ```
182
+
183
+ ### cov
184
+
185
+ Using [mocha] and [c8] to run code coverage, it support all test params above.
186
+
187
+ Coverage reporter will output text-summary, json and lcov.
188
+
189
+ #### cov options
190
+
191
+ You can pass any mocha argv.
192
+
193
+ - `-x` add dir ignore coverage, support multiple argv
194
+ - `--prerequire` prerequire files for coverage instrument, you can use this options if load files slowly when call `mm.app` or `mm.cluster`
195
+ - `--typescript` / `--ts` enable typescript support. If true, will auto add `.ts` extension and ignore `typings` and `d.ts`.
196
+ - `--c8` c8 instruments passthrough. you can use this to overwrite egg-bin's default c8 instruments and add additional ones.
197
+ >
198
+ > - egg-bin have some default instruments passed to c8 like `-r` and `--temp-directory`
199
+ > - `egg-bin cov --c8="-r teamcity -r text" --c8-report=true`
200
+ >
201
+ - also support all test params above.
202
+
203
+ #### cov environment
204
+
205
+ You can set `COV_EXCLUDES` env to add dir ignore coverage.
206
+
207
+ ```bash
208
+ COV_EXCLUDES="app/plugins/c*,app/autocreate/**" egg-bin cov
209
+ ```
210
+
211
+ ## Custom egg-bin for your team
212
+
213
+ See <https://artus-cli.github.io>
214
+
215
+ ## License
216
+
217
+ [MIT](LICENSE)
218
+
219
+ ## Contributors
220
+
221
+ [![Contributors](https://contrib.rocks/image?repo=eggjs/bin)](https://github.com/eggjs/bin/graphs/contributors)
222
+
223
+ Made with [contributors-img](https://contrib.rocks).
224
+
225
+ [mocha]: https://mochajs.org
226
+ [glob]: https://github.com/isaacs/node-glob
227
+ [@artus-cli/artus-cli]: https://github.com/artus-cli/artus-cli
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { start } from '@artus-cli/artus-cli';
5
+ function getCurrentFilename() {
6
+ if (typeof __filename === 'string') {
7
+ return __filename;
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore
11
+ return fileURLToPath(import.meta.url);
12
+ }
13
+ function main() {
14
+ const currentFilename = getCurrentFilename();
15
+ // src/bin/cli.ts => src/
16
+ let baseDir = path.dirname(path.dirname(currentFilename));
17
+ const isBuildJavascriptFile = getCurrentFilename().endsWith('.js');
18
+ const exclude = ['scripts', 'bin', 'test', 'coverage'];
19
+ if (isBuildJavascriptFile) {
20
+ // dist/esm/bin/cli.js => dist/
21
+ baseDir = path.dirname(baseDir);
22
+ exclude.push('*.ts');
23
+ }
24
+ else {
25
+ exclude.push('dist');
26
+ }
27
+ start({ exclude, baseDir });
28
+ }
29
+ main();
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxTQUFTLGtCQUFrQjtJQUN6QixJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCw2REFBNkQ7SUFDN0QsYUFBYTtJQUNiLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsSUFBSTtJQUNYLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDN0MseUJBQXlCO0lBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzFELE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUUsQ0FBQztJQUN6RCxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDMUIsK0JBQStCO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMifQ==
@@ -0,0 +1,12 @@
1
+ import { ForkOptions } from 'node:child_process';
2
+ import { Command, CommandContext, Utils } from '@artus-cli/artus-cli';
3
+ export declare abstract class BaseCommand extends Command {
4
+ dryRun: boolean;
5
+ require: string[];
6
+ ctx: CommandContext;
7
+ utils: Utils;
8
+ protected get base(): any;
9
+ run(): Promise<void>;
10
+ protected formatRequires(): Promise<string[]>;
11
+ protected forkNode(modulePath: string, args: string[], options?: ForkOptions): Promise<void>;
12
+ }
@@ -0,0 +1,135 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { debuglog } from 'node:util';
11
+ import { fork } from 'node:child_process';
12
+ import { DefineCommand, Option, Command, CommandContext, Inject, Utils, } from '@artus-cli/artus-cli';
13
+ const debug = debuglog('@eggjs/bin/base');
14
+ // only hook once and only when ever start any child.
15
+ const children = new Set();
16
+ let hadHook = false;
17
+ function graceful(proc) {
18
+ // save child ref
19
+ children.add(proc);
20
+ // only hook once
21
+ /* c8 ignore else */
22
+ if (!hadHook) {
23
+ hadHook = true;
24
+ let signal;
25
+ ['SIGINT', 'SIGQUIT', 'SIGTERM'].forEach(event => {
26
+ process.once(event, () => {
27
+ signal = event;
28
+ process.exit(0);
29
+ });
30
+ });
31
+ process.once('exit', (code) => {
32
+ for (const child of children) {
33
+ debug('process exit code: %o, kill child %o with %o', code, child.pid, signal);
34
+ child.kill(signal);
35
+ }
36
+ });
37
+ }
38
+ }
39
+ class ForkError extends Error {
40
+ code;
41
+ constructor(message, code) {
42
+ super(message);
43
+ this.code = code;
44
+ }
45
+ }
46
+ let BaseCommand = class BaseCommand extends Command {
47
+ dryRun;
48
+ require;
49
+ ctx;
50
+ utils;
51
+ // FIXME: should has a better way to init global args default value
52
+ get base() {
53
+ return this.ctx.args.base;
54
+ }
55
+ async run() {
56
+ await this.utils.redirect(['--help']);
57
+ }
58
+ async formatRequires() {
59
+ const requires = this.require ?? [];
60
+ const eggRequire = this.ctx.args.pkgEgg.require;
61
+ if (Array.isArray(eggRequire)) {
62
+ for (const r of eggRequire) {
63
+ requires.push(r);
64
+ }
65
+ }
66
+ else if (typeof eggRequire === 'string' && eggRequire) {
67
+ requires.push(eggRequire);
68
+ }
69
+ return requires;
70
+ }
71
+ async forkNode(modulePath, args, options = {}) {
72
+ if (this.dryRun) {
73
+ console.log('dry run: $ %o', `${process.execPath} ${modulePath} ${args.join(' ')}`);
74
+ return;
75
+ }
76
+ const forkExecArgv = [
77
+ ...this.ctx.args.execArgv || [],
78
+ ...options.execArgv || [],
79
+ ];
80
+ options = {
81
+ stdio: 'inherit',
82
+ env: this.ctx.env,
83
+ cwd: this.base,
84
+ ...options,
85
+ execArgv: forkExecArgv,
86
+ };
87
+ const proc = fork(modulePath, args, options);
88
+ debug('Run fork pid: %o\n\n$ %s%s %s %s\n\n', proc.pid, options.env?.NODE_OPTIONS ? `NODE_OPTIONS='${options.env.NODE_OPTIONS}' ` : '', process.execPath, modulePath, args.map(a => `'${a}'`).join(' '));
89
+ graceful(proc);
90
+ return new Promise((resolve, reject) => {
91
+ proc.once('exit', code => {
92
+ debug('fork pid: %o exit code %o', proc.pid, code);
93
+ children.delete(proc);
94
+ if (code !== 0) {
95
+ const err = new ForkError(modulePath + ' ' + args.join(' ') + ' exit with code ' + code, code);
96
+ reject(err);
97
+ }
98
+ else {
99
+ resolve();
100
+ }
101
+ });
102
+ });
103
+ }
104
+ };
105
+ __decorate([
106
+ Option({
107
+ description: 'whether show full command script only, default is false',
108
+ alias: 'd',
109
+ type: 'boolean',
110
+ default: false,
111
+ }),
112
+ __metadata("design:type", Boolean)
113
+ ], BaseCommand.prototype, "dryRun", void 0);
114
+ __decorate([
115
+ Option({
116
+ description: 'require the given module',
117
+ alias: 'r',
118
+ array: true,
119
+ default: [],
120
+ }),
121
+ __metadata("design:type", Array)
122
+ ], BaseCommand.prototype, "require", void 0);
123
+ __decorate([
124
+ Inject(),
125
+ __metadata("design:type", CommandContext)
126
+ ], BaseCommand.prototype, "ctx", void 0);
127
+ __decorate([
128
+ Inject(),
129
+ __metadata("design:type", Utils)
130
+ ], BaseCommand.prototype, "utils", void 0);
131
+ BaseCommand = __decorate([
132
+ DefineCommand()
133
+ ], BaseCommand);
134
+ export { BaseCommand };
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWQvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQTZCLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQUUsT0FBTyxFQUNmLGNBQWMsRUFDZCxNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFMUMscURBQXFEO0FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0FBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixTQUFTLFFBQVEsQ0FBQyxJQUFrQjtJQUNsQyxpQkFBaUI7SUFDakIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLE1BQXNCLENBQUM7UUFDM0IsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLE1BQU0sR0FBRyxLQUF1QixDQUFDO2dCQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BD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
@@ -0,0 +1,8 @@
1
+ import { TestCommand } from './test.js';
2
+ export declare class CovCommand extends TestCommand {
3
+ prerequire: boolean;
4
+ x: string[];
5
+ c8: string;
6
+ get defaultExcludes(): string[];
7
+ protected forkNode(modulePath: string, args: string[]): Promise<void>;
8
+ }
@@ -0,0 +1,103 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import path from 'node:path';
11
+ import fs from 'node:fs/promises';
12
+ import { DefineCommand, Option } from '@artus-cli/artus-cli';
13
+ import { importResolve } from '@eggjs/utils';
14
+ import { TestCommand } from './test.js';
15
+ let CovCommand = class CovCommand extends TestCommand {
16
+ // will use on egg-mock https://github.com/eggjs/egg-mock/blob/84a64bd19d0569ec94664c898fb1b28367b95d60/index.js#L7
17
+ prerequire;
18
+ x;
19
+ c8;
20
+ get defaultExcludes() {
21
+ return [
22
+ 'example/',
23
+ 'examples/',
24
+ 'mocks**/',
25
+ 'docs/',
26
+ // https://github.com/JaKXz/test-exclude/blob/620a7be412d4fc2070d50f0f63e3228314066fc9/index.js#L73
27
+ 'test/**',
28
+ 'test{,-*}.js',
29
+ '**/*.test.js',
30
+ '**/__tests__/**',
31
+ '**/node_modules/**',
32
+ 'typings',
33
+ '**/*.d.ts',
34
+ ];
35
+ }
36
+ async forkNode(modulePath, args) {
37
+ if (this.prerequire) {
38
+ this.ctx.env.EGG_BIN_PREREQUIRE = 'true';
39
+ }
40
+ // append cobertura
41
+ if (this.c8) {
42
+ this.c8 += ' -r cobertura';
43
+ }
44
+ // add c8 args
45
+ // https://github.com/eggjs/egg/issues/3930
46
+ const c8Args = [
47
+ // '--show-process-tree',
48
+ ...this.c8.split(' ').filter(a => a.trim()),
49
+ ];
50
+ if (this.ctx.args.typescript) {
51
+ this.ctx.env.SPAWN_WRAP_SHIM_ROOT = path.join(this.base, 'node_modules');
52
+ c8Args.push('--extension');
53
+ c8Args.push('.ts');
54
+ }
55
+ const excludes = new Set([
56
+ ...process.env.COV_EXCLUDES?.split(',') ?? [],
57
+ ...this.defaultExcludes,
58
+ ...this.x,
59
+ ]);
60
+ for (const exclude of excludes) {
61
+ c8Args.push('-x');
62
+ c8Args.push(exclude);
63
+ }
64
+ const c8File = importResolve('c8/bin/c8.js');
65
+ const outputDir = path.join(this.base, 'node_modules/.c8_output');
66
+ await fs.rm(outputDir, { force: true, recursive: true });
67
+ const coverageDir = path.join(this.base, 'coverage');
68
+ await fs.rm(coverageDir, { force: true, recursive: true });
69
+ await super.forkNode(c8File, [...c8Args, process.execPath, ...this.ctx.args.execArgv || [], modulePath, ...args]);
70
+ }
71
+ };
72
+ __decorate([
73
+ Option({
74
+ description: 'prerequire files for coverage instrument',
75
+ type: 'boolean',
76
+ default: false,
77
+ }),
78
+ __metadata("design:type", Boolean)
79
+ ], CovCommand.prototype, "prerequire", void 0);
80
+ __decorate([
81
+ Option({
82
+ description: 'coverage ignore, one or more files patterns`',
83
+ array: true,
84
+ default: [],
85
+ }),
86
+ __metadata("design:type", Array)
87
+ ], CovCommand.prototype, "x", void 0);
88
+ __decorate([
89
+ Option({
90
+ description: 'c8 instruments passthrough`',
91
+ default: '--temp-directory node_modules/.c8_output -r text-summary -r json-summary -r json -r lcov -r cobertura',
92
+ }),
93
+ __metadata("design:type", String)
94
+ ], CovCommand.prototype, "c8", void 0);
95
+ CovCommand = __decorate([
96
+ DefineCommand({
97
+ command: 'cov [files...]',
98
+ description: 'Run the test with coverage',
99
+ alias: ['c'],
100
+ })
101
+ ], CovCommand);
102
+ export { CovCommand };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NtZC9jb3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBT2pDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxXQUFXO0lBQ3pDLG1IQUFtSDtJQU1uSCxVQUFVLENBQVU7SUFPcEIsQ0FBQyxDQUFXO0lBTVosRUFBRSxDQUFTO0lBRVgsSUFBSSxlQUFlO1FBQ2pCLE9BQU87WUFDTCxVQUFVO1lBQ1YsV0FBVztZQUNYLFVBQVU7WUFDVixPQUFPO1lBQ1AsbUdBQW1HO1lBQ25HLFNBQVM7WUFDVCxjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsU0FBUztZQUNULFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQztJQUVTLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBa0IsRUFBRSxJQUFjO1FBQ3pELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUMzQyxDQUFDO1FBQ0QsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEVBQUUsSUFBSSxlQUFlLENBQUM7UUFDN0IsQ0FBQztRQUVELGNBQWM7UUFDZCwyQ0FBMkM7UUFDM0MsTUFBTSxNQUFNLEdBQUc7WUFDYix5QkFBeUI7WUFDekIsR0FBRyxJQUFJ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
@@ -0,0 +1,5 @@
1
+ import { Command, Utils } from '@artus-cli/artus-cli';
2
+ export declare class DebugCommand extends Command {
3
+ utils: Utils;
4
+ run(): Promise<void>;
5
+ }
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { DefineCommand, Command, Utils, Inject } from '@artus-cli/artus-cli';
11
+ let DebugCommand = class DebugCommand extends Command {
12
+ utils;
13
+ async run() {
14
+ await this.utils.redirect(['dev', '--inspect']);
15
+ }
16
+ };
17
+ __decorate([
18
+ Inject(),
19
+ __metadata("design:type", Utils)
20
+ ], DebugCommand.prototype, "utils", void 0);
21
+ DebugCommand = __decorate([
22
+ DefineCommand({
23
+ command: 'debug',
24
+ description: 'Alias to `egg-bin dev --inspect`',
25
+ })
26
+ ], DebugCommand);
27
+ export { DebugCommand };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU10RSxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsT0FBTztJQUV2QyxLQUFLLENBQVE7SUFFYixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBRSxLQUFLLEVBQUUsV0FBVyxDQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0YsQ0FBQTtBQUxDO0lBREMsTUFBTSxFQUFFOzhCQUNGLEtBQUs7MkNBQUM7QUFGRixZQUFZO0lBSnhCLGFBQWEsQ0FBQztRQUNiLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFdBQVcsRUFBRSxrQ0FBa0M7S0FDaEQsQ0FBQztHQUNXLFlBQVksQ0FPeEIifQ==
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from './base.js';
2
+ export declare class DevCommand extends BaseCommand {
3
+ port: number;
4
+ workers: number;
5
+ framework: string;
6
+ sticky: boolean;
7
+ run(): Promise<void>;
8
+ protected formatEggStartOptions(): Promise<{
9
+ baseDir: any;
10
+ workers: number;
11
+ port: number;
12
+ framework: string;
13
+ typescript: any;
14
+ tscompiler: any;
15
+ sticky: boolean;
16
+ }>;
17
+ }