@servicetitan/startup 38.1.0 → 38.3.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.
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +10 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/command.d.ts +4 -0
- package/dist/cli/commands/command.d.ts.map +1 -1
- package/dist/cli/commands/command.js +39 -0
- package/dist/cli/commands/command.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +0 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +1 -17
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/registry/command-registry.d.ts +0 -16
- package/dist/cli/commands/registry/command-registry.d.ts.map +1 -1
- package/dist/cli/commands/registry/install.d.ts +0 -16
- package/dist/cli/commands/registry/install.d.ts.map +1 -1
- package/dist/cli/commands/registry/install.js +1 -17
- package/dist/cli/commands/registry/install.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +9 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/utils/cli-git.d.ts +7 -0
- package/dist/cli/utils/cli-git.d.ts.map +1 -1
- package/dist/cli/utils/cli-git.js +30 -0
- package/dist/cli/utils/cli-git.js.map +1 -1
- package/dist/cli/utils/cli-os.d.ts +6 -1
- package/dist/cli/utils/cli-os.d.ts.map +1 -1
- package/dist/cli/utils/cli-os.js +22 -0
- package/dist/cli/utils/cli-os.js.map +1 -1
- package/dist/telemetry/index.d.ts +3 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +21 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +15 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +176 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/vite/config/create-filtering-logger.d.ts.map +1 -1
- package/dist/vite/config/create-filtering-logger.js +6 -2
- package/dist/vite/config/create-filtering-logger.js.map +1 -1
- package/dist/webpack/configs/optimization-config.js +13 -8
- package/dist/webpack/configs/optimization-config.js.map +1 -1
- package/package.json +17 -14
- package/src/cli/commands/__tests__/build.test.ts +49 -2
- package/src/cli/commands/__tests__/command.test.ts +112 -0
- package/src/cli/commands/__tests__/init.test.ts +1 -1
- package/src/cli/commands/__tests__/install.test.ts +5 -72
- package/src/cli/commands/__tests__/start.test.ts +43 -2
- package/src/cli/commands/build.ts +9 -1
- package/src/cli/commands/command.ts +50 -0
- package/src/cli/commands/init.ts +0 -1
- package/src/cli/commands/install.ts +5 -21
- package/src/cli/commands/registry/install.ts +1 -6
- package/src/cli/commands/start.ts +8 -1
- package/src/cli/utils/__tests__/cli-git.test.ts +54 -3
- package/src/cli/utils/__tests__/cli-os.test.ts +98 -2
- package/src/cli/utils/cli-git.ts +27 -1
- package/src/cli/utils/cli-os.ts +30 -0
- package/src/telemetry/__tests__/telemetry.test.ts +326 -0
- package/src/telemetry/index.ts +2 -0
- package/src/telemetry/telemetry.ts +134 -0
- package/src/vite/config/__tests__/create-filtering-logger.test.ts +3 -2
- package/src/vite/config/create-filtering-logger.ts +8 -2
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +27 -1
- package/src/webpack/configs/optimization-config.ts +19 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;CA6GhB"}
|
|
@@ -60,6 +60,9 @@ class Build extends _types.Command {
|
|
|
60
60
|
if (packages.length === 0) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
+
this.recordStart('build', {
|
|
64
|
+
bundler: (0, _utils1.resolveBundler)(this.args)
|
|
65
|
+
});
|
|
63
66
|
if (this.args.cdnPath) {
|
|
64
67
|
process.env.CLIENT_CDN_PATH = this.args.cdnPath;
|
|
65
68
|
}
|
|
@@ -152,7 +155,13 @@ class Build extends _types.Command {
|
|
|
152
155
|
5
|
|
153
156
|
]
|
|
154
157
|
});
|
|
155
|
-
|
|
158
|
+
try {
|
|
159
|
+
await processTree.run();
|
|
160
|
+
} catch (error) {
|
|
161
|
+
await this.recordEnd(error);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
this.recordEnd();
|
|
156
165
|
}
|
|
157
166
|
}
|
|
158
167
|
_ts_decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile, lernaExec, ProcessTree, resolveBundler, typeCheck } from '../utils';\nimport { kendoUILicense } from './kendo-ui-license';\nimport type { entry } from './registry/build';\nimport { Command } from './types';\n\nenum BuildProcesses {\n Precompile,\n Compile,\n KendoUILicense,\n PreparePackage,\n TypeCheck,\n BundleExposedDependencies,\n Bundle,\n}\n\nexport class Build extends Command<typeof entry> {\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args.useTsc;\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Bundle],\n });\n if (packages.length === 0) {\n return;\n }\n\n if (this.args.cdnPath) {\n process.env.CLIENT_CDN_PATH = this.args.cdnPath;\n }\n\n const scope = packages.map(({ name }) => name);\n const bundleScope = packages\n .filter(({ type }) => type === PackageType.Bundle)\n .map(({ name }) => name);\n const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];\n const precompileScope = packages\n .filter(({ scripts }) => !!scripts?.precompile)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof BuildProcesses>();\n\n processTree.add(BuildProcesses.Precompile, () => {\n if (precompileScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n cmd: 'npm run precompile',\n scope: precompileScope,\n parallel: true,\n stream: true,\n });\n });\n processTree.add(BuildProcesses.Compile, () => compile({ packages: scope, useTsc }), {\n dependsOn: [BuildProcesses.Precompile],\n });\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 (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', ...bundlerArg],\n });\n },\n {\n dependsOn: [\n BuildProcesses.Compile,\n BuildProcesses.KendoUILicense,\n BuildProcesses.PreparePackage,\n ],\n }\n );\n processTree.add(\n BuildProcesses.Bundle,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'stream': true,\n '--': [\n ...[this.args.config ? `--config \"${this.args.config}\"` : undefined],\n ...[this.args.codeCoverage ? '--code-coverage' : undefined],\n ...[this.args.stat ? '--stat' : undefined],\n ...[this.args.preview ? '--preview' : undefined],\n ...bundlerArg,\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","Bundle","length","cdnPath","process","env","CLIENT_CDN_PATH","map","name","bundleScope","filter","bundlerArg","
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile, lernaExec, ProcessTree, resolveBundler, typeCheck } from '../utils';\nimport { kendoUILicense } from './kendo-ui-license';\nimport type { entry } from './registry/build';\nimport { Command } from './types';\n\nenum BuildProcesses {\n Precompile,\n Compile,\n KendoUILicense,\n PreparePackage,\n TypeCheck,\n BundleExposedDependencies,\n Bundle,\n}\n\nexport class Build extends Command<typeof entry> {\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args.useTsc;\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Bundle],\n });\n if (packages.length === 0) {\n return;\n }\n\n this.recordStart('build', { bundler: resolveBundler(this.args) });\n\n if (this.args.cdnPath) {\n process.env.CLIENT_CDN_PATH = this.args.cdnPath;\n }\n\n const scope = packages.map(({ name }) => name);\n const bundleScope = packages\n .filter(({ type }) => type === PackageType.Bundle)\n .map(({ name }) => name);\n const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];\n const precompileScope = packages\n .filter(({ scripts }) => !!scripts?.precompile)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof BuildProcesses>();\n\n processTree.add(BuildProcesses.Precompile, () => {\n if (precompileScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n cmd: 'npm run precompile',\n scope: precompileScope,\n parallel: true,\n stream: true,\n });\n });\n processTree.add(BuildProcesses.Compile, () => compile({ packages: scope, useTsc }), {\n dependsOn: [BuildProcesses.Precompile],\n });\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 (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', ...bundlerArg],\n });\n },\n {\n dependsOn: [\n BuildProcesses.Compile,\n BuildProcesses.KendoUILicense,\n BuildProcesses.PreparePackage,\n ],\n }\n );\n processTree.add(\n BuildProcesses.Bundle,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'stream': true,\n '--': [\n ...[this.args.config ? `--config \"${this.args.config}\"` : undefined],\n ...[this.args.codeCoverage ? '--code-coverage' : undefined],\n ...[this.args.stat ? '--stat' : undefined],\n ...[this.args.preview ? '--preview' : undefined],\n ...bundlerArg,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [BuildProcesses.BundleExposedDependencies] }\n );\n\n try {\n await processTree.run();\n } catch (error) {\n await this.recordEnd(error);\n throw error;\n }\n this.recordEnd();\n }\n}\n"],"names":["Build","BuildProcesses","Command","execute","checkArgs","args","obsolete","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Bundle","length","recordStart","bundler","resolveBundler","cdnPath","process","env","CLIENT_CDN_PATH","map","name","bundleScope","filter","bundlerArg","precompileScope","scripts","precompile","processTree","ProcessTree","add","Promise","resolve","lernaExec","cmd","parallel","stream","compile","dependsOn","kendoUILicense","typeCheck","config","undefined","codeCoverage","stat","preview","item","run","error","recordEnd"],"mappings":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { Attributes } from '../../telemetry';
|
|
1
2
|
import { CommandName } from '../../utils';
|
|
2
3
|
import { CommandEntry, InferArgs } from './types';
|
|
3
4
|
export declare abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
|
|
4
5
|
protected readonly args: InferArgs<NonNullable<T['options']>, U>;
|
|
6
|
+
private commandRun?;
|
|
5
7
|
constructor(args: InferArgs<NonNullable<T['options']>, U>);
|
|
6
8
|
watchForParentExit(name: CommandName): void;
|
|
9
|
+
protected recordStart(command: string, attributes?: Attributes): void;
|
|
10
|
+
protected recordEnd(error?: unknown): Promise<void>;
|
|
7
11
|
abstract execute(): Promise<void>;
|
|
8
12
|
}
|
|
9
13
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAWlD,8BAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,GAAG,OAAO;IAGhE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAF5E,OAAO,CAAC,UAAU,CAAC,CAAa;gBAED,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5E,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAM3C,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAiBrE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC"}
|
|
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "Command", {
|
|
|
8
8
|
return Command;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _crypto = require("crypto");
|
|
12
|
+
const _telemetry = require("../../telemetry");
|
|
11
13
|
const _utils = require("../../utils");
|
|
12
14
|
function _define_property(obj, key, value) {
|
|
13
15
|
if (key in obj) {
|
|
@@ -20,14 +22,51 @@ function _define_property(obj, key, value) {
|
|
|
20
22
|
} else obj[key] = value;
|
|
21
23
|
return obj;
|
|
22
24
|
}
|
|
25
|
+
const NS_PER_MS = 1000000;
|
|
23
26
|
class Command {
|
|
24
27
|
watchForParentExit(name) {
|
|
25
28
|
if ('watch' in this.args && this.args.watch === true) {
|
|
26
29
|
(0, _utils.exitWhenParentExits)(name);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
32
|
+
recordStart(command, attributes) {
|
|
33
|
+
if (this.commandRun) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.commandRun = {
|
|
37
|
+
command,
|
|
38
|
+
runId: (0, _crypto.randomUUID)(),
|
|
39
|
+
startedAt: globalThis.performance.now(),
|
|
40
|
+
attributes
|
|
41
|
+
};
|
|
42
|
+
_telemetry.telemetry.info('command.started', {
|
|
43
|
+
...attributes,
|
|
44
|
+
command,
|
|
45
|
+
runId: this.commandRun.runId
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
recordEnd(error) {
|
|
49
|
+
const run = this.commandRun;
|
|
50
|
+
if (!run) {
|
|
51
|
+
return Promise.resolve();
|
|
52
|
+
}
|
|
53
|
+
this.commandRun = undefined;
|
|
54
|
+
const attributes = {
|
|
55
|
+
...run.attributes,
|
|
56
|
+
command: run.command,
|
|
57
|
+
runId: run.runId,
|
|
58
|
+
duration: Math.round((globalThis.performance.now() - run.startedAt) * NS_PER_MS)
|
|
59
|
+
};
|
|
60
|
+
if (error !== undefined) {
|
|
61
|
+
_telemetry.telemetry.error('command.finished', error, attributes);
|
|
62
|
+
} else {
|
|
63
|
+
_telemetry.telemetry.info('command.finished', attributes);
|
|
64
|
+
}
|
|
65
|
+
return _telemetry.telemetry.flush();
|
|
66
|
+
}
|
|
29
67
|
constructor(args){
|
|
30
68
|
_define_property(this, "args", void 0);
|
|
69
|
+
_define_property(this, "commandRun", void 0);
|
|
31
70
|
this.args = args;
|
|
32
71
|
}
|
|
33
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/command.ts"],"sourcesContent":["import { CommandName, exitWhenParentExits } from '../../utils';\nimport { CommandEntry, InferArgs } from './types';\n\nexport abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {\n constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}\n\n watchForParentExit(name: CommandName): void {\n if ('watch' in this.args && this.args.watch === true) {\n exitWhenParentExits(name);\n }\n }\n\n abstract execute(): Promise<void>;\n}\n"],"names":["Command","watchForParentExit","name","args","watch","exitWhenParentExits"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/command.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { Attributes, telemetry } from '../../telemetry';\nimport { CommandName, exitWhenParentExits } from '../../utils';\nimport { CommandEntry, InferArgs } from './types';\n\nconst NS_PER_MS = 1_000_000;\n\ninterface CommandRun {\n command: string;\n runId: string;\n startedAt: number;\n attributes?: Attributes;\n}\n\nexport abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {\n private commandRun?: CommandRun;\n\n constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}\n\n watchForParentExit(name: CommandName): void {\n if ('watch' in this.args && this.args.watch === true) {\n exitWhenParentExits(name);\n }\n }\n\n protected recordStart(command: string, attributes?: Attributes): void {\n if (this.commandRun) {\n return;\n }\n this.commandRun = {\n command,\n runId: randomUUID(),\n startedAt: globalThis.performance.now(),\n attributes,\n };\n telemetry.info('command.started', {\n ...attributes,\n command,\n runId: this.commandRun.runId,\n });\n }\n\n protected recordEnd(error?: unknown): Promise<void> {\n const run = this.commandRun;\n if (!run) {\n return Promise.resolve();\n }\n this.commandRun = undefined;\n const attributes = {\n ...run.attributes,\n command: run.command,\n runId: run.runId,\n duration: Math.round((globalThis.performance.now() - run.startedAt) * NS_PER_MS),\n };\n if (error !== undefined) {\n telemetry.error('command.finished', error, attributes);\n } else {\n telemetry.info('command.finished', attributes);\n }\n return telemetry.flush();\n }\n\n abstract execute(): Promise<void>;\n}\n"],"names":["Command","NS_PER_MS","watchForParentExit","name","args","watch","exitWhenParentExits","recordStart","command","attributes","commandRun","runId","randomUUID","startedAt","globalThis","performance","now","telemetry","info","recordEnd","error","run","Promise","resolve","undefined","duration","Math","round","flush"],"mappings":";;;;+BAcsBA;;;eAAAA;;;wBAdK;2BACW;uBACW;;;;;;;;;;;;AAGjD,MAAMC,YAAY;AASX,MAAeD;IAKlBE,mBAAmBC,IAAiB,EAAQ;QACxC,IAAI,WAAW,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,CAACC,KAAK,KAAK,MAAM;YAClDC,IAAAA,0BAAmB,EAACH;QACxB;IACJ;IAEUI,YAAYC,OAAe,EAAEC,UAAuB,EAAQ;QAClE,IAAI,IAAI,CAACC,UAAU,EAAE;YACjB;QACJ;QACA,IAAI,CAACA,UAAU,GAAG;YACdF;YACAG,OAAOC,IAAAA,kBAAU;YACjBC,WAAWC,WAAWC,WAAW,CAACC,GAAG;YACrCP;QACJ;QACAQ,oBAAS,CAACC,IAAI,CAAC,mBAAmB;YAC9B,GAAGT,UAAU;YACbD;YACAG,OAAO,IAAI,CAACD,UAAU,CAACC,KAAK;QAChC;IACJ;IAEUQ,UAAUC,KAAe,EAAiB;QAChD,MAAMC,MAAM,IAAI,CAACX,UAAU;QAC3B,IAAI,CAACW,KAAK;YACN,OAAOC,QAAQC,OAAO;QAC1B;QACA,IAAI,CAACb,UAAU,GAAGc;QAClB,MAAMf,aAAa;YACf,GAAGY,IAAIZ,UAAU;YACjBD,SAASa,IAAIb,OAAO;YACpBG,OAAOU,IAAIV,KAAK;YAChBc,UAAUC,KAAKC,KAAK,CAAC,AAACb,CAAAA,WAAWC,WAAW,CAACC,GAAG,KAAKK,IAAIR,SAAS,AAAD,IAAKZ;QAC1E;QACA,IAAImB,UAAUI,WAAW;YACrBP,oBAAS,CAACG,KAAK,CAAC,oBAAoBA,OAAOX;QAC/C,OAAO;YACHQ,oBAAS,CAACC,IAAI,CAAC,oBAAoBT;QACvC;QACA,OAAOQ,oBAAS,CAACW,KAAK;IAC1B;IA3CA,YAAY,AAAmBxB,IAA6C,CAAE;;QAF9E,uBAAQM,cAAR,KAAA;aAE+BN,OAAAA;IAAgD;AA8CnF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,qBAAa,IAAK,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAErC,OAAO;IAsBb,SAAS,CAAC,WAAW,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,qBAAa,IAAK,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAErC,OAAO;IAsBb,SAAS,CAAC,WAAW,EAAE,MAAM;CAUhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';\nimport fs from 'fs';\nimport path from 'path';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/init';\nimport { Command } from './types';\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<typeof entry> {\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n\n return Promise.resolve();\n }\n\n cloneRepo(destination: string) {\n const ok = gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';\nimport fs from 'fs';\nimport path from 'path';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/init';\nimport { Command } from './types';\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<typeof entry> {\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n\n return Promise.resolve();\n }\n\n cloneRepo(destination: string) {\n const ok = gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","Command","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","Promise","ok","gitCloneRepo","rmSync","join","force"],"mappings":";;;;+BASaA;;;eAAAA;;;yBATgC;2DAC9B;6DACE;uBACc;uBAEP;;;;;;;;;;;;;;;;;;;;;;;;AAExB,MAAMC,YAAY;AAEX,MAAMD,aAAaE,cAAO;IAC7B,MACMC,UAAU;YACqB;QAAjC,MAAMC,cAAcC,aAAI,CAACC,OAAO,EAAC,oBAAA,IAAI,CAACC,IAAI,CAACC,MAAM,cAAhB,+BAAA,oBAAoB;QACrD,IAAI,CAACC,WAAE,CAACC,UAAU,CAACN,cAAc;YAC7BK,WAAE,CAACE,SAAS,CAACP,aAAa;gBAAEQ,WAAW;YAAK;QAChD,OAAO,IAAI,CAACH,WAAE,CAACI,SAAS,CAACT,aAAaU,WAAW,IAAI;YACjD,MAAM,IAAIC,MAAM,GAAGX,YAAY,mBAAmB,CAAC;QACvD,OAAO,IAAIK,WAAE,CAACO,WAAW,CAACZ,aAAaa,MAAM,KAAK,GAAG;YACjD,MAAM,IAAIF,MAAM,GAAGX,YAAY,0BAA0B,CAAC;QAC9D;QAEA,IAAI,IAAI,CAACc,SAAS,CAACd,cAAc;YAC7Be,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEhB,aAAa;YACnD;QACJ;QAEA,IAAI,CAACiB,IAAAA,uBAAc,EAAC;YAAEC,MAAMrB;QAAU,IAAI;YACtC,MAAM,IAAIc,MAAM,CAAC,4BAA4B,EAAEd,UAAU,WAAW,CAAC;QACzE;QAEA,OAAOsB,QAAQjB,OAAO;IAC1B;IAEAY,UAAUd,WAAmB,EAAE;QAC3B,MAAMoB,KAAKC,IAAAA,qBAAY,EAAC;YAAErB;YAAakB,MAAMrB;QAAU;QACvD,IAAI,CAACuB,IAAI;YACL,OAAO;QACX;QAEAf,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,SAAS;YAAEQ,WAAW;YAAMgB,OAAO;QAAK;QACzEnB,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,WAAW;QAC5C,OAAO;IACX;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,OAAQ,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAGxC,OAAO;CAKhB"}
|
|
@@ -8,8 +8,6 @@ Object.defineProperty(exports, "Install", {
|
|
|
8
8
|
return Install;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _child_process = require("child_process");
|
|
12
|
-
const _core = require("../../core");
|
|
13
11
|
const _utils = require("../../utils");
|
|
14
12
|
const _types = require("./types");
|
|
15
13
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -32,21 +30,7 @@ function _ts_metadata(metadataKey, metadataValue) {
|
|
|
32
30
|
}
|
|
33
31
|
class Install extends _types.Command {
|
|
34
32
|
async execute() {
|
|
35
|
-
|
|
36
|
-
_utils.log.info(`startup cli v${(0, _core.getStartupVersion)()}`);
|
|
37
|
-
}
|
|
38
|
-
const options = [
|
|
39
|
-
this.args.fix ? '--fix' : '',
|
|
40
|
-
this.args.quiet ? '--quiet' : '',
|
|
41
|
-
this.args.token === true ? '--token' : '',
|
|
42
|
-
this.args.token === false ? '--no-token' : ''
|
|
43
|
-
].filter((option)=>!!option);
|
|
44
|
-
const command = `npx --yes @servicetitan/install ${options.join(' ')}`.trim();
|
|
45
|
-
_utils.log.debug('install', command);
|
|
46
|
-
(0, _child_process.execSync)(command, {
|
|
47
|
-
stdio: 'inherit'
|
|
48
|
-
});
|
|
49
|
-
return Promise.resolve(); // stops "async method has no 'await' expression" lint error
|
|
33
|
+
throw new Error('The `startup install` command has been removed. Run `npx --yes @servicetitan/install` directly instead.');
|
|
50
34
|
}
|
|
51
35
|
}
|
|
52
36
|
_ts_decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport type { entry } from './registry/install';\nimport { Command } from './types';\n\nexport class Install extends Command<typeof entry> {\n @logErrors\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n throw new Error(\n 'The `startup install` command has been removed. Run `npx --yes @servicetitan/install` directly instead.'\n );\n }\n}\n"],"names":["Install","Command","execute","Error"],"mappings":";;;;+BAIaA;;;eAAAA;;;uBAJa;uBAEF;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,gBAAgBC,cAAO;IAChC,MAEMC,UAAU;QACZ,MAAM,IAAIC,MACN;IAER;AACJ"}
|
|
@@ -397,22 +397,6 @@ export declare const commandRegistry: {
|
|
|
397
397
|
install: {
|
|
398
398
|
allowRunFromGlobal: true;
|
|
399
399
|
description: string;
|
|
400
|
-
options: {
|
|
401
|
-
fix: {
|
|
402
|
-
boolean: true;
|
|
403
|
-
description: string;
|
|
404
|
-
hidden: true;
|
|
405
|
-
};
|
|
406
|
-
quiet: {
|
|
407
|
-
boolean: true;
|
|
408
|
-
description: string;
|
|
409
|
-
hidden: true;
|
|
410
|
-
};
|
|
411
|
-
token: {
|
|
412
|
-
boolean: true;
|
|
413
|
-
description: string;
|
|
414
|
-
};
|
|
415
|
-
};
|
|
416
400
|
} & CommandRegistryEntry;
|
|
417
401
|
init: {
|
|
418
402
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AA6B1D,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACtD,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACzC;AAiCD,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AA6B1D,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACtD,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACzC;AAiCD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCyB,CAAC"}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
1
|
export declare const entry: {
|
|
2
2
|
allowRunFromGlobal: true;
|
|
3
3
|
description: string;
|
|
4
|
-
options: {
|
|
5
|
-
fix: {
|
|
6
|
-
boolean: true;
|
|
7
|
-
description: string;
|
|
8
|
-
hidden: true;
|
|
9
|
-
};
|
|
10
|
-
quiet: {
|
|
11
|
-
boolean: true;
|
|
12
|
-
description: string;
|
|
13
|
-
hidden: true;
|
|
14
|
-
};
|
|
15
|
-
token: {
|
|
16
|
-
boolean: true;
|
|
17
|
-
description: string;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
4
|
};
|
|
21
5
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/install.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/install.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;CAGO,CAAC"}
|
|
@@ -11,23 +11,7 @@ Object.defineProperty(exports, "entry", {
|
|
|
11
11
|
const _defineentry = require("./define-entry");
|
|
12
12
|
const entry = (0, _defineentry.defineEntry)({
|
|
13
13
|
allowRunFromGlobal: true,
|
|
14
|
-
description: '
|
|
15
|
-
options: {
|
|
16
|
-
fix: {
|
|
17
|
-
boolean: true,
|
|
18
|
-
description: 'Update and dedupe package-lock.json',
|
|
19
|
-
hidden: true
|
|
20
|
-
},
|
|
21
|
-
quiet: {
|
|
22
|
-
boolean: true,
|
|
23
|
-
description: 'Suppress output',
|
|
24
|
-
hidden: true
|
|
25
|
-
},
|
|
26
|
-
token: {
|
|
27
|
-
boolean: true,
|
|
28
|
-
description: 'Configure npm token'
|
|
29
|
-
}
|
|
30
|
-
}
|
|
14
|
+
description: 'Removed. Run `npx --yes @servicetitan/install` directly instead.'
|
|
31
15
|
});
|
|
32
16
|
|
|
33
17
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/commands/registry/install.ts"],"sourcesContent":["import type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n allowRunFromGlobal: true,\n description: '
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/commands/registry/install.ts"],"sourcesContent":["import type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n allowRunFromGlobal: true,\n description: 'Removed. Run `npx --yes @servicetitan/install` directly instead.',\n} satisfies CommandEntry);\n"],"names":["entry","defineEntry","allowRunFromGlobal","description"],"mappings":";;;;+BAGaA;;;eAAAA;;;6BAFe;AAErB,MAAMA,QAAQC,IAAAA,wBAAW,EAAC;IAC7BC,oBAAoB;IACpBC,aAAa;AACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAalC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAalC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;CAgJhB"}
|
|
@@ -62,6 +62,9 @@ class Start extends _types.Command {
|
|
|
62
62
|
if (packages.length === 0) {
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
|
+
this.recordStart('start', {
|
|
66
|
+
bundler: (0, _utils1.resolveBundler)(this.args)
|
|
67
|
+
});
|
|
65
68
|
const scope = packages.map(({ name })=>name);
|
|
66
69
|
const bundleScope = packages.filter(({ type })=>type === _utils.PackageType.Bundle).map(({ name })=>name);
|
|
67
70
|
const bundlerArg = [
|
|
@@ -173,7 +176,12 @@ class Start extends _types.Command {
|
|
|
173
176
|
6
|
|
174
177
|
]
|
|
175
178
|
});
|
|
176
|
-
|
|
179
|
+
try {
|
|
180
|
+
await processTree.run();
|
|
181
|
+
} catch (error) {
|
|
182
|
+
await this.recordEnd(error);
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
177
185
|
}
|
|
178
186
|
}
|
|
179
187
|
_ts_decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/start.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport {\n checkArgs,\n compile,\n lernaExec,\n pipeStdout,\n ProcessTree,\n resolveBundler,\n typeCheck,\n watchStdout,\n} from '../utils';\nimport type { entry } from './registry/start';\nimport { Command } from './types';\n\nenum StartProcesses {\n Precompile,\n Compile,\n KendoUILicense,\n PreparePackage,\n PreparePackageWatch,\n TypeCheck,\n BundleExposedDependencies,\n Bundle,\n}\n\nexport class Start extends Command<typeof entry> {\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n // Used by sub-processes to detect this process dying\n process.env.STARTUP_PARENT_PID = String(process.pid);\n\n const useTsc = this.args.useTsc;\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Bundle],\n });\n if (packages.length === 0) {\n return;\n }\n\n const scope = packages.map(({ name }) => name);\n const bundleScope = packages\n .filter(({ type }) => type === PackageType.Bundle)\n .map(({ name }) => name);\n const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];\n const precompileScope = packages\n .filter(({ scripts }) => !!scripts?.precompile)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof StartProcesses>();\n\n processTree.add(StartProcesses.Precompile, () => {\n if (precompileScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n cmd: 'npm run precompile',\n scope: precompileScope,\n parallel: true,\n stream: true,\n });\n });\n\n processTree.add(\n StartProcesses.Compile,\n () => {\n const process = compile({\n packages: scope,\n watch: true,\n useTsc,\n });\n\n pipeStdout(process);\n\n const onComplete = new Promise<void>(resolve => {\n let counter = 0;\n\n watchStdout(\n process,\n useTsc\n ? 'Initial tsc-compile-package task completed'\n : 'Initial swc-compile-package task completed',\n count => {\n counter += count;\n\n if (counter === scope.length) {\n resolve();\n }\n }\n );\n });\n\n return { process, onComplete };\n },\n { dependsOn: [StartProcesses.Precompile] }\n );\n processTree.add(StartProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(\n StartProcesses.PreparePackageWatch,\n () =>\n lernaExec({\n 'cmd': 'startup prepare-package',\n scope,\n 'parallel': true,\n 'stream': true,\n '--': ['--watch'],\n }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.TypeCheck,\n () => typeCheck({ packages: scope, watch: true }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundleExposedDependencies,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', '--use-watch-config', ...bundlerArg],\n });\n },\n { dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.Bundle,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': [\n '--watch',\n this.args.config ? `--config \"${this.args.config}\"` : undefined,\n this.args.codeCoverage ? '--code-coverage' : undefined,\n ...bundlerArg,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [StartProcesses.BundleExposedDependencies] }\n );\n\n await processTree.run();\n }\n}\n"],"names":["Start","StartProcesses","Command","execute","checkArgs","args","obsolete","process","env","STARTUP_PARENT_PID","String","pid","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Bundle","length","map","name","bundleScope","filter","bundlerArg","
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/start.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport {\n checkArgs,\n compile,\n lernaExec,\n pipeStdout,\n ProcessTree,\n resolveBundler,\n typeCheck,\n watchStdout,\n} from '../utils';\nimport type { entry } from './registry/start';\nimport { Command } from './types';\n\nenum StartProcesses {\n Precompile,\n Compile,\n KendoUILicense,\n PreparePackage,\n PreparePackageWatch,\n TypeCheck,\n BundleExposedDependencies,\n Bundle,\n}\n\nexport class Start extends Command<typeof entry> {\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n // Used by sub-processes to detect this process dying\n process.env.STARTUP_PARENT_PID = String(process.pid);\n\n const useTsc = this.args.useTsc;\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Bundle],\n });\n if (packages.length === 0) {\n return;\n }\n\n this.recordStart('start', { bundler: resolveBundler(this.args) });\n\n const scope = packages.map(({ name }) => name);\n const bundleScope = packages\n .filter(({ type }) => type === PackageType.Bundle)\n .map(({ name }) => name);\n const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];\n const precompileScope = packages\n .filter(({ scripts }) => !!scripts?.precompile)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof StartProcesses>();\n\n processTree.add(StartProcesses.Precompile, () => {\n if (precompileScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n cmd: 'npm run precompile',\n scope: precompileScope,\n parallel: true,\n stream: true,\n });\n });\n\n processTree.add(\n StartProcesses.Compile,\n () => {\n const process = compile({\n packages: scope,\n watch: true,\n useTsc,\n });\n\n pipeStdout(process);\n\n const onComplete = new Promise<void>(resolve => {\n let counter = 0;\n\n watchStdout(\n process,\n useTsc\n ? 'Initial tsc-compile-package task completed'\n : 'Initial swc-compile-package task completed',\n count => {\n counter += count;\n\n if (counter === scope.length) {\n resolve();\n }\n }\n );\n });\n\n return { process, onComplete };\n },\n { dependsOn: [StartProcesses.Precompile] }\n );\n processTree.add(StartProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(\n StartProcesses.PreparePackageWatch,\n () =>\n lernaExec({\n 'cmd': 'startup prepare-package',\n scope,\n 'parallel': true,\n 'stream': true,\n '--': ['--watch'],\n }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.TypeCheck,\n () => typeCheck({ packages: scope, watch: true }),\n { dependsOn: [StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.BundleExposedDependencies,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', '--use-watch-config', ...bundlerArg],\n });\n },\n { dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }\n );\n processTree.add(\n StartProcesses.Bundle,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': [\n '--watch',\n this.args.config ? `--config \"${this.args.config}\"` : undefined,\n this.args.codeCoverage ? '--code-coverage' : undefined,\n ...bundlerArg,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [StartProcesses.BundleExposedDependencies] }\n );\n\n try {\n await processTree.run();\n } catch (error) {\n await this.recordEnd(error);\n throw error;\n }\n }\n}\n"],"names":["Start","StartProcesses","Command","execute","checkArgs","args","obsolete","process","env","STARTUP_PARENT_PID","String","pid","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Bundle","length","recordStart","bundler","resolveBundler","map","name","bundleScope","filter","bundlerArg","precompileScope","scripts","precompile","processTree","ProcessTree","add","Promise","resolve","lernaExec","cmd","parallel","stream","compile","watch","pipeStdout","onComplete","counter","watchStdout","count","dependsOn","typeCheck","config","undefined","codeCoverage","item","run","error","recordEnd"],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export declare function gitGetBranch(): string;
|
|
2
2
|
export declare function gitGetCommitHash(): string;
|
|
3
|
+
export interface GitContext {
|
|
4
|
+
repo?: string;
|
|
5
|
+
branch?: string;
|
|
6
|
+
userEmail?: string;
|
|
7
|
+
userName?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function gitGetContext(): Promise<GitContext>;
|
|
3
10
|
//# sourceMappingURL=cli-git.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-git.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-git.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-git.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAczD"}
|
|
@@ -14,14 +14,44 @@ _export(exports, {
|
|
|
14
14
|
},
|
|
15
15
|
get gitGetCommitHash () {
|
|
16
16
|
return gitGetCommitHash;
|
|
17
|
+
},
|
|
18
|
+
get gitGetContext () {
|
|
19
|
+
return gitGetContext;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
22
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
19
23
|
const _clios = require("./cli-os");
|
|
24
|
+
function _interop_require_default(obj) {
|
|
25
|
+
return obj && obj.__esModule ? obj : {
|
|
26
|
+
default: obj
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const GIT_TIMEOUT_MS = 2000;
|
|
20
30
|
function gitGetBranch() {
|
|
21
31
|
return (0, _clios.runCommandOutput)('git rev-parse --abbrev-ref HEAD').trim();
|
|
22
32
|
}
|
|
23
33
|
function gitGetCommitHash() {
|
|
24
34
|
return (0, _clios.runCommandOutput)('git rev-parse --short HEAD').trim();
|
|
25
35
|
}
|
|
36
|
+
async function gitGetContext() {
|
|
37
|
+
var _ref;
|
|
38
|
+
const options = {
|
|
39
|
+
quiet: true,
|
|
40
|
+
ignoreErrors: true,
|
|
41
|
+
timeout: GIT_TIMEOUT_MS
|
|
42
|
+
};
|
|
43
|
+
const [rev, userEmail, userName] = await Promise.all([
|
|
44
|
+
(0, _clios.runCommandOutputAsync)('git rev-parse --abbrev-ref HEAD --show-toplevel', options),
|
|
45
|
+
(0, _clios.runCommandOutputAsync)('git config user.email', options),
|
|
46
|
+
(0, _clios.runCommandOutputAsync)('git config user.name', options)
|
|
47
|
+
]);
|
|
48
|
+
const [branch, root] = (_ref = rev === null || rev === void 0 ? void 0 : rev.split('\n')) !== null && _ref !== void 0 ? _ref : [];
|
|
49
|
+
return {
|
|
50
|
+
repo: root ? _nodepath.default.basename(root) : undefined,
|
|
51
|
+
branch,
|
|
52
|
+
userEmail,
|
|
53
|
+
userName
|
|
54
|
+
};
|
|
55
|
+
}
|
|
26
56
|
|
|
27
57
|
//# sourceMappingURL=cli-git.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/utils/cli-git.ts"],"sourcesContent":["import { runCommandOutput } from './cli-os';\n\nexport function gitGetBranch(): string {\n return runCommandOutput('git rev-parse --abbrev-ref HEAD').trim();\n}\n\nexport function gitGetCommitHash(): string {\n return runCommandOutput('git rev-parse --short HEAD').trim();\n}\n"],"names":["gitGetBranch","gitGetCommitHash","runCommandOutput","trim"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/utils/cli-git.ts"],"sourcesContent":["import path from 'node:path';\nimport { runCommandOutput, runCommandOutputAsync } from './cli-os';\n\nconst GIT_TIMEOUT_MS = 2000;\n\nexport function gitGetBranch(): string {\n return runCommandOutput('git rev-parse --abbrev-ref HEAD').trim();\n}\n\nexport function gitGetCommitHash(): string {\n return runCommandOutput('git rev-parse --short HEAD').trim();\n}\n\nexport interface GitContext {\n repo?: string;\n branch?: string;\n userEmail?: string;\n userName?: string;\n}\n\nexport async function gitGetContext(): Promise<GitContext> {\n const options = { quiet: true, ignoreErrors: true, timeout: GIT_TIMEOUT_MS };\n const [rev, userEmail, userName] = await Promise.all([\n runCommandOutputAsync('git rev-parse --abbrev-ref HEAD --show-toplevel', options),\n runCommandOutputAsync('git config user.email', options),\n runCommandOutputAsync('git config user.name', options),\n ]);\n const [branch, root] = rev?.split('\\n') ?? [];\n return {\n repo: root ? path.basename(root) : undefined,\n branch,\n userEmail,\n userName,\n };\n}\n"],"names":["gitGetBranch","gitGetCommitHash","gitGetContext","GIT_TIMEOUT_MS","runCommandOutput","trim","options","quiet","ignoreErrors","timeout","rev","userEmail","userName","Promise","all","runCommandOutputAsync","branch","root","split","repo","path","basename","undefined"],"mappings":";;;;;;;;;;;QAKgBA;eAAAA;;QAIAC;eAAAA;;QAWMC;eAAAA;;;iEApBL;uBACuC;;;;;;AAExD,MAAMC,iBAAiB;AAEhB,SAASH;IACZ,OAAOI,IAAAA,uBAAgB,EAAC,mCAAmCC,IAAI;AACnE;AAEO,SAASJ;IACZ,OAAOG,IAAAA,uBAAgB,EAAC,8BAA8BC,IAAI;AAC9D;AASO,eAAeH;;IAClB,MAAMI,UAAU;QAAEC,OAAO;QAAMC,cAAc;QAAMC,SAASN;IAAe;IAC3E,MAAM,CAACO,KAAKC,WAAWC,SAAS,GAAG,MAAMC,QAAQC,GAAG,CAAC;QACjDC,IAAAA,4BAAqB,EAAC,mDAAmDT;QACzES,IAAAA,4BAAqB,EAAC,yBAAyBT;QAC/CS,IAAAA,4BAAqB,EAAC,wBAAwBT;KACjD;IACD,MAAM,CAACU,QAAQC,KAAK,WAAGP,gBAAAA,0BAAAA,IAAKQ,KAAK,CAAC,4CAAS,EAAE;IAC7C,OAAO;QACHC,MAAMF,OAAOG,iBAAI,CAACC,QAAQ,CAACJ,QAAQK;QACnCN;QACAL;QACAC;IACJ;AACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExecSyncOptionsWithBufferEncoding, SpawnOptionsWithoutStdio } from 'child_process';
|
|
1
|
+
import { ExecOptions, ExecSyncOptionsWithBufferEncoding, SpawnOptionsWithoutStdio } from 'child_process';
|
|
2
2
|
type RunCommandOptions = SpawnOptionsWithoutStdio & {
|
|
3
3
|
quiet?: boolean;
|
|
4
4
|
};
|
|
@@ -7,6 +7,11 @@ type RunCommandOutputOptions = ExecSyncOptionsWithBufferEncoding & {
|
|
|
7
7
|
quiet?: boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare function runCommandOutput(command: string | (string | false)[], { quiet, ...execSyncOptions }?: RunCommandOutputOptions): string;
|
|
10
|
+
type RunCommandOutputAsyncOptions = ExecOptions & {
|
|
11
|
+
quiet?: boolean;
|
|
12
|
+
ignoreErrors?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function runCommandOutputAsync(command: string, { quiet, ignoreErrors, ...execOptions }?: RunCommandOutputAsyncOptions): Promise<string | undefined>;
|
|
10
15
|
export declare function killProcessTree(pid: number, signal?: NodeJS.Signals): void;
|
|
11
16
|
export {};
|
|
12
17
|
//# sourceMappingURL=cli-os.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-os.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iCAAiC,EAEjC,wBAAwB,EAC3B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-os.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,WAAW,EAEX,iCAAiC,EAEjC,wBAAwB,EAC3B,MAAM,eAAe,CAAC;AAIvB,KAAK,iBAAiB,GAAG,wBAAwB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,wBAAsB,UAAU,CAC5B,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EACpC,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAE,iBAAsB,iBAyCrD;AAED,KAAK,uBAAuB,GAAG,iCAAiC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EACpC,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,GAAE,uBAA4B,UAqB9D;AAED,KAAK,4BAA4B,GAAG,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,MAAM,EACf,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,GAAE,4BAAiC,GAC3E,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,OAAmB,QAW9E"}
|
package/dist/cli/utils/cli-os.js
CHANGED
|
@@ -17,9 +17,13 @@ _export(exports, {
|
|
|
17
17
|
},
|
|
18
18
|
get runCommandOutput () {
|
|
19
19
|
return runCommandOutput;
|
|
20
|
+
},
|
|
21
|
+
get runCommandOutputAsync () {
|
|
22
|
+
return runCommandOutputAsync;
|
|
20
23
|
}
|
|
21
24
|
});
|
|
22
25
|
const _child_process = require("child_process");
|
|
26
|
+
const _util = require("util");
|
|
23
27
|
const _utils = require("../../utils");
|
|
24
28
|
async function runCommand(command, { quiet, ...spawnOptions } = {}) {
|
|
25
29
|
return new Promise((resolve, reject)=>{
|
|
@@ -74,6 +78,24 @@ function runCommandOutput(command, { quiet, ...execSyncOptions } = {}) {
|
|
|
74
78
|
}
|
|
75
79
|
return result;
|
|
76
80
|
}
|
|
81
|
+
async function runCommandOutputAsync(command, { quiet, ignoreErrors, ...execOptions } = {}) {
|
|
82
|
+
if (!quiet) {
|
|
83
|
+
_utils.log.info(`Running: ${command}`);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const { stdout } = await (0, _util.promisify)(_child_process.exec)(command, execOptions);
|
|
87
|
+
const result = stdout.toString().trim();
|
|
88
|
+
if (!quiet) {
|
|
89
|
+
_utils.log.info('command finished', result);
|
|
90
|
+
}
|
|
91
|
+
return result || undefined;
|
|
92
|
+
} catch (error) {
|
|
93
|
+
if (ignoreErrors) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
77
99
|
function killProcessTree(pid, signal = 'SIGKILL') {
|
|
78
100
|
try {
|
|
79
101
|
if (process.platform === 'win32') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/utils/cli-os.ts"],"sourcesContent":["import {\n execFileSync,\n execSync,\n ExecSyncOptionsWithBufferEncoding,\n spawn,\n SpawnOptionsWithoutStdio,\n} from 'child_process';\nimport { log } from '../../utils';\n\ntype RunCommandOptions = SpawnOptionsWithoutStdio & { quiet?: boolean };\n\nexport async function runCommand(\n command: string | (string | false)[],\n { quiet, ...spawnOptions }: RunCommandOptions = {}\n) {\n return new Promise<void>((resolve, reject) => {\n const commandArray: string[] = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, ...el.toString().split(' ')] : acc), [])\n : command.split(' ');\n const fullCommand = commandArray.join(' ');\n const commandName = commandArray.shift();\n\n if (!commandName) {\n reject(new Error('invalid command'));\n return;\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const proc = spawn(commandName, commandArray, {\n shell: process.platform === 'win32',\n ...spawnOptions,\n });\n\n proc.stdout.pipe(process.stdout);\n proc.stderr.pipe(process.stderr);\n\n proc.on('exit', function (code) {\n if (!quiet) {\n log.info(`command finished with code ${code}`, fullCommand);\n }\n\n if (code) {\n reject(new Error(`command exited with code: ${code}`));\n } else {\n resolve();\n }\n });\n proc.on('error', function (e) {\n reject(e);\n });\n });\n}\n\ntype RunCommandOutputOptions = ExecSyncOptionsWithBufferEncoding & { quiet?: boolean };\n\nexport function runCommandOutput(\n command: string | (string | false)[],\n { quiet, ...execSyncOptions }: RunCommandOutputOptions = {}\n) {\n const fullCommand = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, el.toString()] : acc), []).join(' ')\n : command;\n\n if (!fullCommand) {\n throw new Error();\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const result = execSync(fullCommand, execSyncOptions).toString();\n\n if (!quiet) {\n log.info('command finished', result.trim());\n }\n\n return result;\n}\n\nexport function killProcessTree(pid: number, signal: NodeJS.Signals = 'SIGKILL') {\n try {\n if (process.platform === 'win32') {\n execFileSync('taskkill', ['/pid', String(pid), '/t', '/f']);\n } else {\n // negative pid targets the whole process group\n process.kill(-pid, signal);\n }\n } catch {\n // tree already gone\n }\n}\n"],"names":["killProcessTree","runCommand","runCommandOutput","command","quiet","spawnOptions","Promise","resolve","reject","commandArray","Array","isArray","reduce","acc","el","toString","split","fullCommand","join","commandName","shift","Error","log","info","proc","spawn","shell","process","platform","stdout","pipe","stderr","on","code","e","execSyncOptions","result","execSync","trim","pid","signal","execFileSync","String","kill"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/utils/cli-os.ts"],"sourcesContent":["import {\n exec,\n execFileSync,\n ExecOptions,\n execSync,\n ExecSyncOptionsWithBufferEncoding,\n spawn,\n SpawnOptionsWithoutStdio,\n} from 'child_process';\nimport { promisify } from 'util';\nimport { log } from '../../utils';\n\ntype RunCommandOptions = SpawnOptionsWithoutStdio & { quiet?: boolean };\n\nexport async function runCommand(\n command: string | (string | false)[],\n { quiet, ...spawnOptions }: RunCommandOptions = {}\n) {\n return new Promise<void>((resolve, reject) => {\n const commandArray: string[] = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, ...el.toString().split(' ')] : acc), [])\n : command.split(' ');\n const fullCommand = commandArray.join(' ');\n const commandName = commandArray.shift();\n\n if (!commandName) {\n reject(new Error('invalid command'));\n return;\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const proc = spawn(commandName, commandArray, {\n shell: process.platform === 'win32',\n ...spawnOptions,\n });\n\n proc.stdout.pipe(process.stdout);\n proc.stderr.pipe(process.stderr);\n\n proc.on('exit', function (code) {\n if (!quiet) {\n log.info(`command finished with code ${code}`, fullCommand);\n }\n\n if (code) {\n reject(new Error(`command exited with code: ${code}`));\n } else {\n resolve();\n }\n });\n proc.on('error', function (e) {\n reject(e);\n });\n });\n}\n\ntype RunCommandOutputOptions = ExecSyncOptionsWithBufferEncoding & { quiet?: boolean };\n\nexport function runCommandOutput(\n command: string | (string | false)[],\n { quiet, ...execSyncOptions }: RunCommandOutputOptions = {}\n) {\n const fullCommand = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, el.toString()] : acc), []).join(' ')\n : command;\n\n if (!fullCommand) {\n throw new Error();\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const result = execSync(fullCommand, execSyncOptions).toString();\n\n if (!quiet) {\n log.info('command finished', result.trim());\n }\n\n return result;\n}\n\ntype RunCommandOutputAsyncOptions = ExecOptions & { quiet?: boolean; ignoreErrors?: boolean };\n\nexport async function runCommandOutputAsync(\n command: string,\n { quiet, ignoreErrors, ...execOptions }: RunCommandOutputAsyncOptions = {}\n): Promise<string | undefined> {\n if (!quiet) {\n log.info(`Running: ${command}`);\n }\n\n try {\n const { stdout } = await promisify(exec)(command, execOptions);\n const result = stdout.toString().trim();\n\n if (!quiet) {\n log.info('command finished', result);\n }\n\n return result || undefined;\n } catch (error) {\n if (ignoreErrors) {\n return undefined;\n }\n throw error;\n }\n}\n\nexport function killProcessTree(pid: number, signal: NodeJS.Signals = 'SIGKILL') {\n try {\n if (process.platform === 'win32') {\n execFileSync('taskkill', ['/pid', String(pid), '/t', '/f']);\n } else {\n // negative pid targets the whole process group\n process.kill(-pid, signal);\n }\n } catch {\n // tree already gone\n }\n}\n"],"names":["killProcessTree","runCommand","runCommandOutput","runCommandOutputAsync","command","quiet","spawnOptions","Promise","resolve","reject","commandArray","Array","isArray","reduce","acc","el","toString","split","fullCommand","join","commandName","shift","Error","log","info","proc","spawn","shell","process","platform","stdout","pipe","stderr","on","code","e","execSyncOptions","result","execSync","trim","ignoreErrors","execOptions","promisify","exec","undefined","error","pid","signal","execFileSync","String","kill"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|