@eggjs/bin 7.3.1 → 7.4.0-beta.10

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 (58) hide show
  1. package/README.md +3 -21
  2. package/bin/dev.js +0 -0
  3. package/dist/baseCommand.d.ts +52 -0
  4. package/dist/baseCommand.js +288 -0
  5. package/dist/commands/cov.d.ts +27 -0
  6. package/dist/commands/cov.js +86 -0
  7. package/dist/commands/dev.d.ts +26 -0
  8. package/dist/commands/dev.js +86 -0
  9. package/dist/commands/test.d.ts +28 -0
  10. package/dist/commands/test.js +168 -0
  11. package/dist/index.d.ts +7 -0
  12. package/dist/index.js +8 -0
  13. package/dist/scripts/postinstall.mjs +9 -6
  14. package/dist/scripts/start-cluster.cjs +3 -2
  15. package/dist/scripts/start-cluster.mjs +3 -2
  16. package/{src/types.ts → dist/types.d.ts} +4 -1
  17. package/dist/utils.js +34 -0
  18. package/package.json +54 -73
  19. package/scripts/postinstall.mjs +9 -6
  20. package/scripts/start-cluster.cjs +3 -2
  21. package/scripts/start-cluster.mjs +3 -2
  22. package/dist/commonjs/baseCommand.d.ts +0 -49
  23. package/dist/commonjs/baseCommand.js +0 -374
  24. package/dist/commonjs/commands/cov.d.ts +0 -22
  25. package/dist/commonjs/commands/cov.js +0 -98
  26. package/dist/commonjs/commands/dev.d.ts +0 -21
  27. package/dist/commonjs/commands/dev.js +0 -101
  28. package/dist/commonjs/commands/test.d.ts +0 -23
  29. package/dist/commonjs/commands/test.js +0 -222
  30. package/dist/commonjs/index.d.ts +0 -7
  31. package/dist/commonjs/index.js +0 -30
  32. package/dist/commonjs/package.json +0 -3
  33. package/dist/commonjs/types.d.ts +0 -9
  34. package/dist/commonjs/types.js +0 -3
  35. package/dist/commonjs/utils.d.ts +0 -4
  36. package/dist/commonjs/utils.js +0 -45
  37. package/dist/esm/baseCommand.d.ts +0 -49
  38. package/dist/esm/baseCommand.js +0 -366
  39. package/dist/esm/commands/cov.d.ts +0 -22
  40. package/dist/esm/commands/cov.js +0 -92
  41. package/dist/esm/commands/dev.d.ts +0 -21
  42. package/dist/esm/commands/dev.js +0 -98
  43. package/dist/esm/commands/test.d.ts +0 -23
  44. package/dist/esm/commands/test.js +0 -216
  45. package/dist/esm/index.d.ts +0 -7
  46. package/dist/esm/index.js +0 -8
  47. package/dist/esm/package.json +0 -3
  48. package/dist/esm/types.d.ts +0 -9
  49. package/dist/esm/types.js +0 -2
  50. package/dist/esm/utils.d.ts +0 -4
  51. package/dist/esm/utils.js +0 -36
  52. package/dist/package.json +0 -4
  53. package/src/baseCommand.ts +0 -395
  54. package/src/commands/cov.ts +0 -101
  55. package/src/commands/dev.ts +0 -106
  56. package/src/commands/test.ts +0 -236
  57. package/src/index.ts +0 -9
  58. package/src/utils.ts +0 -37
