@servicetitan/startup 32.2.0 → 32.3.1
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.
- package/dist/cli/commands/build.d.ts +36 -7
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +35 -10
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/bundle-package.d.ts +9 -10
- package/dist/cli/commands/bundle-package.d.ts.map +1 -1
- package/dist/cli/commands/bundle-package.js +6 -22
- package/dist/cli/commands/bundle-package.js.map +1 -1
- package/dist/cli/commands/clean.d.ts +2 -2
- package/dist/cli/commands/clean.d.ts.map +1 -1
- package/dist/cli/commands/clean.js +16 -4
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/convert-eslint-config.d.ts +2 -2
- package/dist/cli/commands/convert-eslint-config.d.ts.map +1 -1
- package/dist/cli/commands/convert-eslint-config.js +3 -4
- package/dist/cli/commands/convert-eslint-config.js.map +1 -1
- package/dist/cli/commands/eslint.d.ts +3 -5
- package/dist/cli/commands/eslint.d.ts.map +1 -1
- package/dist/cli/commands/eslint.js +2 -18
- package/dist/cli/commands/eslint.js.map +1 -1
- package/dist/cli/commands/get-command.d.ts.map +1 -1
- package/dist/cli/commands/get-command.js +2 -0
- package/dist/cli/commands/get-command.js.map +1 -1
- package/dist/cli/commands/index.d.ts +0 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +0 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +10 -6
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +21 -7
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +33 -11
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/kendo-ui-license.d.ts +3 -3
- package/dist/cli/commands/kendo-ui-license.d.ts.map +1 -1
- package/dist/cli/commands/kendo-ui-license.js +17 -5
- package/dist/cli/commands/kendo-ui-license.js.map +1 -1
- package/dist/cli/commands/lint.d.ts +31 -12
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +34 -13
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/mfe-list.d.ts +46 -0
- package/dist/cli/commands/mfe-list.d.ts.map +1 -0
- package/dist/cli/commands/mfe-list.js +200 -0
- package/dist/cli/commands/mfe-list.js.map +1 -0
- package/dist/cli/commands/mfe-package-clean.d.ts +29 -5
- package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-clean.js +28 -5
- package/dist/cli/commands/mfe-package-clean.js.map +1 -1
- package/dist/cli/commands/mfe-package-publish.d.ts +37 -5
- package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-publish.js +36 -5
- package/dist/cli/commands/mfe-package-publish.js.map +1 -1
- package/dist/cli/commands/mfe-publish.d.ts +17 -4
- package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-publish.js +37 -7
- package/dist/cli/commands/mfe-publish.js.map +1 -1
- package/dist/cli/commands/prepare-package.d.ts +3 -5
- package/dist/cli/commands/prepare-package.d.ts.map +1 -1
- package/dist/cli/commands/prepare-package.js +2 -18
- package/dist/cli/commands/prepare-package.js.map +1 -1
- package/dist/cli/commands/review/review.d.ts +14 -6
- package/dist/cli/commands/review/review.d.ts.map +1 -1
- package/dist/cli/commands/review/review.js +27 -23
- package/dist/cli/commands/review/review.js.map +1 -1
- package/dist/cli/commands/run-task.d.ts +10 -6
- package/dist/cli/commands/run-task.d.ts.map +1 -1
- package/dist/cli/commands/run-task.js +16 -13
- package/dist/cli/commands/run-task.js.map +1 -1
- package/dist/cli/commands/start.d.ts +28 -7
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +27 -10
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/styles-check.d.ts +2 -2
- package/dist/cli/commands/styles-check.d.ts.map +1 -1
- package/dist/cli/commands/styles-check.js +2 -1
- package/dist/cli/commands/styles-check.js.map +1 -1
- package/dist/cli/commands/test/tests.d.ts +14 -5
- package/dist/cli/commands/test/tests.d.ts.map +1 -1
- package/dist/cli/commands/test/tests.js +26 -13
- package/dist/cli/commands/test/tests.js.map +1 -1
- package/dist/cli/commands/types.d.ts +13 -4
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/types.js +28 -0
- package/dist/cli/commands/types.js.map +1 -1
- package/dist/cli/commands/upload-sourcemaps.d.ts +3 -5
- package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
- package/dist/cli/commands/upload-sourcemaps.js +5 -20
- package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
- package/dist/cli/index.js +47 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tasks/swc-compile-package.d.ts +2 -2
- package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
- package/dist/cli/tasks/swc-compile-package.js.map +1 -1
- package/dist/cli/tasks/tsc-compile-package.d.ts +2 -2
- package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
- package/dist/cli/tasks/tsc-compile-package.js +1 -1
- package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
- package/dist/cli/tasks/tsc-compile.d.ts +2 -2
- package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
- package/dist/cli/tasks/tsc-compile.js.map +1 -1
- package/dist/cli/utils/bundle.js +1 -1
- package/dist/cli/utils/bundle.js.map +1 -1
- package/dist/cli/utils/cli-npm.d.ts +14 -0
- package/dist/cli/utils/cli-npm.d.ts.map +1 -1
- package/dist/cli/utils/cli-npm.js +44 -0
- package/dist/cli/utils/cli-npm.js.map +1 -1
- package/dist/cli/utils/cli-os.d.ts +2 -2
- package/dist/cli/utils/cli-os.d.ts.map +1 -1
- package/dist/cli/utils/cli-os.js +13 -9
- package/dist/cli/utils/cli-os.js.map +1 -1
- package/dist/cli/utils/eslint.d.ts +2 -1
- package/dist/cli/utils/eslint.d.ts.map +1 -1
- package/dist/cli/utils/eslint.js.map +1 -1
- package/dist/cli/utils/index.d.ts +1 -0
- package/dist/cli/utils/index.d.ts.map +1 -1
- package/dist/cli/utils/index.js +1 -0
- package/dist/cli/utils/index.js.map +1 -1
- package/dist/cli/utils/is-tty.d.ts +2 -0
- package/dist/cli/utils/is-tty.d.ts.map +1 -0
- package/dist/cli/utils/is-tty.js +15 -0
- package/dist/cli/utils/is-tty.js.map +1 -0
- package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
- package/dist/cli/utils/lerna-exec.js +2 -0
- package/dist/cli/utils/lerna-exec.js.map +1 -1
- package/dist/cli/utils/maybe-create-git-folder.d.ts +2 -3
- package/dist/cli/utils/maybe-create-git-folder.d.ts.map +1 -1
- package/dist/cli/utils/maybe-create-git-folder.js +4 -9
- package/dist/cli/utils/maybe-create-git-folder.js.map +1 -1
- package/dist/cli/utils/process-tree.d.ts.map +1 -1
- package/dist/cli/utils/process-tree.js +2 -2
- package/dist/cli/utils/process-tree.js.map +1 -1
- package/dist/cli/utils/set-node-options.d.ts.map +1 -1
- package/dist/cli/utils/set-node-options.js +2 -1
- package/dist/cli/utils/set-node-options.js.map +1 -1
- package/dist/utils/find-packages.d.ts +1 -0
- package/dist/utils/find-packages.d.ts.map +1 -1
- package/dist/utils/find-packages.js.map +1 -1
- package/dist/utils/format-relative-date.d.ts +2 -0
- package/dist/utils/format-relative-date.d.ts.map +1 -0
- package/dist/utils/format-relative-date.js +60 -0
- package/dist/utils/format-relative-date.js.map +1 -0
- package/dist/utils/get-configuration.d.ts +1 -0
- package/dist/utils/get-configuration.d.ts.map +1 -1
- package/dist/utils/get-configuration.js +1 -0
- package/dist/utils/get-configuration.js.map +1 -1
- package/dist/utils/get-packages.d.ts +3 -5
- package/dist/utils/get-packages.d.ts.map +1 -1
- package/dist/utils/get-packages.js +1 -4
- package/dist/utils/get-packages.js.map +1 -1
- package/dist/utils/get-startup-version.d.ts.map +1 -1
- package/dist/utils/get-startup-version.js +1 -1
- package/dist/utils/get-startup-version.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/webpack/configs/loaders/style-loader.d.ts +1 -1
- package/dist/webpack/configs/loaders/style-loader.d.ts.map +1 -1
- package/dist/webpack/configs/loaders/style-loader.js +2 -2
- package/dist/webpack/configs/loaders/style-loader.js.map +1 -1
- package/dist/webpack/configs/optimization-config.js +5 -5
- package/dist/webpack/configs/optimization-config.js.map +1 -1
- package/dist/webpack/configs/output-config.d.ts.map +1 -1
- package/dist/webpack/configs/output-config.js +14 -7
- package/dist/webpack/configs/output-config.js.map +1 -1
- package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js +10 -3
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
- package/package.json +9 -8
- package/src/cli/commands/__tests__/build.test.ts +1 -1
- package/src/cli/commands/__tests__/bundle-package.test.ts +22 -2
- package/src/cli/commands/__tests__/install.test.ts +42 -4
- package/src/cli/commands/__tests__/lint.test.ts +1 -1
- package/src/cli/commands/__tests__/mfe-list.test.ts +394 -0
- package/src/cli/commands/__tests__/mfe-publish.test.ts +25 -0
- package/src/cli/commands/__tests__/start.test.ts +1 -1
- package/src/cli/commands/build.ts +14 -10
- package/src/cli/commands/bundle-package.ts +19 -13
- package/src/cli/commands/clean.ts +2 -4
- package/src/cli/commands/convert-eslint-config.ts +3 -5
- package/src/cli/commands/eslint.ts +3 -5
- package/src/cli/commands/get-command.ts +2 -0
- package/src/cli/commands/index.ts +0 -1
- package/src/cli/commands/init.ts +7 -8
- package/src/cli/commands/install.ts +24 -11
- package/src/cli/commands/kendo-ui-license.ts +4 -6
- package/src/cli/commands/lint.ts +19 -19
- package/src/cli/commands/mfe-list.ts +173 -0
- package/src/cli/commands/mfe-package-clean.ts +25 -4
- package/src/cli/commands/mfe-package-publish.ts +33 -4
- package/src/cli/commands/mfe-publish.ts +37 -6
- package/src/cli/commands/prepare-package.ts +3 -5
- package/src/cli/commands/review/review.ts +9 -9
- package/src/cli/commands/run-task.ts +15 -11
- package/src/cli/commands/start.ts +12 -10
- package/src/cli/commands/styles-check.ts +2 -2
- package/src/cli/commands/test/__tests__/tests.test.ts +1 -1
- package/src/cli/commands/test/tests.ts +20 -10
- package/src/cli/commands/types.ts +14 -4
- package/src/cli/commands/upload-sourcemaps.ts +3 -5
- package/src/cli/index.ts +59 -37
- package/src/cli/tasks/swc-compile-package.ts +2 -2
- package/src/cli/tasks/tsc-compile-package.ts +4 -3
- package/src/cli/tasks/tsc-compile.ts +2 -2
- package/src/cli/utils/__tests__/bundle.test.ts +13 -0
- package/src/cli/utils/__tests__/cli-npm.test.ts +89 -0
- package/src/cli/utils/__tests__/is-tty.test.ts +17 -0
- package/src/cli/utils/__tests__/lerna-exec.test.ts +7 -0
- package/src/cli/utils/__tests__/maybe-create-git-folder.test.ts +11 -32
- package/src/cli/utils/__tests__/set-node-options.test.ts +10 -10
- package/src/cli/utils/bundle.ts +1 -1
- package/src/cli/utils/cli-npm.ts +34 -0
- package/src/cli/utils/cli-os.ts +12 -25
- package/src/cli/utils/eslint.ts +2 -1
- package/src/cli/utils/index.ts +1 -0
- package/src/cli/utils/is-tty.ts +3 -0
- package/src/cli/utils/lerna-exec.ts +3 -0
- package/src/cli/utils/maybe-create-git-folder.ts +5 -12
- package/src/cli/utils/process-tree.ts +4 -2
- package/src/cli/utils/set-node-options.ts +2 -1
- package/src/utils/__tests__/format-relative-date.test.ts +61 -0
- package/src/utils/__tests__/get-packages.test.ts +3 -0
- package/src/utils/find-packages.ts +1 -0
- package/src/utils/format-relative-date.ts +33 -0
- package/src/utils/get-configuration.ts +1 -0
- package/src/utils/get-packages.ts +3 -9
- package/src/utils/get-startup-version.ts +1 -3
- package/src/utils/index.ts +1 -0
- package/src/webpack/__mocks__/style-rules.ts +3 -3
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +6 -14
- package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +52 -29
- package/src/webpack/configs/loaders/style-loader.ts +5 -2
- package/src/webpack/configs/optimization-config.ts +5 -5
- package/src/webpack/configs/output-config.ts +10 -5
- package/src/webpack/configs/plugins/assets-manifest-plugin.ts +11 -4
- package/dist/cli/commands/get-user-commands.d.ts +0 -7
- package/dist/cli/commands/get-user-commands.d.ts.map +0 -1
- package/dist/cli/commands/get-user-commands.js +0 -27
- package/dist/cli/commands/get-user-commands.js.map +0 -1
- package/src/cli/commands/__tests__/get-user-commands.test.ts +0 -27
- package/src/cli/commands/get-user-commands.ts +0 -19
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Command } from './types';
|
|
2
|
-
interface Args {
|
|
1
|
+
import { Command, CommandArgs } from './types';
|
|
2
|
+
interface Args extends CommandArgs {
|
|
3
3
|
'cdn-path'?: string;
|
|
4
4
|
'code-coverage'?: boolean;
|
|
5
5
|
'config'?: string;
|
|
@@ -8,11 +8,40 @@ interface Args {
|
|
|
8
8
|
'stat'?: boolean;
|
|
9
9
|
'use-tsc'?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare class Build
|
|
12
|
-
|
|
13
|
-
readonly greedy = true;
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export declare class Build extends Command<Args> {
|
|
12
|
+
static readonly description = "Build project for production";
|
|
13
|
+
static readonly greedy = true;
|
|
14
|
+
static readonly options: {
|
|
15
|
+
'cdn-path': {
|
|
16
|
+
string: boolean;
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
'code-coverage': {
|
|
20
|
+
boolean: boolean;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
config: {
|
|
24
|
+
string: boolean;
|
|
25
|
+
hidden: boolean;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
ignore: {
|
|
29
|
+
array: boolean;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
scope: {
|
|
33
|
+
array: boolean;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
stat: {
|
|
37
|
+
boolean: boolean;
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
'use-tsc': {
|
|
41
|
+
boolean: boolean;
|
|
42
|
+
description: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
16
45
|
execute(): Promise<void>;
|
|
17
46
|
}
|
|
18
47
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAWD,qBAAa,KAAM,SAAQ,OAAO,CAAC,IAAI,CAAC;IACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,kCAAkC;IAC7D,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQrB;IAGI,OAAO;CAkFhB"}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "Build", {
|
|
|
11
11
|
const _utils = require("../../utils");
|
|
12
12
|
const _utils1 = require("../utils");
|
|
13
13
|
const _kendouilicense = require("./kendo-ui-license");
|
|
14
|
+
const _types = require("./types");
|
|
14
15
|
function _define_property(obj, key, value) {
|
|
15
16
|
if (key in obj) {
|
|
16
17
|
Object.defineProperty(obj, key, {
|
|
@@ -42,10 +43,7 @@ var BuildProcesses = /*#__PURE__*/ function(BuildProcesses) {
|
|
|
42
43
|
BuildProcesses[BuildProcesses["BundlePackage"] = 5] = "BundlePackage";
|
|
43
44
|
return BuildProcesses;
|
|
44
45
|
}(BuildProcesses || {});
|
|
45
|
-
class Build {
|
|
46
|
-
description() {
|
|
47
|
-
return 'build project for production';
|
|
48
|
-
}
|
|
46
|
+
class Build extends _types.Command {
|
|
49
47
|
async execute() {
|
|
50
48
|
(0, _utils1.checkArgs)(this.args, {
|
|
51
49
|
obsolete: [
|
|
@@ -135,13 +133,40 @@ class Build {
|
|
|
135
133
|
});
|
|
136
134
|
await processTree.run();
|
|
137
135
|
}
|
|
138
|
-
constructor(args){
|
|
139
|
-
_define_property(this, "args", void 0);
|
|
140
|
-
_define_property(this, "greedy", void 0);
|
|
141
|
-
this.args = args;
|
|
142
|
-
this.greedy = true;
|
|
143
|
-
}
|
|
144
136
|
}
|
|
137
|
+
_define_property(Build, "description", 'Build project for production');
|
|
138
|
+
_define_property(Build, "greedy", true);
|
|
139
|
+
_define_property(Build, "options", {
|
|
140
|
+
'cdn-path': {
|
|
141
|
+
string: true,
|
|
142
|
+
description: 'Base url for application assets'
|
|
143
|
+
},
|
|
144
|
+
'code-coverage': {
|
|
145
|
+
boolean: true,
|
|
146
|
+
description: 'Instrument code for coverage analysis?'
|
|
147
|
+
},
|
|
148
|
+
'config': {
|
|
149
|
+
string: true,
|
|
150
|
+
hidden: true,
|
|
151
|
+
description: 'Use specified configuration'
|
|
152
|
+
},
|
|
153
|
+
'ignore': {
|
|
154
|
+
array: true,
|
|
155
|
+
description: 'Packages to skip'
|
|
156
|
+
},
|
|
157
|
+
'scope': {
|
|
158
|
+
array: true,
|
|
159
|
+
description: 'Packages to build'
|
|
160
|
+
},
|
|
161
|
+
'stat': {
|
|
162
|
+
boolean: true,
|
|
163
|
+
description: 'Generate bundle report?'
|
|
164
|
+
},
|
|
165
|
+
'use-tsc': {
|
|
166
|
+
boolean: true,
|
|
167
|
+
description: 'Use tsc to compile packages?'
|
|
168
|
+
}
|
|
169
|
+
});
|
|
145
170
|
_ts_decorate([
|
|
146
171
|
_utils.logErrors,
|
|
147
172
|
_ts_metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile, lernaExec, typeCheck, ProcessTree } from '../utils';\nimport { kendoUILicense } from './kendo-ui-license';\nimport { Command } from './types';\n\ninterface Args {\n 'cdn-path'?: string;\n 'code-coverage'?: boolean;\n 'config'?: string;\n 'ignore'?: string | string[];\n 'scope'?: string | string[];\n 'stat'?: boolean;\n 'use-tsc'?: boolean;\n}\n\nenum BuildProcesses {\n Compile,\n KendoUILicense,\n PreparePackage,\n TypeCheck,\n BundleExposedDependencies,\n BundlePackage,\n}\n\nexport class Build
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile, lernaExec, typeCheck, ProcessTree } from '../utils';\nimport { kendoUILicense } from './kendo-ui-license';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n 'cdn-path'?: string;\n 'code-coverage'?: boolean;\n 'config'?: string;\n 'ignore'?: string | string[];\n 'scope'?: string | string[];\n 'stat'?: boolean;\n 'use-tsc'?: boolean;\n}\n\nenum BuildProcesses {\n Compile,\n KendoUILicense,\n PreparePackage,\n TypeCheck,\n BundleExposedDependencies,\n BundlePackage,\n}\n\nexport class Build extends Command<Args> {\n static readonly description = 'Build project for production';\n static readonly greedy = true;\n static readonly options = {\n 'cdn-path': { string: true, description: 'Base url for application assets' },\n 'code-coverage': { boolean: true, description: 'Instrument code for coverage analysis?' },\n 'config': { string: true, hidden: true, description: 'Use specified configuration' },\n 'ignore': { array: true, description: 'Packages to skip' },\n 'scope': { array: true, description: 'Packages to build' },\n 'stat': { boolean: true, description: 'Generate bundle report?' },\n 'use-tsc': { boolean: true, description: 'Use tsc to compile packages?' },\n };\n\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args['use-tsc'];\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Webpack],\n });\n if (packages.length === 0) {\n return;\n }\n\n if (this.args['cdn-path']) {\n process.env.CLIENT_CDN_PATH = this.args['cdn-path'];\n }\n\n const scope = packages.map(({ name }) => name);\n const webpackScope = packages\n .filter(({ type }) => type === PackageType.Webpack)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof BuildProcesses>();\n\n processTree.add(BuildProcesses.Compile, () => compile({ packages: scope, useTsc }));\n processTree.add(BuildProcesses.KendoUILicense, () => kendoUILicense());\n processTree.add(BuildProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(BuildProcesses.TypeCheck, () => typeCheck({ packages: scope }), {\n dependsOn: [BuildProcesses.PreparePackage],\n });\n processTree.add(\n BuildProcesses.BundleExposedDependencies,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies'],\n });\n },\n {\n dependsOn: [\n BuildProcesses.Compile,\n BuildProcesses.KendoUILicense,\n BuildProcesses.PreparePackage,\n ],\n }\n );\n processTree.add(\n BuildProcesses.BundlePackage,\n () => {\n if (webpackScope.length === 0) {\n return Promise.resolve();\n }\n\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': webpackScope,\n 'stream': true,\n '--': [\n ...[this.args.config ? `--config \"${this.args.config}\"` : undefined],\n ...[this.args['code-coverage'] ? '--code-coverage' : undefined],\n ...[this.args.stat ? '--stat' : undefined],\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [BuildProcesses.BundleExposedDependencies] }\n );\n\n await processTree.run();\n }\n}\n"],"names":["Build","BuildProcesses","Command","execute","checkArgs","args","obsolete","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Webpack","length","process","env","CLIENT_CDN_PATH","map","name","webpackScope","filter","processTree","ProcessTree","add","compile","kendoUILicense","lernaExec","cmd","stream","typeCheck","dependsOn","Promise","resolve","config","undefined","stat","item","run","description","greedy","options","string","boolean","hidden","array"],"mappings":"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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { Command } from '
|
|
2
|
-
interface Args {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { Command, CommandArgs } from './types';
|
|
2
|
+
interface Args extends CommandArgs {
|
|
3
|
+
codeCoverage?: boolean;
|
|
4
|
+
config?: string;
|
|
5
|
+
exposedDependencies?: boolean;
|
|
6
|
+
stat?: boolean;
|
|
7
|
+
useWatchConfig?: boolean;
|
|
8
|
+
watch?: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare class BundlePackage
|
|
10
|
-
private readonly args;
|
|
11
|
-
constructor(args: Args);
|
|
10
|
+
export declare class BundlePackage extends Command<Args> {
|
|
12
11
|
execute(): Promise<void>;
|
|
13
12
|
}
|
|
14
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bundle-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bundle-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bundle-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAc,SAAQ,OAAO,CAAC,IAAI,CAAC;IAEtC,OAAO;CAyBhB"}
|
|
@@ -10,19 +10,7 @@ Object.defineProperty(exports, "BundlePackage", {
|
|
|
10
10
|
});
|
|
11
11
|
const _utils = require("../../utils");
|
|
12
12
|
const _utils1 = require("../utils");
|
|
13
|
-
|
|
14
|
-
if (key in obj) {
|
|
15
|
-
Object.defineProperty(obj, key, {
|
|
16
|
-
value: value,
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true
|
|
20
|
-
});
|
|
21
|
-
} else {
|
|
22
|
-
obj[key] = value;
|
|
23
|
-
}
|
|
24
|
-
return obj;
|
|
25
|
-
}
|
|
13
|
+
const _types = require("./types");
|
|
26
14
|
function _ts_decorate(decorators, target, key, desc) {
|
|
27
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
28
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -32,19 +20,19 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
32
20
|
function _ts_metadata(k, v) {
|
|
33
21
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
34
22
|
}
|
|
35
|
-
class BundlePackage {
|
|
23
|
+
class BundlePackage extends _types.Command {
|
|
36
24
|
async execute() {
|
|
37
|
-
const { config, stat = false, watch } = this.args;
|
|
25
|
+
const { config, codeCoverage, exposedDependencies: emitExposedDependencies, stat = false, useWatchConfig, watch } = this.args;
|
|
38
26
|
if ((0, _utils1.getModuleType)((0, _utils.getTsConfig)()) !== 'esnext') {
|
|
39
27
|
_utils.log.warning('webpack packages should set compilerOptions.module to "esnext" in tsconfig.json');
|
|
40
28
|
}
|
|
41
|
-
const emitExposedDependencies = this.args['exposed-dependencies'];
|
|
42
29
|
const options = {
|
|
43
30
|
...emitExposedDependencies ? {} : {
|
|
44
31
|
config
|
|
45
32
|
},
|
|
46
|
-
codeCoverage
|
|
47
|
-
emitExposedDependencies
|
|
33
|
+
codeCoverage,
|
|
34
|
+
emitExposedDependencies,
|
|
35
|
+
useWatchConfig
|
|
48
36
|
};
|
|
49
37
|
await (0, _utils1.bundle)({
|
|
50
38
|
buildStat: stat,
|
|
@@ -52,10 +40,6 @@ class BundlePackage {
|
|
|
52
40
|
watch
|
|
53
41
|
});
|
|
54
42
|
}
|
|
55
|
-
constructor(args){
|
|
56
|
-
_define_property(this, "args", void 0);
|
|
57
|
-
this.args = args;
|
|
58
|
-
}
|
|
59
43
|
}
|
|
60
44
|
_ts_decorate([
|
|
61
45
|
_utils.logErrors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/bundle-package.ts"],"sourcesContent":["import { getTsConfig, log, logErrors } from '../../utils';\nimport { bundle, getModuleType } from '../utils';\nimport { Command } from '
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/bundle-package.ts"],"sourcesContent":["import { getTsConfig, log, logErrors } from '../../utils';\nimport { bundle, getModuleType } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n codeCoverage?: boolean;\n config?: string;\n exposedDependencies?: boolean;\n stat?: boolean;\n useWatchConfig?: boolean;\n watch?: boolean;\n}\n\nexport class BundlePackage extends Command<Args> {\n @logErrors\n async execute() {\n const {\n config,\n codeCoverage,\n exposedDependencies: emitExposedDependencies,\n stat = false,\n useWatchConfig,\n watch,\n } = this.args;\n\n if (getModuleType(getTsConfig()) !== 'esnext') {\n log.warning(\n 'webpack packages should set compilerOptions.module to \"esnext\" in tsconfig.json'\n );\n }\n\n const options: Parameters<typeof bundle>[0] = {\n ...(emitExposedDependencies ? {} : { config }),\n codeCoverage,\n emitExposedDependencies,\n useWatchConfig,\n };\n\n await bundle({ buildStat: stat, ...options, watch });\n }\n}\n"],"names":["BundlePackage","Command","execute","config","codeCoverage","exposedDependencies","emitExposedDependencies","stat","useWatchConfig","watch","args","getModuleType","getTsConfig","log","warning","options","bundle","buildStat"],"mappings":";;;;+BAaaA;;;eAAAA;;;uBAb+B;wBACN;uBACD;;;;;;;;;;AAW9B,MAAMA,sBAAsBC,cAAO;IACtC,MACMC,UAAU;QACZ,MAAM,EACFC,MAAM,EACNC,YAAY,EACZC,qBAAqBC,uBAAuB,EAC5CC,OAAO,KAAK,EACZC,cAAc,EACdC,KAAK,EACR,GAAG,IAAI,CAACC,IAAI;QAEb,IAAIC,IAAAA,qBAAa,EAACC,IAAAA,kBAAW,SAAQ,UAAU;YAC3CC,UAAG,CAACC,OAAO,CACP;QAER;QAEA,MAAMC,UAAwC;YAC1C,GAAIT,0BAA0B,CAAC,IAAI;gBAAEH;YAAO,CAAC;YAC7CC;YACAE;YACAE;QACJ;QAEA,MAAMQ,IAAAA,cAAM,EAAC;YAAEC,WAAWV;YAAM,GAAGQ,OAAO;YAAEN;QAAM;IACtD;AACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command } from './types';
|
|
2
|
-
export declare class Clean
|
|
3
|
-
description
|
|
2
|
+
export declare class Clean extends Command {
|
|
3
|
+
static readonly description = "Reset project to fresh state";
|
|
4
4
|
execute(): Promise<void>;
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=clean.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,KAAM,
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,KAAM,SAAQ,OAAO;IAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,kCAAkC;IAGvD,OAAO;CAahB"}
|
|
@@ -10,6 +10,20 @@ Object.defineProperty(exports, "Clean", {
|
|
|
10
10
|
});
|
|
11
11
|
const _child_process = require("child_process");
|
|
12
12
|
const _utils = require("../../utils");
|
|
13
|
+
const _types = require("./types");
|
|
14
|
+
function _define_property(obj, key, value) {
|
|
15
|
+
if (key in obj) {
|
|
16
|
+
Object.defineProperty(obj, key, {
|
|
17
|
+
value: value,
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
obj[key] = value;
|
|
24
|
+
}
|
|
25
|
+
return obj;
|
|
26
|
+
}
|
|
13
27
|
function _ts_decorate(decorators, target, key, desc) {
|
|
14
28
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
29
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -19,10 +33,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
19
33
|
function _ts_metadata(k, v) {
|
|
20
34
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
21
35
|
}
|
|
22
|
-
class Clean {
|
|
23
|
-
description() {
|
|
24
|
-
return 'reset project to fresh state';
|
|
25
|
-
}
|
|
36
|
+
class Clean extends _types.Command {
|
|
26
37
|
async execute() {
|
|
27
38
|
[
|
|
28
39
|
'npx nx reset',
|
|
@@ -45,6 +56,7 @@ class Clean {
|
|
|
45
56
|
return Promise.resolve();
|
|
46
57
|
}
|
|
47
58
|
}
|
|
59
|
+
_define_property(Clean, "description", 'Reset project to fresh state');
|
|
48
60
|
_ts_decorate([
|
|
49
61
|
_utils.logErrors,
|
|
50
62
|
_ts_metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { exec, execSync } from 'child_process';\nimport { log, logErrors } from '../../utils';\nimport { Command } from './types';\n\nexport class Clean
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { exec, execSync } from 'child_process';\nimport { log, logErrors } from '../../utils';\nimport { Command } from './types';\n\nexport class Clean extends Command {\n static readonly description = 'Reset project to fresh state';\n\n @logErrors\n async execute() {\n ['npx nx reset', 'npx jest --clearCache', 'npm cache clear --force'].forEach(command => {\n log.info(`Running: ${command}`);\n execSync(command, { stdio: ['ignore', 'ignore', 'inherit'] });\n });\n\n // Use exec() to avoid error when startup dependencies are deleted while startup is running\n const command = 'git clean -fdX';\n log.info(`Running: ${command}`);\n exec(command);\n\n return Promise.resolve();\n }\n}\n"],"names":["Clean","Command","execute","forEach","command","log","info","execSync","stdio","exec","Promise","resolve","description"],"mappings":";;;;+BAIaA;;;eAAAA;;;+BAJkB;uBACA;uBACP;;;;;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,cAAcC,cAAO;IAG9B,MACMC,UAAU;QACZ;YAAC;YAAgB;YAAyB;SAA0B,CAACC,OAAO,CAACC,CAAAA;YACzEC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;YAC9BG,IAAAA,uBAAQ,EAACH,SAAS;gBAAEI,OAAO;oBAAC;oBAAU;oBAAU;iBAAU;YAAC;QAC/D;QAEA,2FAA2F;QAC3F,MAAMJ,UAAU;QAChBC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;QAC9BK,IAAAA,mBAAI,EAACL;QAEL,OAAOM,QAAQC,OAAO;IAC1B;AACJ;AAhBI,iBADSX,OACOY,eAAc"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from './types';
|
|
2
|
-
export declare class ConvertEslintConfig
|
|
2
|
+
export declare class ConvertEslintConfig extends Command {
|
|
3
|
+
static readonly description = "Convert v8.x eslintrc.json to v9.x flat config";
|
|
3
4
|
private static readonly recipes;
|
|
4
|
-
description(): string;
|
|
5
5
|
execute(): Promise<void>;
|
|
6
6
|
private convert;
|
|
7
7
|
private format;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-eslint-config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert-eslint-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAoClC,qBAAa,mBAAoB,
|
|
1
|
+
{"version":3,"file":"convert-eslint-config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert-eslint-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAoClC,qBAAa,mBAAoB,SAAQ,OAAO;IAC5C,MAAM,CAAC,QAAQ,CAAC,WAAW,oDAAoD;IAE/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CA+B7B;IAGI,OAAO;IAmBb,OAAO,CAAC,OAAO;IA2Bf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,cAAc;YAOR,QAAQ;IAQtB,OAAO,CAAC,QAAQ;CAGnB"}
|
|
@@ -13,6 +13,7 @@ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
|
13
13
|
const _glob = require("glob");
|
|
14
14
|
const _json5 = /*#__PURE__*/ _interop_require_default(require("json5"));
|
|
15
15
|
const _utils = require("../../utils");
|
|
16
|
+
const _types = require("./types");
|
|
16
17
|
function _define_property(obj, key, value) {
|
|
17
18
|
if (key in obj) {
|
|
18
19
|
Object.defineProperty(obj, key, {
|
|
@@ -43,10 +44,7 @@ function _ts_metadata(k, v) {
|
|
|
43
44
|
const oldConfigFile = '.eslintrc.json';
|
|
44
45
|
const newConfigFile = 'eslint.config.mjs';
|
|
45
46
|
const eslintIgnoreFile = '.eslintignore';
|
|
46
|
-
class ConvertEslintConfig {
|
|
47
|
-
description() {
|
|
48
|
-
return 'convert v8.x eslintrc.json to v9.x flat config';
|
|
49
|
-
}
|
|
47
|
+
class ConvertEslintConfig extends _types.Command {
|
|
50
48
|
async execute() {
|
|
51
49
|
if (!_fs.default.existsSync(oldConfigFile)) {
|
|
52
50
|
throw new Error(`${oldConfigFile} not found`);
|
|
@@ -222,6 +220,7 @@ class ConvertEslintConfig {
|
|
|
222
220
|
return _json5.default.parse(_fs.default.readFileSync(filename, 'utf8'));
|
|
223
221
|
}
|
|
224
222
|
}
|
|
223
|
+
_define_property(ConvertEslintConfig, "description", 'Convert v8.x eslintrc.json to v9.x flat config');
|
|
225
224
|
_define_property(ConvertEslintConfig, "recipes", {
|
|
226
225
|
'@servicetitan/eslint-config/mono': {
|
|
227
226
|
import: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/convert-eslint-config.ts"],"sourcesContent":["import execa from 'execa';\nimport fs from 'fs';\nimport { globSync } from 'glob';\nimport JSON5 from 'json5';\n\nimport { log, logErrors, toArray } from '../../utils';\nimport { Command } from './types';\n\nconst oldConfigFile = '.eslintrc.json';\nconst newConfigFile = 'eslint.config.mjs';\nconst eslintIgnoreFile = '.eslintignore';\n\ninterface Override {\n [key: string]: unknown;\n files?: string[];\n}\n\ninterface V8Config {\n extends?: string | string[];\n ignorePatterns?: string[];\n overrides?: Override[];\n plugins?: string[];\n parserOptions?: Record<string, unknown>;\n rules?: Record<string, unknown>;\n settings?: Record<string, unknown>;\n}\n\ninterface Context {\n flatConfigs: string[];\n imports: {\n [key: string]: string | string[];\n 'eslint/config': string[];\n };\n source: V8Config;\n}\n\ninterface Recipe {\n config: string;\n files?: string[];\n import: { as: string; from?: string };\n}\n\nexport class ConvertEslintConfig implements Command {\n private static readonly recipes: Record<string, Recipe | null> = {\n '@servicetitan/eslint-config/mono': {\n import: { as: 'mono' },\n config: 'mono',\n },\n '@servicetitan/eslint-config/single': {\n import: { as: 'single' },\n config: 'single',\n },\n 'plugin:chai-friendly/recommended': {\n import: { as: 'pluginChaiFriendly', from: 'eslint-plugin-chai-friendly' },\n config: 'pluginChaiFriendly.configs.recommendedFlat',\n },\n 'plugin:cypress/recommended': {\n import: { as: 'pluginCypress', from: 'eslint-plugin-cypress/flat' },\n config: 'pluginCypress.configs.recommended',\n },\n 'plugin:mocha/recommended': {\n import: { as: 'pluginMocha', from: 'eslint-plugin-mocha' },\n config: 'pluginMocha.configs.flat.recommended',\n },\n 'plugin:storybook/recommended': {\n import: { as: 'storybook', from: 'eslint-plugin-storybook' },\n config: \"storybook.configs['flat/recommended']\",\n },\n 'plugin:testing-library/react': {\n import: { as: 'pluginTestingLibrary', from: 'eslint-plugin-testing-library' },\n config: \"pluginTestingLibrary.configs['flat/react']\",\n files: ['**/*.test.*'],\n },\n 'prettier': null,\n };\n\n description() {\n return 'convert v8.x eslintrc.json to v9.x flat config';\n }\n\n @logErrors\n async execute() {\n if (!fs.existsSync(oldConfigFile)) {\n throw new Error(`${oldConfigFile} not found`);\n }\n\n const configFiles = globSync('eslint.config.{js,cjs,mjs}');\n if (configFiles.length > 0) {\n throw new Error(`flat config \"${configFiles[0]}\" already exists`);\n }\n\n log.info(`Processing ${oldConfigFile}`);\n\n const json = this.readJson(oldConfigFile);\n fs.writeFileSync(newConfigFile, this.convert(json), 'utf-8');\n await this.prettify(newConfigFile);\n\n log.success(`Created ${newConfigFile}`);\n }\n\n private convert(source: V8Config) {\n const context: Context = {\n flatConfigs: [],\n imports: { 'eslint/config': ['defineConfig'] },\n source,\n };\n\n const handlers: { [K in keyof V8Config]: (context: Context) => void } = {\n extends: this.handleExtends.bind(this),\n overrides: this.handleOverrides.bind(this),\n parserOptions: this.handleParserOptions.bind(this),\n plugins: this.handlePlugins.bind(this),\n rules: this.handleRules.bind(this),\n settings: this.handleSettings.bind(this),\n };\n\n // Don't limit handleIgnores to a specific key because it also reads .eslintignore.rc\n this.handleIgnores(context);\n\n // Run handlers in key order to preserve ordering of configs\n Object.keys(context.source).forEach((key: keyof V8Config) => {\n handlers[key]?.(context);\n });\n\n return this.format(context);\n }\n\n private format(context: Context) {\n return `${this.formatImports(context)}\\n\\n${this.formatConfigs(context)}`;\n }\n\n private formatConfigs(context: Context) {\n return `export default defineConfig([\n ${context.flatConfigs.join()}\n ]);`;\n }\n\n private formatImports({ imports }: Context) {\n return Object.entries(imports)\n .map(([pkg, itemOrItems]) => {\n if (typeof itemOrItems === 'string') {\n return `import ${itemOrItems} from '${pkg}';`;\n }\n return `import { ${itemOrItems.join()} } from '${pkg}';`;\n })\n .join('\\n');\n }\n\n private handleExtends({ flatConfigs, imports, source }: Context) {\n const unrecognized: string[] = [];\n const extendsArray = toArray(source.extends);\n\n extendsArray.forEach(entry => {\n const recipe = ConvertEslintConfig.recipes[entry];\n if (recipe) {\n imports[recipe.import.from ?? entry] = recipe.import.as;\n if (recipe.files) {\n flatConfigs.push(`{\n files: ${JSON.stringify(recipe.files)},\n ...${recipe.config}\n }`);\n } else {\n flatConfigs.push(recipe.config);\n }\n } else if (recipe !== null) {\n unrecognized.push(entry);\n }\n });\n\n /*\n * Use extends workaround for anything we didn't recognized\n * https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/#bringing-back-extends\n */\n\n if (unrecognized.length) {\n flatConfigs.push(JSON.stringify({ extends: unrecognized }));\n }\n }\n\n private handleIgnores({ flatConfigs, imports, source: { ignorePatterns = [] } }: Context) {\n const globs = ignorePatterns.filter(glob => !!glob);\n\n if (fs.existsSync(eslintIgnoreFile)) {\n const fileGlobs = fs\n .readFileSync(eslintIgnoreFile, 'utf-8')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => !!line);\n globs.push(...fileGlobs);\n }\n\n if (globs.length === 0) {\n return;\n }\n\n const normalized = globs.map(normalizeGlob);\n\n imports['eslint/config'].push('globalIgnores');\n flatConfigs.push(`globalIgnores(${JSON.stringify(normalized)})`);\n }\n\n private handleOverrides({\n flatConfigs,\n source: { overrides },\n }: Context & { source: { overrides: NonNullable<Context['source']['overrides']> } }) {\n overrides.forEach(override => {\n flatConfigs.push(JSON.stringify(this.handleOverride(override), null, 2));\n });\n }\n\n private handleOverride({ parserOptions, ...rest }: Override) {\n rest.files = rest.files?.map(normalizeGlob);\n const languageOptions = parserOptions ? { parserOptions } : undefined;\n return { ...rest, languageOptions };\n }\n\n private handlePlugins({\n flatConfigs,\n imports,\n source,\n }: Context & { source: { plugins: NonNullable<Context['source']['plugins']> } }) {\n const plugins: Record<string, string> = {};\n\n source.plugins.forEach(name => {\n const camelized = toCamelCase(name);\n imports[`eslint-plugin-${name}`] = camelized;\n plugins[name] = camelized;\n });\n\n flatConfigs.push(`{\n plugins: {\n ${Object.entries(plugins)\n .map(([key, value]) => `'${key}': ${value}`)\n .join(',\\n')}\n } \n }`);\n }\n\n private handleParserOptions({ flatConfigs, source: { parserOptions } }: Context) {\n flatConfigs.push(JSON.stringify({ languageOptions: { parserOptions } }));\n }\n\n private handleRules({\n flatConfigs,\n source: { rules },\n }: Context & { source: { rules: NonNullable<Context['source']['rules']> } }) {\n const tsPrefix = '@typescript-eslint/';\n const nonTsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => !key.startsWith(tsPrefix))\n );\n if (Object.keys(nonTsRules).length) {\n flatConfigs.push(JSON.stringify({ rules: nonTsRules }, null, 2));\n }\n\n const tsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => key.startsWith(tsPrefix))\n );\n if (Object.keys(tsRules).length) {\n flatConfigs.push(JSON.stringify({ files: ['**/*.ts{,x}'], rules: tsRules }, null, 2));\n }\n }\n\n private handleSettings({\n flatConfigs,\n source: { settings },\n }: Context & { source: { settings: NonNullable<Context['source']['settings']> } }) {\n flatConfigs.push(JSON.stringify({ settings }));\n }\n\n private async prettify(filename: string) {\n try {\n await execa('npx', ['prettier', '-w', filename], { stdout: 'ignore' });\n } catch (error: any) {\n throw new Error(`prettier failed with exit code ${error.exitCode}`);\n }\n }\n\n private readJson(filename: string) {\n return JSON5.parse(fs.readFileSync(filename, 'utf8'));\n }\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/(-[a-z])/g, ([, letter]) => letter.toUpperCase());\n}\n\nfunction normalizeGlob(glob: string) {\n return glob.includes('/') ? glob.replace(/^(!)?\\//, '$1') : `**/${glob}`;\n}\n"],"names":["ConvertEslintConfig","oldConfigFile","newConfigFile","eslintIgnoreFile","description","execute","fs","existsSync","Error","configFiles","globSync","length","log","info","json","readJson","writeFileSync","convert","prettify","success","source","context","flatConfigs","imports","handlers","extends","handleExtends","bind","overrides","handleOverrides","parserOptions","handleParserOptions","plugins","handlePlugins","rules","handleRules","settings","handleSettings","handleIgnores","Object","keys","forEach","key","format","formatImports","formatConfigs","join","entries","map","pkg","itemOrItems","unrecognized","extendsArray","toArray","entry","recipe","recipes","import","from","as","files","push","JSON","stringify","config","ignorePatterns","globs","filter","glob","fileGlobs","readFileSync","split","line","trim","normalized","normalizeGlob","override","handleOverride","rest","languageOptions","undefined","name","camelized","toCamelCase","value","tsPrefix","nonTsRules","fromEntries","startsWith","tsRules","filename","execa","stdout","error","exitCode","JSON5","parse","str","replace","letter","toUpperCase","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/convert-eslint-config.ts"],"sourcesContent":["import execa from 'execa';\nimport fs from 'fs';\nimport { globSync } from 'glob';\nimport JSON5 from 'json5';\n\nimport { log, logErrors, toArray } from '../../utils';\nimport { Command } from './types';\n\nconst oldConfigFile = '.eslintrc.json';\nconst newConfigFile = 'eslint.config.mjs';\nconst eslintIgnoreFile = '.eslintignore';\n\ninterface Override {\n [key: string]: unknown;\n files?: string[];\n}\n\ninterface V8Config {\n extends?: string | string[];\n ignorePatterns?: string[];\n overrides?: Override[];\n plugins?: string[];\n parserOptions?: Record<string, unknown>;\n rules?: Record<string, unknown>;\n settings?: Record<string, unknown>;\n}\n\ninterface Context {\n flatConfigs: string[];\n imports: {\n [key: string]: string | string[];\n 'eslint/config': string[];\n };\n source: V8Config;\n}\n\ninterface Recipe {\n config: string;\n files?: string[];\n import: { as: string; from?: string };\n}\n\nexport class ConvertEslintConfig extends Command {\n static readonly description = 'Convert v8.x eslintrc.json to v9.x flat config';\n\n private static readonly recipes: Record<string, Recipe | null> = {\n '@servicetitan/eslint-config/mono': {\n import: { as: 'mono' },\n config: 'mono',\n },\n '@servicetitan/eslint-config/single': {\n import: { as: 'single' },\n config: 'single',\n },\n 'plugin:chai-friendly/recommended': {\n import: { as: 'pluginChaiFriendly', from: 'eslint-plugin-chai-friendly' },\n config: 'pluginChaiFriendly.configs.recommendedFlat',\n },\n 'plugin:cypress/recommended': {\n import: { as: 'pluginCypress', from: 'eslint-plugin-cypress/flat' },\n config: 'pluginCypress.configs.recommended',\n },\n 'plugin:mocha/recommended': {\n import: { as: 'pluginMocha', from: 'eslint-plugin-mocha' },\n config: 'pluginMocha.configs.flat.recommended',\n },\n 'plugin:storybook/recommended': {\n import: { as: 'storybook', from: 'eslint-plugin-storybook' },\n config: \"storybook.configs['flat/recommended']\",\n },\n 'plugin:testing-library/react': {\n import: { as: 'pluginTestingLibrary', from: 'eslint-plugin-testing-library' },\n config: \"pluginTestingLibrary.configs['flat/react']\",\n files: ['**/*.test.*'],\n },\n 'prettier': null,\n };\n\n @logErrors\n async execute() {\n if (!fs.existsSync(oldConfigFile)) {\n throw new Error(`${oldConfigFile} not found`);\n }\n\n const configFiles = globSync('eslint.config.{js,cjs,mjs}');\n if (configFiles.length > 0) {\n throw new Error(`flat config \"${configFiles[0]}\" already exists`);\n }\n\n log.info(`Processing ${oldConfigFile}`);\n\n const json = this.readJson(oldConfigFile);\n fs.writeFileSync(newConfigFile, this.convert(json), 'utf-8');\n await this.prettify(newConfigFile);\n\n log.success(`Created ${newConfigFile}`);\n }\n\n private convert(source: V8Config) {\n const context: Context = {\n flatConfigs: [],\n imports: { 'eslint/config': ['defineConfig'] },\n source,\n };\n\n const handlers: { [K in keyof V8Config]: (context: Context) => void } = {\n extends: this.handleExtends.bind(this),\n overrides: this.handleOverrides.bind(this),\n parserOptions: this.handleParserOptions.bind(this),\n plugins: this.handlePlugins.bind(this),\n rules: this.handleRules.bind(this),\n settings: this.handleSettings.bind(this),\n };\n\n // Don't limit handleIgnores to a specific key because it also reads .eslintignore.rc\n this.handleIgnores(context);\n\n // Run handlers in key order to preserve ordering of configs\n Object.keys(context.source).forEach((key: keyof V8Config) => {\n handlers[key]?.(context);\n });\n\n return this.format(context);\n }\n\n private format(context: Context) {\n return `${this.formatImports(context)}\\n\\n${this.formatConfigs(context)}`;\n }\n\n private formatConfigs(context: Context) {\n return `export default defineConfig([\n ${context.flatConfigs.join()}\n ]);`;\n }\n\n private formatImports({ imports }: Context) {\n return Object.entries(imports)\n .map(([pkg, itemOrItems]) => {\n if (typeof itemOrItems === 'string') {\n return `import ${itemOrItems} from '${pkg}';`;\n }\n return `import { ${itemOrItems.join()} } from '${pkg}';`;\n })\n .join('\\n');\n }\n\n private handleExtends({ flatConfigs, imports, source }: Context) {\n const unrecognized: string[] = [];\n const extendsArray = toArray(source.extends);\n\n extendsArray.forEach(entry => {\n const recipe = ConvertEslintConfig.recipes[entry];\n if (recipe) {\n imports[recipe.import.from ?? entry] = recipe.import.as;\n if (recipe.files) {\n flatConfigs.push(`{\n files: ${JSON.stringify(recipe.files)},\n ...${recipe.config}\n }`);\n } else {\n flatConfigs.push(recipe.config);\n }\n } else if (recipe !== null) {\n unrecognized.push(entry);\n }\n });\n\n /*\n * Use extends workaround for anything we didn't recognized\n * https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/#bringing-back-extends\n */\n\n if (unrecognized.length) {\n flatConfigs.push(JSON.stringify({ extends: unrecognized }));\n }\n }\n\n private handleIgnores({ flatConfigs, imports, source: { ignorePatterns = [] } }: Context) {\n const globs = ignorePatterns.filter(glob => !!glob);\n\n if (fs.existsSync(eslintIgnoreFile)) {\n const fileGlobs = fs\n .readFileSync(eslintIgnoreFile, 'utf-8')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => !!line);\n globs.push(...fileGlobs);\n }\n\n if (globs.length === 0) {\n return;\n }\n\n const normalized = globs.map(normalizeGlob);\n\n imports['eslint/config'].push('globalIgnores');\n flatConfigs.push(`globalIgnores(${JSON.stringify(normalized)})`);\n }\n\n private handleOverrides({\n flatConfigs,\n source: { overrides },\n }: Context & { source: { overrides: NonNullable<Context['source']['overrides']> } }) {\n overrides.forEach(override => {\n flatConfigs.push(JSON.stringify(this.handleOverride(override), null, 2));\n });\n }\n\n private handleOverride({ parserOptions, ...rest }: Override) {\n rest.files = rest.files?.map(normalizeGlob);\n const languageOptions = parserOptions ? { parserOptions } : undefined;\n return { ...rest, languageOptions };\n }\n\n private handlePlugins({\n flatConfigs,\n imports,\n source,\n }: Context & { source: { plugins: NonNullable<Context['source']['plugins']> } }) {\n const plugins: Record<string, string> = {};\n\n source.plugins.forEach(name => {\n const camelized = toCamelCase(name);\n imports[`eslint-plugin-${name}`] = camelized;\n plugins[name] = camelized;\n });\n\n flatConfigs.push(`{\n plugins: {\n ${Object.entries(plugins)\n .map(([key, value]) => `'${key}': ${value}`)\n .join(',\\n')}\n } \n }`);\n }\n\n private handleParserOptions({ flatConfigs, source: { parserOptions } }: Context) {\n flatConfigs.push(JSON.stringify({ languageOptions: { parserOptions } }));\n }\n\n private handleRules({\n flatConfigs,\n source: { rules },\n }: Context & { source: { rules: NonNullable<Context['source']['rules']> } }) {\n const tsPrefix = '@typescript-eslint/';\n const nonTsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => !key.startsWith(tsPrefix))\n );\n if (Object.keys(nonTsRules).length) {\n flatConfigs.push(JSON.stringify({ rules: nonTsRules }, null, 2));\n }\n\n const tsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => key.startsWith(tsPrefix))\n );\n if (Object.keys(tsRules).length) {\n flatConfigs.push(JSON.stringify({ files: ['**/*.ts{,x}'], rules: tsRules }, null, 2));\n }\n }\n\n private handleSettings({\n flatConfigs,\n source: { settings },\n }: Context & { source: { settings: NonNullable<Context['source']['settings']> } }) {\n flatConfigs.push(JSON.stringify({ settings }));\n }\n\n private async prettify(filename: string) {\n try {\n await execa('npx', ['prettier', '-w', filename], { stdout: 'ignore' });\n } catch (error: any) {\n throw new Error(`prettier failed with exit code ${error.exitCode}`);\n }\n }\n\n private readJson(filename: string) {\n return JSON5.parse(fs.readFileSync(filename, 'utf8'));\n }\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/(-[a-z])/g, ([, letter]) => letter.toUpperCase());\n}\n\nfunction normalizeGlob(glob: string) {\n return glob.includes('/') ? glob.replace(/^(!)?\\//, '$1') : `**/${glob}`;\n}\n"],"names":["ConvertEslintConfig","oldConfigFile","newConfigFile","eslintIgnoreFile","Command","execute","fs","existsSync","Error","configFiles","globSync","length","log","info","json","readJson","writeFileSync","convert","prettify","success","source","context","flatConfigs","imports","handlers","extends","handleExtends","bind","overrides","handleOverrides","parserOptions","handleParserOptions","plugins","handlePlugins","rules","handleRules","settings","handleSettings","handleIgnores","Object","keys","forEach","key","format","formatImports","formatConfigs","join","entries","map","pkg","itemOrItems","unrecognized","extendsArray","toArray","entry","recipe","recipes","import","from","as","files","push","JSON","stringify","config","ignorePatterns","globs","filter","glob","fileGlobs","readFileSync","split","line","trim","normalized","normalizeGlob","override","handleOverride","rest","languageOptions","undefined","name","camelized","toCamelCase","value","tsPrefix","nonTsRules","fromEntries","startsWith","tsRules","filename","execa","stdout","error","exitCode","JSON5","parse","description","str","replace","letter","toUpperCase","includes"],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { Command } from '
|
|
2
|
-
interface Args {
|
|
1
|
+
import { Command, CommandArgs } from './types';
|
|
2
|
+
interface Args extends CommandArgs {
|
|
3
3
|
_: string[];
|
|
4
4
|
fix?: boolean;
|
|
5
5
|
}
|
|
6
|
-
export declare class ESLintCommand
|
|
7
|
-
private readonly args;
|
|
8
|
-
constructor(args: Args);
|
|
6
|
+
export declare class ESLintCommand extends Command<Args> {
|
|
9
7
|
execute(): Promise<void>;
|
|
10
8
|
}
|
|
11
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eslint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eslint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAE9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAc,SAAQ,OAAO,CAAC,IAAI,CAAC;IAEtC,OAAO;CAIhB"}
|
|
@@ -10,19 +10,7 @@ Object.defineProperty(exports, "ESLintCommand", {
|
|
|
10
10
|
});
|
|
11
11
|
const _utils = require("../../utils");
|
|
12
12
|
const _utils1 = require("../utils");
|
|
13
|
-
|
|
14
|
-
if (key in obj) {
|
|
15
|
-
Object.defineProperty(obj, key, {
|
|
16
|
-
value: value,
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true
|
|
20
|
-
});
|
|
21
|
-
} else {
|
|
22
|
-
obj[key] = value;
|
|
23
|
-
}
|
|
24
|
-
return obj;
|
|
25
|
-
}
|
|
13
|
+
const _types = require("./types");
|
|
26
14
|
function _ts_decorate(decorators, target, key, desc) {
|
|
27
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
28
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -32,7 +20,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
32
20
|
function _ts_metadata(k, v) {
|
|
33
21
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
34
22
|
}
|
|
35
|
-
class ESLintCommand {
|
|
23
|
+
class ESLintCommand extends _types.Command {
|
|
36
24
|
async execute() {
|
|
37
25
|
const { _: paths, fix } = this.args;
|
|
38
26
|
await (0, _utils1.eslint)({
|
|
@@ -40,10 +28,6 @@ class ESLintCommand {
|
|
|
40
28
|
paths
|
|
41
29
|
});
|
|
42
30
|
}
|
|
43
|
-
constructor(args){
|
|
44
|
-
_define_property(this, "args", void 0);
|
|
45
|
-
this.args = args;
|
|
46
|
-
}
|
|
47
31
|
}
|
|
48
32
|
_ts_decorate([
|
|
49
33
|
_utils.logErrors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/eslint.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/eslint.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { eslint } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n _: string[];\n fix?: boolean;\n}\n\nexport class ESLintCommand extends Command<Args> {\n @logErrors\n async execute() {\n const { _: paths, fix } = this.args;\n await eslint({ fix, paths });\n }\n}\n"],"names":["ESLintCommand","Command","execute","_","paths","fix","args","eslint"],"mappings":";;;;+BAUaA;;;eAAAA;;;uBAVa;wBACH;uBACc;;;;;;;;;;AAQ9B,MAAMA,sBAAsBC,cAAO;IACtC,MACMC,UAAU;QACZ,MAAM,EAAEC,GAAGC,KAAK,EAAEC,GAAG,EAAE,GAAG,IAAI,CAACC,IAAI;QACnC,MAAMC,IAAAA,cAAM,EAAC;YAAEF;YAAKD;QAAM;IAC9B;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"get-command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqB1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA0B3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAE1E"}
|
|
@@ -18,6 +18,7 @@ const _init = require("./init");
|
|
|
18
18
|
const _install = require("./install");
|
|
19
19
|
const _kendouilicense = require("./kendo-ui-license");
|
|
20
20
|
const _lint = require("./lint");
|
|
21
|
+
const _mfelist = require("./mfe-list");
|
|
21
22
|
const _mfepackageclean = require("./mfe-package-clean");
|
|
22
23
|
const _mfepackagepublish = require("./mfe-package-publish");
|
|
23
24
|
const _mfepublish = require("./mfe-publish");
|
|
@@ -38,6 +39,7 @@ const commands = {
|
|
|
38
39
|
[_utils.CommandName.install]: _install.Install,
|
|
39
40
|
[_utils.CommandName['kendo-ui-license']]: _kendouilicense.KendoUILicense,
|
|
40
41
|
[_utils.CommandName.lint]: _lint.Lint,
|
|
42
|
+
[_utils.CommandName['mfe-list']]: _mfelist.MFEList,
|
|
41
43
|
[_utils.CommandName['mfe-package-clean']]: _mfepackageclean.MFEPackageClean,
|
|
42
44
|
[_utils.CommandName['mfe-package-publish']]: _mfepackagepublish.MFEPackagePublish,
|
|
43
45
|
[_utils.CommandName['mfe-publish']]: _mfepublish.MFEPublish,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/get-command.ts"],"sourcesContent":["import { CommandName } from '../../utils';\n\nimport { Build } from './build';\nimport { BundlePackage } from './bundle-package';\nimport { Clean } from './clean';\nimport { ConvertEslintConfig } from './convert-eslint-config';\nimport { ESLintCommand } from './eslint';\nimport { Init } from './init';\nimport { Install } from './install';\nimport { KendoUILicense } from './kendo-ui-license';\nimport { Lint } from './lint';\nimport { MFEPackageClean } from './mfe-package-clean';\nimport { MFEPackagePublish } from './mfe-package-publish';\nimport { MFEPublish } from './mfe-publish';\nimport { PreparePackage } from './prepare-package';\nimport { Review } from './review';\nimport { RunTask } from './run-task';\nimport { Start } from './start';\nimport { StylesCheck } from './styles-check';\nimport { Tests } from './test';\nimport { Command, Newable } from './types';\nimport { UploadSourcemaps } from './upload-sourcemaps';\n\nconst commands: Record<CommandName, Newable<Command>> = {\n [CommandName.build]: Build,\n [CommandName['bundle-package']]: BundlePackage,\n [CommandName['convert-eslint-config']]: ConvertEslintConfig,\n [CommandName.clean]: Clean,\n [CommandName.eslint]: ESLintCommand,\n [CommandName.init]: Init,\n [CommandName.install]: Install,\n [CommandName['kendo-ui-license']]: KendoUILicense,\n [CommandName.lint]: Lint,\n [CommandName['mfe-package-clean']]: MFEPackageClean,\n [CommandName['mfe-package-publish']]: MFEPackagePublish,\n [CommandName['mfe-publish']]: MFEPublish,\n [CommandName['prepare-package']]: PreparePackage,\n [CommandName.review]: Review,\n [CommandName.start]: Start,\n [CommandName['styles-check']]: StylesCheck,\n [CommandName.test]: Tests,\n [CommandName.task]: RunTask,\n [CommandName['upload-sourcemaps']]: UploadSourcemaps,\n};\n\nexport function getCommand(name: CommandName): Newable<Command> | undefined {\n return commands[name];\n}\n"],"names":["getCommand","commands","CommandName","build","Build","BundlePackage","ConvertEslintConfig","clean","Clean","eslint","ESLintCommand","init","Init","install","Install","KendoUILicense","lint","Lint","MFEPackageClean","MFEPackagePublish","MFEPublish","PreparePackage","review","Review","start","Start","StylesCheck","test","Tests","task","RunTask","UploadSourcemaps","name"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/get-command.ts"],"sourcesContent":["import { CommandName } from '../../utils';\n\nimport { Build } from './build';\nimport { BundlePackage } from './bundle-package';\nimport { Clean } from './clean';\nimport { ConvertEslintConfig } from './convert-eslint-config';\nimport { ESLintCommand } from './eslint';\nimport { Init } from './init';\nimport { Install } from './install';\nimport { KendoUILicense } from './kendo-ui-license';\nimport { Lint } from './lint';\nimport { MFEList } from './mfe-list';\nimport { MFEPackageClean } from './mfe-package-clean';\nimport { MFEPackagePublish } from './mfe-package-publish';\nimport { MFEPublish } from './mfe-publish';\nimport { PreparePackage } from './prepare-package';\nimport { Review } from './review';\nimport { RunTask } from './run-task';\nimport { Start } from './start';\nimport { StylesCheck } from './styles-check';\nimport { Tests } from './test';\nimport { Command, Newable } from './types';\nimport { UploadSourcemaps } from './upload-sourcemaps';\n\nconst commands: Record<CommandName, Newable<Command>> = {\n [CommandName.build]: Build,\n [CommandName['bundle-package']]: BundlePackage,\n [CommandName['convert-eslint-config']]: ConvertEslintConfig,\n [CommandName.clean]: Clean,\n [CommandName.eslint]: ESLintCommand,\n [CommandName.init]: Init,\n [CommandName.install]: Install,\n [CommandName['kendo-ui-license']]: KendoUILicense,\n [CommandName.lint]: Lint,\n [CommandName['mfe-list']]: MFEList,\n [CommandName['mfe-package-clean']]: MFEPackageClean,\n [CommandName['mfe-package-publish']]: MFEPackagePublish,\n [CommandName['mfe-publish']]: MFEPublish,\n [CommandName['prepare-package']]: PreparePackage,\n [CommandName.review]: Review,\n [CommandName.start]: Start,\n [CommandName['styles-check']]: StylesCheck,\n [CommandName.test]: Tests,\n [CommandName.task]: RunTask,\n [CommandName['upload-sourcemaps']]: UploadSourcemaps,\n};\n\nexport function getCommand(name: CommandName): Newable<Command> | undefined {\n return commands[name];\n}\n"],"names":["getCommand","commands","CommandName","build","Build","BundlePackage","ConvertEslintConfig","clean","Clean","eslint","ESLintCommand","init","Init","install","Install","KendoUILicense","lint","Lint","MFEList","MFEPackageClean","MFEPackagePublish","MFEPublish","PreparePackage","review","Review","start","Start","StylesCheck","test","Tests","task","RunTask","UploadSourcemaps","name"],"mappings":";;;;+BA+CgBA;;;eAAAA;;;uBA/CY;uBAEN;+BACQ;uBACR;qCACc;wBACN;sBACT;yBACG;gCACO;sBACV;yBACG;iCACQ;mCACE;4BACP;gCACI;wBACR;yBACC;uBACF;6BACM;sBACN;kCAEW;AAEjC,MAAMC,WAAkD;IACpD,CAACC,kBAAW,CAACC,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACF,kBAAW,CAAC,iBAAiB,CAAC,EAAEG,4BAAa;IAC9C,CAACH,kBAAW,CAAC,wBAAwB,CAAC,EAAEI,wCAAmB;IAC3D,CAACJ,kBAAW,CAACK,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACN,kBAAW,CAACO,MAAM,CAAC,EAAEC,qBAAa;IACnC,CAACR,kBAAW,CAACS,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACV,kBAAW,CAACW,OAAO,CAAC,EAAEC,gBAAO;IAC9B,CAACZ,kBAAW,CAAC,mBAAmB,CAAC,EAAEa,8BAAc;IACjD,CAACb,kBAAW,CAACc,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACf,kBAAW,CAAC,WAAW,CAAC,EAAEgB,gBAAO;IAClC,CAAChB,kBAAW,CAAC,oBAAoB,CAAC,EAAEiB,gCAAe;IACnD,CAACjB,kBAAW,CAAC,sBAAsB,CAAC,EAAEkB,oCAAiB;IACvD,CAAClB,kBAAW,CAAC,cAAc,CAAC,EAAEmB,sBAAU;IACxC,CAACnB,kBAAW,CAAC,kBAAkB,CAAC,EAAEoB,8BAAc;IAChD,CAACpB,kBAAW,CAACqB,MAAM,CAAC,EAAEC,cAAM;IAC5B,CAACtB,kBAAW,CAACuB,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACxB,kBAAW,CAAC,eAAe,CAAC,EAAEyB,wBAAW;IAC1C,CAACzB,kBAAW,CAAC0B,IAAI,CAAC,EAAEC,WAAK;IACzB,CAAC3B,kBAAW,CAAC4B,IAAI,CAAC,EAAEC,gBAAO;IAC3B,CAAC7B,kBAAW,CAAC,oBAAoB,CAAC,EAAE8B,kCAAgB;AACxD;AAEO,SAAShC,WAAWiC,IAAiB;IACxC,OAAOhC,QAAQ,CAACgC,KAAK;AACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,mBAAmB,SAAS,CAAC"}
|
|
@@ -6,7 +6,6 @@ _export_star(require("./build"), exports);
|
|
|
6
6
|
_export_star(require("./bundle-package"), exports);
|
|
7
7
|
_export_star(require("./eslint"), exports);
|
|
8
8
|
_export_star(require("./get-command"), exports);
|
|
9
|
-
_export_star(require("./get-user-commands"), exports);
|
|
10
9
|
_export_star(require("./init"), exports);
|
|
11
10
|
_export_star(require("./install"), exports);
|
|
12
11
|
_export_star(require("./kendo-ui-license"), exports);
|