@servicetitan/startup 34.3.0 → 35.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 (59) hide show
  1. package/dist/cli/commands/get-command.d.ts.map +1 -1
  2. package/dist/cli/commands/get-command.js +2 -0
  3. package/dist/cli/commands/get-command.js.map +1 -1
  4. package/dist/cli/commands/mfe-package-publish.d.ts +10 -0
  5. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  6. package/dist/cli/commands/mfe-package-publish.js +12 -0
  7. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  8. package/dist/cli/commands/mfe-package-rollback.d.ts +10 -1
  9. package/dist/cli/commands/mfe-package-rollback.d.ts.map +1 -1
  10. package/dist/cli/commands/mfe-package-rollback.js +15 -3
  11. package/dist/cli/commands/mfe-package-rollback.js.map +1 -1
  12. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  13. package/dist/cli/commands/mfe-publish.js +10 -4
  14. package/dist/cli/commands/mfe-publish.js.map +1 -1
  15. package/dist/cli/commands/mfe-purge-cache.d.ts +57 -0
  16. package/dist/cli/commands/mfe-purge-cache.d.ts.map +1 -0
  17. package/dist/cli/commands/mfe-purge-cache.js +101 -0
  18. package/dist/cli/commands/mfe-purge-cache.js.map +1 -0
  19. package/dist/cli/commands/{utils.d.ts → utils/build-rollback-tag.d.ts} +1 -2
  20. package/dist/cli/commands/utils/build-rollback-tag.d.ts.map +1 -0
  21. package/dist/cli/commands/{utils.js → utils/build-rollback-tag.js} +1 -5
  22. package/dist/cli/commands/utils/build-rollback-tag.js.map +1 -0
  23. package/dist/cli/commands/utils/constants.d.ts +2 -0
  24. package/dist/cli/commands/utils/constants.d.ts.map +1 -0
  25. package/dist/cli/commands/utils/constants.js +13 -0
  26. package/dist/cli/commands/utils/constants.js.map +1 -0
  27. package/dist/cli/commands/utils/index.d.ts +4 -0
  28. package/dist/cli/commands/utils/index.d.ts.map +1 -0
  29. package/dist/cli/commands/utils/index.js +22 -0
  30. package/dist/cli/commands/utils/index.js.map +1 -0
  31. package/dist/cli/commands/utils/purge-cache.d.ts +6 -0
  32. package/dist/cli/commands/utils/purge-cache.d.ts.map +1 -0
  33. package/dist/cli/commands/utils/purge-cache.js +21 -0
  34. package/dist/cli/commands/utils/purge-cache.js.map +1 -0
  35. package/dist/cli/utils/cli-os.js +1 -1
  36. package/dist/cli/utils/cli-os.js.map +1 -1
  37. package/dist/utils/get-configuration.d.ts +1 -0
  38. package/dist/utils/get-configuration.d.ts.map +1 -1
  39. package/dist/utils/get-configuration.js +1 -0
  40. package/dist/utils/get-configuration.js.map +1 -1
  41. package/package.json +15 -15
  42. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +27 -1
  43. package/src/cli/commands/__tests__/mfe-package-rollback.test.ts +31 -0
  44. package/src/cli/commands/__tests__/mfe-publish.test.ts +4 -2
  45. package/src/cli/commands/__tests__/mfe-purge-cache.test.ts +141 -0
  46. package/src/cli/commands/get-command.ts +2 -0
  47. package/src/cli/commands/mfe-package-publish.ts +11 -1
  48. package/src/cli/commands/mfe-package-rollback.ts +15 -5
  49. package/src/cli/commands/mfe-publish.ts +14 -3
  50. package/src/cli/commands/mfe-purge-cache.ts +75 -0
  51. package/src/cli/commands/utils/__tests__/purge-cache.test.ts +40 -0
  52. package/src/cli/commands/{utils.ts → utils/build-rollback-tag.ts} +0 -1
  53. package/src/cli/commands/utils/constants.ts +1 -0
  54. package/src/cli/commands/utils/index.ts +3 -0
  55. package/src/cli/commands/utils/purge-cache.ts +13 -0
  56. package/src/cli/utils/cli-os.ts +1 -1
  57. package/src/utils/get-configuration.ts +1 -0
  58. package/dist/cli/commands/utils.d.ts.map +0 -1
  59. package/dist/cli/commands/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/commands/utils/build-rollback-tag.ts"],"sourcesContent":["export const ROLLBACK_TAG_SUFFIX = '-rollback-1';\n\nexport function buildRollbackTag(tag: string): string {\n return `${tag}${ROLLBACK_TAG_SUFFIX}`;\n}\n"],"names":["ROLLBACK_TAG_SUFFIX","buildRollbackTag","tag"],"mappings":";;;;;;;;;;;QAAaA;eAAAA;;QAEGC;eAAAA;;;AAFT,MAAMD,sBAAsB;AAE5B,SAASC,iBAAiBC,GAAW;IACxC,OAAO,GAAGA,MAAMF,qBAAqB;AACzC"}
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_MFE_REGISTRY = "https://verdaccio.servicetitan.com";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,uCAAuC,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DEFAULT_MFE_REGISTRY", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DEFAULT_MFE_REGISTRY;
9
+ }
10
+ });
11
+ const DEFAULT_MFE_REGISTRY = 'https://verdaccio.servicetitan.com';
12
+
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/commands/utils/constants.ts"],"sourcesContent":["export const DEFAULT_MFE_REGISTRY = 'https://verdaccio.servicetitan.com';\n"],"names":["DEFAULT_MFE_REGISTRY"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,uBAAuB"}
@@ -0,0 +1,4 @@
1
+ export * from './build-rollback-tag';
2
+ export * from './constants';
3
+ export * from './purge-cache';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./build-rollback-tag"), exports);
6
+ _export_star(require("./constants"), exports);
7
+ _export_star(require("./purge-cache"), exports);
8
+ function _export_star(from, to) {
9
+ Object.keys(from).forEach(function(k) {
10
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
11
+ Object.defineProperty(to, k, {
12
+ enumerable: true,
13
+ get: function() {
14
+ return from[k];
15
+ }
16
+ });
17
+ }
18
+ });
19
+ return from;
20
+ }
21
+
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/commands/utils/index.ts"],"sourcesContent":["export * from './build-rollback-tag';\nexport * from './constants';\nexport * from './purge-cache';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA"}
@@ -0,0 +1,6 @@
1
+ export declare function purgeCache(options: {
2
+ packageName: string;
3
+ registry?: string;
4
+ tag: string;
5
+ }): void;
6
+ //# sourceMappingURL=purge-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge-cache.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/utils/purge-cache.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,QAM1F"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "purgeCache", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return purgeCache;
9
+ }
10
+ });
11
+ const _utils = require("../../utils");
12
+ const DEV_MFE_REGISTRY = 'https://verdaccio.st.dev';
13
+ const DEFAULT_UNPKG_HOST = 'https://unpkg.servicetitan.com';
14
+ const DEV_UNPKG_HOST = 'https://unpkg.st.dev';
15
+ function purgeCache(options) {
16
+ const { packageName, registry, tag } = options;
17
+ const host = registry === DEV_MFE_REGISTRY ? DEV_UNPKG_HOST : DEFAULT_UNPKG_HOST;
18
+ (0, _utils.runCommandOutput)(`npx startup mfe-purge-cache --host ${host} --package-name ${packageName} --tag ${tag}`);
19
+ }
20
+
21
+ //# sourceMappingURL=purge-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/commands/utils/purge-cache.ts"],"sourcesContent":["import { runCommandOutput } from '../../utils';\n\nconst DEV_MFE_REGISTRY = 'https://verdaccio.st.dev';\nconst DEFAULT_UNPKG_HOST = 'https://unpkg.servicetitan.com';\nconst DEV_UNPKG_HOST = 'https://unpkg.st.dev';\n\nexport function purgeCache(options: { packageName: string; registry?: string; tag: string }) {\n const { packageName, registry, tag } = options;\n const host = registry === DEV_MFE_REGISTRY ? DEV_UNPKG_HOST : DEFAULT_UNPKG_HOST;\n runCommandOutput(\n `npx startup mfe-purge-cache --host ${host} --package-name ${packageName} --tag ${tag}`\n );\n}\n"],"names":["purgeCache","DEV_MFE_REGISTRY","DEFAULT_UNPKG_HOST","DEV_UNPKG_HOST","options","packageName","registry","tag","host","runCommandOutput"],"mappings":";;;;+BAMgBA;;;eAAAA;;;uBANiB;AAEjC,MAAMC,mBAAmB;AACzB,MAAMC,qBAAqB;AAC3B,MAAMC,iBAAiB;AAEhB,SAASH,WAAWI,OAAgE;IACvF,MAAM,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,GAAG,EAAE,GAAGH;IACvC,MAAMI,OAAOF,aAAaL,mBAAmBE,iBAAiBD;IAC9DO,IAAAA,uBAAgB,EACZ,CAAC,mCAAmC,EAAED,KAAK,gBAAgB,EAAEH,YAAY,OAAO,EAAEE,KAAK;AAE/F"}
@@ -67,7 +67,7 @@ function runCommandOutput(command, { quiet, ...execSyncOptions } = {}) {
67
67
  }
