@eggjs/bin 7.0.0-beta.4 → 7.0.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 (82) hide show
  1. package/README.md +5 -10
  2. package/bin/dev.js +6 -4
  3. package/bin/run.js +2 -2
  4. package/dist/commonjs/baseCommand.d.ts +49 -0
  5. package/dist/commonjs/baseCommand.js +370 -0
  6. package/dist/commonjs/commands/cov.d.ts +22 -0
  7. package/dist/commonjs/commands/cov.js +97 -0
  8. package/dist/commonjs/commands/dev.d.ts +21 -0
  9. package/dist/commonjs/commands/dev.js +95 -0
  10. package/dist/commonjs/commands/test.d.ts +23 -0
  11. package/dist/commonjs/commands/test.js +204 -0
  12. package/dist/commonjs/index.d.ts +7 -0
  13. package/dist/commonjs/index.js +30 -0
  14. package/dist/commonjs/package.json +3 -0
  15. package/dist/commonjs/types.d.ts +9 -0
  16. package/dist/commonjs/types.js +3 -0
  17. package/dist/commonjs/utils.d.ts +4 -0
  18. package/dist/commonjs/utils.js +45 -0
  19. package/dist/esm/baseCommand.d.ts +33 -6
  20. package/dist/esm/baseCommand.js +246 -40
  21. package/dist/esm/commands/cov.d.ts +17 -8
  22. package/dist/esm/commands/cov.js +83 -17
  23. package/dist/esm/commands/dev.d.ts +15 -7
  24. package/dist/esm/commands/dev.js +83 -16
  25. package/dist/esm/commands/test.d.ts +11 -5
  26. package/dist/esm/commands/test.js +89 -51
  27. package/dist/esm/index.d.ts +7 -5
  28. package/dist/esm/index.js +8 -6
  29. package/dist/esm/types.d.ts +9 -0
  30. package/dist/esm/types.js +2 -0
  31. package/dist/esm/utils.d.ts +0 -1
  32. package/dist/esm/utils.js +1 -11
  33. package/dist/package.json +1 -1
  34. package/dist/scripts/start-cluster.cjs +15 -0
  35. package/package.json +12 -28
  36. package/scripts/start-cluster.cjs +15 -0
  37. package/src/baseCommand.ts +254 -43
  38. package/src/commands/cov.ts +87 -17
  39. package/src/commands/dev.ts +84 -15
  40. package/src/commands/test.ts +92 -51
  41. package/src/index.ts +9 -5
  42. package/src/types.ts +9 -0
  43. package/src/utils.ts +0 -10
  44. package/dist/esm/bin/cli.d.ts +0 -2
  45. package/dist/esm/bin/cli.js +0 -34
  46. package/dist/esm/cmd/base.d.ts +0 -12
  47. package/dist/esm/cmd/base.js +0 -135
  48. package/dist/esm/cmd/cov.d.ts +0 -8
  49. package/dist/esm/cmd/cov.js +0 -103
  50. package/dist/esm/cmd/debug.d.ts +0 -5
  51. package/dist/esm/cmd/debug.js +0 -28
  52. package/dist/esm/cmd/dev.d.ts +0 -17
  53. package/dist/esm/cmd/dev.js +0 -118
  54. package/dist/esm/cmd/test.d.ts +0 -15
  55. package/dist/esm/cmd/test.js +0 -237
  56. package/dist/esm/commands/debug.d.ts +0 -13
  57. package/dist/esm/commands/debug.js +0 -25
  58. package/dist/esm/config/framework.d.ts +0 -4
  59. package/dist/esm/config/framework.js +0 -4
  60. package/dist/esm/config/plugin.d.ts +0 -11
  61. package/dist/esm/config/plugin.js +0 -11
  62. package/dist/esm/hooks/init/options.d.ts +0 -3
  63. package/dist/esm/hooks/init/options.js +0 -5
  64. package/dist/esm/middleware/global_options.d.ts +0 -5
  65. package/dist/esm/middleware/global_options.js +0 -182
  66. package/dist/esm/middleware/handle_error.d.ts +0 -5
  67. package/dist/esm/middleware/handle_error.js +0 -47
  68. package/dist/esm/middleware/inspect.d.ts +0 -5
  69. package/dist/esm/middleware/inspect.js +0 -69
  70. package/src/bin/cli.ts +0 -37
  71. package/src/cmd/base.ts +0 -133
  72. package/src/cmd/cov.ts +0 -89
  73. package/src/cmd/debug.ts +0 -14
  74. package/src/cmd/dev.ts +0 -102
  75. package/src/cmd/test.ts +0 -219
  76. package/src/commands/debug.ts +0 -30
  77. package/src/config/framework.ts +0 -3
  78. package/src/config/plugin.ts +0 -10
  79. package/src/hooks/init/options.ts +0 -7
  80. package/src/middleware/global_options.ts +0 -169
  81. package/src/middleware/handle_error.ts +0 -30
  82. package/src/middleware/inspect.ts +0 -54
