@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
@@ -0,0 +1,118 @@
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 { DefineCommand, Option } from '@artus-cli/artus-cli';
12
+ import utils from '@eggjs/utils';
13
+ import detect from 'detect-port';
14
+ import { BaseCommand } from './base.js';
15
+ import { getSourceFilename } from '../utils.js';
16
+ const debug = debuglog('egg-bin:dev');
17
+ let DevCommand = class DevCommand extends BaseCommand {
18
+ port;
19
+ workers;
20
+ framework;
21
+ sticky;
22
+ async run() {
23
+ debug('run dev: %o', this.ctx.args);
24
+ this.ctx.env.NODE_ENV = this.ctx.env.NODE_ENV ?? 'development';
25
+ this.ctx.env.EGG_MASTER_CLOSE_TIMEOUT = '1000';
26
+ const serverBin = getSourceFilename('../scripts/start-cluster.mjs');
27
+ const eggStartOptions = await this.formatEggStartOptions();
28
+ const args = [JSON.stringify(eggStartOptions)];
29
+ const requires = await this.formatRequires();
30
+ const execArgv = [];
31
+ for (const r of requires) {
32
+ execArgv.push('--require');
33
+ execArgv.push(r);
34
+ }
35
+ await this.forkNode(serverBin, args, { execArgv });
36
+ }
37
+ async formatEggStartOptions() {
38
+ this.framework = utils.getFrameworkPath({
39
+ framework: this.framework,
40
+ baseDir: this.base,
41
+ });
42
+ if (!this.port) {
43
+ let configuredPort;
44
+ try {
45
+ const configuration = await utils.getConfig({
46
+ framework: this.framework,
47
+ baseDir: this.base,
48
+ env: 'local',
49
+ });
50
+ configuredPort = configuration?.cluster?.listen?.port;
51
+ }
52
+ catch (err) {
53
+ /** skip when failing to read the configuration */
54
+ debug('getConfig error: %s, framework: %o, baseDir: %o, env: local', err, this.framework, this.base);
55
+ }
56
+ if (configuredPort) {
57
+ this.port = configuredPort;
58
+ debug(`use port ${this.port} from configuration file`);
59
+ }
60
+ else {
61
+ const defaultPort = process.env.EGG_BIN_DEFAULT_PORT ?? 7001;
62
+ debug('detect available port');
63
+ this.port = await detect(defaultPort);
64
+ if (this.port !== defaultPort) {
65
+ console.warn('[egg-bin] server port %s is in use, now using port %o', defaultPort, this.port);
66
+ }
67
+ debug(`use available port ${this.port}`);
68
+ }
69
+ }
70
+ return {
71
+ baseDir: this.base,
72
+ workers: this.workers,
73
+ port: this.port,
74
+ framework: this.framework,
75
+ typescript: this.ctx.args.typescript,
76
+ tscompiler: this.ctx.args.tscompiler,
77
+ sticky: this.sticky,
78
+ };
79
+ }
80
+ };
81
+ __decorate([
82
+ Option({
83
+ description: 'listening port, default to 7001',
84
+ alias: 'p',
85
+ }),
86
+ __metadata("design:type", Number)
87
+ ], DevCommand.prototype, "port", void 0);
88
+ __decorate([
89
+ Option({
90
+ description: 'numbers of app workers, default to 1 at local mode',
91
+ alias: ['c', 'cluster'],
92
+ default: 1,
93
+ }),
94
+ __metadata("design:type", Number)
95
+ ], DevCommand.prototype, "workers", void 0);
96
+ __decorate([
97
+ Option({
98
+ description: 'specify framework that can be absolute path or npm package, default is egg',
99
+ }),
100
+ __metadata("design:type", String)
101
+ ], DevCommand.prototype, "framework", void 0);
102
+ __decorate([
103
+ Option({
104
+ description: 'start a sticky cluster server, default to false',
105
+ type: 'boolean',
106
+ default: false,
107
+ }),
108
+ __metadata("design:type", Boolean)
109
+ ], DevCommand.prototype, "sticky", void 0);
110
+ DevCommand = __decorate([
111
+ DefineCommand({
112
+ command: 'dev',
113
+ description: 'Start server at local dev mode',
114
+ alias: ['d'],
115
+ })
116
+ ], DevCommand);
117
+ export { DevCommand };
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NtZC9kZXYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUNqQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBTy9CLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxXQUFXO0lBS3pDLElBQUksQ0FBUztJQU9iLE9BQU8sQ0FBUztJQUtoQixTQUFTLENBQVM7SUFPbEIsTUFBTSxDQUFVO0lBRWhCLEtBQUssQ0FBQyxHQUFHO1FBQ1AsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDO1FBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxD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
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from './base.js';
2
+ export declare class TestCommand extends BaseCommand {
3
+ files: string[];
4
+ timeout: number | boolean;
5
+ grep: string[];
6
+ changed: boolean;
7
+ parallel: boolean;
8
+ jobs: number;
9
+ autoAgent: boolean;
10
+ mochawesome: boolean;
11
+ bail: boolean;
12
+ run(): Promise<void>;
13
+ protected formatMochaArgs(): Promise<string[] | undefined>;
14
+ protected getChangedTestFiles(dir: string, ext: string): Promise<string[]>;
15
+ }
@@ -0,0 +1,237 @@
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 os from 'node:os';
12
+ import fs from 'node:fs/promises';
13
+ import path from 'node:path';
14
+ import { DefineCommand, Option, } from '@artus-cli/artus-cli';
15
+ import globby from 'globby';
16
+ import { importResolve } from '@eggjs/utils';
17
+ import { getChangedFilesForRoots } from 'jest-changed-files';
18
+ import { BaseCommand } from './base.js';
19
+ const debug = debuglog('egg-bin:test');
20
+ let TestCommand = class TestCommand extends BaseCommand {
21
+ files;
22
+ timeout;
23
+ grep;
24
+ changed;
25
+ parallel;
26
+ jobs;
27
+ autoAgent;
28
+ mochawesome;
29
+ bail;
30
+ async run() {
31
+ try {
32
+ await fs.access(this.base);
33
+ }
34
+ catch (err) {
35
+ console.error('baseDir: %o not exists', this.base);
36
+ throw err;
37
+ }
38
+ const mochaFile = process.env.MOCHA_FILE || importResolve('mocha/bin/_mocha');
39
+ if (this.parallel) {
40
+ this.ctx.env.ENABLE_MOCHA_PARALLEL = 'true';
41
+ if (this.autoAgent) {
42
+ this.ctx.env.AUTO_AGENT = 'true';
43
+ }
44
+ }
45
+ // set NODE_ENV=test, let egg application load unittest logic
46
+ // https://eggjs.org/basics/env#difference-from-node_env
47
+ this.ctx.env.NODE_ENV = 'test';
48
+ debug('run test: %s %o', mochaFile, this.ctx.args);
49
+ const mochaArgs = await this.formatMochaArgs();
50
+ if (!mochaArgs)
51
+ return;
52
+ await this.forkNode(mochaFile, mochaArgs, {
53
+ execArgv: [
54
+ ...process.execArgv,
55
+ // https://github.com/mochajs/mocha/issues/2640#issuecomment-1663388547
56
+ '--unhandled-rejections=strict',
57
+ ],
58
+ });
59
+ }
60
+ async formatMochaArgs() {
61
+ // collect require
62
+ const requires = await this.formatRequires();
63
+ try {
64
+ const eggMockRegister = importResolve('@eggjs/mock/register', { paths: [this.base] });
65
+ requires.push(eggMockRegister);
66
+ debug('auto register @eggjs/mock/register: %o', eggMockRegister);
67
+ }
68
+ catch (err) {
69
+ // ignore @eggjs/mock not exists
70
+ debug('auto register @eggjs/mock fail, can not require @eggjs/mock on %o, error: %s', this.base, err.message);
71
+ }
72
+ // handle mochawesome enable
73
+ let reporter = this.ctx.env.TEST_REPORTER;
74
+ let reporterOptions = '';
75
+ if (!reporter && this.mochawesome) {
76
+ // use https://github.com/node-modules/mochawesome/pull/1 instead
77
+ reporter = importResolve('mochawesome-with-mocha');
78
+ reporterOptions = 'reportDir=node_modules/.mochawesome-reports';
79
+ if (this.parallel) {
80
+ // https://github.com/adamgruber/mochawesome#parallel-mode
81
+ requires.push(importResolve('mochawesome-with-mocha/register'));
82
+ }
83
+ }
84
+ const ext = this.ctx.args.typescript ? 'ts' : 'js';
85
+ let pattern = this.files;
86
+ // changed
87
+ if (this.changed) {
88
+ pattern = await this.getChangedTestFiles(this.base, ext);
89
+ if (!pattern.length) {
90
+ console.log('No changed test files');
91
+ return;
92
+ }
93
+ debug('changed files: %o', pattern);
94
+ }
95
+ if (!pattern.length && process.env.TESTS) {
96
+ pattern = process.env.TESTS.split(',');
97
+ }
98
+ // collect test files when nothing is changed
99
+ if (!pattern.length) {
100
+ pattern = [`test/**/*.test.${ext}`];
101
+ }
102
+ pattern = pattern.concat(['!test/fixtures', '!test/node_modules']);
103
+ // expand glob and skip node_modules and fixtures
104
+ const files = globby.sync(pattern, { cwd: this.base });
105
+ files.sort();
106
+ if (files.length === 0) {
107
+ console.log(`No test files found with ${pattern}`);
108
+ return;
109
+ }
110
+ // auto add setup file as the first test file
111
+ const setupFile = path.join(this.base, `test/.setup.${ext}`);
112
+ try {
113
+ await fs.access(setupFile);
114
+ files.unshift(setupFile);
115
+ }
116
+ catch {
117
+ // ignore
118
+ }
119
+ return [
120
+ this.dryRun ? '--dry-run' : '',
121
+ // force exit
122
+ '--exit',
123
+ this.bail ? '--bail' : '',
124
+ this.grep.map(pattern => `--grep='${pattern}'`).join(' '),
125
+ this.timeout === false ? '--no-timeout' : `--timeout=${this.timeout}`,
126
+ this.parallel ? '--parallel' : '',
127
+ this.parallel && this.jobs ? `--jobs=${this.jobs}` : '',
128
+ reporter ? `--reporter=${reporter}` : '',
129
+ reporterOptions ? `--reporter-options=${reporterOptions}` : '',
130
+ ...requires.map(r => `--require=${r}`),
131
+ ...files,
132
+ ].filter(a => a.trim());
133
+ }
134
+ async getChangedTestFiles(dir, ext) {
135
+ const res = await getChangedFilesForRoots([path.join(dir, 'test')], {});
136
+ const changedFiles = res.changedFiles;
137
+ const files = [];
138
+ for (let cf of changedFiles) {
139
+ // only find test/**/*.test.(js|ts)
140
+ if (cf.endsWith(`.test.${ext}`)) {
141
+ // Patterns MUST use forward slashes (not backslashes)
142
+ // This should be converted on Windows
143
+ if (process.platform === 'win32') {
144
+ cf = cf.replace(/\\/g, '/');
145
+ }
146
+ files.push(cf);
147
+ }
148
+ }
149
+ return files;
150
+ }
151
+ };
152
+ __decorate([
153
+ Option({
154
+ default: [],
155
+ array: true,
156
+ type: 'string',
157
+ }),
158
+ __metadata("design:type", Array)
159
+ ], TestCommand.prototype, "files", void 0);
160
+ __decorate([
161
+ Option({
162
+ description: 'set test-case timeout in milliseconds, default is 60000',
163
+ alias: 't',
164
+ default: process.env.TEST_TIMEOUT ?? 60000,
165
+ }),
166
+ __metadata("design:type", Object)
167
+ ], TestCommand.prototype, "timeout", void 0);
168
+ __decorate([
169
+ Option({
170
+ description: 'only run tests matching <pattern>',
171
+ alias: 'g',
172
+ type: 'string',
173
+ array: true,
174
+ default: [],
175
+ }),
176
+ __metadata("design:type", Array)
177
+ ], TestCommand.prototype, "grep", void 0);
178
+ __decorate([
179
+ Option({
180
+ description: 'only test with changed files and match test/**/*.test.(js|ts), default is false',
181
+ alias: 'c',
182
+ type: 'boolean',
183
+ default: false,
184
+ }),
185
+ __metadata("design:type", Boolean)
186
+ ], TestCommand.prototype, "changed", void 0);
187
+ __decorate([
188
+ Option({
189
+ description: 'mocha parallel mode, default is false',
190
+ alias: 'p',
191
+ type: 'boolean',
192
+ default: false,
193
+ }),
194
+ __metadata("design:type", Boolean)
195
+ ], TestCommand.prototype, "parallel", void 0);
196
+ __decorate([
197
+ Option({
198
+ description: 'number of jobs to run in parallel',
199
+ type: 'number',
200
+ default: os.cpus().length - 1,
201
+ }),
202
+ __metadata("design:type", Number)
203
+ ], TestCommand.prototype, "jobs", void 0);
204
+ __decorate([
205
+ Option({
206
+ description: 'auto bootstrap agent in mocha master process, default is true',
207
+ type: 'boolean',
208
+ default: true,
209
+ }),
210
+ __metadata("design:type", Boolean)
211
+ ], TestCommand.prototype, "autoAgent", void 0);
212
+ __decorate([
213
+ Option({
214
+ description: 'enable mochawesome reporter, default is true',
215
+ type: 'boolean',
216
+ default: true,
217
+ }),
218
+ __metadata("design:type", Boolean)
219
+ ], TestCommand.prototype, "mochawesome", void 0);
220
+ __decorate([
221
+ Option({
222
+ description: 'bbort ("bail") after first test failure',
223
+ alias: 'b',
224
+ type: 'boolean',
225
+ default: false,
226
+ }),
227
+ __metadata("design:type", Boolean)
228
+ ], TestCommand.prototype, "bail", void 0);
229
+ TestCommand = __decorate([
230
+ DefineCommand({
231
+ command: 'test [files...]',
232
+ description: 'Run the test',
233
+ alias: ['t'],
234
+ })
235
+ ], TestCommand);
236
+ export { TestCommand };
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWQvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUNMLGFBQWEsRUFBRSxNQUFNLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFPaEMsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBWSxTQUFRLFdBQVc7SUFNMUMsS0FBSyxDQUFXO0lBT2hCLE9BQU8sQ0FBbUI7SUFTMUIsSUFBSSxDQUFXO0lBUWYsT0FBTyxDQUFVO0lBUWpCLFFBQVEsQ0FBVTtJQU9sQixJQUFJLENBQVM7SUFPYixTQUFTLENBQVU7SUFPbkIsV0FBVyxDQUFVO0lBUXJCLElBQUksQ0FBVTtJQUVkLEtBQUssQ0FBQyxHQUFHO1FBQ1AsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUNELDZEQUE2RDtRQUM3RCx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUMvQixLQUFLLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixHQUFHLE9BQU8sQ0FBQyxRQUFRO2dCQUNuQix1RUFBdUU7Z0JBQ3ZFLCtCQUErQjthQUNoQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZTtRQUM3QixrQkFBa0I7UUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBRSxFQUFFLENBQUMsQ0FBQztZQUN4RixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9CLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLGdDQUFnQztZQUNoQyxLQUFLLENBQUMsOEVBQThFLEVBQ2xGLElBQUksQ0FBQyxJQUFJLEVBQUcsR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxpRUFBaUU7WUFDakUsUUFBUSxHQUFHLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ25ELGVBQWUsR0FBRyw2Q0FBNkMsQ0FBQztZQUNoRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsMERBQTBEO2dCQUMxRCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25ELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsVUFBVTtRQUNWLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnQkFDckMsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxHQUFHLENBQUUsa0JBQWtCLEdBQUcsRUFBRSxDQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUUsQ0FBQyxDQUFDO1FBRXJFLGlEQUFpRDtRQUNqRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFYixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELDZDQUE2QztRQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxTQUFTO1FBQ1gsQ0FBQztRQUVELE9BQU87WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsYUFBYTtZQUNiLFFBQVE7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkQsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLGVBQWUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlELEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdEMsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQzFELE1BQU0sR0FBRyxHQUFHLE1BQU0sdUJBQXVCLENBQUMsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLEtBQUssSUFBSSxFQUFFLElBQUksWUFBWSxFQUFFLENBQUM7WUFDNUIsbUNBQW1DO1lBQ25DLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsc0RBQXNEO2dCQUN0RCxzQ0FBc0M7Z0JBQ3RDLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDakMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO2dCQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRixDQUFBO0FBak1DO0lBTEMsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQzs7MENBQ2M7QUFPaEI7SUFMQyxNQUFNLENBQUM7UUFDTixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLEtBQUssRUFBRSxHQUFHO1FBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEtBQUs7S0FDM0MsQ0FBQzs7NENBQ3dCO0FBUzFCO0lBUEMsTUFBTSxDQUFDO1FBQ04sV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsRUFBRTtLQUNaLENBQUM7O3lDQUNhO0FBUWY7SUFOQyxNQUFNLENBQUM7UUFDTixXQUFXLEVBQUUsaUZBQWlGO1FBQzlGLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7OzRDQUNlO0FBUWpCO0lBTkMsTUFBTSxDQUFDO1FBQ04sV0FBVyxFQUFFLHVDQUF1QztRQUNwRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDOzs2Q0FDZ0I7QUFPbEI7SUFMQyxNQUFNLENBQUM7UUFDTixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztLQUM5QixDQUFDOzt5Q0FDVztBQU9iO0lBTEMsTUFBTSxDQUFDO1FBQ04sV0FBVyxFQUFFLCtEQUErRDtRQUM1RSxJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQzs7OENBQ2lCO0FBT25CO0lBTEMsTUFBTSxDQUFDO1FBQ04sV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQzs7Z0RBQ21CO0FBUXJCO0lBTkMsTUFBTSxDQUFDO1FBQ04sV0FBVyxFQUFFLHlDQUF5QztRQUN0RCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDOzt5Q0FDWTtBQW5FSCxXQUFXO0lBTHZCLGFBQWEsQ0FBQztRQUNiLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLGNBQWM7UUFDM0IsS0FBSyxFQUFFLENBQUUsR0FBRyxDQUFFO0tBQ2YsQ0FBQztHQUNXLFdBQVcsQ0F1TXZCIn0=
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ package: string;
3
+ };
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ export default {
2
+ package: '@artus-cli/artus-cli',
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy9mcmFtZXdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZTtJQUNiLE9BQU8sRUFBRSxzQkFBc0I7Q0FDaEMsQ0FBQyJ9
@@ -0,0 +1,11 @@
1
+ declare const _default: {
2
+ autocomplete: {
3
+ enable: boolean;
4
+ package: string;
5
+ };
6
+ version: {
7
+ enable: boolean;
8
+ package: string;
9
+ };
10
+ };
11
+ export default _default;
@@ -0,0 +1,11 @@
1
+ export default {
2
+ autocomplete: {
3
+ enable: true,
4
+ package: '@artus-cli/plugin-autocomplete',
5
+ },
6
+ version: {
7
+ enable: true,
8
+ package: '@artus-cli/plugin-version',
9
+ },
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZTtJQUNiLFlBQVksRUFBRTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLGdDQUFnQztLQUMxQztJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLDJCQUEyQjtLQUNyQztDQUNGLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ export * from './cmd/dev.js';
2
+ export * from './cmd/debug.js';
3
+ export * from './cmd/test.js';
4
+ export * from './cmd/cov.js';
5
+ export * from './cmd/base.js';
@@ -0,0 +1,6 @@
1
+ export * from './cmd/dev.js';
2
+ export * from './cmd/debug.js';
3
+ export * from './cmd/test.js';
4
+ export * from './cmd/cov.js';
5
+ export * from './cmd/base.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ import { ApplicationLifecycle } from '@artus-cli/artus-cli';
2
+ export default class GlobalOptions implements ApplicationLifecycle {
3
+ private readonly program;
4
+ configDidLoad(): Promise<void>;
5
+ }
@@ -0,0 +1,182 @@
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 path from 'node:path';
12
+ import { pathToFileURL } from 'node:url';
13
+ import { Inject, LifecycleHook, LifecycleHookUnit, Program, } from '@artus-cli/artus-cli';
14
+ import { importResolve } from '@eggjs/utils';
15
+ import { runScript } from 'runscript';
16
+ import { addNodeOptionsToEnv, getSourceDirname, readPackageJSON, hasTsConfig, getSourceFilename, } from '../utils.js';
17
+ const debug = debuglog('@eggjs/bin/middleware/global_options');
18
+ let GlobalOptions = class GlobalOptions {
19
+ program;
20
+ async configDidLoad() {
21
+ // add global options
22
+ this.program.option({
23
+ base: {
24
+ description: 'directory of application, default to `process.cwd()`',
25
+ type: 'string',
26
+ alias: 'baseDir',
27
+ },
28
+ declarations: {
29
+ description: 'whether create typings, will add `--require egg-ts-helper/register`',
30
+ type: 'boolean',
31
+ alias: 'dts',
32
+ },
33
+ typescript: {
34
+ description: 'whether enable typescript support',
35
+ type: 'boolean',
36
+ alias: 'ts',
37
+ },
38
+ tscompiler: {
39
+ description: 'ts compiler, like ts-node/register, ts-node/register/transpile-only, @swc-node/register, esbuild-register etc',
40
+ type: 'string',
41
+ alias: 'tsc',
42
+ },
43
+ });
44
+ this.program.use(async (ctx, next) => {
45
+ debug('before next');
46
+ if (!ctx.args.base) {
47
+ ctx.args.base = ctx.cwd;
48
+ debug('ctx.args.base not set, auto set it to cwd: %o', ctx.cwd);
49
+ }
50
+ if (!path.isAbsolute(ctx.args.base)) {
51
+ ctx.args.base = path.join(ctx.cwd, ctx.args.base);
52
+ }
53
+ debug('matched cmd: %o, ctx.args.base: %o', ctx.matched?.cmd, ctx.args.base);
54
+ const pkg = await readPackageJSON(ctx.args.base);
55
+ ctx.args.pkgEgg = pkg.egg ?? {};
56
+ const tscompiler = ctx.args.tscompiler ?? ctx.env.TS_COMPILER ?? ctx.args.pkgEgg.tscompiler;
57
+ if (ctx.args.typescript === undefined) {
58
+ // try to ready EGG_TYPESCRIPT env first, only accept 'true' or 'false' string
59
+ if (ctx.env.EGG_TYPESCRIPT === 'false') {
60
+ ctx.args.typescript = false;
61
+ debug('detect typescript=%o from EGG_TYPESCRIPT=%o', false, ctx.env.EGG_TYPESCRIPT);
62
+ }
63
+ else if (ctx.env.EGG_TYPESCRIPT === 'true') {
64
+ ctx.args.typescript = true;
65
+ debug('detect typescript=%o from EGG_TYPESCRIPT=%o', true, ctx.env.EGG_TYPESCRIPT);
66
+ }
67
+ else if (typeof ctx.args.pkgEgg.typescript === 'boolean') {
68
+ // read `egg.typescript` from package.json if not pass argv
69
+ ctx.args.typescript = ctx.args.pkgEgg.typescript;
70
+ debug('detect typescript=%o from pkg.egg.typescript=%o', true, ctx.args.pkgEgg.typescript);
71
+ }
72
+ else if (pkg.dependencies?.typescript) {
73
+ // auto detect pkg.dependencies.typescript or pkg.devDependencies.typescript
74
+ ctx.args.typescript = true;
75
+ debug('detect typescript=%o from pkg.dependencies.typescript=%o', true, pkg.dependencies.typescript);
76
+ }
77
+ else if (pkg.devDependencies?.typescript) {
78
+ ctx.args.typescript = true;
79
+ debug('detect typescript=%o from pkg.devDependencies.typescript=%o', true, pkg.devDependencies.typescript);
80
+ }
81
+ else if (await hasTsConfig(ctx.args.base)) {
82
+ // tsconfig.json exists
83
+ ctx.args.typescript = true;
84
+ debug('detect typescript=%o cause tsconfig.json exists', true);
85
+ }
86
+ else if (tscompiler) {
87
+ ctx.args.typescript = true;
88
+ debug('detect typescript=%o from --tscompiler=%o', true, tscompiler);
89
+ }
90
+ }
91
+ const isESM = pkg.type === 'module';
92
+ if (ctx.args.typescript) {
93
+ const findPaths = [getSourceFilename('middleware')];
94
+ if (tscompiler) {
95
+ // try app baseDir first on custom tscompiler
96
+ findPaths.unshift(ctx.args.base);
97
+ }
98
+ ctx.args.tscompiler = tscompiler ?? 'ts-node/register';
99
+ const tsNodeRegister = importResolve(ctx.args.tscompiler, {
100
+ paths: findPaths,
101
+ });
102
+ // should require tsNodeRegister on current process, let it can require *.ts files
103
+ // e.g.: dev command will execute egg loader to find configs and plugins
104
+ // await importModule(tsNodeRegister);
105
+ // let child process auto require ts-node too
106
+ if (isESM) {
107
+ addNodeOptionsToEnv(`--import ${tsNodeRegister}`, ctx.env);
108
+ }
109
+ else {
110
+ addNodeOptionsToEnv(`--require ${tsNodeRegister}`, ctx.env);
111
+ }
112
+ // addNodeOptionsToEnv(`--require ${tsNodeRegister}`, ctx.env);
113
+ // tell egg loader to load ts file
114
+ // see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L443
115
+ ctx.env.EGG_TYPESCRIPT = 'true';
116
+ // set current process.env.EGG_TYPESCRIPT too
117
+ process.env.EGG_TYPESCRIPT = 'true';
118
+ // load files from tsconfig on startup
119
+ ctx.env.TS_NODE_FILES = process.env.TS_NODE_FILES ?? 'true';
120
+ // keep same logic with egg-core, test cmd load files need it
121
+ // see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L49
122
+ // addNodeOptionsToEnv(`--require ${importResolve('tsconfig-paths/register', {
123
+ // paths: [ getSourceDirname() ],
124
+ // })}`, ctx.env);
125
+ }
126
+ if (isESM) {
127
+ // use ts-node/esm loader on esm
128
+ let esmLoader = importResolve('ts-node/esm', {
129
+ paths: [getSourceDirname()],
130
+ });
131
+ if (process.platform === 'win32') {
132
+ // ES Module loading with absolute path fails on windows
133
+ // https://github.com/nodejs/node/issues/31710#issuecomment-583916239
134
+ // https://nodejs.org/api/url.html#url_url_pathtofileurl_path
135
+ esmLoader = pathToFileURL(esmLoader).href;
136
+ }
137
+ // wait for https://github.com/nodejs/node/issues/40940
138
+ addNodeOptionsToEnv('--no-warnings', ctx.env);
139
+ addNodeOptionsToEnv(`--loader ${esmLoader}`, ctx.env);
140
+ }
141
+ if (ctx.args.declarations === undefined) {
142
+ if (typeof ctx.args.pkgEgg.declarations === 'boolean') {
143
+ // read `egg.declarations` from package.json if not pass argv
144
+ ctx.args.declarations = ctx.args.pkgEgg.declarations;
145
+ debug('detect declarations from pkg.egg.declarations=%o', ctx.args.pkgEgg.declarations);
146
+ }
147
+ }
148
+ if (ctx.args.declarations) {
149
+ const etsBin = importResolve('egg-ts-helper/dist/bin');
150
+ debug('run ets first: %o', etsBin);
151
+ await runScript(`node ${etsBin}`);
152
+ }
153
+ if (ctx.args.pkgEgg.revert) {
154
+ ctx.args.execArgv = ctx.args.execArgv || [];
155
+ const reverts = Array.isArray(ctx.args.pkgEgg.revert) ? ctx.args.pkgEgg.revert : [ctx.args.pkgEgg.revert];
156
+ for (const revert of reverts) {
157
+ ctx.args.execArgv.push(`--security-revert=${revert}`);
158
+ }
159
+ }
160
+ debug('set NODE_OPTIONS: %o', ctx.env.NODE_OPTIONS);
161
+ debug('ctx.args: %o', ctx.args);
162
+ debug('enter next');
163
+ await next();
164
+ debug('after next');
165
+ });
166
+ }
167
+ };
168
+ __decorate([
169
+ Inject(),
170
+ __metadata("design:type", Program)
171
+ ], GlobalOptions.prototype, "program", void 0);
172
+ __decorate([
173
+ LifecycleHook(),
174
+ __metadata("design:type", Function),
175
+ __metadata("design:paramtypes", []),
176
+ __metadata("design:returntype", Promise)
177
+ ], GlobalOptions.prototype, "configDidLoad", null);
178
+ GlobalOptions = __decorate([
179
+ LifecycleHookUnit()
180
+ ], GlobalOptions);
181
+ export default GlobalOptions;
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX29wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWlkZGxld2FyZS9nbG9iYWxfb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxNQUFNLEVBQXdCLGFBQWEsRUFBRSxpQkFBaUIsRUFDOUQsT0FBTyxHQUNSLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEdBQ2hELE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBR2hELElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUFFZixPQUFPLENBQVU7SUFHNUIsQUFBTixLQUFLLENBQUMsYUFBYTtRQUNqQixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxzREFBc0Q7Z0JBQ25FLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLFdBQVcsRUFBRSxxRUFBcUU7Z0JBQ2xGLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLG1DQUFtQztnQkFDaEQsSUFBSSxF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
@@ -0,0 +1,5 @@
1
+ import { ApplicationLifecycle } from '@artus-cli/artus-cli';
2
+ export default class implements ApplicationLifecycle {
3
+ private readonly program;
4
+ configDidLoad(): Promise<void>;
5
+ }