68
68
  const result = (0, _child_process.execSync)(fullCommand, execSyncOptions).toString();
69
69
  if (!quiet) {
70
- _utils.log.info('command finished', result);
70
+ _utils.log.info('command finished', result.trim());
71
71
  }
72
72
  return result;
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/utils/cli-os.ts"],"sourcesContent":["import {\n execSync,\n ExecSyncOptionsWithBufferEncoding,\n spawn,\n SpawnOptionsWithoutStdio,\n} from 'child_process';\nimport { log } from '../../utils';\n\ntype RunCommandOptions = SpawnOptionsWithoutStdio & { quiet?: boolean };\n\nexport async function runCommand(\n command: string | (string | false)[],\n { quiet, ...spawnOptions }: RunCommandOptions = {}\n) {\n return new Promise<void>((resolve, reject) => {\n const commandArray: string[] = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, ...el.toString().split(' ')] : acc), [])\n : command.split(' ');\n const fullCommand = commandArray.join(' ');\n const commandName = commandArray.shift();\n\n if (!commandName) {\n reject(new Error('invalid command'));\n return;\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const proc = spawn(commandName, commandArray, {\n shell: process.platform === 'win32',\n ...spawnOptions,\n });\n\n proc.stdout.pipe(process.stdout);\n proc.stderr.pipe(process.stderr);\n\n proc.on('exit', function (code) {\n if (!quiet) {\n log.info(`command finished with code ${code}`, fullCommand);\n }\n\n if (code) {\n reject(new Error(`command exited with code: ${code}`));\n } else {\n resolve();\n }\n });\n proc.on('error', function (e) {\n reject(e);\n });\n });\n}\n\ntype RunCommandOutputOptions = ExecSyncOptionsWithBufferEncoding & { quiet?: boolean };\n\nexport function runCommandOutput(\n command: string | (string | false)[],\n { quiet, ...execSyncOptions }: RunCommandOutputOptions = {}\n) {\n const fullCommand = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, el.toString()] : acc), []).join(' ')\n : command;\n\n if (!fullCommand) {\n throw new Error();\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const result = execSync(fullCommand, execSyncOptions).toString();\n\n if (!quiet) {\n log.info('command finished', result);\n }\n\n return result;\n}\n"],"names":["runCommand","runCommandOutput","command","quiet","spawnOptions","Promise","resolve","reject","commandArray","Array","isArray","reduce","acc","el","toString","split","fullCommand","join","commandName","shift","Error","log","info","proc","spawn","shell","process","platform","stdout","pipe","stderr","on","code","e","execSyncOptions","result","execSync"],"mappings":";;;;;;;;;;;QAUsBA;eAAAA;;QA+CNC;eAAAA;;;+BApDT;uBACa;AAIb,eAAeD,WAClBE,OAAoC,EACpC,EAAEC,KAAK,EAAE,GAAGC,cAAiC,GAAG,CAAC,CAAC;IAElD,OAAO,IAAIC,QAAc,CAACC,SAASC;QAC/B,MAAMC,eAAyBC,MAAMC,OAAO,CAACR,WACvCA,QAAQS,MAAM,CAAC,CAACC,KAAKC,KAAQA,KAAK;mBAAID;mBAAQC,GAAGC,QAAQ,GAAGC,KAAK,CAAC;aAAK,GAAGH,KAAM,EAAE,IAClFV,QAAQa,KAAK,CAAC;QACpB,MAAMC,cAAcR,aAAaS,IAAI,CAAC;QACtC,MAAMC,cAAcV,aAAaW,KAAK;QAEtC,IAAI,CAACD,aAAa;YACdX,OAAO,IAAIa,MAAM;YACjB;QACJ;QAEA,IAAI,CAACjB,OAAO;YACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEN,aAAa;QACtC;QAEA,MAAMO,OAAOC,IAAAA,oBAAK,EAACN,aAAaV,cAAc;YAC1CiB,OAAOC,QAAQC,QAAQ,KAAK;YAC5B,GAAGvB,YAAY;QACnB;QAEAmB,KAAKK,MAAM,CAACC,IAAI,CAACH,QAAQE,MAAM;QAC/BL,KAAKO,MAAM,CAACD,IAAI,CAACH,QAAQI,MAAM;QAE/BP,KAAKQ,EAAE,CAAC,QAAQ,SAAUC,IAAI;YAC1B,IAAI,CAAC7B,OAAO;gBACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,2BAA2B,EAAEU,MAAM,EAAEhB;YACnD;YAEA,IAAIgB,MAAM;gBACNzB,OAAO,IAAIa,MAAM,CAAC,0BAA0B,EAAEY,MAAM;YACxD,OAAO;gBACH1B;YACJ;QACJ;QACAiB,KAAKQ,EAAE,CAAC,SAAS,SAAUE,CAAC;YACxB1B,OAAO0B;QACX;IACJ;AACJ;AAIO,SAAShC,iBACZC,OAAoC,EACpC,EAAEC,KAAK,EAAE,GAAG+B,iBAA0C,GAAG,CAAC,CAAC;IAE3D,MAAMlB,cAAcP,MAAMC,OAAO,CAACR,WAC5BA,QAAQS,MAAM,CAAC,CAACC,KAAKC,KAAQA,KAAK;eAAID;YAAKC,GAAGC,QAAQ;SAAG,GAAGF,KAAM,EAAE,EAAEK,IAAI,CAAC,OAC3Ef;IAEN,IAAI,CAACc,aAAa;QACd,MAAM,IAAII;IACd;IAEA,IAAI,CAACjB,OAAO;QACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEN,aAAa;IACtC;IAEA,MAAMmB,SAASC,IAAAA,uBAAQ,EAACpB,aAAakB,iBAAiBpB,QAAQ;IAE9D,IAAI,CAACX,OAAO;QACRkB,UAAG,CAACC,IAAI,CAAC,oBAAoBa;IACjC;IAEA,OAAOA;AACX"}
1
+ {"version":3,"sources":["../../../src/cli/utils/cli-os.ts"],"sourcesContent":["import {\n execSync,\n ExecSyncOptionsWithBufferEncoding,\n spawn,\n SpawnOptionsWithoutStdio,\n} from 'child_process';\nimport { log } from '../../utils';\n\ntype RunCommandOptions = SpawnOptionsWithoutStdio & { quiet?: boolean };\n\nexport async function runCommand(\n command: string | (string | false)[],\n { quiet, ...spawnOptions }: RunCommandOptions = {}\n) {\n return new Promise<void>((resolve, reject) => {\n const commandArray: string[] = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, ...el.toString().split(' ')] : acc), [])\n : command.split(' ');\n const fullCommand = commandArray.join(' ');\n const commandName = commandArray.shift();\n\n if (!commandName) {\n reject(new Error('invalid command'));\n return;\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const proc = spawn(commandName, commandArray, {\n shell: process.platform === 'win32',\n ...spawnOptions,\n });\n\n proc.stdout.pipe(process.stdout);\n proc.stderr.pipe(process.stderr);\n\n proc.on('exit', function (code) {\n if (!quiet) {\n log.info(`command finished with code ${code}`, fullCommand);\n }\n\n if (code) {\n reject(new Error(`command exited with code: ${code}`));\n } else {\n resolve();\n }\n });\n proc.on('error', function (e) {\n reject(e);\n });\n });\n}\n\ntype RunCommandOutputOptions = ExecSyncOptionsWithBufferEncoding & { quiet?: boolean };\n\nexport function runCommandOutput(\n command: string | (string | false)[],\n { quiet, ...execSyncOptions }: RunCommandOutputOptions = {}\n) {\n const fullCommand = Array.isArray(command)\n ? command.reduce((acc, el) => (el ? [...acc, el.toString()] : acc), []).join(' ')\n : command;\n\n if (!fullCommand) {\n throw new Error();\n }\n\n if (!quiet) {\n log.info(`Running: ${fullCommand}`);\n }\n\n const result = execSync(fullCommand, execSyncOptions).toString();\n\n if (!quiet) {\n log.info('command finished', result.trim());\n }\n\n return result;\n}\n"],"names":["runCommand","runCommandOutput","command","quiet","spawnOptions","Promise","resolve","reject","commandArray","Array","isArray","reduce","acc","el","toString","split","fullCommand","join","commandName","shift","Error","log","info","proc","spawn","shell","process","platform","stdout","pipe","stderr","on","code","e","execSyncOptions","result","execSync","trim"],"mappings":";;;;;;;;;;;QAUsBA;eAAAA;;QA+CNC;eAAAA;;;+BApDT;uBACa;AAIb,eAAeD,WAClBE,OAAoC,EACpC,EAAEC,KAAK,EAAE,GAAGC,cAAiC,GAAG,CAAC,CAAC;IAElD,OAAO,IAAIC,QAAc,CAACC,SAASC;QAC/B,MAAMC,eAAyBC,MAAMC,OAAO,CAACR,WACvCA,QAAQS,MAAM,CAAC,CAACC,KAAKC,KAAQA,KAAK;mBAAID;mBAAQC,GAAGC,QAAQ,GAAGC,KAAK,CAAC;aAAK,GAAGH,KAAM,EAAE,IAClFV,QAAQa,KAAK,CAAC;QACpB,MAAMC,cAAcR,aAAaS,IAAI,CAAC;QACtC,MAAMC,cAAcV,aAAaW,KAAK;QAEtC,IAAI,CAACD,aAAa;YACdX,OAAO,IAAIa,MAAM;YACjB;QACJ;QAEA,IAAI,CAACjB,OAAO;YACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEN,aAAa;QACtC;QAEA,MAAMO,OAAOC,IAAAA,oBAAK,EAACN,aAAaV,cAAc;YAC1CiB,OAAOC,QAAQC,QAAQ,KAAK;YAC5B,GAAGvB,YAAY;QACnB;QAEAmB,KAAKK,MAAM,CAACC,IAAI,CAACH,QAAQE,MAAM;QAC/BL,KAAKO,MAAM,CAACD,IAAI,CAACH,QAAQI,MAAM;QAE/BP,KAAKQ,EAAE,CAAC,QAAQ,SAAUC,IAAI;YAC1B,IAAI,CAAC7B,OAAO;gBACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,2BAA2B,EAAEU,MAAM,EAAEhB;YACnD;YAEA,IAAIgB,MAAM;gBACNzB,OAAO,IAAIa,MAAM,CAAC,0BAA0B,EAAEY,MAAM;YACxD,OAAO;gBACH1B;YACJ;QACJ;QACAiB,KAAKQ,EAAE,CAAC,SAAS,SAAUE,CAAC;YACxB1B,OAAO0B;QACX;IACJ;AACJ;AAIO,SAAShC,iBACZC,OAAoC,EACpC,EAAEC,KAAK,EAAE,GAAG+B,iBAA0C,GAAG,CAAC,CAAC;IAE3D,MAAMlB,cAAcP,MAAMC,OAAO,CAACR,WAC5BA,QAAQS,MAAM,CAAC,CAACC,KAAKC,KAAQA,KAAK;eAAID;YAAKC,GAAGC,QAAQ;SAAG,GAAGF,KAAM,EAAE,EAAEK,IAAI,CAAC,OAC3Ef;IAEN,IAAI,CAACc,aAAa;QACd,MAAM,IAAII;IACd;IAEA,IAAI,CAACjB,OAAO;QACRkB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEN,aAAa;IACtC;IAEA,MAAMmB,SAASC,IAAAA,uBAAQ,EAACpB,aAAakB,iBAAiBpB,QAAQ;IAE9D,IAAI,CAACX,OAAO;QACRkB,UAAG,CAACC,IAAI,CAAC,oBAAoBa,OAAOE,IAAI;IAC5C;IAEA,OAAOF;AACX"}
@@ -56,6 +56,7 @@ export declare enum CommandName {
56
56
  'mfe-package-publish' = "mfe-package-publish",
57
57
  'mfe-package-rollback' = "mfe-package-rollback",
58
58
  'mfe-publish' = "mfe-publish",
59
+ 'mfe-purge-cache' = "mfe-purge-cache",
59
60
  'prepare-package' = "prepare-package",
60
61
  'review' = "review",
61
62
  'start' = "start",
@@ -1 +1 @@
1
- {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,7 @@ var CommandName = /*#__PURE__*/ function(CommandName) {
109
109
  CommandName["mfe-package-publish"] = "mfe-package-publish";
110
110
  CommandName["mfe-package-rollback"] = "mfe-package-rollback";
111
111
  CommandName["mfe-publish"] = "mfe-publish";
112
+ CommandName["mfe-purge-cache"] = "mfe-purge-cache";
112
113
  CommandName["prepare-package"] = "prepare-package";
113
114
  CommandName["review"] = "review";
114
115
  CommandName["start"] = "start";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/get-configuration.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { swcDir } from '@swc/cli';\nimport { ESLint } from 'eslint';\nimport fs from 'fs';\nimport path from 'path';\nimport { LinterOptions } from 'stylelint';\nimport { ViteUserConfig } from 'vitest/config';\nimport { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server';\nimport { ReviewConfiguration } from '../cli/commands/review';\nimport { getFolders } from './get-folders';\nimport { log } from './log';\nimport { readJson, readJsonSafe } from './read-json';\n\nexport const allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'static'] as const;\n\ntype ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;\n\nexport interface MinifyJSOptions {\n compress?: boolean;\n mangle?: boolean;\n}\n\nexport interface MinifyCssOptions {}\n\nexport interface MinifyOptions {\n css?: boolean | MinifyCssOptions;\n js?: boolean | MinifyJSOptions;\n}\n\nexport interface WebpackConfiguration extends Omit<\n Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>,\n 'proxy'\n> {\n 'contentBase'?: boolean | string | string[] | number; // deprecated 2024-07\n 'custom-style-rules'?: boolean;\n 'expose-shared-dependencies'?: boolean;\n 'devServer'?: false | WebpackDevServerConfiguration;\n 'disable-style-check'?: boolean;\n 'minify'?: MinifyOptions;\n 'proxy'?: WebpackDevServerConfiguration['proxy'] | string;\n}\n\nexport interface ESLintConfiguration extends ESLint.Options {\n disabled?: boolean;\n}\n\nexport interface StylelintConfiguration extends Partial<LinterOptions> {\n ignorePattern?: string[];\n disabled?: boolean;\n}\n\nexport interface JestConfiguration extends Omit<Config.Argv, '_' | '$0'> {\n omitDefault?: string[];\n}\n\nexport interface NodeConfiguration {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n NODE_OPTIONS?: string[];\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum CommandName {\n 'build' = 'build',\n 'bundle-package' = 'bundle-package',\n 'clean' = 'clean',\n 'convert-eslint-config' = 'convert-eslint-config',\n 'eslint' = 'eslint',\n 'init' = 'init',\n 'install' = 'install',\n 'kendo-ui-license' = 'kendo-ui-license',\n 'lint' = 'lint',\n 'mfe-check' = 'mfe-check',\n 'mfe-generate-metadata' = 'mfe-generate-metadata',\n 'mfe-list' = 'mfe-list',\n 'mfe-package-clean' = 'mfe-package-clean',\n 'mfe-package-publish' = 'mfe-package-publish',\n 'mfe-package-rollback' = 'mfe-package-rollback',\n 'mfe-publish' = 'mfe-publish',\n 'prepare-package' = 'prepare-package',\n 'review' = 'review',\n 'start' = 'start',\n 'stylelint' = 'stylelint',\n 'styles-check' = 'styles-check',\n 'test' = 'test',\n 'task' = 'task',\n 'upload-sourcemaps' = 'upload-sourcemaps',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type VitestConfiguration = ViteUserConfig['test'] & {\n omitDefault?: string[];\n};\n\nexport interface WebComponentBranchConfigs {\n publishTag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface WebComponentOptions {\n legacyRoot?: boolean;\n /**\n * mapping of git branches to configs.\n * Used to separate configs (ex publish tag) depending on current branch\n */\n branches?: Record<string, WebComponentBranchConfigs>;\n}\n\ntype Configuration = {\n 'jest'?: JestConfiguration;\n 'legacy'?: boolean;\n 'lint'?: { eslint: ESLintConfiguration; stylelint: StylelintConfiguration };\n 'review'?: ReviewConfiguration;\n 'swc-compile-package'?: Parameters<typeof swcDir>[0];\n 'test'?: JestConfiguration; // for backward-compatibility\n 'testRunner'?: string;\n 'vitest'?: VitestConfiguration;\n 'web-component'?: boolean | string | WebComponentOptions;\n 'webpack'?: false | WebpackConfiguration;\n} & {\n [key in CommandName]?: NodeConfiguration;\n} & NodeConfiguration;\n\ntype LocationOrJson = string | Record<string, any>;\n\nexport function getConfiguration(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJson(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getConfigurationSafe(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJsonSafe(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getESLintConfiguration() {\n return getConfiguration().lint?.eslint ?? {};\n}\n\nexport function getJestConfiguration() {\n const configuration = getConfiguration();\n return configuration.jest ?? configuration.test ?? {};\n}\n\nexport function getReviewConfiguration() {\n return getConfiguration().review ?? {};\n}\n\nexport function getStylelintConfiguration() {\n return getConfiguration().lint?.stylelint ?? {};\n}\n\nexport function getVitestConfiguration() {\n return getConfiguration().vitest ?? {};\n}\n\nexport function getWebpackConfiguration(locationOrJson?: LocationOrJson) {\n const { webpack } = getConfiguration(locationOrJson);\n return typeof webpack === 'object' ? webpack : {};\n}\n\nexport function getWebComponentConfiguration(\n locationOrJson: LocationOrJson = './'\n): WebComponentOptions | undefined {\n const config = getConfigurationSafe(locationOrJson)['web-component'];\n\n if (config === true) {\n return {};\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n if (typeof config === 'string') {\n const configPath = path.resolve(\n typeof locationOrJson === 'string' ? path.join(locationOrJson, config) : config\n );\n if (fs.existsSync(configPath)) {\n return require(path.resolve(configPath));\n }\n log.warning(`could not find web-component configuration: \"${config}\"`);\n\n return undefined;\n }\n}\n\nexport function getWebComponentBranchConfigs(locationOrJson: LocationOrJson = './') {\n const config = getWebComponentConfiguration(locationOrJson);\n\n return config?.branches;\n}\n\nexport function hasHeadlessBundle() {\n let source: string;\n try {\n source = getFolders().source;\n } catch {\n return false;\n }\n const headlessPath = path.join(source, 'headless.ts');\n return fs.existsSync(headlessPath);\n}\n\nexport function getSwcCompilePackageConfiguration() {\n return getConfiguration()['swc-compile-package'] ?? {};\n}\n\nexport function isBundle(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).webpack !== false;\n}\n\nexport function isCustomStyleRules() {\n return getWebpackConfiguration()['custom-style-rules'] === true;\n}\n\nexport function isDevServerDisabled() {\n const webpackConfiguration = getWebpackConfiguration();\n return webpackConfiguration.devServer === false;\n}\n\nexport function isExposeSharedDependencies() {\n return getWebpackConfiguration()['expose-shared-dependencies'] === true;\n}\n\nexport function isLegacy(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).legacy === true;\n}\n\nexport function isLegacyRoot() {\n return getWebComponentConfiguration()?.legacyRoot === true;\n}\n\nexport function isStyleCheckDisabled() {\n return getWebpackConfiguration()['disable-style-check'] === true;\n}\n\nexport function isWebComponent(locationOrJson: LocationOrJson = './') {\n return !!getWebComponentConfiguration(locationOrJson);\n}\n"],"names":["CommandName","allowedWebpackDevServerOptions","getConfiguration","getConfigurationSafe","getESLintConfiguration","getJestConfiguration","getReviewConfiguration","getStylelintConfiguration","getSwcCompilePackageConfiguration","getVitestConfiguration","getWebComponentBranchConfigs","getWebComponentConfiguration","getWebpackConfiguration","hasHeadlessBundle","isBundle","isCustomStyleRules","isDevServerDisabled","isExposeSharedDependencies","isLegacy","isLegacyRoot","isStyleCheckDisabled","isWebComponent","locationOrJson","json","readJson","path","join","cli","readJsonSafe","lint","eslint","configuration","jest","test","review","stylelint","vitest","webpack","config","configPath","resolve","fs","existsSync","require","log","warning","undefined","branches","source","getFolders","headlessPath","webpackConfiguration","devServer","legacy","legacyRoot"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/get-configuration.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { swcDir } from '@swc/cli';\nimport { ESLint } from 'eslint';\nimport fs from 'fs';\nimport path from 'path';\nimport { LinterOptions } from 'stylelint';\nimport { ViteUserConfig } from 'vitest/config';\nimport { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server';\nimport { ReviewConfiguration } from '../cli/commands/review';\nimport { getFolders } from './get-folders';\nimport { log } from './log';\nimport { readJson, readJsonSafe } from './read-json';\n\nexport const allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'static'] as const;\n\ntype ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;\n\nexport interface MinifyJSOptions {\n compress?: boolean;\n mangle?: boolean;\n}\n\nexport interface MinifyCssOptions {}\n\nexport interface MinifyOptions {\n css?: boolean | MinifyCssOptions;\n js?: boolean | MinifyJSOptions;\n}\n\nexport interface WebpackConfiguration extends Omit<\n Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>,\n 'proxy'\n> {\n 'contentBase'?: boolean | string | string[] | number; // deprecated 2024-07\n 'custom-style-rules'?: boolean;\n 'expose-shared-dependencies'?: boolean;\n 'devServer'?: false | WebpackDevServerConfiguration;\n 'disable-style-check'?: boolean;\n 'minify'?: MinifyOptions;\n 'proxy'?: WebpackDevServerConfiguration['proxy'] | string;\n}\n\nexport interface ESLintConfiguration extends ESLint.Options {\n disabled?: boolean;\n}\n\nexport interface StylelintConfiguration extends Partial<LinterOptions> {\n ignorePattern?: string[];\n disabled?: boolean;\n}\n\nexport interface JestConfiguration extends Omit<Config.Argv, '_' | '$0'> {\n omitDefault?: string[];\n}\n\nexport interface NodeConfiguration {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n NODE_OPTIONS?: string[];\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum CommandName {\n 'build' = 'build',\n 'bundle-package' = 'bundle-package',\n 'clean' = 'clean',\n 'convert-eslint-config' = 'convert-eslint-config',\n 'eslint' = 'eslint',\n 'init' = 'init',\n 'install' = 'install',\n 'kendo-ui-license' = 'kendo-ui-license',\n 'lint' = 'lint',\n 'mfe-check' = 'mfe-check',\n 'mfe-generate-metadata' = 'mfe-generate-metadata',\n 'mfe-list' = 'mfe-list',\n 'mfe-package-clean' = 'mfe-package-clean',\n 'mfe-package-publish' = 'mfe-package-publish',\n 'mfe-package-rollback' = 'mfe-package-rollback',\n 'mfe-publish' = 'mfe-publish',\n 'mfe-purge-cache' = 'mfe-purge-cache',\n 'prepare-package' = 'prepare-package',\n 'review' = 'review',\n 'start' = 'start',\n 'stylelint' = 'stylelint',\n 'styles-check' = 'styles-check',\n 'test' = 'test',\n 'task' = 'task',\n 'upload-sourcemaps' = 'upload-sourcemaps',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type VitestConfiguration = ViteUserConfig['test'] & {\n omitDefault?: string[];\n};\n\nexport interface WebComponentBranchConfigs {\n publishTag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface WebComponentOptions {\n legacyRoot?: boolean;\n /**\n * mapping of git branches to configs.\n * Used to separate configs (ex publish tag) depending on current branch\n */\n branches?: Record<string, WebComponentBranchConfigs>;\n}\n\ntype Configuration = {\n 'jest'?: JestConfiguration;\n 'legacy'?: boolean;\n 'lint'?: { eslint: ESLintConfiguration; stylelint: StylelintConfiguration };\n 'review'?: ReviewConfiguration;\n 'swc-compile-package'?: Parameters<typeof swcDir>[0];\n 'test'?: JestConfiguration; // for backward-compatibility\n 'testRunner'?: string;\n 'vitest'?: VitestConfiguration;\n 'web-component'?: boolean | string | WebComponentOptions;\n 'webpack'?: false | WebpackConfiguration;\n} & {\n [key in CommandName]?: NodeConfiguration;\n} & NodeConfiguration;\n\ntype LocationOrJson = string | Record<string, any>;\n\nexport function getConfiguration(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJson(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getConfigurationSafe(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJsonSafe(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getESLintConfiguration() {\n return getConfiguration().lint?.eslint ?? {};\n}\n\nexport function getJestConfiguration() {\n const configuration = getConfiguration();\n return configuration.jest ?? configuration.test ?? {};\n}\n\nexport function getReviewConfiguration() {\n return getConfiguration().review ?? {};\n}\n\nexport function getStylelintConfiguration() {\n return getConfiguration().lint?.stylelint ?? {};\n}\n\nexport function getVitestConfiguration() {\n return getConfiguration().vitest ?? {};\n}\n\nexport function getWebpackConfiguration(locationOrJson?: LocationOrJson) {\n const { webpack } = getConfiguration(locationOrJson);\n return typeof webpack === 'object' ? webpack : {};\n}\n\nexport function getWebComponentConfiguration(\n locationOrJson: LocationOrJson = './'\n): WebComponentOptions | undefined {\n const config = getConfigurationSafe(locationOrJson)['web-component'];\n\n if (config === true) {\n return {};\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n if (typeof config === 'string') {\n const configPath = path.resolve(\n typeof locationOrJson === 'string' ? path.join(locationOrJson, config) : config\n );\n if (fs.existsSync(configPath)) {\n return require(path.resolve(configPath));\n }\n log.warning(`could not find web-component configuration: \"${config}\"`);\n\n return undefined;\n }\n}\n\nexport function getWebComponentBranchConfigs(locationOrJson: LocationOrJson = './') {\n const config = getWebComponentConfiguration(locationOrJson);\n\n return config?.branches;\n}\n\nexport function hasHeadlessBundle() {\n let source: string;\n try {\n source = getFolders().source;\n } catch {\n return false;\n }\n const headlessPath = path.join(source, 'headless.ts');\n return fs.existsSync(headlessPath);\n}\n\nexport function getSwcCompilePackageConfiguration() {\n return getConfiguration()['swc-compile-package'] ?? {};\n}\n\nexport function isBundle(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).webpack !== false;\n}\n\nexport function isCustomStyleRules() {\n return getWebpackConfiguration()['custom-style-rules'] === true;\n}\n\nexport function isDevServerDisabled() {\n const webpackConfiguration = getWebpackConfiguration();\n return webpackConfiguration.devServer === false;\n}\n\nexport function isExposeSharedDependencies() {\n return getWebpackConfiguration()['expose-shared-dependencies'] === true;\n}\n\nexport function isLegacy(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).legacy === true;\n}\n\nexport function isLegacyRoot() {\n return getWebComponentConfiguration()?.legacyRoot === true;\n}\n\nexport function isStyleCheckDisabled() {\n return getWebpackConfiguration()['disable-style-check'] === true;\n}\n\nexport function isWebComponent(locationOrJson: LocationOrJson = './') {\n return !!getWebComponentConfiguration(locationOrJson);\n}\n"],"names":["CommandName","allowedWebpackDevServerOptions","getConfiguration","getConfigurationSafe","getESLintConfiguration","getJestConfiguration","getReviewConfiguration","getStylelintConfiguration","getSwcCompilePackageConfiguration","getVitestConfiguration","getWebComponentBranchConfigs","getWebComponentConfiguration","getWebpackConfiguration","hasHeadlessBundle","isBundle","isCustomStyleRules","isDevServerDisabled","isExposeSharedDependencies","isLegacy","isLegacyRoot","isStyleCheckDisabled","isWebComponent","locationOrJson","json","readJson","path","join","cli","readJsonSafe","lint","eslint","configuration","jest","test","review","stylelint","vitest","webpack","config","configPath","resolve","fs","existsSync","require","log","warning","undefined","branches","source","getFolders","headlessPath","webpackConfiguration","devServer","legacy","legacyRoot"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "34.3.0",
3
+ "version": "35.0.0",
4
4
  "description": "CLI to create multi-package Lerna projects with TypeScript and React",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/uikit/startup",
6
6
  "repository": {
@@ -9,8 +9,8 @@
9
9
  "directory": "packages/startup"
10
10
  },
11
11
  "engines": {
12
- "node": ">=20.19 <21 || >=22.17",
13
- "npm": ">=9"
12
+ "node": ">=22.17",
13
+ "npm": ">=10"
14
14
  },
15
15
  "sideEffects": false,
16
16
  "main": "./dist/index.js",
@@ -53,13 +53,13 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@babel/preset-env": "~7.29.0",
56
- "@jest/core": "~30.2.0",
57
- "@jest/types": "~30.2.0",
56
+ "@jest/core": "~30.3.0",
57
+ "@jest/types": "~30.3.0",
58
58
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
59
- "@servicetitan/eslint-config": "34.3.0",
60
- "@servicetitan/install": "34.3.0",
61
- "@servicetitan/startup-utils": "34.3.0",
62
- "@servicetitan/stylelint-config": "34.3.0",
59
+ "@servicetitan/eslint-config": "35.0.0",
60
+ "@servicetitan/install": "35.0.0",
61
+ "@servicetitan/startup-utils": "35.0.0",
62
+ "@servicetitan/stylelint-config": "35.0.0",
63
63
  "@svgr/webpack": "^8.1.0",
64
64
  "@swc/cli": "^0.5.0",
65
65
  "@swc/core": "1.15.18",
@@ -80,9 +80,9 @@
80
80
  "html-webpack-plugin": "~5.6.6",
81
81
  "html-webpack-tags-plugin": "^3.0.2",
82
82
  "identity-obj-proxy": "~3.0.0",
83
- "jest": "~30.2.0",
84
- "jest-circus": "~30.2.0",
85
- "jest-environment-jsdom": "^30.2.0",
83
+ "jest": "~30.3.0",
84
+ "jest-circus": "~30.3.0",
85
+ "jest-environment-jsdom": "^30.3.0",
86
86
  "jest-fetch-mock": "~3.0.3",
87
87
  "json5": "^2.2.3",
88
88
  "lerna": "~9.0.5",
@@ -91,7 +91,7 @@
91
91
  "less-plugin-npm-import": "~2.1.0",
92
92
  "lodash.kebabcase": "^4.1.1",
93
93
  "lodash.memoize": "^4.1.2",
94
- "memfs": "~4.56.10",
94
+ "memfs": "~4.56.11",
95
95
  "mini-css-extract-plugin": "~2.10.0",
96
96
  "moment-locales-webpack-plugin": "~1.2.0",
97
97
  "multimatch": "~8.0.0",
@@ -113,7 +113,7 @@
113
113
  "typescript": "5.9.3",
114
114
  "vitest": "^4.0.18",
115
115
  "webpack": "~5.105.4",
116
- "webpack-assets-manifest": "~6.5.0",
116
+ "webpack-assets-manifest": "~6.5.1",
117
117
  "webpack-bundle-analyzer": "^5.2.0",
118
118
  "webpack-dev-server": "~5.2.3",
119
119
  "webpack-filter-warnings-plugin": "~1.2.1",
@@ -144,5 +144,5 @@
144
144
  "cli": {
145
145
  "webpack": false
146
146
  },
147
- "gitHead": "0ca13bccd0abdbcbda28f08829ef38bde4caa927"
147
+ "gitHead": "3a5f2e6cad93c4e898091fb3d51310ccb26a91ee"
148
148
  }
@@ -12,7 +12,7 @@ import {
12
12
  runCommand,
13
13
  } from '../../utils';
14
14
  import { MFEPackagePublish } from '../mfe-package-publish';
15
- import { ROLLBACK_TAG_SUFFIX } from '../utils';
15
+ import { purgeCache, ROLLBACK_TAG_SUFFIX } from '../utils';
16
16
 
17
17
  jest.mock('fs', () => fs);
18
18
 
@@ -32,6 +32,10 @@ jest.mock('../../utils', () => ({
32
32
  npmView: jest.fn(),
33
33
  runCommand: jest.fn(),
34
34
  }));
35
+ jest.mock('../utils', () => ({
36
+ ...jest.requireActual('../utils'),
37
+ purgeCache: jest.fn(),
38
+ }));
35
39
 
36
40
  describe(`[startup] ${MFEPackagePublish.name}`, () => {
37
41
  const defaultRegistry = 'https://verdaccio.servicetitan.com';
@@ -127,6 +131,12 @@ describe(`[startup] ${MFEPackagePublish.name}`, () => {
127
131
  );
128
132
  });
129
133
 
134
+ test('purges cache after publishing', async () => {
135
+ await subject();
136
+
137
+ expect(purgeCache).toHaveBeenCalledWith({ packageName, tag });
138
+ });
139
+
130
140
  test('gets current tagged versions before publishing', async () => {
131
141
  await subject();
132
142
 
@@ -196,6 +206,14 @@ describe(`[startup] ${MFEPackagePublish.name}`, () => {
196
206
  });
197
207
  });
198
208
 
209
+ function itDoesNotPurgeCache() {
210
+ test('does not purge cache', async () => {
211
+ await subject();
212
+
213
+ expect(purgeCache).not.toHaveBeenCalled();
214
+ });
215
+ }
216
+
199
217
  describe('with "dry" argument', () => {
200
218
  beforeEach(() => (args.dry = true));
201
219
 
@@ -239,6 +257,8 @@ describe(`[startup] ${MFEPackagePublish.name}`, () => {
239
257
  `npx startup upload-sourcemaps --dry --releaseVersion=${buildPackageVersion()}`
240
258
  );
241
259
  });
260
+
261
+ itDoesNotPurgeCache();
242
262
  });
243
263
 
244
264
  function itDoesNotUploadSourcemaps() {
@@ -257,6 +277,12 @@ describe(`[startup] ${MFEPackagePublish.name}`, () => {
257
277
  itDoesNotUploadSourcemaps();
258
278
  });
259
279
 
280
+ describe('with "purgeCache: false"', () => {
281
+ beforeEach(() => (args.purgeCache = false));
282
+
283
+ itDoesNotPurgeCache();
284
+ });
285
+
260
286
  describe('when branch configuration includes "uploadSourcemaps: false"', () => {
261
287
  beforeEach(() =>
262
288
  vol.fromJSON({
@@ -1,6 +1,7 @@
1
1
  import { log, readJson } from '../../../utils';
2
2
  import { npmTagVersion, npmView } from '../../utils';
3
3
  import { MFEPackageRollback } from '../mfe-package-rollback';
4
+ import { purgeCache } from '../utils';
4
5
 
5
6
  jest.mock('../../../utils', () => ({
6
7
  ...jest.requireActual('../../../utils'),
@@ -16,6 +17,10 @@ jest.mock('../../utils', () => ({
16
17
  npmTagVersion: jest.fn(),
17
18
  npmView: jest.fn(),
18
19
  }));
20
+ jest.mock('../utils', () => ({
21
+ ...jest.requireActual('../utils'),
22
+ purgeCache: jest.fn(),
23
+ }));
19
24
 
20
25
  describe(`[startup] ${MFEPackageRollback.name}`, () => {
21
26
  const registry = 'https://verdaccio.servicetitan.com';
@@ -98,6 +103,12 @@ describe(`[startup] ${MFEPackageRollback.name}`, () => {
98
103
  });
99
104
  });
100
105
 
106
+ test('purges cache after rollback', async () => {
107
+ await subject();
108
+
109
+ expect(purgeCache).toHaveBeenCalledWith({ packageName, tag });
110
+ });
111
+
101
112
  describe('when package is not found in registry', () => {
102
113
  beforeEach(() => {
103
114
  jest.mocked(npmView).mockReturnValue(undefined);
@@ -114,6 +125,14 @@ describe(`[startup] ${MFEPackageRollback.name}`, () => {
114
125
  itReportsError(`No rollback version found for tag "${tag}" (looking for "${rollbackTag}")`);
115
126
  });
116
127
 
128
+ function itDoesNotPurgeCache() {
129
+ test('does not purge cache', async () => {
130
+ await subject();
131
+
132
+ expect(purgeCache).not.toHaveBeenCalled();
133
+ });
134
+ }
135
+
117
136
  describe('when tag and rollback tag both point to the same version', () => {
118
137
  beforeEach(() => {
119
138
  packageInfo['dist-tags'] = {
@@ -130,6 +149,8 @@ describe(`[startup] ${MFEPackageRollback.name}`, () => {
130
149
  );
131
150
  expect(npmTagVersion).not.toHaveBeenCalled();
132
151
  });
152
+
153
+ itDoesNotPurgeCache();
133
154
  });
134
155
 
135
156
  describe('when tag does not exist', () => {
@@ -190,5 +211,15 @@ describe(`[startup] ${MFEPackageRollback.name}`, () => {
190
211
  )
191
212
  );
192
213
  });
214
+
215
+ itDoesNotPurgeCache();
216
+ });
217
+
218
+ describe('with purgeCache: false', () => {
219
+ beforeEach(() => {
220
+ args.purgeCache = false;
221
+ });
222
+
223
+ itDoesNotPurgeCache();
193
224
  });
194
225
  });
@@ -139,11 +139,13 @@ describe(`[startup] ${MFEPublish.name}`, () => {
139
139
  const testArgs: { name: ArgumentName; value: any; expected?: string | string[] }[] = [
140
140
  { name: 'build', value: true },
141
141
  { name: 'branch', value: 'foo-123' },
142
- { name: 'tag', value: 'foo' },
143
- { name: 'tag', value: true, expected: [] }, // check ignores obsolete --tag with no name
144
142
  { name: 'dry', value: true, expected: '--dry' },
145
143
  { name: 'force', value: true, expected: '--force' },
144
+ { name: 'purgeCache', value: true, expected: '--purge-cache' },
145
+ { name: 'purgeCache', value: false, expected: '--no-purge-cache' },
146
146
  { name: 'registry', value: 'https://foo' },
147
+ { name: 'tag', value: 'foo' },
148
+ { name: 'tag', value: true, expected: [] }, // check ignores obsolete --tag with no name
147
149
  { name: 'trackHistory', value: true, expected: '--track-history' },
148
150
  { name: 'trackHistory', value: false, expected: '--no-track-history' },
149
151
  { name: 'uploadSourcemaps', value: true, expected: '--upload-sourcemaps' },
@@ -0,0 +1,141 @@
1
+ import { log } from '../../../utils';
2
+ import { MFEPurgeCache, PurgeResponse } from '../mfe-purge-cache';
3
+
4
+ jest.mock('../../../utils', () => ({
5
+ ...jest.requireActual('../../../utils'),
6
+ log: { debug: jest.fn(), info: jest.fn(), warning: jest.fn() },
7
+ }));
8
+
9
+ describe(`[startup] ${MFEPurgeCache.name}`, () => {
10
+ const host = 'https://unpkg.example.com';
11
+ const token = 'purge-token';
12
+ const tag = 'prod';
13
+ const packageName = '@servicetitan/foo';
14
+ const version = '0.0.0-master.abc1223';
15
+ const location = `/${packageName}@${version}/dist/metadata.json`;
16
+
17
+ let args: ConstructorParameters<typeof MFEPurgeCache>[0];
18
+ let fetchSpy: jest.SpyInstance;
19
+ let fetchResponse: any;
20
+ let responseJson: PurgeResponse;
21
+
22
+ beforeEach(() => {
23
+ process.env.UNPKG_PURGE_TOKEN = token;
24
+ args = { host, packageName, tag };
25
+ fetchResponse = {
26
+ ok: true,
27
+ json: jest.fn().mockImplementation(() => Promise.resolve(responseJson)),
28
+ };
29
+ responseJson = [{ pod: '10.36.110.200', status: 302, cache: 'BYPASS', location }];
30
+
31
+ jest.clearAllMocks();
32
+ jest.spyOn(process.stdout, 'write').mockImplementation(jest.fn()); // suppress error output
33
+ fetchSpy = jest.spyOn(global, 'fetch').mockImplementation(() => fetchResponse);
34
+ });
35
+
36
+ afterEach(() => delete process.env.UNPKG_PURGE_TOKEN);
37
+
38
+ const subject = () => new MFEPurgeCache(args).execute();
39
+
40
+ test('sends POST request with X-Purge-Token header', async () => {
41
+ await subject();
42
+
43
+ expect(fetchSpy).toHaveBeenCalledWith(
44
+ `${host}/_purge/${packageName}@${tag}/dist/metadata.json`,
45
+ { method: 'POST', headers: { 'X-Purge-Token': token } }
46
+ );
47
+ });
48
+
49
+ test('logs progress', async () => {
50
+ await subject();
51
+
52
+ expect(log.info).toHaveBeenCalledWith(`Purging cache for ${packageName}@${tag}`);
53
+ });
54
+
55
+ test('logs the redirect location from the response', async () => {
56
+ await subject();
57
+
58
+ expect(log.info).toHaveBeenCalledWith(
59
+ `Cache purged: ${packageName}@${tag}/dist/metadata.json -> ${location.replace(/^\//, '')}`
60
+ );
61
+ });
62
+
63
+ describe('when request fails', () => {
64
+ beforeEach(() => {
65
+ fetchResponse = { ok: false, status: 403, statusText: 'Forbidden' };
66
+ });
67
+
68
+ test('throws error', () => {
69
+ expect(subject).rejects.toThrow(
70
+ `Purge request failed: ${fetchResponse.status} ${fetchResponse.statusText}`
71
+ );
72
+ });
73
+ });
74
+
75
+ function itLogsNullLocation() {
76
+ test('logs null location', async () => {
77
+ await subject();
78
+
79
+ expect(log.info).toHaveBeenCalledWith(expect.stringMatching(/-> null$/));
80
+ });
81
+ }
82
+
83
+ describe('when response location is null', () => {
84
+ beforeEach(() => (responseJson[0].location = null));
85
+
86
+ itLogsNullLocation();
87
+ });
88
+
89
+ describe('when response is empty', () => {
90
+ beforeEach(() => (responseJson = []));
91
+
92
+ itLogsNullLocation();
93
+ });
94
+
95
+ describe('when response is unexpected', () => {
96
+ beforeEach(() => (responseJson = {} as any));
97
+
98
+ itLogsNullLocation();
99
+ });
100
+
101
+ describe('when host has trailing slash', () => {
102
+ beforeEach(() => {
103
+ args.host = `${host}/`;
104
+ });
105
+
106
+ test('strips trailing slash from host', async () => {
107
+ await subject();
108
+
109
+ expect(fetchSpy).toHaveBeenCalledWith(
110
+ `${host}/_purge/${packageName}@${tag}/dist/metadata.json`,
111
+ expect.anything()
112
+ );
113
+ });
114
+ });
115
+
116
+ describe('with --token', () => {
117
+ const cliToken = 'cli-purge-token';
118
+
119
+ beforeEach(() => (args.token = cliToken));
120
+
121
+ test('uses specified token', async () => {
122
+ await subject();
123
+
124
+ expect(fetchSpy).toHaveBeenCalledWith(
125
+ expect.anything(),
126
+ expect.objectContaining({ headers: { 'X-Purge-Token': cliToken } })
127
+ );
128
+ });
129
+ });
130
+
131
+ describe('with no token', () => {
132
+ beforeEach(() => delete process.env.UNPKG_PURGE_TOKEN);
133
+
134
+ test('logs warning and does nothing', async () => {
135
+ await subject();
136
+
137
+ expect(log.warning).toHaveBeenCalledWith('Token is not defined, skipping purge');
138
+ expect(fetchSpy).not.toHaveBeenCalled();
139
+ });
140
+ });
141
+ });
@@ -15,6 +15,7 @@ import { MFEPackageClean } from './mfe-package-clean';
15
15
  import { MFEPackagePublish } from './mfe-package-publish';
16
16
  import { MFEPackageRollback } from './mfe-package-rollback';
17
17
  import { MFEPublish } from './mfe-publish';
18
+ import { MFEPurgeCache } from './mfe-purge-cache';
18
19
  import { PreparePackage } from './prepare-package';
19
20
  import { Review } from './review';
20
21
  import { RunTask } from './run-task';
@@ -42,6 +43,7 @@ const commands: Record<CommandName, Newable<Command>> = {
42
43
  [CommandName['mfe-package-publish']]: MFEPackagePublish,
43
44
  [CommandName['mfe-package-rollback']]: MFEPackageRollback,
44
45
  [CommandName['mfe-publish']]: MFEPublish,
46
+ [CommandName['mfe-purge-cache']]: MFEPurgeCache,
45
47
  [CommandName['prepare-package']]: PreparePackage,
46
48
  [CommandName.review]: Review,
47
49
  [CommandName.start]: Start,