@@ -0,0 +1,21 @@
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
+ }
@@ -0,0 +1,95 @@
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 imports = this.formatImportModule(r).split(' ');
45
+ execArgv.push(...imports);
46
+ }
47
+ await this.forkNode(serverBin, args, { execArgv });
48
+ }
49
+ async formatEggStartOptions() {
50
+ const { flags } = this;
51
+ flags.framework = (0, utils_1.getFrameworkPath)({
52
+ framework: flags.framework,
53
+ baseDir: flags.base,
54
+ });
55
+ if (!flags.port) {
56
+ let configuredPort;
57
+ try {
58
+ const configuration = await (0, utils_1.getConfig)({
59
+ framework: flags.framework,
60
+ baseDir: flags.base,
61
+ env: 'local',
62
+ });
63
+ configuredPort = configuration?.cluster?.listen?.port;
64
+ }
65
+ catch (err) {
66
+ /** skip when failing to read the configuration */
67
+ debug('getConfig error: %s, framework: %o, baseDir: %o, env: local', err, flags.framework, flags.base);
68
+ }
69
+ if (configuredPort) {
70
+ flags.port = configuredPort;
71
+ debug(`use port ${flags.port} from configuration file`);
72
+ }
73
+ else {
74
+ const defaultPort = parseInt(process.env.EGG_BIN_DEFAULT_PORT ?? '7001');
75
+ debug('detect available port');
76
+ flags.port = await (0, detect_port_1.detect)(defaultPort);
77
+ if (flags.port !== defaultPort) {
78
+ console.warn('[@eggjs/bin] server port %o is unavailable, now using port %o', defaultPort, flags.port);
79
+ }
80
+ debug(`use available port ${flags.port}`);
81
+ }
82
+ }
83
+ return {
84
+ baseDir: flags.base,
85
+ workers: flags.workers,
86
+ port: flags.port,
87
+ framework: flags.framework,
88
+ typescript: flags.typescript,
89
+ tscompiler: flags.tscompiler,
90
+ sticky: flags.sticky,
91
+ };
92
+ }
93
+ }
94
+ exports.default = Dev;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFxQztBQUNyQyxzQ0FBb0M7QUFDcEMsd0NBQTJEO0FBQzNELDZDQUFxQztBQUNyQywwQ0FBZ0Q7QUFDaEQsc0RBQWdEO0FBRWhELE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRWxELE1BQXFCLEdBQTBCLFNBQVEsNEJBQWM7SUFDbkUsTUFBTSxDQUFVLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztJQUUvRCxNQUFNLENBQVUsUUFBUSxHQUFHO1FBQ3pCLHFDQUFxQztLQUN0QyxDQUFDO0lBRUYsTUFBTSxDQUFVLEtBQUssR0FBRztRQUN0QixJQUFJLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQixXQUFXLEVBQUUsaUNBQWlDO1lBQzlDLElBQUksRUFBRSxHQUFHO1NBQ1YsQ0FBQztRQUNGLE9BQU8sRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3JCLElBQUksRUFBRSxHQUFHO1lBQ1QsT0FBTyxFQUFFLENBQUUsU0FBUyxDQUFFO1lBQ3RCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBQ0YsU0FBUyxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEIsV0FBVyxFQUFFLDhFQUE4RTtTQUM1RixDQUFDO1FBQ0YsTUFBTSxFQUFFLFlBQUssQ0FBQyxPQUFPLENBQUM7WUFDcEIsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDO0tBQ0gsQ0FBQztJQUVLLEtBQUssQ0FBQyxHQUFHO1FBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUks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
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../baseCommand.js';
2
+ export default class Test<T extends typeof Test> extends BaseCommand<T> {
3
+ static args: {
4
+ file: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ bail: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'no-timeout': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ grep: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ changed: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ mochawesome: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ parallel: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ jobs: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'auto-agent': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ protected runMocha(mochaFile: string, mochaArgs: string[]): Promise<void>;
21
+ protected formatMochaArgs(): Promise<string[] | undefined>;
22
+ protected getChangedTestFiles(dir: string, ext: string): Promise<string[]>;
23
+ }
@@ -0,0 +1,204 @@
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_util_1 = require("node:util");
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const promises_1 = __importDefault(require("node:fs/promises"));
10
+ const core_1 = require("@oclif/core");
11
+ const globby_1 = __importDefault(require("globby"));
12
+ const utils_1 = require("@eggjs/utils");
13
+ const jest_changed_files_1 = require("jest-changed-files");
14
+ const baseCommand_js_1 = require("../baseCommand.js");
15
+ const debug = (0, node_util_1.debuglog)('@eggjs/bin/commands/test');
16
+ class Test extends baseCommand_js_1.BaseCommand {
17
+ static args = {
18
+ file: core_1.Args.string({
19
+ description: 'file(s) to test',
20
+ }),
21
+ };
22
+ static description = 'Run the test';
23
+ static examples = [
24
+ '<%= config.bin %> <%= command.id %>',
25
+ '<%= config.bin %> <%= command.id %> test/index.test.ts',
26
+ '<%= config.bin %> <%= command.id %> --json',
27
+ '<%= config.bin %> <%= command.id %> --log-level debug',
28
+ ];
29
+ static flags = {
30
+ bail: core_1.Flags.boolean({
31
+ description: 'bbort ("bail") after first test failure',
32
+ default: false,
33
+ char: 'b',
34
+ }),
35
+ timeout: core_1.Flags.integer({
36
+ char: 't',
37
+ description: 'set test-case timeout in milliseconds',
38
+ default: parseInt(process.env.TEST_TIMEOUT ?? '60000'),
39
+ }),
40
+ 'no-timeout': core_1.Flags.boolean({
41
+ description: 'disable timeout',
42
+ }),
43
+ grep: core_1.Flags.string({
44
+ char: 'g',
45
+ description: 'only run tests matching <pattern>',
46
+ }),
47
+ changed: core_1.Flags.boolean({
48
+ description: 'only test with changed files and match test/**/*.test.(js|ts)',
49
+ char: 'c',
50
+ }),
51
+ mochawesome: core_1.Flags.boolean({
52
+ description: '[default: true] enable mochawesome reporter',
53
+ default: true,
54
+ allowNo: true,
55
+ }),
56
+ parallel: core_1.Flags.boolean({
57
+ description: 'mocha parallel mode',
58
+ default: false,
59
+ char: 'p',
60
+ }),
61
+ jobs: core_1.Flags.integer({
62
+ char: 't',
63
+ description: 'number of jobs to run in parallel',
64
+ default: node_os_1.default.cpus().length - 1,
65
+ }),
66
+ 'auto-agent': core_1.Flags.boolean({
67
+ description: '[default: true] auto bootstrap agent in mocha master process',
68
+ default: true,
69
+ allowNo: true,
70
+ }),
71
+ };
72
+ async run() {
73
+ const { flags } = this;
74
+ try {
75
+ await promises_1.default.access(flags.base);
76
+ }
77
+ catch (err) {
78
+ console.error('baseDir: %o not exists', flags.base);
79
+ throw err;
80
+ }
81
+ const mochaFile = process.env.MOCHA_FILE || (0, utils_1.importResolve)('mocha/bin/_mocha');
82
+ if (flags.parallel) {
83
+ this.env.ENABLE_MOCHA_PARALLEL = 'true';
84
+ if (flags['auto-agent']) {
85
+ this.env.AUTO_AGENT = 'true';
86
+ }
87
+ }
88
+ // set NODE_ENV=test, let egg application load unittest logic
89
+ // https://eggjs.org/basics/env#difference-from-node_env
90
+ this.env.NODE_ENV = 'test';
91
+ if (flags['no-timeout']) {
92
+ flags.timeout = 0;
93
+ }
94
+ debug('run test: %s %o flags: %o', mochaFile, this.args, flags);
95
+ const mochaArgs = await this.formatMochaArgs();
96
+ if (!mochaArgs)
97
+ return;
98
+ await this.runMocha(mochaFile, mochaArgs);
99
+ }
100
+ async runMocha(mochaFile, mochaArgs) {
101
+ await this.forkNode(mochaFile, mochaArgs, {
102
+ execArgv: [
103
+ ...process.execArgv,
104
+ // https://github.com/mochajs/mocha/issues/2640#issuecomment-1663388547
105
+ '--unhandled-rejections=strict',
106
+ ],
107
+ });
108
+ }
109
+ async formatMochaArgs() {
110
+ const { args, flags } = this;
111
+ // collect require
112
+ const requires = await this.formatRequires();
113
+ // try {
114
+ // const eggMockRegister = importResolve('@eggjs/mock/register', { paths: [ this.base ] });
115
+ // requires.push(eggMockRegister);
116
+ // debug('auto register @eggjs/mock/register: %o', eggMockRegister);
117
+ // } catch (err) {
118
+ // // ignore @eggjs/mock not exists
119
+ // debug('auto register @eggjs/mock fail, can not require @eggjs/mock on %o, error: %s',
120
+ // this.base, (err as Error).message);
121
+ // }
122
+ // handle mochawesome enable
123
+ let reporter = this.env.TEST_REPORTER;
124
+ let reporterOptions = '';
125
+ if (!reporter && flags.mochawesome) {
126
+ // use https://github.com/node-modules/mochawesome/pull/1 instead
127
+ reporter = (0, utils_1.importResolve)('mochawesome-with-mocha');
128
+ reporterOptions = 'reportDir=node_modules/.mochawesome-reports';
129
+ if (flags.parallel) {
130
+ // https://github.com/adamgruber/mochawesome#parallel-mode
131
+ requires.push(node_path_1.default.join(reporter, '../register.js'));
132
+ }
133
+ }
134
+ const ext = flags.typescript ? 'ts' : 'js';
135
+ let pattern = args.file ? args.file.split(',') : [];
136
+ // changed
137
+ if (flags.changed) {
138
+ pattern = await this.getChangedTestFiles(flags.base, ext);
139
+ if (!pattern.length) {
140
+ console.log('No changed test files');
141
+ return;
142
+ }
143
+ debug('changed files: %o', pattern);
144
+ }
145
+ if (!pattern.length && process.env.TESTS) {
146
+ pattern = process.env.TESTS.split(',');
147
+ }
148
+ // collect test files when nothing is changed
149
+ if (!pattern.length) {
150
+ pattern = [`test/**/*.test.${ext}`];
151
+ }
152
+ pattern = pattern.concat(['!test/fixtures', '!test/node_modules']);
153
+ // expand glob and skip node_modules and fixtures
154
+ const files = globby_1.default.sync(pattern, { cwd: flags.base });
155
+ files.sort();
156
+ if (files.length === 0) {
157
+ console.log('No test files found with pattern %o', pattern);
158
+ return;
159
+ }
160
+ // auto add setup file as the first test file
161
+ const setupFile = node_path_1.default.join(flags.base, `test/.setup.${ext}`);
162
+ try {
163
+ await promises_1.default.access(setupFile);
164
+ files.unshift(setupFile);
165
+ }
166
+ catch {
167
+ // ignore
168
+ }
169
+ const grep = flags.grep ? flags.grep.split(',') : [];
170
+ return [
171
+ // force exit
172
+ '--exit',
173
+ flags.bail ? '--bail' : '',
174
+ grep.map(pattern => `--grep='${pattern}'`).join(' '),
175
+ flags.timeout ? `--timeout=${flags.timeout}` : '--no-timeout',
176
+ flags.parallel ? '--parallel' : '',
177
+ flags.parallel && flags.jobs ? `--jobs=${flags.jobs}` : '',
178
+ reporter ? `--reporter=${reporter}` : '',
179
+ reporterOptions ? `--reporter-options=${reporterOptions}` : '',
180
+ ...requires.map(r => `--require=${r}`),
181
+ ...files,
182
+ flags['dry-run'] ? '--dry-run' : '',
183
+ ].filter(a => a.trim());
184
+ }
185
+ async getChangedTestFiles(dir, ext) {
186
+ const res = await (0, jest_changed_files_1.getChangedFilesForRoots)([node_path_1.default.join(dir, 'test')], {});
187
+ const changedFiles = res.changedFiles;
188
+ const files = [];
189
+ for (let cf of changedFiles) {
190
+ // only find test/**/*.test.(js|ts)
191
+ if (cf.endsWith(`.test.${ext}`)) {
192
+ // Patterns MUST use forward slashes (not backslashes)
193
+ // This should be converted on Windows
194
+ if (process.platform === 'win32') {
195
+ cf = cf.replace(/\\/g, '/');
196
+ }
197
+ files.push(cf);
198
+ }
199
+ }
200
+ return files;
201
+ }
202
+ }
203
+ exports.default = Test;
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQXFDO0FBQ3JDLDBEQUE2QjtBQUM3QixzREFBeUI7QUFDekIsZ0VBQWtDO0FBQ2xDLHNDQUEwQztBQUMxQyxvREFBNEI7QUFDNUIsd0NBQTZDO0FBQzdDLDJEQUE2RDtBQUM3RCxzREFBZ0Q7QUFFaEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFbkQsTUFBcUIsSUFBNEIsU0FBUSw0QkFBYztJQUNyRSxNQUFNLENBQVUsSUFBSSxHQUFHO1FBQ3JCLElBQUksRUFBRSxXQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSxpQkFBaUI7U0FDL0IsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQVUsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUU3QyxNQUFNLENBQVUsUUFBUSxHQUFHO1FBQ3pCLHFDQUFxQztRQUNyQyx3REFBd0Q7UUFDeEQsNENBQTRDO1FBQzVDLHVEQUF1RDtLQUN4RCxDQUFDO0lBRUYsTUFBTSxDQUFVLEtBQUssR0FBRztRQUN0QixJQUFJLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQixXQUFXLEVBQUUseUNBQXlDO1lBQ3RELE9BQU8sRUFBRSxLQUFLO1lBQ2QsSUFBSSxFQUFFLEdBQUc7U0FDVixDQUFDO1FBQ0YsT0FBTyxFQUFFLFlBQUssQ0FBQyxPQUFPLENBQUM7WUFDckIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDO1NBQ3ZELENBQUM7UUFDRixZQUFZLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztZQUMxQixXQUFXLEVBQUUsaUJBQWlCO1NBQy9C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
@@ -0,0 +1,7 @@
1
+ import Test from './commands/test.js';
2
+ import Cov from './commands/cov.js';
3
+ import Dev from './commands/dev.js';
4
+ export { Test, Cov, Dev };
5
+ export * from './baseCommand.js';
6
+ export * from './types.js';
7
+ export * from '@oclif/core';
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Dev = exports.Cov = exports.Test = void 0;
21
+ const test_js_1 = __importDefault(require("./commands/test.js"));
22
+ exports.Test = test_js_1.default;
23
+ const cov_js_1 = __importDefault(require("./commands/cov.js"));
24
+ exports.Cov = cov_js_1.default;
25
+ const dev_js_1 = __importDefault(require("./commands/dev.js"));
26
+ exports.Dev = dev_js_1.default;
27
+ __exportStar(require("./baseCommand.js"), exports);
28
+ __exportStar(require("./types.js"), exports);
29
+ __exportStar(require("@oclif/core"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpRUFBc0M7QUFJN0IsZUFKRixpQkFBSSxDQUlFO0FBSGIsK0RBQW9DO0FBR3JCLGNBSFIsZ0JBQUcsQ0FHUTtBQUZsQiwrREFBb0M7QUFFaEIsY0FGYixnQkFBRyxDQUVhO0FBRXZCLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsOENBQTRCIn0=
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,9 @@
1
+ export interface PackageEgg {
2
+ framework?: boolean;
3
+ typescript?: boolean;
4
+ tscompiler?: string;
5
+ declarations?: boolean;
6
+ revert?: string | string[];
7
+ require?: string | string[];
8
+ import?: string | string[];
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,4 @@
1
+ export declare function readPackageJSON(baseDir: string): Promise<any>;
2
+ export declare function hasTsConfig(baseDir: string): Promise<boolean>;
3
+ export declare function getSourceDirname(): string;
4
+ export declare function getSourceFilename(filename: string): string;
@@ -0,0 +1,45 @@
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.readPackageJSON = readPackageJSON;
7
+ exports.hasTsConfig = hasTsConfig;
8
+ exports.getSourceDirname = getSourceDirname;
9
+ exports.getSourceFilename = getSourceFilename;
10
+ const promises_1 = __importDefault(require("node:fs/promises"));
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const node_url_1 = require("node:url");
13
+ async function readPackageJSON(baseDir) {
14
+ const pkgFile = node_path_1.default.join(baseDir, 'package.json');
15
+ try {
16
+ const pkgJSON = await promises_1.default.readFile(pkgFile, 'utf8');
17
+ return JSON.parse(pkgJSON);
18
+ }
19
+ catch {
20
+ return {};
21
+ }
22
+ }
23
+ async function hasTsConfig(baseDir) {
24
+ const pkgFile = node_path_1.default.join(baseDir, 'tsconfig.json');
25
+ try {
26
+ await promises_1.default.access(pkgFile);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ function getSourceDirname() {
34
+ if (typeof __dirname === 'string') {
35
+ return __dirname;
36
+ }
37
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
38
+ // @ts-ignore
39
+ const __filename = (0, node_url_1.fileURLToPath)('import_meta_url_placeholder_by_tshy_after');
40
+ return node_path_1.default.dirname(__filename);
41
+ }
42
+ function getSourceFilename(filename) {
43
+ return node_path_1.default.join(getSourceDirname(), filename);
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSwwQ0FRQztBQUVELGtDQVFDO0FBRUQsNENBUUM7QUFFRCw4Q0FFQztBQXBDRCxnRUFBa0M7QUFDbEMsMERBQTZCO0FBQzdCLHVDQUF5QztBQUVsQyxLQUFLLFVBQVUsZUFBZSxDQUFDLE9BQWU7SUFDbkQsTUFBTSxPQUFPLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxXQUFXLENBQUMsT0FBZTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCO0lBQzlCLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxhQUFhO0lBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBYSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsT0FBTyxtQkFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsUUFBZ0I7SUFDaEQsT0FBTyxtQkFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELENBQUMifQ==
@@ -1,22 +1,49 @@
1
1
  import { ForkOptions } from 'node:child_process';
2
- import { Command, Interfaces } from '@oclif/core';
3
- export type Flags<T extends typeof Command> = Interfaces.InferredFlags<typeof BaseCommand['baseFlags'] & T['flags']>;
4
- export type Args<T extends typeof Command> = Interfaces.InferredArgs<T['args']>;
2
+ import { Command, Flags, Interfaces } from '@oclif/core';
3
+ import { PackageEgg } from './types.js';
4
+ export declare class ForkError extends Error {
5
+ code: number | null;
6
+ constructor(message: string, code: number | null);
7
+ }
8
+ export interface ForkNodeOptions extends ForkOptions {
9
+ dryRun?: boolean;
10
+ }
11
+ type Flags<T extends typeof Command> = Interfaces.InferredFlags<typeof BaseCommand['baseFlags'] & T['flags']>;
12
+ type Args<T extends typeof Command> = Interfaces.InferredArgs<T['args']>;
5
13
  export declare abstract class BaseCommand<T extends typeof Command> extends Command {
14
+ #private;
6
15
  static enableJsonFlag: boolean;
7
16
  static baseFlags: {
8
- dryRun: Interfaces.BooleanFlag<boolean>;
17
+ 'dry-run': Interfaces.BooleanFlag<boolean>;
9
18
  require: Interfaces.OptionFlag<string[] | undefined, Interfaces.CustomOptions>;
19
+ import: Interfaces.OptionFlag<string[] | undefined, Interfaces.CustomOptions>;
10
20
  base: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
21
+ tscompiler: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
22
+ typescript: Interfaces.BooleanFlag<boolean>;
23
+ ts: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
24
+ javascript: Interfaces.BooleanFlag<boolean>;
25
+ declarations: Interfaces.BooleanFlag<boolean>;
26
+ inspect: Interfaces.BooleanFlag<boolean>;
27
+ 'inspect-brk': Interfaces.BooleanFlag<boolean>;
11
28
  };
12
29
  protected flags: Flags<T>;
13
30
  protected args: Args<T>;
14
- protected env: NodeJS.ProcessEnv;
31
+ protected env: {
32
+ [x: string]: string | undefined;
33
+ TZ?: string;
34
+ };
35
+ protected pkg: Record<string, any>;
36
+ protected isESM: boolean;
37
+ protected pkgEgg: PackageEgg;
38
+ protected globalExecArgv: string[];
15
39
  init(): Promise<void>;
16
40
  protected catch(err: Error & {
17
41
  exitCode?: number;
18
42
  }): Promise<any>;
19
43
  protected finally(_: Error | undefined): Promise<any>;
20
44
  protected formatRequires(): Promise<string[]>;
21
- protected forkNode(modulePath: string, forkArgs: string[], options?: ForkOptions): Promise<void>;
45
+ protected formatImportModule(modulePath: string): string;
46
+ protected addNodeOptions(options: string): void;
47
+ protected forkNode(modulePath: string, forkArgs: string[], options?: ForkNodeOptions): Promise<void>;
22
48
  }
49
+ export {};