@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.
Files changed (64) hide show
  1. package/dist/cli/commands/init.d.ts +2 -1
  2. package/dist/cli/commands/init.d.ts.map +1 -1
  3. package/dist/cli/commands/init.js +24 -43
  4. package/dist/cli/commands/init.js.map +1 -1
  5. package/dist/cli/commands/install.d.ts +4 -0
  6. package/dist/cli/commands/install.d.ts.map +1 -1
  7. package/dist/cli/commands/install.js +91 -3
  8. package/dist/cli/commands/install.js.map +1 -1
  9. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  10. package/dist/cli/commands/mfe-package-clean.js +5 -7
  11. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  12. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  13. package/dist/cli/commands/mfe-package-publish.js +11 -15
  14. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  15. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  16. package/dist/cli/commands/upload-sourcemaps.js +1 -1
  17. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  18. package/dist/cli/index.js +1 -2
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/utils/cli-git.d.ts +11 -2
  21. package/dist/cli/utils/cli-git.d.ts.map +1 -1
  22. package/dist/cli/utils/cli-git.js +60 -4
  23. package/dist/cli/utils/cli-git.js.map +1 -1
  24. package/dist/cli/utils/index.d.ts +6 -0
  25. package/dist/cli/utils/index.d.ts.map +1 -1
  26. package/dist/cli/utils/index.js +6 -0
  27. package/dist/cli/utils/index.js.map +1 -1
  28. package/dist/cli/utils/is-ci.d.ts +2 -0
  29. package/dist/cli/utils/is-ci.d.ts.map +1 -0
  30. package/dist/cli/utils/is-ci.js +15 -0
  31. package/dist/cli/utils/is-ci.js.map +1 -0
  32. package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
  33. package/dist/cli/utils/lerna-exec.js +2 -1
  34. package/dist/cli/utils/lerna-exec.js.map +1 -1
  35. package/dist/utils/get-branch-configs.d.ts +1 -1
  36. package/dist/utils/get-branch-configs.d.ts.map +1 -1
  37. package/dist/utils/get-branch-configs.js +2 -2
  38. package/dist/utils/get-branch-configs.js.map +1 -1
  39. package/dist/utils/index.d.ts +1 -0
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist/utils/index.js +1 -0
  42. package/dist/utils/index.js.map +1 -1
  43. package/package.json +6 -6
  44. package/src/cli/commands/__tests__/init.test.ts +21 -87
  45. package/src/cli/commands/__tests__/install.test.ts +174 -12
  46. package/src/cli/commands/__tests__/mfe-package-clean.test.ts +3 -6
  47. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +6 -8
  48. package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +7 -3
  49. package/src/cli/commands/init.ts +17 -37
  50. package/src/cli/commands/install.ts +95 -6
  51. package/src/cli/commands/mfe-package-clean.ts +2 -4
  52. package/src/cli/commands/mfe-package-publish.ts +18 -6
  53. package/src/cli/commands/upload-sourcemaps.ts +2 -2
  54. package/src/cli/index.ts +1 -2
  55. package/src/cli/utils/__tests__/cli-git.test.ts +142 -6
  56. package/src/cli/utils/__tests__/eslint.test.ts +3 -2
  57. package/src/cli/utils/__tests__/is-ci.test.ts +40 -0
  58. package/src/cli/utils/__tests__/lerna-exec.test.ts +6 -3
  59. package/src/cli/utils/cli-git.ts +55 -5
  60. package/src/cli/utils/index.ts +6 -0
  61. package/src/cli/utils/is-ci.ts +3 -0
  62. package/src/cli/utils/lerna-exec.ts +2 -1
  63. package/src/utils/get-branch-configs.ts +1 -1
  64. 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,IAAI,CAAC;AAE7B,UAAU,IAAI;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,qBAAa,IAAK,YAAW,OAAO;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAEvC,WAAW;IAKL,OAAO;CA6BhB"}
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 _clios = require("../utils/cli-os");
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 webUrl = 'https://github.com/servicetitan/frontend-example.git';
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
- const gitUrls = [
61
- webUrl,
62
- sshUrl
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
- for (const url of gitUrls){
68
- // eslint-disable-next-line no-await-in-loop
69
- if (await cloneRepo(url, destination)) {
70
- _utils.log.info(`copied example project to ${destination}`);
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
- if (!gitUrls.some(isReachable)) {
75
- throw new Error('could not read servicetitan/frontend-example repository');
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 { runCommand, runCommandOutput } from '../utils/cli-os';\nimport { Command } from './';\n\ninterface Args {\n output?: string;\n}\n\nconst webUrl = 'https://github.com/servicetitan/frontend-example.git';\nconst sshUrl = 'git@github.com:servicetitan/frontend-example.git';\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 const gitUrls = [webUrl, sshUrl];\n if (!!process.env.CI && !!process.env.GITHUB_TOKEN) {\n gitUrls.unshift(\n webUrl.replace('github.com', `oauth2:${process.env.GITHUB_TOKEN}@github.com`)\n );\n }\n\n for (const url of gitUrls) {\n // eslint-disable-next-line no-await-in-loop\n if (await cloneRepo(url, destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n }\n\n if (!gitUrls.some(isReachable)) {\n throw new Error('could not read servicetitan/frontend-example repository');\n }\n }\n}\n\nasync function cloneRepo(url: string, destination: string) {\n try {\n await runCommand(`git clone -q ${url} ${destination}`, { quiet: true });\n } catch {\n return false;\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\nfunction isReachable(url: string) {\n try {\n runCommandOutput(`git ls-remote -qt ${url}`, { quiet: true });\n } catch {\n return false;\n }\n return true;\n}\n"],"names":["Init","webUrl","sshUrl","description","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","gitUrls","process","env","CI","GITHUB_TOKEN","unshift","replace","url","cloneRepo","log","info","some","isReachable","runCommand","quiet","rmSync","join","force","runCommandOutput"],"mappings":";;;;+BAcaA;;;eAAAA;;;2DAdE;6DACE;uBAEc;uBACc;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAO7C,MAAMC,SAAS;AACf,MAAMC,SAAS;AAER,MAAMF;IAGTG,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,MAAMc,UAAU;YAAClB;YAAQC;SAAO;QAChC,IAAI,CAAC,CAACkB,QAAQC,GAAG,CAACC,EAAE,IAAI,CAAC,CAACF,QAAQC,GAAG,CAACE,YAAY,EAAE;YAChDJ,QAAQK,OAAO,CACXvB,OAAOwB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAEL,QAAQC,GAAG,CAACE,YAAY,CAAC,WAAW,CAAC;QAEpF;QAEA,KAAK,MAAMG,OAAOP,QAAS;YACvB,4CAA4C;YAC5C,IAAI,MAAMQ,UAAUD,KAAKrB,cAAc;gBACnCuB,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAExB,aAAa;gBACnD;YACJ;QACJ;QAEA,IAAI,CAACc,QAAQW,IAAI,CAACC,cAAc;YAC5B,MAAM,IAAIf,MAAM;QACpB;IACJ;IAnCA,YAAY,AAAiBR,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AAoC9C;;;;;;;AAEA,eAAemB,UAAUD,GAAW,EAAErB,WAAmB;IACrD,IAAI;QACA,MAAM2B,IAAAA,iBAAU,EAAC,CAAC,aAAa,EAAEN,IAAI,CAAC,EAAErB,aAAa,EAAE;YAAE4B,OAAO;QAAK;IACzE,EAAE,UAAM;QACJ,OAAO;IACX;IACAvB,WAAE,CAACwB,MAAM,CAAC5B,aAAI,CAAC6B,IAAI,CAAC9B,aAAa,SAAS;QAAEQ,WAAW;QAAMuB,OAAO;IAAK;IACzE1B,WAAE,CAACwB,MAAM,CAAC5B,aAAI,CAAC6B,IAAI,CAAC9B,aAAa,WAAW;IAC5CK,WAAE,CAACwB,MAAM,CAAC5B,aAAI,CAAC6B,IAAI,CAAC9B,aAAa;IACjC,OAAO;AACX;AAEA,SAAS0B,YAAYL,GAAW;IAC5B,IAAI;QACAW,IAAAA,uBAAgB,EAAC,CAAC,kBAAkB,EAAEX,KAAK,EAAE;YAAEO,OAAO;QAAK;IAC/D,EAAE,UAAM;QACJ,OAAO;IACX;IACA,OAAO;AACX"}
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":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,OAAQ,YAAW,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAL,IAAI,CAAC,EAAE,IAAI,YAAA;IAExC,WAAW;IAKL,OAAO;CAsBhB"}
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
- process.env.CI ? 'ci' : 'i',
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 process.env.CI ? '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(`startup cli v${getStartupVersion()}`);\n log.info(`Running npm ${npmArguments} ...`);\n }\n\n execSync(`npm ${npmArguments}`, { stdio: 'inherit' });\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n}\n"],"names":["Install","description","execute","npmArguments","process","env","CI","args","fix","join","quiet","log","info","getStartupVersion","execSync","stdio","Promise","resolve"],"mappings":";;;;+BASaA;;;eAAAA;;;+BATY;uBACyB;;;;;;;;;;;;;;;;;;;;;;;AAQ3C,MAAMA;IAGTC,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;YAUJ,YAGH;QAZL;;;SAGC,GACD,MAAMC,eAAe;YACjBC,QAAQC,GAAG,CAACC,EAAE,GAAG,OAAO;YACxB;YACA;YACA;eACI,EAAA,aAAA,IAAI,CAACC,IAAI,cAAT,iCAAA,WAAWC,GAAG,IAAG;gBAAC;gBAAuB;aAAkB,GAAG,EAAE;SACvE,CAACC,IAAI,CAAC;QAEP,IAAI,GAAC,cAAA,IAAI,CAACF,IAAI,cAAT,kCAAA,YAAWG,KAAK,GAAE;YACnBC,UAAG,CAACC,IAAI,CAAC,CAAC,aAAa,EAAEC,IAAAA,wBAAiB,KAAI;YAC9CF,UAAG,CAACC,IAAI,CAAC,CAAC,YAAY,EAAET,aAAa,IAAI,CAAC;QAC9C;QAEAW,IAAAA,uBAAQ,EAAC,CAAC,IAAI,EAAEX,cAAc,EAAE;YAAEY,OAAO;QAAU;QAEnD,OAAOC,QAAQC,OAAO,IAAI,4DAA4D;IAC1F;IA5BA,YAAY,AAAiBV,IAAW,CAAE;;aAAbA,OAAAA;IAAc;AA6B/C"}
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":"AAIA,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"}
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 _getbranchconfigs = require("../../utils/get-branch-configs");
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, _clinpm.npmUnpublish)(data.registry, packageName, version);
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, _getbranchconfigs.getBranchesConfigs)());
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, _cligit.gitGetBranch)()
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, _clinpm.npmGetPackageVersionsDetails)(registry, packageName);
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 { getBranchesConfigs } from '../../utils/get-branch-configs';\nimport { gitGetBranch } from '../utils/cli-git';\nimport { Version, npmGetPackageVersionsDetails, npmUnpublish } from '../utils/cli-npm';\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":"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"}
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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-package-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-publish.ts"],"names":[],"mappings":"AASA,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"}
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 _getbranchconfigs = require("../../utils/get-branch-configs");
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, _clinpm.npmGetPackageVersions)(registry, name);
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, _clinpm.npmTagVersion)({
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, _clinpm.npmPackageSet)('version', version);
102
- await (0, _clinpm.npmPackageSet)('publishConfig.registry', registry);
97
+ await (0, _utils1.npmPackageSet)('version', version);
98
+ await (0, _utils1.npmPackageSet)('publishConfig.registry', registry);
103
99
  await this.setPackageFiles(packageJson);
104
- await (0, _clinpm.npmPublish)({
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, _clios.runCommand)(`npx startup upload-sourcemaps ${options.join(' ')}`);
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, _cligit.gitGetBranch)();
123
- const branchConfig = (0, _getbranchconfigs.getBranchesConfigs)()[branch];
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, _publish.getDefaultBuildVersion)(branch, (0, _cligit.gitGetCommitHash)());
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, _clinpm.npmPackageSet)(`files[${i}]`, outputFiles[i]);
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":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,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"}
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 (!process.env.CI) {
96
+ if (!(0, _utils1.isCI)()) {
97
97
  throw new Error(message);
98
98
  }
99
99
  _utils.log.warning(`${message}; skipping sourcemaps`);