@servicetitan/startup 31.6.0 → 32.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/init.d.ts +2 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +24 -43
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +4 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +91 -3
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-clean.js +5 -7
- package/dist/cli/commands/mfe-package-clean.js.map +1 -1
- package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-publish.js +11 -15
- package/dist/cli/commands/mfe-package-publish.js.map +1 -1
- package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
- package/dist/cli/commands/upload-sourcemaps.js +1 -1
- package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
- package/dist/cli/index.js +1 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/cli-git.d.ts +11 -2
- package/dist/cli/utils/cli-git.d.ts.map +1 -1
- package/dist/cli/utils/cli-git.js +60 -4
- package/dist/cli/utils/cli-git.js.map +1 -1
- package/dist/cli/utils/index.d.ts +6 -0
- package/dist/cli/utils/index.d.ts.map +1 -1
- package/dist/cli/utils/index.js +6 -0
- package/dist/cli/utils/index.js.map +1 -1
- package/dist/cli/utils/is-ci.d.ts +2 -0
- package/dist/cli/utils/is-ci.d.ts.map +1 -0
- package/dist/cli/utils/is-ci.js +15 -0
- package/dist/cli/utils/is-ci.js.map +1 -0
- package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
- package/dist/cli/utils/lerna-exec.js +2 -1
- package/dist/cli/utils/lerna-exec.js.map +1 -1
- package/dist/utils/get-branch-configs.d.ts +1 -1
- package/dist/utils/get-branch-configs.d.ts.map +1 -1
- package/dist/utils/get-branch-configs.js +2 -2
- package/dist/utils/get-branch-configs.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/package.json +6 -6
- package/src/cli/commands/__tests__/init.test.ts +21 -87
- package/src/cli/commands/__tests__/install.test.ts +174 -12
- package/src/cli/commands/__tests__/mfe-package-clean.test.ts +3 -6
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +6 -8
- package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +7 -3
- package/src/cli/commands/init.ts +17 -37
- package/src/cli/commands/install.ts +95 -6
- package/src/cli/commands/mfe-package-clean.ts +2 -4
- package/src/cli/commands/mfe-package-publish.ts +18 -6
- package/src/cli/commands/upload-sourcemaps.ts +2 -2
- package/src/cli/index.ts +1 -2
- package/src/cli/utils/__tests__/cli-git.test.ts +142 -6
- package/src/cli/utils/__tests__/eslint.test.ts +3 -2
- package/src/cli/utils/__tests__/is-ci.test.ts +40 -0
- package/src/cli/utils/__tests__/lerna-exec.test.ts +6 -3
- package/src/cli/utils/cli-git.ts +55 -5
- package/src/cli/utils/index.ts +6 -0
- package/src/cli/utils/is-ci.ts +3 -0
- package/src/cli/utils/lerna-exec.ts +2 -1
- package/src/utils/get-branch-configs.ts +1 -1
- package/src/utils/index.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Command } from './';
|
|
1
|
+
import { Command } from './types';
|
|
2
2
|
interface Args {
|
|
3
3
|
output?: string;
|
|
4
4
|
}
|
|
@@ -7,6 +7,7 @@ export declare class Init implements Command {
|
|
|
7
7
|
constructor(args: Args);
|
|
8
8
|
description(): string;
|
|
9
9
|
execute(): Promise<void>;
|
|
10
|
+
cloneRepo(destination: string): Promise<boolean>;
|
|
10
11
|
}
|
|
11
12
|
export {};
|
|
12
13
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,IAAK,YAAW,OAAO;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAEvC,WAAW;IAKL,OAAO;IAoBP,SAAS,CAAC,WAAW,EAAE,MAAM;CAWtC"}
|
|
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "Init", {
|
|
|
11
11
|
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
12
|
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
13
13
|
const _utils = require("../../utils");
|
|
14
|
-
const
|
|
14
|
+
const _utils1 = require("../utils");
|
|
15
15
|
function _define_property(obj, key, value) {
|
|
16
16
|
if (key in obj) {
|
|
17
17
|
Object.defineProperty(obj, key, {
|
|
@@ -39,8 +39,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
39
39
|
function _ts_metadata(k, v) {
|
|
40
40
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
41
41
|
}
|
|
42
|
-
const
|
|
43
|
-
const sshUrl = 'git@github.com:servicetitan/frontend-example.git';
|
|
42
|
+
const REPO_NAME = 'frontend-example';
|
|
44
43
|
class Init {
|
|
45
44
|
description() {
|
|
46
45
|
return 'create example project';
|
|
@@ -57,23 +56,31 @@ class Init {
|
|
|
57
56
|
} else if (_fs.default.readdirSync(destination).length !== 0) {
|
|
58
57
|
throw new Error(`${destination} is not an empty directory`);
|
|
59
58
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
];
|
|
64
|
-
if (!!process.env.CI && !!process.env.GITHUB_TOKEN) {
|
|
65
|
-
gitUrls.unshift(webUrl.replace('github.com', `oauth2:${process.env.GITHUB_TOKEN}@github.com`));
|
|
59
|
+
if (await this.cloneRepo(destination)) {
|
|
60
|
+
_utils.log.info(`copied example project to ${destination}`);
|
|
61
|
+
return;
|
|
66
62
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
63
|
+
if (!(0, _utils1.gitIsReachable)({
|
|
64
|
+
name: REPO_NAME
|
|
65
|
+
})) {
|
|
66
|
+
throw new Error(`could not read servicetitan/${REPO_NAME} repository`);
|
|
73
67
|
}
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
}
|
|
69
|
+
async cloneRepo(destination) {
|
|
70
|
+
const ok = await (0, _utils1.gitCloneRepo)({
|
|
71
|
+
destination,
|
|
72
|
+
name: REPO_NAME
|
|
73
|
+
});
|
|
74
|
+
if (!ok) {
|
|
75
|
+
return false;
|
|
76
76
|
}
|
|
77
|
+
_fs.default.rmSync(_path.default.join(destination, '.git'), {
|
|
78
|
+
recursive: true,
|
|
79
|
+
force: true
|
|
80
|
+
});
|
|
81
|
+
_fs.default.rmSync(_path.default.join(destination, '.github', 'CODEOWNERS'));
|
|
82
|
+
_fs.default.rmSync(_path.default.join(destination, 'package-lock.json'));
|
|
83
|
+
return true;
|
|
77
84
|
}
|
|
78
85
|
constructor(args){
|
|
79
86
|
_define_property(this, "args", void 0);
|
|
@@ -86,31 +93,5 @@ _ts_decorate([
|
|
|
86
93
|
_ts_metadata("design:paramtypes", []),
|
|
87
94
|
_ts_metadata("design:returntype", Promise)
|
|
88
95
|
], Init.prototype, "execute", null);
|
|
89
|
-
async function cloneRepo(url, destination) {
|
|
90
|
-
try {
|
|
91
|
-
await (0, _clios.runCommand)(`git clone -q ${url} ${destination}`, {
|
|
92
|
-
quiet: true
|
|
93
|
-
});
|
|
94
|
-
} catch (e) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
_fs.default.rmSync(_path.default.join(destination, '.git'), {
|
|
98
|
-
recursive: true,
|
|
99
|
-
force: true
|
|
100
|
-
});
|
|
101
|
-
_fs.default.rmSync(_path.default.join(destination, '.github', 'CODEOWNERS'));
|
|
102
|
-
_fs.default.rmSync(_path.default.join(destination, 'package-lock.json'));
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
function isReachable(url) {
|
|
106
|
-
try {
|
|
107
|
-
(0, _clios.runCommandOutput)(`git ls-remote -qt ${url}`, {
|
|
108
|
-
quiet: true
|
|
109
|
-
});
|
|
110
|
-
} catch (e) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
96
|
|
|
116
97
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { log, logErrors } from '../../utils';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { log, logErrors } from '../../utils';\nimport { gitCloneRepo, gitIsReachable } from '../utils';\nimport { Command } from './types';\n\ninterface Args {\n output?: string;\n}\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init implements Command {\n constructor(private readonly args: Args) {}\n\n description() {\n return 'create example project';\n }\n\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 (await 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\n async cloneRepo(destination: string) {\n const ok = await 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 fs.rmSync(path.join(destination, 'package-lock.json'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","description","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","ok","gitCloneRepo","rmSync","join","force"],"mappings":";;;;+BAaaA;;;eAAAA;;;2DAbE;6DACE;uBAEc;wBACc;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAO7C,MAAMC,YAAY;AAEX,MAAMD;IAGTE,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;YACqB;QAAjC,MAAMC,cAAcC,aAAI,CAACC,OAAO,CAAC,CAAA,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,MAAM,IAAI,CAACc,SAAS,CAACd,cAAc;YACnCe,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEhB,aAAa;YACnD;QACJ;QAEA,IAAI,CAACiB,IAAAA,sBAAc,EAAC;YAAEC,MAAMrB;QAAU,IAAI;YACtC,MAAM,IAAIc,MAAM,CAAC,4BAA4B,EAAEd,UAAU,WAAW,CAAC;QACzE;IACJ;IAEA,MAAMiB,UAAUd,WAAmB,EAAE;QACjC,MAAMmB,KAAK,MAAMC,IAAAA,oBAAY,EAAC;YAAEpB;YAAakB,MAAMrB;QAAU;QAC7D,IAAI,CAACsB,IAAI;YACL,OAAO;QACX;QAEAd,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa,SAAS;YAAEQ,WAAW;YAAMe,OAAO;QAAK;QACzElB,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa,WAAW;QAC5CK,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa;QACjC,OAAO;IACX;IArCA,YAAY,AAAiBG,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AAsC9C"}
|
|
@@ -2,12 +2,16 @@ import { Command } from './types';
|
|
|
2
2
|
interface Args {
|
|
3
3
|
quiet?: boolean;
|
|
4
4
|
fix?: boolean;
|
|
5
|
+
token?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare class Install implements Command {
|
|
7
8
|
private readonly args?;
|
|
8
9
|
constructor(args?: Args | undefined);
|
|
9
10
|
description(): string;
|
|
10
11
|
execute(): Promise<void>;
|
|
12
|
+
private configureNpmToken;
|
|
13
|
+
private fetchNpmToken;
|
|
14
|
+
private installPackages;
|
|
11
15
|
}
|
|
12
16
|
export {};
|
|
13
17
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -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":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,UAAU,IAAI;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,qBAAa,OAAQ,YAAW,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAL,IAAI,CAAC,EAAE,IAAI,YAAA;IAExC,WAAW;IAKL,OAAO;YAWC,iBAAiB;YA6BjB,aAAa;IAqC3B,OAAO,CAAC,eAAe;CAyB1B"}
|
|
@@ -9,7 +9,11 @@ Object.defineProperty(exports, "Install", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _child_process = require("child_process");
|
|
12
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
13
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
14
|
+
const _os = /*#__PURE__*/ _interop_require_default(require("os"));
|
|
12
15
|
const _utils = require("../../utils");
|
|
16
|
+
const _utils1 = require("../utils");
|
|
13
17
|
function _define_property(obj, key, value) {
|
|
14
18
|
if (key in obj) {
|
|
15
19
|
Object.defineProperty(obj, key, {
|
|
@@ -23,6 +27,11 @@ function _define_property(obj, key, value) {
|
|
|
23
27
|
}
|
|
24
28
|
return obj;
|
|
25
29
|
}
|
|
30
|
+
function _interop_require_default(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
26
35
|
function _ts_decorate(decorators, target, key, desc) {
|
|
27
36
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
28
37
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -32,17 +41,92 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
32
41
|
function _ts_metadata(k, v) {
|
|
33
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
34
43
|
}
|
|
44
|
+
const REPO_NAME = 'frontend-dev-config';
|
|
45
|
+
const AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';
|
|
46
|
+
const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*\${([^}]+)}/m;
|
|
35
47
|
class Install {
|
|
36
48
|
description() {
|
|
37
49
|
return 'install project dependencies';
|
|
38
50
|
}
|
|
39
51
|
async execute() {
|
|
52
|
+
var _this_args;
|
|
53
|
+
if (!((_this_args = this.args) === null || _this_args === void 0 ? void 0 : _this_args.quiet)) {
|
|
54
|
+
_utils.log.info(`startup cli v${(0, _utils.getStartupVersion)()}`);
|
|
55
|
+
}
|
|
56
|
+
const env = await this.configureNpmToken();
|
|
57
|
+
this.installPackages(env);
|
|
58
|
+
return Promise.resolve(); // stops "async method has no 'await' expression" lint error
|
|
59
|
+
}
|
|
60
|
+
async configureNpmToken() {
|
|
61
|
+
var _this_args, _this_args1, _this_args2;
|
|
62
|
+
if ((0, _utils1.isCI)() || ((_this_args = this.args) === null || _this_args === void 0 ? void 0 : _this_args.fix) || ((_this_args1 = this.args) === null || _this_args1 === void 0 ? void 0 : _this_args1.token) === false) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!((_this_args2 = this.args) === null || _this_args2 === void 0 ? void 0 : _this_args2.quiet)) {
|
|
66
|
+
_utils.log.info('Configuring NPM token ...');
|
|
67
|
+
}
|
|
68
|
+
const token = await this.fetchNpmToken();
|
|
69
|
+
if (!token) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
(0, _child_process.execSync)(`npm config set "${AUTH_TOKEN_KEY}"="${token}"`);
|
|
73
|
+
if (!_fs.default.existsSync('.npmrc')) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const npmrc = _fs.default.readFileSync('.npmrc', 'utf-8');
|
|
77
|
+
const match = AUTH_TOKEN_REGEX.exec(npmrc);
|
|
78
|
+
if (match) {
|
|
79
|
+
return {
|
|
80
|
+
[match[1]]: token
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
(0, _child_process.execSync)(`npm config delete --location=project "${AUTH_TOKEN_KEY}"`);
|
|
84
|
+
}
|
|
85
|
+
async fetchNpmToken() {
|
|
86
|
+
const tempDirPath = _fs.default.mkdtempSync(_path.default.join(_os.default.tmpdir(), 'st-install-'));
|
|
87
|
+
try {
|
|
88
|
+
if (!await (0, _utils1.gitCloneRepo)({
|
|
89
|
+
destination: tempDirPath,
|
|
90
|
+
name: REPO_NAME
|
|
91
|
+
})) {
|
|
92
|
+
throw new Error(`could not clone servicetitan/${REPO_NAME}`);
|
|
93
|
+
}
|
|
94
|
+
const npmJson = (0, _utils.readJsonSafe)(_path.default.join(tempDirPath, '.npm.json'));
|
|
95
|
+
/* istanbul ignore next: debug only */ _utils.log.debug('install:fetch-token', ()=>JSON.stringify(npmJson, null, 2));
|
|
96
|
+
if (!(npmJson && typeof npmJson === 'object' || Array.isArray(npmJson))) {
|
|
97
|
+
throw new Error('.npm.json is not an object');
|
|
98
|
+
}
|
|
99
|
+
const { readOnlyToken: authToken } = npmJson;
|
|
100
|
+
if (!authToken) {
|
|
101
|
+
throw new Error('.npm.json does not contain auth token');
|
|
102
|
+
}
|
|
103
|
+
if (typeof authToken !== 'string') {
|
|
104
|
+
throw new Error('.npm.json auth token is not a string');
|
|
105
|
+
}
|
|
106
|
+
return Buffer.from(authToken, 'base64').toString('utf-8');
|
|
107
|
+
} catch (e) {
|
|
108
|
+
_utils.log.warning(String(e));
|
|
109
|
+
} finally{
|
|
110
|
+
try {
|
|
111
|
+
_fs.default.rmSync(tempDirPath, {
|
|
112
|
+
recursive: true,
|
|
113
|
+
force: true
|
|
114
|
+
});
|
|
115
|
+
} catch (e) {
|
|
116
|
+
// ignore
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
installPackages(env) {
|
|
40
121
|
var _this_args, _this_args1;
|
|
122
|
+
/* istanbul ignore next: debug only */ _utils.log.debug('install:install-packages', ()=>JSON.stringify({
|
|
123
|
+
env
|
|
124
|
+
}));
|
|
41
125
|
/**
|
|
42
126
|
* Note, if these are changed, update bootstrap.js to match
|
|
43
127
|
* @see {@link file://./../../../../../bootstrap.js}
|
|
44
128
|
*/ const npmArguments = [
|
|
45
|
-
|
|
129
|
+
(0, _utils1.isCI)() ? 'ci' : 'i',
|
|
46
130
|
'--audit=false',
|
|
47
131
|
'--fund=false',
|
|
48
132
|
'--legacy-peer-deps',
|
|
@@ -52,13 +136,17 @@ class Install {
|
|
|
52
136
|
] : []
|
|
53
137
|
].join(' ');
|
|
54
138
|
if (!((_this_args1 = this.args) === null || _this_args1 === void 0 ? void 0 : _this_args1.quiet)) {
|
|
55
|
-
_utils.log.info(`startup cli v${(0, _utils.getStartupVersion)()}`);
|
|
56
139
|
_utils.log.info(`Running npm ${npmArguments} ...`);
|
|
57
140
|
}
|
|
58
141
|
(0, _child_process.execSync)(`npm ${npmArguments}`, {
|
|
142
|
+
...env ? {
|
|
143
|
+
env: {
|
|
144
|
+
...process.env,
|
|
145
|
+
...env
|
|
146
|
+
}
|
|
147
|
+
} : {},
|
|
59
148
|
stdio: 'inherit'
|
|
60
149
|
});
|
|
61
|
-
return Promise.resolve(); // stops "async method has no 'await' expression" lint error
|
|
62
150
|
}
|
|
63
151
|
constructor(args){
|
|
64
152
|
_define_property(this, "args", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { log, logErrors, getStartupVersion } from '../../utils';\nimport { Command } from './types';\n\ninterface Args {\n quiet?: boolean;\n fix?: boolean;\n}\n\nexport class Install implements Command {\n constructor(private readonly args?: Args) {}\n\n description() {\n return 'install project dependencies';\n }\n\n @logErrors\n async execute() {\n /**\n * Note, if these are changed, update bootstrap.js to match\n * @see {@link file://./../../../../../bootstrap.js}\n */\n const npmArguments = [\n
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\nimport { log, logErrors, getStartupVersion, readJsonSafe } from '../../utils';\nimport { Command } from './types';\nimport { gitCloneRepo, isCI } from '../utils';\n\ninterface Args {\n quiet?: boolean;\n fix?: boolean;\n token?: boolean;\n}\n\nconst REPO_NAME = 'frontend-dev-config';\nconst AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';\nconst AUTH_TOKEN_REGEX = /^\\/\\/registry\\.npmjs\\.org\\/:_authToken=\\s*\\${([^}]+)}/m;\n\nexport class Install implements Command {\n constructor(private readonly args?: Args) {}\n\n description() {\n return 'install project dependencies';\n }\n\n @logErrors\n async execute() {\n if (!this.args?.quiet) {\n log.info(`startup cli v${getStartupVersion()}`);\n }\n\n const env = await this.configureNpmToken();\n this.installPackages(env);\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n\n private async configureNpmToken() {\n if (isCI() || this.args?.fix || this.args?.token === false) {\n return;\n }\n\n if (!this.args?.quiet) {\n log.info('Configuring NPM token ...');\n }\n\n const token = await this.fetchNpmToken();\n if (!token) {\n return;\n }\n\n execSync(`npm config set \"${AUTH_TOKEN_KEY}\"=\"${token}\"`);\n\n if (!fs.existsSync('.npmrc')) {\n return;\n }\n\n const npmrc = fs.readFileSync('.npmrc', 'utf-8');\n const match = AUTH_TOKEN_REGEX.exec(npmrc);\n if (match) {\n return { [match[1]]: token };\n }\n\n execSync(`npm config delete --location=project \"${AUTH_TOKEN_KEY}\"`);\n }\n\n private async fetchNpmToken() {\n const tempDirPath = fs.mkdtempSync(path.join(os.tmpdir(), 'st-install-'));\n try {\n if (!(await gitCloneRepo({ destination: tempDirPath, name: REPO_NAME }))) {\n throw new Error(`could not clone servicetitan/${REPO_NAME}`);\n }\n\n const npmJson = readJsonSafe(path.join(tempDirPath, '.npm.json'));\n\n /* istanbul ignore next: debug only */\n log.debug('install:fetch-token', () => JSON.stringify(npmJson, null, 2));\n\n if (!((npmJson && typeof npmJson === 'object') || Array.isArray(npmJson))) {\n throw new Error('.npm.json is not an object');\n }\n\n const { readOnlyToken: authToken } = npmJson;\n if (!authToken) {\n throw new Error('.npm.json does not contain auth token');\n }\n\n if (typeof authToken !== 'string') {\n throw new Error('.npm.json auth token is not a string');\n }\n\n return Buffer.from(authToken, 'base64').toString('utf-8');\n } catch (e) {\n log.warning(String(e));\n } finally {\n try {\n fs.rmSync(tempDirPath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n }\n }\n\n private installPackages(env?: Record<string, string>) {\n /* istanbul ignore next: debug only */\n log.debug('install:install-packages', () => JSON.stringify({ env }));\n\n /**\n * Note, if these are changed, update bootstrap.js to match\n * @see {@link file://./../../../../../bootstrap.js}\n */\n const npmArguments = [\n isCI() ? 'ci' : 'i',\n '--audit=false',\n '--fund=false',\n '--legacy-peer-deps',\n ...(this.args?.fix ? ['--package-lock-only', '--prefer-dedupe'] : []),\n ].join(' ');\n\n if (!this.args?.quiet) {\n log.info(`Running npm ${npmArguments} ...`);\n }\n\n execSync(`npm ${npmArguments}`, {\n ...(env ? { env: { ...process.env, ...env } } : {}),\n stdio: 'inherit',\n });\n }\n}\n"],"names":["Install","REPO_NAME","AUTH_TOKEN_KEY","AUTH_TOKEN_REGEX","description","execute","args","quiet","log","info","getStartupVersion","env","configureNpmToken","installPackages","Promise","resolve","isCI","fix","token","fetchNpmToken","execSync","fs","existsSync","npmrc","readFileSync","match","exec","tempDirPath","mkdtempSync","path","join","os","tmpdir","gitCloneRepo","destination","name","Error","npmJson","readJsonSafe","debug","JSON","stringify","Array","isArray","readOnlyToken","authToken","Buffer","from","toString","e","warning","String","rmSync","recursive","force","npmArguments","process","stdio"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfe-package-clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-clean.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mfe-package-clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-clean.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,IAAI;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAgB,YAAW,OAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGjC,OAAO;IA4Cb,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,mBAAmB;CA0C9B"}
|
|
@@ -9,9 +9,7 @@ Object.defineProperty(exports, "MFEPackageClean", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _utils = require("../../utils");
|
|
12
|
-
const
|
|
13
|
-
const _cligit = require("../utils/cli-git");
|
|
14
|
-
const _clinpm = require("../utils/cli-npm");
|
|
12
|
+
const _utils1 = require("../utils");
|
|
15
13
|
function _define_property(obj, key, value) {
|
|
16
14
|
if (key in obj) {
|
|
17
15
|
Object.defineProperty(obj, key, {
|
|
@@ -63,7 +61,7 @@ class MFEPackageClean {
|
|
|
63
61
|
for (const version of unVersions){
|
|
64
62
|
try {
|
|
65
63
|
// eslint-disable-next-line no-await-in-loop
|
|
66
|
-
await (0,
|
|
64
|
+
await (0, _utils1.npmUnpublish)(data.registry, packageName, version);
|
|
67
65
|
} catch (e) {
|
|
68
66
|
_utils.log.error(`error while removing ${packageName} version ${version}`);
|
|
69
67
|
}
|
|
@@ -85,14 +83,14 @@ class MFEPackageClean {
|
|
|
85
83
|
}
|
|
86
84
|
let branches;
|
|
87
85
|
if (this.args.all === true) {
|
|
88
|
-
branches = Object.keys((0,
|
|
86
|
+
branches = Object.keys((0, _utils.getBranchesConfigs)());
|
|
89
87
|
} else if (typeof this.args.branch === 'string') {
|
|
90
88
|
branches = [
|
|
91
89
|
this.args.branch
|
|
92
90
|
];
|
|
93
91
|
} else {
|
|
94
92
|
branches = [
|
|
95
|
-
(0,
|
|
93
|
+
(0, _utils1.gitGetBranch)()
|
|
96
94
|
];
|
|
97
95
|
}
|
|
98
96
|
var _this_args_registry;
|
|
@@ -104,7 +102,7 @@ class MFEPackageClean {
|
|
|
104
102
|
};
|
|
105
103
|
}
|
|
106
104
|
getBranchedVersions(packageName, registry) {
|
|
107
|
-
const versions = (0,
|
|
105
|
+
const versions = (0, _utils1.npmGetPackageVersionsDetails)(registry, packageName);
|
|
108
106
|
const branchedVersions = {};
|
|
109
107
|
function addVersion(branch, version) {
|
|
110
108
|
var _branchedVersions, _branch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-package-clean.ts"],"sourcesContent":["import { isWebComponent, log, logErrors, readJson } from '../../utils';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-package-clean.ts"],"sourcesContent":["import { getBranchesConfigs, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { gitGetBranch, npmGetPackageVersionsDetails, npmUnpublish, Version } from '../utils';\nimport { Command } from './types';\n\nexport interface Args {\n all?: true;\n branch?: string;\n count?: number;\n dry?: boolean;\n registry?: string;\n}\n\nexport class MFEPackageClean implements Command {\n constructor(private readonly args: Args) {}\n\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('only web-components can be cleaned');\n }\n\n const data = this.getCleanData();\n const packageName = readJson('package.json').name;\n const branchedVersions = this.getBranchedVersions(packageName, data.registry);\n\n log.info(`branched versions (${data.count}):`, JSON.stringify(branchedVersions, null, 2));\n\n const branchedVersionsToClean: Record<string, Version[]> = {};\n for (const [branch, versions] of Object.entries(branchedVersions)) {\n // Limit branches for now\n if (!data.branches.includes(branch)) {\n log.info(`ignoring unrecognized branch \"${branch}\"`);\n continue;\n }\n\n branchedVersionsToClean[branch] = this.excludeTagged(versions)\n .sort(({ date: adt }, { date: bdt }) => (adt > bdt ? -1 : 1))\n .slice(data.count);\n }\n\n log.info('found versions for unpublish:', JSON.stringify(branchedVersionsToClean, null, 2));\n const unVersions = Object.keys(branchedVersionsToClean).reduce(\n (out, br) => [...out, ...branchedVersionsToClean[br].map(({ name }) => name)],\n []\n );\n\n if (this.args.dry) {\n return;\n }\n\n for (const version of unVersions) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await npmUnpublish(data.registry, packageName, version);\n } catch {\n log.error(`error while removing ${packageName} version ${version}`);\n }\n }\n }\n\n private excludeTagged(versions: Version[]) {\n return versions.filter(({ name, tag }) => {\n if (tag) {\n log.info(`ignoring version ${name} tagged \"${tag}\"`);\n return false;\n }\n return true;\n });\n }\n\n private getCleanData(): {\n count: number;\n registry: string;\n branches: string[];\n } {\n let count = this.args.count;\n if (!count || count < 0) {\n count = 5;\n }\n\n let branches: string[];\n\n if (this.args.all === true) {\n branches = Object.keys(getBranchesConfigs());\n } else if (typeof this.args.branch === 'string') {\n branches = [this.args.branch];\n } else {\n branches = [gitGetBranch()];\n }\n\n const registry = this.args.registry ?? 'https://verdaccio.servicetitan.com';\n\n return { count, registry, branches };\n }\n\n private getBranchedVersions(packageName: string, registry: string) {\n const versions = npmGetPackageVersionsDetails(registry, packageName);\n const branchedVersions: Record<string, Version[]> = {};\n\n function addVersion(branch: string, version: Version) {\n branchedVersions[branch] ??= [];\n branchedVersions[branch].push(version);\n }\n\n for (const version of versions) {\n const { name } = version;\n if (!name.startsWith('0.0.0-')) {\n continue;\n }\n\n const buildVersion = name.replace('0.0.0-', '');\n\n // master version generated by nerdbank versioning\n if (/^(\\d+)\\.(\\d+)\\.(\\d+)$/.test(buildVersion)) {\n addVersion('master', version);\n continue;\n }\n\n // branch version generated by nerdbank versioning\n const match1 = buildVersion.match(/^(\\d+)\\.(\\d+)\\.(\\d+)-([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match1?.length) {\n addVersion(match1[4], version);\n continue;\n }\n\n // branch version generated by mfe-publisher versioning\n const match2 = buildVersion.match(/^([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match2?.length) {\n addVersion(match2[1], version);\n continue;\n }\n\n log.info(`skipping unrecognized version: ${name}`);\n }\n\n return branchedVersions;\n }\n}\n"],"names":["MFEPackageClean","execute","isWebComponent","Error","data","getCleanData","packageName","readJson","name","branchedVersions","getBranchedVersions","registry","log","info","count","JSON","stringify","branchedVersionsToClean","branch","versions","Object","entries","branches","includes","excludeTagged","sort","date","adt","bdt","slice","unVersions","keys","reduce","out","br","map","args","dry","version","npmUnpublish","error","filter","tag","all","getBranchesConfigs","gitGetBranch","npmGetPackageVersionsDetails","addVersion","push","startsWith","buildVersion","replace","test","match1","match","length","match2"],"mappings":";;;;+BAYaA;;;eAAAA;;;uBAZgE;wBACK;;;;;;;;;;;;;;;;;;;;;;;AAW3E,MAAMA;IAGT,MACMC,UAAU;QACZ,IAAI,CAACC,IAAAA,qBAAc,KAAI;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAMC,OAAO,IAAI,CAACC,YAAY;QAC9B,MAAMC,cAAcC,IAAAA,eAAQ,EAAC,gBAAgBC,IAAI;QACjD,MAAMC,mBAAmB,IAAI,CAACC,mBAAmB,CAACJ,aAAaF,KAAKO,QAAQ;QAE5EC,UAAG,CAACC,IAAI,CAAC,CAAC,mBAAmB,EAAET,KAAKU,KAAK,CAAC,EAAE,CAAC,EAAEC,KAAKC,SAAS,CAACP,kBAAkB,MAAM;QAEtF,MAAMQ,0BAAqD,CAAC;QAC5D,KAAK,MAAM,CAACC,QAAQC,SAAS,IAAIC,OAAOC,OAAO,CAACZ,kBAAmB;YAC/D,yBAAyB;YACzB,IAAI,CAACL,KAAKkB,QAAQ,CAACC,QAAQ,CAACL,SAAS;gBACjCN,UAAG,CAACC,IAAI,CAAC,CAAC,8BAA8B,EAAEK,OAAO,CAAC,CAAC;gBACnD;YACJ;YAEAD,uBAAuB,CAACC,OAAO,GAAG,IAAI,CAACM,aAAa,CAACL,UAChDM,IAAI,CAAC,CAAC,EAAEC,MAAMC,GAAG,EAAE,EAAE,EAAED,MAAME,GAAG,EAAE,GAAMD,MAAMC,MAAM,CAAC,IAAI,GACzDC,KAAK,CAACzB,KAAKU,KAAK;QACzB;QAEAF,UAAG,CAACC,IAAI,CAAC,iCAAiCE,KAAKC,SAAS,CAACC,yBAAyB,MAAM;QACxF,MAAMa,aAAaV,OAAOW,IAAI,CAACd,yBAAyBe,MAAM,CAC1D,CAACC,KAAKC,KAAO;mBAAID;mBAAQhB,uBAAuB,CAACiB,GAAG,CAACC,GAAG,CAAC,CAAC,EAAE3B,IAAI,EAAE,GAAKA;aAAM,EAC7E,EAAE;QAGN,IAAI,IAAI,CAAC4B,IAAI,CAACC,GAAG,EAAE;YACf;QACJ;QAEA,KAAK,MAAMC,WAAWR,WAAY;YAC9B,IAAI;gBACA,4CAA4C;gBAC5C,MAAMS,IAAAA,oBAAY,EAACnC,KAAKO,QAAQ,EAAEL,aAAagC;YACnD,EAAE,UAAM;gBACJ1B,UAAG,CAAC4B,KAAK,CAAC,CAAC,qBAAqB,EAAElC,YAAY,SAAS,EAAEgC,SAAS;YACtE;QACJ;IACJ;IAEQd,cAAcL,QAAmB,EAAE;QACvC,OAAOA,SAASsB,MAAM,CAAC,CAAC,EAAEjC,IAAI,EAAEkC,GAAG,EAAE;YACjC,IAAIA,KAAK;gBACL9B,UAAG,CAACC,IAAI,CAAC,CAAC,iBAAiB,EAAEL,KAAK,SAAS,EAAEkC,IAAI,CAAC,CAAC;gBACnD,OAAO;YACX;YACA,OAAO;QACX;IACJ;IAEQrC,eAIN;QACE,IAAIS,QAAQ,IAAI,CAACsB,IAAI,CAACtB,KAAK;QAC3B,IAAI,CAACA,SAASA,QAAQ,GAAG;YACrBA,QAAQ;QACZ;QAEA,IAAIQ;QAEJ,IAAI,IAAI,CAACc,IAAI,CAACO,GAAG,KAAK,MAAM;YACxBrB,WAAWF,OAAOW,IAAI,CAACa,IAAAA,yBAAkB;QAC7C,OAAO,IAAI,OAAO,IAAI,CAACR,IAAI,CAAClB,MAAM,KAAK,UAAU;YAC7CI,WAAW;gBAAC,IAAI,CAACc,IAAI,CAAClB,MAAM;aAAC;QACjC,OAAO;YACHI,WAAW;gBAACuB,IAAAA,oBAAY;aAAG;QAC/B;YAEiB;QAAjB,MAAMlC,WAAW,CAAA,sBAAA,IAAI,CAACyB,IAAI,CAACzB,QAAQ,cAAlB,iCAAA,sBAAsB;QAEvC,OAAO;YAAEG;YAAOH;YAAUW;QAAS;IACvC;IAEQZ,oBAAoBJ,WAAmB,EAAEK,QAAgB,EAAE;QAC/D,MAAMQ,WAAW2B,IAAAA,oCAA4B,EAACnC,UAAUL;QACxD,MAAMG,mBAA8C,CAAC;QAErD,SAASsC,WAAW7B,MAAc,EAAEoB,OAAgB;gBAChD7B,mBAAiBS;;YAAjBT,MAAAA,oBAAAA,iBAAgB,CAACS,UAAAA,OAAO,iCAAxBT,iBAAgB,CAACS,QAAO,GAAK,EAAE;YAC/BT,gBAAgB,CAACS,OAAO,CAAC8B,IAAI,CAACV;QAClC;QAEA,KAAK,MAAMA,WAAWnB,SAAU;YAC5B,MAAM,EAAEX,IAAI,EAAE,GAAG8B;YACjB,IAAI,CAAC9B,KAAKyC,UAAU,CAAC,WAAW;gBAC5B;YACJ;YAEA,MAAMC,eAAe1C,KAAK2C,OAAO,CAAC,UAAU;YAE5C,kDAAkD;YAClD,IAAI,wBAAwBC,IAAI,CAACF,eAAe;gBAC5CH,WAAW,UAAUT;gBACrB;YACJ;YAEA,kDAAkD;YAClD,MAAMe,SAASH,aAAaI,KAAK,CAAC;YAClC,IAAID,mBAAAA,6BAAAA,OAAQE,MAAM,EAAE;gBAChBR,WAAWM,MAAM,CAAC,EAAE,EAAEf;gBACtB;YACJ;YAEA,uDAAuD;YACvD,MAAMkB,SAASN,aAAaI,KAAK,CAAC;YAClC,IAAIE,mBAAAA,6BAAAA,OAAQD,MAAM,EAAE;gBAChBR,WAAWS,MAAM,CAAC,EAAE,EAAElB;gBACtB;YACJ;YAEA1B,UAAG,CAACC,IAAI,CAAC,CAAC,+BAA+B,EAAEL,MAAM;QACrD;QAEA,OAAOC;IACX;IA3HA,YAAY,AAAiB2B,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AA4H9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfe-package-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-publish.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mfe-package-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-publish.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,IAAI;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoBD,qBAAa,iBAAkB,YAAW,OAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGjC,OAAO;IAoBb,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,YAAY;YAoBN,qBAAqB;YA2BrB,cAAc;IAc5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;YAyBR,eAAe;IAqB7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;CAqB7B"}
|
|
@@ -11,11 +11,7 @@ Object.defineProperty(exports, "MFEPackagePublish", {
|
|
|
11
11
|
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
12
|
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
13
13
|
const _utils = require("../../utils");
|
|
14
|
-
const
|
|
15
|
-
const _cligit = require("../utils/cli-git");
|
|
16
|
-
const _clinpm = require("../utils/cli-npm");
|
|
17
|
-
const _clios = require("../utils/cli-os");
|
|
18
|
-
const _publish = require("../utils/publish");
|
|
14
|
+
const _utils1 = require("../utils");
|
|
19
15
|
function _define_property(obj, key, value) {
|
|
20
16
|
if (key in obj) {
|
|
21
17
|
Object.defineProperty(obj, key, {
|
|
@@ -78,7 +74,7 @@ class MFEPackagePublish {
|
|
|
78
74
|
return true;
|
|
79
75
|
}
|
|
80
76
|
async tryTagExistingVersion({ name }, { dry, registry, tag, version }) {
|
|
81
|
-
const versions = (0,
|
|
77
|
+
const versions = (0, _utils1.npmGetPackageVersions)(registry, name);
|
|
82
78
|
if (!versions.includes(version)) {
|
|
83
79
|
return false;
|
|
84
80
|
}
|
|
@@ -86,7 +82,7 @@ class MFEPackagePublish {
|
|
|
86
82
|
if (tag) {
|
|
87
83
|
_utils.log.info(`${this.dryRunPrefix}adding tag "${tag}" to ${name} version ${version}`);
|
|
88
84
|
if (!dry) {
|
|
89
|
-
await (0,
|
|
85
|
+
await (0, _utils1.npmTagVersion)({
|
|
90
86
|
packageName: name,
|
|
91
87
|
packageVersion: version,
|
|
92
88
|
registry,
|
|
@@ -98,10 +94,10 @@ class MFEPackagePublish {
|
|
|
98
94
|
}
|
|
99
95
|
async publishPackage(packageJson, { dry, fallbackTag, registry, tag, version }) {
|
|
100
96
|
this.validateMetadata(version);
|
|
101
|
-
await (0,
|
|
102
|
-
await (0,
|
|
97
|
+
await (0, _utils1.npmPackageSet)('version', version);
|
|
98
|
+
await (0, _utils1.npmPackageSet)('publishConfig.registry', registry);
|
|
103
99
|
await this.setPackageFiles(packageJson);
|
|
104
|
-
await (0,
|
|
100
|
+
await (0, _utils1.npmPublish)({
|
|
105
101
|
dry,
|
|
106
102
|
tag: tag || fallbackTag
|
|
107
103
|
});
|
|
@@ -114,15 +110,15 @@ class MFEPackagePublish {
|
|
|
114
110
|
],
|
|
115
111
|
`--releaseVersion=${version}`
|
|
116
112
|
].filter((option)=>!!option);
|
|
117
|
-
(0,
|
|
113
|
+
(0, _utils1.runCommand)(`npx startup upload-sourcemaps ${options.join(' ')}`);
|
|
118
114
|
}
|
|
119
115
|
getPublishData() {
|
|
120
116
|
const cli = this.args;
|
|
121
117
|
var _cli_branch;
|
|
122
|
-
const branch = (_cli_branch = cli.branch) !== null && _cli_branch !== void 0 ? _cli_branch : (0,
|
|
123
|
-
const branchConfig = (0,
|
|
118
|
+
const branch = (_cli_branch = cli.branch) !== null && _cli_branch !== void 0 ? _cli_branch : (0, _utils1.gitGetBranch)();
|
|
119
|
+
const branchConfig = (0, _utils.getBranchesConfigs)()[branch];
|
|
124
120
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
125
|
-
const buildVersion = cli.build || (0,
|
|
121
|
+
const buildVersion = cli.build || (0, _utils1.getDefaultBuildVersion)(branch, (0, _utils1.gitGetCommitHash)());
|
|
126
122
|
var _cli_registry;
|
|
127
123
|
const registry = (_cli_registry = cli.registry) !== null && _cli_registry !== void 0 ? _cli_registry : 'https://verdaccio.servicetitan.com';
|
|
128
124
|
var _cli_tag, _ref;
|
|
@@ -161,7 +157,7 @@ class MFEPackagePublish {
|
|
|
161
157
|
}
|
|
162
158
|
for(let i = 0, n = outputFiles.length; i < n; i++){
|
|
163
159
|
// eslint-disable-next-line no-await-in-loop
|
|
164
|
-
await (0,
|
|
160
|
+
await (0, _utils1.npmPackageSet)(`files[${i}]`, outputFiles[i]);
|
|
165
161
|
}
|
|
166
162
|
}
|
|
167
163
|
validateMetadata(version) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport { getFolders, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { getBranchesConfigs } from '../../utils/get-branch-configs';\nimport { EntryPoint, EntryPoints, Metadata } from '../../webpack/configs';\nimport { gitGetBranch, gitGetCommitHash } from '../utils/cli-git';\nimport { npmGetPackageVersions, npmPackageSet, npmPublish, npmTagVersion } from '../utils/cli-npm';\nimport { runCommand } from '../utils/cli-os';\nimport { getDefaultBuildVersion } from '../utils/publish';\nimport { Command } from './types';\n\nexport interface Args {\n branch?: string;\n build?: string;\n dry?: boolean;\n force?: boolean;\n registry?: string;\n tag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface PublishData {\n buildVersion: string;\n dry: boolean;\n fallbackTag: string;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish implements Command {\n constructor(private readonly args: Args) {}\n\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n const data = this.getPublishData();\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n if (!(await this.tryTagExistingVersion(packageJson, data))) {\n await this.publishPackage(packageJson, data);\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? '(dry-run) ' : '';\n }\n\n private checkPackage(packageJson: PackageJson, { force, isBranchConfigured }: PublishData) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n log.warning(\n 'branch is not configured for publishing, use --force flag to publish if needed'\n );\n return false;\n }\n\n return true;\n }\n\n private async tryTagExistingVersion(\n { name }: PackageJson,\n { dry, registry, tag, version }: PublishData\n ) {\n const versions = npmGetPackageVersions(registry, name);\n if (!versions.includes(version)) {\n return false;\n }\n\n log.warning(\n `${this.dryRunPrefix}${name} version ${version} is already published, skipping publish`\n );\n\n if (tag) {\n log.info(`${this.dryRunPrefix}adding tag \"${tag}\" to ${name} version ${version}`);\n if (!dry) {\n await npmTagVersion({\n packageName: name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n }\n return true;\n }\n\n private async publishPackage(\n packageJson: PackageJson,\n { dry, fallbackTag, registry, tag, version }: PublishData\n ) {\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n await npmPublish({ dry, tag: tag || fallbackTag });\n log.info(`${this.dryRunPrefix}published ${packageJson.name} version ${version}`);\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? 'https://verdaccio.servicetitan.com';\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n\n return {\n buildVersion,\n dry: !!cli.dry,\n fallbackTag: 'latest',\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n registry,\n tag,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n}\n"],"names":["MFEPackagePublish","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","checkPackage","tryTagExistingVersion","publishPackage","uploadSourcemaps","dryRunPrefix","force","isBranchConfigured","isWebComponent","Error","private","name","registry","tag","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageName","packageVersion","fallbackTag","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","options","filter","option","runCommand","join","cli","branch","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","publishTag","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport {\n getBranchesConfigs,\n getFolders,\n isWebComponent,\n log,\n logErrors,\n readJson,\n} from '../../utils';\nimport { EntryPoint, EntryPoints, Metadata } from '../../webpack/configs';\nimport {\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n runCommand,\n} from '../utils';\nimport { Command } from './types';\n\nexport interface Args {\n branch?: string;\n build?: string;\n dry?: boolean;\n force?: boolean;\n registry?: string;\n tag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface PublishData {\n buildVersion: string;\n dry: boolean;\n fallbackTag: string;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish implements Command {\n constructor(private readonly args: Args) {}\n\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n const data = this.getPublishData();\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n if (!(await this.tryTagExistingVersion(packageJson, data))) {\n await this.publishPackage(packageJson, data);\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? '(dry-run) ' : '';\n }\n\n private checkPackage(packageJson: PackageJson, { force, isBranchConfigured }: PublishData) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n log.warning(\n 'branch is not configured for publishing, use --force flag to publish if needed'\n );\n return false;\n }\n\n return true;\n }\n\n private async tryTagExistingVersion(\n { name }: PackageJson,\n { dry, registry, tag, version }: PublishData\n ) {\n const versions = npmGetPackageVersions(registry, name);\n if (!versions.includes(version)) {\n return false;\n }\n\n log.warning(\n `${this.dryRunPrefix}${name} version ${version} is already published, skipping publish`\n );\n\n if (tag) {\n log.info(`${this.dryRunPrefix}adding tag \"${tag}\" to ${name} version ${version}`);\n if (!dry) {\n await npmTagVersion({\n packageName: name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n }\n return true;\n }\n\n private async publishPackage(\n packageJson: PackageJson,\n { dry, fallbackTag, registry, tag, version }: PublishData\n ) {\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n await npmPublish({ dry, tag: tag || fallbackTag });\n log.info(`${this.dryRunPrefix}published ${packageJson.name} version ${version}`);\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? 'https://verdaccio.servicetitan.com';\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n\n return {\n buildVersion,\n dry: !!cli.dry,\n fallbackTag: 'latest',\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n registry,\n tag,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n}\n"],"names":["MFEPackagePublish","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","checkPackage","tryTagExistingVersion","publishPackage","uploadSourcemaps","dryRunPrefix","force","isBranchConfigured","isWebComponent","Error","private","name","registry","tag","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageName","packageVersion","fallbackTag","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","options","filter","option","runCommand","join","cli","branch","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","publishTag","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-sourcemaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload-sourcemaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,gBAAiB,YAAW,OAAO;;IAIhC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAIjC,OAAO;IAWb,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,GAAG;CAId"}
|
|
@@ -93,7 +93,7 @@ class UploadSourcemaps {
|
|
|
93
93
|
checkArgs() {
|
|
94
94
|
if (!process.env.DATADOG_API_KEY) {
|
|
95
95
|
const message = 'DATADOG_API_KEY environment variable is not set';
|
|
96
|
-
if (!
|
|
96
|
+
if (!(0, _utils1.isCI)()) {
|
|
97
97
|
throw new Error(message);
|
|
98
98
|
}
|
|
99
99
|
_utils.log.warning(`${message}; skipping sourcemaps`);
|