@@ -1,374 +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
- exports.BaseCommand = exports.ForkError = void 0;
7
- const node_util_1 = require("node:util");
8
- const node_url_1 = require("node:url");
9
- const node_path_1 = __importDefault(require("node:path"));
10
- const node_os_1 = __importDefault(require("node:os"));
11
- const node_child_process_1 = require("node:child_process");
12
- const core_1 = require("@oclif/core");
13
- const utils_1 = require("@eggjs/utils");
14
- const runscript_1 = require("runscript");
15
- const utils_js_1 = require("./utils.js");
16
- const debug = (0, node_util_1.debuglog)('@eggjs/bin/baseCommand');
17
- // only hook once and only when ever start any child.
18
- const children = new Set();
19
- let hadHook = false;
20
- function graceful(proc) {
21
- // save child ref
22
- children.add(proc);
23
- // only hook once
24
- /* c8 ignore else */
25
- if (!hadHook) {
26
- hadHook = true;
27
- let signal;
28
- ['SIGINT', 'SIGQUIT', 'SIGTERM'].forEach(event => {
29
- process.once(event, () => {
30
- signal = event;
31
- process.exit(0);
32
- });
33
- });
34
- process.once('exit', (code) => {
35
- for (const child of children) {
36
- debug('process exit code: %o, kill child %o with %o', code, child.pid, signal);
37
- child.kill(signal);
38
- }
39
- });
40
- }
41
- }
42
- class ForkError extends Error {
43
- code;
44
- constructor(message, code) {
45
- super(message);
46
- this.code = code;
47
- }
48
- }
49
- exports.ForkError = ForkError;
50
- class BaseCommand extends core_1.Command {
51
- // add the --json flag
52
- static enableJsonFlag = false;
53
- // define flags that can be inherited by any command that extends BaseCommand
54
- static baseFlags = {
55
- // 'log-level': Flags.option({
56
- // default: 'info',
57
- // helpGroup: 'GLOBAL',
58
- // options: ['debug', 'warn', 'error', 'info', 'trace'] as const,
59
- // summary: 'Specify level for logging.',
60
- // })(),
61
- 'dry-run': core_1.Flags.boolean({
62
- default: false,
63
- helpGroup: 'GLOBAL',
64
- summary: 'whether show full command script only',
65
- char: 'd',
66
- }),
67
- require: core_1.Flags.string({
68
- helpGroup: 'GLOBAL',
69
- summary: 'require the given module',
70
- char: 'r',
71
- multiple: true,
72
- }),
73
- import: core_1.Flags.string({
74
- helpGroup: 'GLOBAL',
75
- summary: 'import the given module, only work on ESM',
76
- multiple: true,
77
- }),
78
- base: core_1.Flags.string({
79
- helpGroup: 'GLOBAL',
80
- summary: 'directory of application',
81
- aliases: ['baseDir'],
82
- default: process.cwd(),
83
- }),
84
- tscompiler: core_1.Flags.string({
85
- helpGroup: 'GLOBAL',
86
- summary: 'TypeScript compiler, like ts-node/register',
87
- aliases: ['tsc'],
88
- }),
89
- // flag with no value (--typescript)
90
- typescript: core_1.Flags.boolean({
91
- helpGroup: 'GLOBAL',
92
- description: '[default: true] use TypeScript to run the test',
93
- allowNo: true,
94
- }),
95
- ts: core_1.Flags.string({
96
- helpGroup: 'GLOBAL',
97
- description: 'shortcut for --typescript, e.g.: --ts=false',
98
- options: ['true', 'false'],
99
- }),
100
- javascript: core_1.Flags.boolean({
101
- helpGroup: 'GLOBAL',
102
- description: 'use JavaScript to run the test',
103
- aliases: ['js'],
104
- }),
105
- declarations: core_1.Flags.boolean({
106
- helpGroup: 'GLOBAL',
107
- description: 'whether create typings, will add `--require egg-ts-helper/register`',
108
- aliases: ['dts'],
109
- }),
110
- // https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#--inspect-brkhostport
111
- inspect: core_1.Flags.boolean({
112
- helpGroup: 'GLOBAL',
113
- description: 'Activate inspector',
114
- }),
115
- 'inspect-brk': core_1.Flags.boolean({
116
- helpGroup: 'GLOBAL',
117
- description: 'Activate inspector and break at start of user script',
118
- }),
119
- };
120
- flags;
121
- args;
122
- env = { ...process.env };
123
- pkg;
124
- isESM;
125
- pkgEgg;
126
- globalExecArgv = [];
127
- async init() {
128
- await super.init();
129
- debug('[init] raw args: %o, NODE_ENV: %o', this.argv, this.env.NODE_ENV);
130
- const { args, flags } = await this.parse({
131
- flags: this.ctor.flags,
132
- baseFlags: super.ctor.baseFlags,
133
- enableJsonFlag: this.ctor.enableJsonFlag,
134
- args: this.ctor.args,
135
- strict: this.ctor.strict,
136
- });
137
- this.flags = flags;
138
- this.args = args;
139
- await this.#afterInit();
140
- }
141
- async #afterInit() {
142
- const { args, flags } = this;
143
- debug('before: args: %o, flags: %o', args, flags);
144
- if (!node_path_1.default.isAbsolute(flags.base)) {
145
- flags.base = node_path_1.default.join(process.cwd(), flags.base);
146
- }
147
- const pkg = await (0, utils_js_1.readPackageJSON)(flags.base);
148
- this.pkg = pkg;
149
- this.pkgEgg = pkg.egg ?? {};
150
- flags.tscompiler = flags.tscompiler ?? this.env.TS_COMPILER ?? this.pkgEgg.tscompiler;
151
- let typescript = flags.typescript;
152
- // keep compatible with old ts flag: `--ts=true` or `--ts=false`
153
- if (flags.ts === 'true') {
154
- typescript = true;
155
- }
156
- else if (flags.ts === 'false') {
157
- typescript = false;
158
- }
159
- if (typescript === undefined) {
160
- // try to ready EGG_TYPESCRIPT env first, only accept 'true' or 'false' string
161
- if (this.env.EGG_TYPESCRIPT === 'false') {
162
- typescript = false;
163
- debug('detect typescript=%o from EGG_TYPESCRIPT=%o', false, this.env.EGG_TYPESCRIPT);
164
- }
165
- else if (this.env.EGG_TYPESCRIPT === 'true') {
166
- typescript = true;
167
- debug('detect typescript=%o from EGG_TYPESCRIPT=%o', true, this.env.EGG_TYPESCRIPT);
168
- }
169
- else if (typeof this.pkgEgg.typescript === 'boolean') {
170
- // read `egg.typescript` from package.json if not pass argv
171
- typescript = this.pkgEgg.typescript;
172
- debug('detect typescript=%o from pkg.egg.typescript=%o', typescript, this.pkgEgg.typescript);
173
- }
174
- else if (pkg.dependencies?.typescript) {
175
- // auto detect pkg.dependencies.typescript or pkg.devDependencies.typescript
176
- typescript = true;
177
- debug('detect typescript=%o from pkg.dependencies.typescript=%o', true, pkg.dependencies.typescript);
178
- }
179
- else if (pkg.devDependencies?.typescript) {
180
- typescript = true;
181
- debug('detect typescript=%o from pkg.devDependencies.typescript=%o', true, pkg.devDependencies.typescript);
182
- }
183
- else if (await (0, utils_js_1.hasTsConfig)(flags.base)) {
184
- // tsconfig.json exists
185
- typescript = true;
186
- debug('detect typescript=%o cause tsconfig.json exists', true);
187
- }
188
- else if (flags.tscompiler) {
189
- typescript = true;
190
- debug('detect typescript=%o from --tscompiler=%o', true, flags.tscompiler);
191
- }
192
- }
193
- flags.typescript = typescript;
194
- let rootDir = node_path_1.default.dirname((0, utils_js_1.getSourceDirname)());
195
- if (node_path_1.default.basename(rootDir) === 'dist') {
196
- rootDir = node_path_1.default.dirname(rootDir);
197
- }
198
- // try app baseDir first on custom tscompiler
199
- // then try to find tscompiler in @eggjs/bin/node_modules
200
- const findPaths = [flags.base, rootDir];
201
- this.isESM = pkg.type === 'module';
202
- if (typescript) {
203
- flags.tscompiler = flags.tscompiler ?? 'ts-node/register';
204
- const tsNodeRegister = (0, utils_1.importResolve)(flags.tscompiler, {
205
- paths: findPaths,
206
- });
207
- flags.tscompiler = tsNodeRegister;
208
- // should require tsNodeRegister on current process, let it can require *.ts files
209
- // e.g.: dev command will execute egg loader to find configs and plugins
210
- // await importModule(tsNodeRegister);
211
- // let child process auto require ts-node too
212
- this.addNodeOptions(this.formatImportModule(tsNodeRegister));
213
- // tell egg loader to load ts file
214
- // see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L443
215
- this.env.EGG_TYPESCRIPT = 'true';
216
- // set current process.env.EGG_TYPESCRIPT too
217
- process.env.EGG_TYPESCRIPT = 'true';
218
- // load files from tsconfig on startup
219
- this.env.TS_NODE_FILES = process.env.TS_NODE_FILES ?? 'true';
220
- // keep same logic with egg-core, test cmd load files need it
221
- // see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L49
222
- const tsConfigPathsRegister = (0, utils_1.importResolve)('tsconfig-paths/register', {
223
- paths: findPaths,
224
- });
225
- this.addNodeOptions(this.formatImportModule(tsConfigPathsRegister));
226
- }
227
- if (this.isESM) {
228
- // use ts-node/esm loader on esm
229
- let esmLoader = (0, utils_1.importResolve)('ts-node/esm', {
230
- paths: findPaths,
231
- });
232
- // ES Module loading with absolute path fails on windows
233
- // https://github.com/nodejs/node/issues/31710#issuecomment-583916239
234
- // https://nodejs.org/api/url.html#url_url_pathtofileurl_path
235
- // Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'd:'
236
- esmLoader = (0, node_url_1.pathToFileURL)(esmLoader).href;
237
- // wait for https://github.com/nodejs/node/issues/40940
238
- this.addNodeOptions('--no-warnings');
239
- this.addNodeOptions(`--loader ${esmLoader}`);
240
- }
241
- if (flags.declarations === undefined) {
242
- if (typeof this.pkgEgg.declarations === 'boolean') {
243
- // read `egg.declarations` from package.json if not pass argv
244
- flags.declarations = this.pkgEgg.declarations;
245
- debug('detect declarations from pkg.egg.declarations=%o', this.pkgEgg.declarations);
246
- }
247
- }
248
- if (flags.declarations) {
249
- const etsBin = (0, utils_1.importResolve)('egg-ts-helper/dist/bin', {
250
- paths: findPaths,
251
- });
252
- debug('run ets first: %o', etsBin);
253
- await (0, runscript_1.runScript)(`node "${etsBin}"`);
254
- }
255
- if (this.pkgEgg.revert) {
256
- const reverts = Array.isArray(this.pkgEgg.revert) ? this.pkgEgg.revert : [this.pkgEgg.revert];
257
- for (const revert of reverts) {
258
- this.globalExecArgv.push(`--security-revert=${revert}`);
259
- }
260
- }
261
- let hasInspectOption = false;
262
- if (flags.inspect) {
263
- this.addNodeOptions('--inspect');
264
- hasInspectOption = true;
265
- }
266
- if (flags['inspect-brk']) {
267
- this.addNodeOptions('--inspect-brk');
268
- hasInspectOption = true;
269
- }
270
- if (hasInspectOption) {
271
- Reflect.set(flags, 'timeout', 0);
272
- debug('set timeout = 0 when inspect enable');
273
- }
274
- else if (this.env.JB_DEBUG_FILE) {
275
- // others like WebStorm 2019 will pass NODE_OPTIONS, and @eggjs/bin itself will be debug, so could detect `process.env.JB_DEBUG_FILE`.
276
- Reflect.set(flags, 'timeout', 0);
277
- debug('set timeout = false when process.env.JB_DEBUG_FILE=%o', this.env.JB_DEBUG_FILE);
278
- }
279
- debug('baseDir: %o, isESM: %o', flags.base, this.isESM);
280
- debug('set NODE_OPTIONS: %o', this.env.NODE_OPTIONS);
281
- debug('after: args: %o, flags: %o', args, flags);
282
- debug('enter real command: %o', this.id);
283
- }
284
- async catch(err) {
285
- // add any custom logic to handle errors from the command
286
- // or simply return the parent class error handling
287
- return super.catch(err);
288
- }
289
- async finally(_) {
290
- // called after run and catch regardless of whether or not the command errored
291
- return super.finally(_);
292
- }
293
- async formatRequires() {
294
- const requires = this.flags.require ?? [];
295
- const imports = this.flags.import ?? [];
296
- let eggRequires = this.pkgEgg.require ?? [];
297
- if (typeof eggRequires === 'string') {
298
- eggRequires = [eggRequires];
299
- }
300
- let eggImports = this.pkgEgg.import ?? [];
301
- if (typeof eggImports === 'string') {
302
- eggImports = [eggImports];
303
- }
304
- return [
305
- ...requires,
306
- ...imports,
307
- ...eggRequires,
308
- ...eggImports,
309
- ];
310
- }
311
- formatImportModule(modulePath) {
312
- if (this.isESM) {
313
- return `--import "${(0, node_url_1.pathToFileURL)(modulePath).href}"`;
314
- }
315
- if (node_os_1.default.platform() === 'win32') {
316
- // windows path need to escape backslash: `node --require "C:\\path\\to\\module"`
317
- return `--require "${node_path_1.default.win32.normalize(modulePath).replace(/\\/g, '\\\\')}"`;
318
- }
319
- return `--require "${modulePath}"`;
320
- }
321
- addNodeOptions(options) {
322
- if (this.env.NODE_OPTIONS) {
323
- if (!this.env.NODE_OPTIONS.includes(options)) {
324
- this.env.NODE_OPTIONS = `${this.env.NODE_OPTIONS} ${options}`;
325
- }
326
- }
327
- else {
328
- this.env.NODE_OPTIONS = options;
329
- }
330
- }
331
- async forkNode(modulePath, forkArgs, options = {}) {
332
- const env = {
333
- ...this.env,
334
- ...options.env,
335
- };
336
- const forkExecArgv = [
337
- ...this.globalExecArgv,
338
- ...options.execArgv || [],
339
- ];
340
- const NODE_OPTIONS = env.NODE_OPTIONS ? `NODE_OPTIONS='${env.NODE_OPTIONS}' ` : '';
341
- const forkExecArgvString = forkExecArgv.length ? ' ' + forkExecArgv.join(' ') + ' ' : ' ';
342
- const forkArgsString = forkArgs.map(a => `'${a}'`).join(' ');
343
- const fullCommand = `${NODE_OPTIONS}${process.execPath}${forkExecArgvString}${modulePath} ${forkArgsString}`;
344
- if (options.dryRun) {
345
- console.log('dry run: $ %s', fullCommand);
346
- return;
347
- }
348
- options = {
349
- stdio: 'inherit',
350
- env,
351
- cwd: this.flags.base,
352
- ...options,
353
- execArgv: forkExecArgv,
354
- };
355
- const proc = (0, node_child_process_1.fork)(modulePath, forkArgs, options);
356
- debug('Run fork pid: %o\n\n$ %s\n\n', proc.pid, fullCommand);
357
- graceful(proc);
358
- return new Promise((resolve, reject) => {
359
- proc.once('exit', code => {
360
- debug('fork pid: %o exit code %o', proc.pid, code);
361
- children.delete(proc);
362
- if (code !== 0) {
363
- const err = new ForkError(modulePath + ' ' + forkArgs.join(' ') + ' exit with code ' + code, code);
364
- reject(err);
365
- }
366
- else {
367
- resolve();
368
- }
369
- });
370
- });
371
- }
372
- }
373
- exports.BaseCommand = BaseCommand;
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZUNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXFDO0FBQ3JDLHVDQUF5QztBQUN6QywwREFBNkI7QUFDN0Isc0RBQXlCO0FBQ3pCLDJEQUFxRTtBQUNyRSxzQ0FBeUQ7QUFDekQsd0NBQTZDO0FBQzdDLHlDQUFzQztBQUN0Qyx5Q0FHb0I7QUFHcEIsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFakQscURBQXFEO0FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0FBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixTQUFTLFFBQVEsQ0FBQyxJQUFrQjtJQUNsQyxpQkFBaUI7SUFDakIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLE1BQXNCLENBQUM7UUFDM0IsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLE1BQU0sR0FBRyxLQUF1QixDQUFDO2dCQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BDLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLEtBQUssQ0FB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
@@ -1,22 +0,0 @@
1
- import Test from './test.js';
2
- import { ForkNodeOptions } from '../baseCommand.js';
3
- export default class Cov<T extends typeof Cov> extends Test<T> {
4
- static description: string;
5
- static examples: string[];
6
- static flags: {
7
- prerequire: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- exclude: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- c8: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
- bail: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
- 'no-timeout': import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- grep: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- changed: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- mochawesome: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- parallel: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
- jobs: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
18
- 'auto-agent': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
- };
20
- protected get defaultExcludes(): string[];
21
- protected forkNode(modulePath: string, forkArgs: string[], options?: ForkNodeOptions): Promise<void>;
22
- }
@@ -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 core_1 = require("@oclif/core");
9
- const test_js_1 = __importDefault(require("./test.js"));
10
- const utils_1 = require("@eggjs/utils");
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-ignore
13
- class Cov extends test_js_1.default {
14
- static description = 'Run the test with coverage';
15
- static examples = [
16
- '<%= config.bin %> <%= command.id %>',
17
- '<%= config.bin %> <%= command.id %> test/index.test.ts',
18
- '<%= config.bin %> <%= command.id %> test/index.test.ts,test/user.test.ts,...',
19
- ];
20
- static flags = {
21
- ...test_js_1.default.flags,
22
- // will use on egg-mock https://github.com/eggjs/egg-mock/blob/84a64bd19d0569ec94664c898fb1b28367b95d60/index.js#L7
23
- prerequire: core_1.Flags.boolean({
24
- description: 'prerequire files for coverage instrument',
25
- }),
26
- exclude: core_1.Flags.string({
27
- description: 'coverage ignore, one or more files patterns`',
28
- multiple: true,
29
- char: 'x',
30
- }),
31
- c8: core_1.Flags.string({
32
- description: 'c8 instruments passthrough`',
33
- default: '--temp-directory node_modules/.c8_output -r text-summary -r json-summary -r json -r lcov -r cobertura',
34
- }),
35
- };
36
- get defaultExcludes() {
37
- return [
38
- 'example/',
39
- 'examples/',
40
- 'mocks**/',
41
- 'docs/',
42
- // https://github.com/JaKXz/test-exclude/blob/620a7be412d4fc2070d50f0f63e3228314066fc9/index.js#L73
43
- 'test/**',
44
- 'test{,-*}.js',
45
- '**/*.test.js',
46
- '**/__tests__/**',
47
- '**/node_modules/**',
48
- 'typings',
49
- '**/*.d.ts',
50
- ];
51
- }
52
- async forkNode(modulePath, forkArgs, options = {}) {
53
- const { flags } = this;
54
- if (flags.prerequire) {
55
- this.env.EGG_BIN_PREREQUIRE = 'true';
56
- }
57
- // add c8 args
58
- // https://github.com/eggjs/egg/issues/3930
59
- const c8Args = [
60
- // '--show-process-tree',
61
- ...flags.c8.split(' ').filter(a => a.trim()),
62
- ];
63
- if (flags.typescript) {
64
- this.env.SPAWN_WRAP_SHIM_ROOT = node_path_1.default.join(flags.base, 'node_modules');
65
- c8Args.push('--extension');
66
- c8Args.push('.ts');
67
- }
68
- const excludes = new Set([
69
- ...process.env.COV_EXCLUDES?.split(',') ?? [],
70
- ...this.defaultExcludes,
71
- ...Array.from(flags.exclude ?? []),
72
- ]);
73
- for (const exclude of excludes) {
74
- c8Args.push('-x');
75
- c8Args.push(exclude);
76
- }
77
- const c8File = (0, utils_1.importResolve)('c8/bin/c8.js');
78
- const outputDir = node_path_1.default.join(flags.base, 'node_modules/.c8_output');
79
- await promises_1.default.rm(outputDir, { force: true, recursive: true });
80
- const coverageDir = node_path_1.default.join(flags.base, 'coverage');
81
- await promises_1.default.rm(coverageDir, { force: true, recursive: true });
82
- const execArgv = [
83
- ...this.globalExecArgv,
84
- ...options.execArgv || [],
85
- ];
86
- this.globalExecArgv = [];
87
- // $ c8 node mocha
88
- await super.forkNode(c8File, [
89
- ...c8Args,
90
- process.execPath,
91
- ...execArgv,
92
- modulePath,
93
- ...forkArgs,
94
- ]);
95
- }
96
- }
97
- exports.default = Cov;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Nvdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUE2QjtBQUM3QixnRUFBa0M7QUFDbEMsc0NBQW9DO0FBQ3BDLHdEQUE2QjtBQUM3Qix3Q0FBNkM7QUFHN0MsNkRBQTZEO0FBQzdELGFBQWE7QUFDYixNQUFxQixHQUEwQixTQUFRLGlCQUFPO0lBQzVELE1BQU0sQ0FBVSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7SUFFM0QsTUFBTSxDQUFVLFFBQVEsR0FBRztRQUN6QixxQ0FBcUM7UUFDckMsd0RBQXdEO1FBQ3hELDhFQUE4RTtLQUMvRSxDQUFDO0lBRUYsTUFBTSxDQUFVLEtBQUssR0FBRztRQUN0QixHQUFHLGlCQUFJLENBQUMsS0FBSztRQUNiLG1IQUFtSDtRQUNuSCxVQUFVLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztZQUN4QixXQUFXLEVBQUUsMENBQTBDO1NBQ3hELENBQUM7UUFDRixPQUFPLEVBQUUsWUFBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQixXQUFXLEVBQUUsOENBQThDO1lBQzNELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLEdBQUc7U0FDVixDQUFDO1FBQ0YsRUFBRSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7WUFDZixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSx1R0FBdUc7U0FDakgsQ0FBQztLQUNILENBQUM7SUFFRixJQUFjLGVBQWU7UUFDM0IsT0FBTztZQUNMLFVBQVU7WUFDVixXQUFXO1lBQ1gsVUFBVTtZQUNWLE9BQU87WUFDUCxtR0FBbUc7WUFDbkcsU0FBUztZQUNULGNBQWM7WUFDZCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixTQUFTO1lBQ1QsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBa0IsRUFBRSxRQUFrQixFQUFFLFVBQTJCLEVBQUU7UUFDckcsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUN2QyxDQUFDO1FBRUQsY0FBYztRQUNkLDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRztZQUNiLHlCQUF5QjtZQUN6QixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM3QyxDQUFDO1FBQ0YsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDdkIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtZQUM3QyxHQUFHLElBQUksQ0FBQyxlQUFlO1lBQ3ZCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUNuQyxDQUFDLENBQUM7UUFDSCxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBYSxFQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUNuRSxNQUFNLGtCQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGtCQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0QsTUFBTSxRQUFRLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQ3RCLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1NBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV6QixrQkFBa0I7UUFDbEIsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzQixHQUFHLE1BQU07WUFDVCxPQUFPLENBQUMsUUFBUTtZQUNoQixHQUFHLFFBQVE7WUFDWCxVQUFVO1lBQ1YsR0FBRyxRQUFRO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExRkgsc0JBMkZDIn0=
@@ -1,21 +0,0 @@
1
- import { BaseCommand } from '../baseCommand.js';
2
- export default class Dev<T extends typeof Dev> extends BaseCommand<T> {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- port: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
- workers: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
8
- framework: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- sticky: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- };
11
- run(): Promise<void>;
12
- protected formatEggStartOptions(): Promise<{
13
- baseDir: string;
14
- workers: number;
15
- port: number;
16
- framework: string;
17
- typescript: boolean;
18
- tscompiler: string | undefined;
19
- sticky: boolean;
20
- }>;
21
- }
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const node_util_1 = require("node:util");
4
- const core_1 = require("@oclif/core");
5
- const utils_1 = require("@eggjs/utils");
6
- const detect_port_1 = require("detect-port");
7
- const utils_js_1 = require("../utils.js");
8
- const baseCommand_js_1 = require("../baseCommand.js");
9
- const debug = (0, node_util_1.debuglog)('@eggjs/bin/commands/dev');
10
- class Dev extends baseCommand_js_1.BaseCommand {
11
- static description = 'Start server at local dev mode';
12
- static examples = [
13
- '<%= config.bin %> <%= command.id %>',
14
- ];
15
- static flags = {
16
- port: core_1.Flags.integer({
17
- description: 'listening port, default to 7001',
18
- char: 'p',
19
- }),
20
- workers: core_1.Flags.integer({
21
- char: 'c',
22
- aliases: ['cluster'],
23
- description: 'numbers of app workers',
24
- default: 1,
25
- }),
26
- framework: core_1.Flags.string({
27
- description: 'specify framework that can be absolute path or npm package, default is "egg"',
28
- }),
29
- sticky: core_1.Flags.boolean({
30
- description: 'start a sticky cluster server',
31
- }),
32
- };
33
- async run() {
34
- debug('NODE_ENV: %o', this.env);
35
- this.env.NODE_ENV = this.env.NODE_ENV ?? 'development';
36
- this.env.EGG_MASTER_CLOSE_TIMEOUT = '1000';
37
- const ext = this.isESM ? 'mjs' : 'cjs';
38
- const serverBin = (0, utils_js_1.getSourceFilename)(`../scripts/start-cluster.${ext}`);
39
- const eggStartOptions = await this.formatEggStartOptions();
40
- const args = [JSON.stringify(eggStartOptions)];
41
- const requires = await this.formatRequires();
42
- const execArgv = [];
43
- for (const r of requires) {
44
- const module = this.formatImportModule(r);
45
- // Remove the quotes from the path
46
- // --require "module path" -> ['--require', 'module path']
47
- // --import "module path" -> ['--import', 'module path']
48
- const splitIndex = module.indexOf(' ');
49
- if (splitIndex !== -1) {
50
- execArgv.push(module.slice(0, splitIndex), module.slice(splitIndex + 2, -1));
51
- }
52
- }
53
- await this.forkNode(serverBin, args, { execArgv });
54
- }
55
- async formatEggStartOptions() {
56
- const { flags } = this;
57
- flags.framework = (0, utils_1.getFrameworkPath)({
58
- framework: flags.framework,
59
- baseDir: flags.base,
60
- });
61
- if (!flags.port) {
62
- let configuredPort;
63
- try {
64
- const configuration = await (0, utils_1.getConfig)({
65
- framework: flags.framework,
66
- baseDir: flags.base,
67
- env: 'local',
68
- });
69
- configuredPort = configuration?.cluster?.listen?.port;
70
- }
71
- catch (err) {
72
- /** skip when failing to read the configuration */
73
- debug('getConfig error: %s, framework: %o, baseDir: %o, env: local', err, flags.framework, flags.base);
74
- }
75
- if (configuredPort) {
76
- flags.port = configuredPort;
77
- debug(`use port ${flags.port} from configuration file`);
78
- }
79
- else {
80
- const defaultPort = parseInt(process.env.EGG_BIN_DEFAULT_PORT ?? '7001');
81
- debug('detect available port');
82
- flags.port = await (0, detect_port_1.detect)(defaultPort);
83
- if (flags.port !== defaultPort) {
84
- console.warn('[@eggjs/bin] server port %o is unavailable, now using port %o', defaultPort, flags.port);
85
- }
86
- debug(`use available port ${flags.port}`);
87
- }
88
- }
89
- return {
90
- baseDir: flags.base,
91
- workers: flags.workers,
92
- port: flags.port,
93
- framework: flags.framework,
94
- typescript: flags.typescript,
95
- tscompiler: flags.tscompiler,
96
- sticky: flags.sticky,
97
- };
98
- }
99
- }
100
- exports.default = Dev;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFxQztBQUNyQyxzQ0FBb0M7QUFDcEMsd0NBQTJEO0FBQzNELDZDQUFxQztBQUNyQywwQ0FBZ0Q7QUFDaEQsc0RBQWdEO0FBRWhELE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRWxELE1BQXFCLEdBQTBCLFNBQVEsNEJBQWM7SUFDbkUsTUFBTSxDQUFVLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztJQUUvRCxNQUFNLENBQVUsUUFBUSxHQUFHO1FBQ3pCLHFDQUFxQztLQUN0QyxDQUFDO0lBRUYsTUFBTSxDQUFVLEtBQUssR0FBRztRQUN0QixJQUFJLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQixXQUFXLEVBQUUsaUNBQWlDO1lBQzlDLElBQUksRUFBRSxHQUFHO1NBQ1YsQ0FBQztRQUNGLE9BQU8sRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3JCLElBQUksRUFBRSxHQUFHO1lBQ1QsT0FBTyxFQUFFLENBQUUsU0FBUyxDQUFFO1lBQ3RCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBQ0YsU0FBUyxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEIsV0FBVyxFQUFFLDhFQUE4RTtTQUM1RixDQUFDO1FBQ0YsTUFBTSxFQUFFLFlBQUssQ0FBQyxPQUFPLENBQUM7WUFDcEIsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDO0tBQ0gsQ0FBQztJQUVLLEtBQUssQ0FBQyxHQUFHO1FBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUks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