@servicetitan/startup 33.1.0 → 34.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 (449) hide show
  1. package/dist/cli/commands/build.d.ts +48 -22
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +72 -52
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +54 -10
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +40 -0
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +4 -0
  10. package/dist/cli/commands/clean.d.ts.map +1 -1
  11. package/dist/cli/commands/clean.js +50 -16
  12. package/dist/cli/commands/clean.js.map +1 -1
  13. package/dist/cli/commands/convert-eslint-config.d.ts +1 -1
  14. package/dist/cli/commands/convert-eslint-config.d.ts.map +1 -1
  15. package/dist/cli/commands/convert-eslint-config.js +2 -15
  16. package/dist/cli/commands/convert-eslint-config.js.map +1 -1
  17. package/dist/cli/commands/eslint.d.ts +29 -7
  18. package/dist/cli/commands/eslint.d.ts.map +1 -1
  19. package/dist/cli/commands/eslint.js +18 -6
  20. package/dist/cli/commands/eslint.js.map +1 -1
  21. package/dist/cli/commands/get-command.d.ts.map +1 -1
  22. package/dist/cli/commands/get-command.js +6 -0
  23. package/dist/cli/commands/get-command.js.map +1 -1
  24. package/dist/cli/commands/index.d.ts +2 -2
  25. package/dist/cli/commands/index.d.ts.map +1 -1
  26. package/dist/cli/commands/index.js +2 -2
  27. package/dist/cli/commands/index.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts +10 -6
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +8 -6
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/install.d.ts +27 -15
  33. package/dist/cli/commands/install.d.ts.map +1 -1
  34. package/dist/cli/commands/install.js +18 -16
  35. package/dist/cli/commands/install.js.map +1 -1
  36. package/dist/cli/commands/kendo-ui-license.d.ts +1 -0
  37. package/dist/cli/commands/kendo-ui-license.d.ts.map +1 -1
  38. package/dist/cli/commands/kendo-ui-license.js +1 -0
  39. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  40. package/dist/cli/commands/lint.d.ts +51 -17
  41. package/dist/cli/commands/lint.d.ts.map +1 -1
  42. package/dist/cli/commands/lint.js +36 -26
  43. package/dist/cli/commands/lint.js.map +1 -1
  44. package/dist/cli/commands/mfe-check.d.ts +52 -0
  45. package/dist/cli/commands/mfe-check.d.ts.map +1 -0
  46. package/dist/cli/commands/mfe-check.js +145 -0
  47. package/dist/cli/commands/mfe-check.js.map +1 -0
  48. package/dist/cli/commands/mfe-generate-metadata.d.ts +20 -0
  49. package/dist/cli/commands/mfe-generate-metadata.d.ts.map +1 -0
  50. package/dist/cli/commands/mfe-generate-metadata.js +93 -0
  51. package/dist/cli/commands/mfe-generate-metadata.js.map +1 -0
  52. package/dist/cli/commands/mfe-list.d.ts +52 -15
  53. package/dist/cli/commands/mfe-list.d.ts.map +1 -1
  54. package/dist/cli/commands/mfe-list.js +42 -29
  55. package/dist/cli/commands/mfe-list.js.map +1 -1
  56. package/dist/cli/commands/mfe-package-clean.d.ts +34 -15
  57. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  58. package/dist/cli/commands/mfe-package-clean.js +43 -34
  59. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  60. package/dist/cli/commands/mfe-package-publish.d.ts +60 -22
  61. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  62. package/dist/cli/commands/mfe-package-publish.js +137 -78
  63. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  64. package/dist/cli/commands/mfe-package-rollback.d.ts +40 -0
  65. package/dist/cli/commands/mfe-package-rollback.d.ts.map +1 -0
  66. package/dist/cli/commands/mfe-package-rollback.js +119 -0
  67. package/dist/cli/commands/mfe-package-rollback.js.map +1 -0
  68. package/dist/cli/commands/mfe-publish.d.ts +36 -11
  69. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  70. package/dist/cli/commands/mfe-publish.js +72 -22
  71. package/dist/cli/commands/mfe-publish.js.map +1 -1
  72. package/dist/cli/commands/prepare-package.d.ts +14 -5
  73. package/dist/cli/commands/prepare-package.d.ts.map +1 -1
  74. package/dist/cli/commands/prepare-package.js +20 -0
  75. package/dist/cli/commands/prepare-package.js.map +1 -1
  76. package/dist/cli/commands/review/review.d.ts +17 -8
  77. package/dist/cli/commands/review/review.d.ts.map +1 -1
  78. package/dist/cli/commands/review/review.js +16 -21
  79. package/dist/cli/commands/review/review.js.map +1 -1
  80. package/dist/cli/commands/review/rules/index.d.ts.map +1 -1
  81. package/dist/cli/commands/review/rules/index.js +3 -1
  82. package/dist/cli/commands/review/rules/index.js.map +1 -1
  83. package/dist/cli/commands/review/rules/no-deprecated-content-base.js.map +1 -1
  84. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js.map +1 -1
  85. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +4 -4
  86. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
  87. package/dist/cli/commands/review/rules/require-one-collection-version.js +1 -2
  88. package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
  89. package/dist/cli/commands/review/rules/require-one-uikit-version.d.ts.map +1 -1
  90. package/dist/cli/commands/review/rules/require-one-uikit-version.js +1 -0
  91. package/dist/cli/commands/review/rules/require-one-uikit-version.js.map +1 -1
  92. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.d.ts.map +1 -1
  93. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js +8 -8
  94. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js.map +1 -1
  95. package/dist/cli/commands/review/rules/require-tsconfig-references.d.ts +24 -0
  96. package/dist/cli/commands/review/rules/require-tsconfig-references.d.ts.map +1 -0
  97. package/dist/cli/commands/review/rules/require-tsconfig-references.js +146 -0
  98. package/dist/cli/commands/review/rules/require-tsconfig-references.js.map +1 -0
  99. package/dist/cli/commands/review/utils/collate-dependencies.js +1 -3
  100. package/dist/cli/commands/review/utils/collate-dependencies.js.map +1 -1
  101. package/dist/cli/commands/review/utils/compare-version.js +2 -2
  102. package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
  103. package/dist/cli/commands/review/utils/set-version.js +1 -1
  104. package/dist/cli/commands/review/utils/set-version.js.map +1 -1
  105. package/dist/cli/commands/run-task.d.ts +29 -7
  106. package/dist/cli/commands/run-task.d.ts.map +1 -1
  107. package/dist/cli/commands/run-task.js +21 -8
  108. package/dist/cli/commands/run-task.js.map +1 -1
  109. package/dist/cli/commands/run-task.test.js +14 -2
  110. package/dist/cli/commands/run-task.test.js.map +1 -1
  111. package/dist/cli/commands/start.d.ts +38 -18
  112. package/dist/cli/commands/start.d.ts.map +1 -1
  113. package/dist/cli/commands/start.js +65 -45
  114. package/dist/cli/commands/start.js.map +1 -1
  115. package/dist/cli/commands/stylelint.d.ts +29 -7
  116. package/dist/cli/commands/stylelint.d.ts.map +1 -1
  117. package/dist/cli/commands/stylelint.js +18 -6
  118. package/dist/cli/commands/stylelint.js.map +1 -1
  119. package/dist/cli/commands/test/runners/vitest.js +1 -1
  120. package/dist/cli/commands/test/runners/vitest.js.map +1 -1
  121. package/dist/cli/commands/test/tests.d.ts +25 -5
  122. package/dist/cli/commands/test/tests.d.ts.map +1 -1
  123. package/dist/cli/commands/test/tests.js +22 -14
  124. package/dist/cli/commands/test/tests.js.map +1 -1
  125. package/dist/cli/commands/types.d.ts +51 -10
  126. package/dist/cli/commands/types.d.ts.map +1 -1
  127. package/dist/cli/commands/types.js +1 -0
  128. package/dist/cli/commands/types.js.map +1 -1
  129. package/dist/cli/commands/upload-sourcemaps.d.ts +26 -6
  130. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  131. package/dist/cli/commands/upload-sourcemaps.js +27 -4
  132. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  133. package/dist/cli/commands/utils.d.ts +4 -0
  134. package/dist/cli/commands/utils.d.ts.map +1 -0
  135. package/dist/cli/commands/utils.js +28 -0
  136. package/dist/cli/commands/utils.js.map +1 -0
  137. package/dist/cli/index.js +8 -5
  138. package/dist/cli/index.js.map +1 -1
  139. package/dist/cli/tasks/cli-task.d.ts.map +1 -1
  140. package/dist/cli/tasks/cli-task.js +1 -1
  141. package/dist/cli/tasks/cli-task.js.map +1 -1
  142. package/dist/cli/tasks/swc-compile-package.d.ts +1 -2
  143. package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
  144. package/dist/cli/tasks/swc-compile-package.js.map +1 -1
  145. package/dist/cli/tasks/tsc-compile-package.d.ts +1 -2
  146. package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
  147. package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
  148. package/dist/cli/tasks/tsc-compile.d.ts +1 -2
  149. package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
  150. package/dist/cli/tasks/tsc-compile.js.map +1 -1
  151. package/dist/cli/utils/bundle.d.ts.map +1 -1
  152. package/dist/cli/utils/bundle.js +2 -2
  153. package/dist/cli/utils/bundle.js.map +1 -1
  154. package/dist/cli/utils/check-startup-location.d.ts +4 -0
  155. package/dist/cli/utils/check-startup-location.d.ts.map +1 -0
  156. package/dist/cli/utils/check-startup-location.js +27 -0
  157. package/dist/cli/utils/check-startup-location.js.map +1 -0
  158. package/dist/cli/utils/cli-npm.d.ts +6 -0
  159. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  160. package/dist/cli/utils/cli-npm.js +25 -3
  161. package/dist/cli/utils/cli-npm.js.map +1 -1
  162. package/dist/cli/utils/compile-less.js +1 -1
  163. package/dist/cli/utils/compile-less.js.map +1 -1
  164. package/dist/cli/utils/constants.d.ts +2 -0
  165. package/dist/cli/utils/constants.d.ts.map +1 -0
  166. package/dist/cli/utils/constants.js +13 -0
  167. package/dist/cli/utils/constants.js.map +1 -0
  168. package/dist/cli/utils/copy-files.d.ts.map +1 -1
  169. package/dist/cli/utils/copy-files.js.map +1 -1
  170. package/dist/cli/utils/eslint.d.ts +1 -2
  171. package/dist/cli/utils/eslint.d.ts.map +1 -1
  172. package/dist/cli/utils/eslint.js.map +1 -1
  173. package/dist/cli/utils/index.d.ts +2 -0
  174. package/dist/cli/utils/index.d.ts.map +1 -1
  175. package/dist/cli/utils/index.js +2 -0
  176. package/dist/cli/utils/index.js.map +1 -1
  177. package/dist/cli/utils/is-module-installed.js +1 -1
  178. package/dist/cli/utils/is-module-installed.js.map +1 -1
  179. package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
  180. package/dist/cli/utils/lerna-exec.js +1 -3
  181. package/dist/cli/utils/lerna-exec.js.map +1 -1
  182. package/dist/cli/utils/process-tree.js.map +1 -1
  183. package/dist/cli/utils/set-node-options.js +2 -4
  184. package/dist/cli/utils/set-node-options.js.map +1 -1
  185. package/dist/cli/utils/stylelint.d.ts +1 -2
  186. package/dist/cli/utils/stylelint.d.ts.map +1 -1
  187. package/dist/cli/utils/stylelint.js.map +1 -1
  188. package/dist/index.d.ts +1 -1
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +1 -1
  191. package/dist/index.js.map +1 -1
  192. package/dist/jest/resolver.js +2 -2
  193. package/dist/jest/resolver.js.map +1 -1
  194. package/dist/jest/svg-transformer.d.ts.map +1 -1
  195. package/dist/jest/svg-transformer.js.map +1 -1
  196. package/dist/utils/find-packages.js +1 -1
  197. package/dist/utils/find-packages.js.map +1 -1
  198. package/dist/utils/format-relative-date.js +1 -1
  199. package/dist/utils/format-relative-date.js.map +1 -1
  200. package/dist/utils/get-configuration.d.ts +3 -0
  201. package/dist/utils/get-configuration.d.ts.map +1 -1
  202. package/dist/utils/get-configuration.js +14 -11
  203. package/dist/utils/get-configuration.js.map +1 -1
  204. package/dist/utils/get-destination-folders.d.ts.map +1 -1
  205. package/dist/utils/get-destination-folders.js.map +1 -1
  206. package/dist/utils/get-folders.d.ts.map +1 -1
  207. package/dist/utils/get-folders.js.map +1 -1
  208. package/dist/utils/get-jest-config.js +1 -1
  209. package/dist/utils/get-jest-config.js.map +1 -1
  210. package/dist/utils/get-package-data.js +1 -1
  211. package/dist/utils/get-package-data.js.map +1 -1
  212. package/dist/utils/get-packages.js.map +1 -1
  213. package/dist/utils/index.d.ts +1 -0
  214. package/dist/utils/index.d.ts.map +1 -1
  215. package/dist/utils/index.js +1 -0
  216. package/dist/utils/index.js.map +1 -1
  217. package/dist/utils/load-shared-dependencies.js.map +1 -1
  218. package/dist/utils/prettify.d.ts +13 -0
  219. package/dist/utils/prettify.d.ts.map +1 -0
  220. package/dist/utils/prettify.js +48 -0
  221. package/dist/utils/prettify.js.map +1 -0
  222. package/dist/utils/read-json.js +1 -1
  223. package/dist/utils/read-json.js.map +1 -1
  224. package/dist/utils/transform-svg.js +2 -2
  225. package/dist/utils/transform-svg.js.map +1 -1
  226. package/dist/webpack/configs/cache-config.js +1 -1
  227. package/dist/webpack/configs/cache-config.js.map +1 -1
  228. package/dist/webpack/configs/optimization-config.js +3 -4
  229. package/dist/webpack/configs/optimization-config.js.map +1 -1
  230. package/dist/webpack/configs/output-config.js +1 -1
  231. package/dist/webpack/configs/output-config.js.map +1 -1
  232. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  233. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +5 -5
  234. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  235. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -1
  236. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +1 -1
  237. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -1
  238. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
  239. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +6 -9
  240. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
  241. package/dist/webpack/configs/plugins/html-tags-plugin.js +1 -1
  242. package/dist/webpack/configs/plugins/html-tags-plugin.js.map +1 -1
  243. package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js +1 -1
  244. package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js.map +1 -1
  245. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.d.ts.map +1 -1
  246. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  247. package/dist/webpack/configs/plugins/moment-locales-plugin.js +1 -1
  248. package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -1
  249. package/dist/webpack/configs/plugins/watch-run-plugin.d.ts.map +1 -1
  250. package/dist/webpack/configs/plugins/watch-run-plugin.js.map +1 -1
  251. package/dist/webpack/configs/types.d.ts +1 -0
  252. package/dist/webpack/configs/types.d.ts.map +1 -1
  253. package/dist/webpack/configs/utils/build-metadata.d.ts +10 -0
  254. package/dist/webpack/configs/utils/build-metadata.d.ts.map +1 -0
  255. package/dist/webpack/configs/utils/build-metadata.js +50 -0
  256. package/dist/webpack/configs/utils/build-metadata.js.map +1 -0
  257. package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
  258. package/dist/webpack/configs/utils/generate-metadata.js +5 -24
  259. package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
  260. package/dist/webpack/configs/utils/get-exposed-dependencies.d.ts +3 -0
  261. package/dist/webpack/configs/utils/get-exposed-dependencies.d.ts.map +1 -0
  262. package/dist/webpack/configs/utils/get-exposed-dependencies.js +21 -0
  263. package/dist/webpack/configs/utils/get-exposed-dependencies.js.map +1 -0
  264. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js +1 -1
  265. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -1
  266. package/dist/webpack/configs/utils/index.d.ts +1 -0
  267. package/dist/webpack/configs/utils/index.d.ts.map +1 -1
  268. package/dist/webpack/configs/utils/index.js +1 -0
  269. package/dist/webpack/configs/utils/index.js.map +1 -1
  270. package/dist/webpack/create-webpack-config.js +10 -4
  271. package/dist/webpack/create-webpack-config.js.map +1 -1
  272. package/dist/webpack/loaders/expose-loader/index.d.ts.map +1 -1
  273. package/dist/webpack/loaders/expose-loader/index.js.map +1 -1
  274. package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js +1 -1
  275. package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js.map +1 -1
  276. package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js +2 -2
  277. package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js.map +1 -1
  278. package/dist/webpack/utils/stringify-config.js +2 -2
  279. package/dist/webpack/utils/stringify-config.js.map +1 -1
  280. package/dist/webpack/utils/testing/get-compiler.d.ts.map +1 -1
  281. package/dist/webpack/utils/testing/get-compiler.js +1 -1
  282. package/dist/webpack/utils/testing/get-compiler.js.map +1 -1
  283. package/dist/webpack/utils/testing/get-errors.d.ts.map +1 -1
  284. package/dist/webpack/utils/testing/get-errors.js.map +1 -1
  285. package/dist/webpack/utils/testing/get-warnings.d.ts.map +1 -1
  286. package/dist/webpack/utils/testing/get-warnings.js.map +1 -1
  287. package/dist/webpack/utils/testing/read-asset.d.ts.map +1 -1
  288. package/dist/webpack/utils/testing/read-asset.js +1 -1
  289. package/dist/webpack/utils/testing/read-asset.js.map +1 -1
  290. package/dist/webpack/utils/testing/read-assets.d.ts.map +1 -1
  291. package/dist/webpack/utils/testing/read-assets.js.map +1 -1
  292. package/package.json +35 -41
  293. package/src/cli/commands/__tests__/build.test.ts +32 -9
  294. package/src/cli/commands/__tests__/bundle-package.test.ts +2 -1
  295. package/src/cli/commands/__tests__/clean.test.ts +99 -8
  296. package/src/cli/commands/__tests__/convert-eslint-config.test.ts +14 -9
  297. package/src/cli/commands/__tests__/eslint.test.ts +1 -1
  298. package/src/cli/commands/__tests__/get-command.test.ts +3 -1
  299. package/src/cli/commands/__tests__/init.test.ts +14 -1
  300. package/src/cli/commands/__tests__/install.test.ts +6 -2
  301. package/src/cli/commands/__tests__/kendo-ui-license.test.ts +7 -2
  302. package/src/cli/commands/__tests__/lint.test.ts +4 -2
  303. package/src/cli/commands/__tests__/mfe-check.test.ts +346 -0
  304. package/src/cli/commands/__tests__/mfe-generate-metadata.test.ts +160 -0
  305. package/src/cli/commands/__tests__/mfe-list.test.ts +8 -1
  306. package/src/cli/commands/__tests__/mfe-package-clean.test.ts +0 -1
  307. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +322 -93
  308. package/src/cli/commands/__tests__/mfe-package-rollback.test.ts +196 -0
  309. package/src/cli/commands/__tests__/mfe-publish.test.ts +65 -5
  310. package/src/cli/commands/__tests__/prepare-package.test.ts +3 -0
  311. package/src/cli/commands/__tests__/start.test.ts +30 -7
  312. package/src/cli/commands/__tests__/stylelint.test.ts +1 -1
  313. package/src/cli/commands/__tests__/styles-check.test.ts +1 -2
  314. package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +3 -6
  315. package/src/cli/commands/build.ts +35 -26
  316. package/src/cli/commands/bundle-package.ts +11 -10
  317. package/src/cli/commands/clean.ts +51 -5
  318. package/src/cli/commands/convert-eslint-config.ts +3 -12
  319. package/src/cli/commands/eslint.ts +9 -11
  320. package/src/cli/commands/get-command.ts +6 -1
  321. package/src/cli/commands/index.ts +2 -2
  322. package/src/cli/commands/init.ts +7 -9
  323. package/src/cli/commands/install.ts +11 -13
  324. package/src/cli/commands/kendo-ui-license.ts +1 -1
  325. package/src/cli/commands/lint.ts +12 -18
  326. package/src/cli/commands/mfe-check.ts +166 -0
  327. package/src/cli/commands/mfe-generate-metadata.ts +69 -0
  328. package/src/cli/commands/mfe-list.ts +28 -30
  329. package/src/cli/commands/mfe-package-clean.ts +29 -34
  330. package/src/cli/commands/mfe-package-publish.ts +153 -87
  331. package/src/cli/commands/mfe-package-rollback.ts +100 -0
  332. package/src/cli/commands/mfe-publish.ts +80 -27
  333. package/src/cli/commands/prepare-package.ts +6 -5
  334. package/src/cli/commands/review/__tests__/review.test.ts +18 -19
  335. package/src/cli/commands/review/review.ts +11 -20
  336. package/src/cli/commands/review/rules/__tests__/no-deprecated-content-base.test.ts +1 -1
  337. package/src/cli/commands/review/rules/__tests__/no-deprecated-startup-install.test.ts +0 -1
  338. package/src/cli/commands/review/rules/__tests__/no-direct-peer-dependencies.test.ts +1 -1
  339. package/src/cli/commands/review/rules/__tests__/no-typescript-entry-point.test.ts +0 -1
  340. package/src/cli/commands/review/rules/__tests__/require-all-react-dependencies.test.ts +0 -1
  341. package/src/cli/commands/review/rules/__tests__/require-compatible-launch-darkly-sdk.test.ts +2 -2
  342. package/src/cli/commands/review/rules/__tests__/require-explicit-side-effects.test.ts +0 -1
  343. package/src/cli/commands/review/rules/__tests__/require-npmrc.test.ts +0 -1
  344. package/src/cli/commands/review/rules/__tests__/require-one-anvil-uikit-contrib-version.test.ts +1 -2
  345. package/src/cli/commands/review/rules/__tests__/require-one-collection-version.test.ts +0 -1
  346. package/src/cli/commands/review/rules/__tests__/require-one-package-version.test.ts +0 -1
  347. package/src/cli/commands/review/rules/__tests__/require-one-react-version.test.ts +0 -1
  348. package/src/cli/commands/review/rules/__tests__/require-one-uikit-version.test.ts +1 -1
  349. package/src/cli/commands/review/rules/__tests__/require-project-version-in-root-node-modules.test.ts +2 -3
  350. package/src/cli/commands/review/rules/__tests__/require-servicetitan-scope.test.ts +0 -1
  351. package/src/cli/commands/review/rules/__tests__/require-tsconfig-references.test.ts +315 -0
  352. package/src/cli/commands/review/rules/index.ts +2 -0
  353. package/src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts +1 -1
  354. package/src/cli/commands/review/rules/require-one-uikit-version.ts +1 -0
  355. package/src/cli/commands/review/rules/require-project-version-in-root-node-modules.ts +3 -3
  356. package/src/cli/commands/review/rules/require-tsconfig-references.ts +157 -0
  357. package/src/cli/commands/review/utils/__tests__/set-version.test.ts +0 -1
  358. package/src/cli/commands/run-task.test.ts +15 -3
  359. package/src/cli/commands/run-task.ts +12 -14
  360. package/src/cli/commands/start.ts +75 -59
  361. package/src/cli/commands/stylelint.ts +9 -11
  362. package/src/cli/commands/test/runners/__tests__/jest.test.ts +1 -2
  363. package/src/cli/commands/test/runners/vitest.ts +1 -1
  364. package/src/cli/commands/test/tests.ts +13 -15
  365. package/src/cli/commands/types.ts +53 -7
  366. package/src/cli/commands/upload-sourcemaps.ts +14 -12
  367. package/src/cli/commands/utils.ts +6 -0
  368. package/src/cli/index.ts +11 -7
  369. package/src/cli/tasks/__tests__/cli-task.test.ts +1 -1
  370. package/src/cli/tasks/__tests__/swc-compile-package.test.ts +3 -1
  371. package/src/cli/tasks/__tests__/tsc-compile-package.test.ts +2 -0
  372. package/src/cli/tasks/__tests__/tsc-compile.test.ts +3 -13
  373. package/src/cli/tasks/cli-task.ts +1 -1
  374. package/src/cli/tasks/swc-compile-package.ts +1 -3
  375. package/src/cli/tasks/tsc-compile-package.ts +1 -2
  376. package/src/cli/tasks/tsc-compile.ts +1 -2
  377. package/src/cli/utils/__tests__/bundle.test.ts +1 -2
  378. package/src/cli/utils/__tests__/check-args.test.ts +1 -1
  379. package/src/cli/utils/__tests__/check-startup-location.test.ts +88 -0
  380. package/src/cli/utils/__tests__/cli-git.test.ts +1 -2
  381. package/src/cli/utils/__tests__/cli-npm.test.ts +51 -2
  382. package/src/cli/utils/__tests__/cli-os.test.ts +1 -2
  383. package/src/cli/utils/__tests__/compile.test.ts +1 -1
  384. package/src/cli/utils/__tests__/copy-files.test.ts +0 -1
  385. package/src/cli/utils/__tests__/eslint.test.ts +1 -1
  386. package/src/cli/utils/__tests__/lerna-exec.test.ts +1 -2
  387. package/src/cli/utils/__tests__/maybe-create-git-folder.test.ts +0 -1
  388. package/src/cli/utils/__tests__/set-node-options.test.ts +0 -1
  389. package/src/cli/utils/__tests__/stylelint.test.ts +1 -1
  390. package/src/cli/utils/bundle.ts +1 -3
  391. package/src/cli/utils/check-startup-location.ts +21 -0
  392. package/src/cli/utils/cli-npm.ts +22 -0
  393. package/src/cli/utils/compile-less.ts +1 -1
  394. package/src/cli/utils/constants.ts +1 -0
  395. package/src/cli/utils/copy-files.ts +0 -1
  396. package/src/cli/utils/eslint.ts +1 -3
  397. package/src/cli/utils/index.ts +2 -0
  398. package/src/cli/utils/lerna-exec.ts +0 -1
  399. package/src/cli/utils/stylelint.ts +1 -2
  400. package/src/index.ts +1 -1
  401. package/src/jest/svg-transformer.ts +0 -1
  402. package/src/utils/__tests__/get-branch-configs.test.ts +0 -1
  403. package/src/utils/__tests__/get-configuration.test.ts +0 -1
  404. package/src/utils/__tests__/get-destination-folders.test.ts +1 -2
  405. package/src/utils/__tests__/get-folders.test.ts +0 -1
  406. package/src/utils/__tests__/get-jest-config.test.ts +1 -2
  407. package/src/utils/__tests__/get-package-data.test.ts +1 -2
  408. package/src/utils/__tests__/get-packages.test.ts +1 -1
  409. package/src/utils/__tests__/get-startup-version.test.ts +0 -1
  410. package/src/utils/__tests__/get-tsconfig.test.ts +0 -1
  411. package/src/utils/__tests__/load-shared-dependencies.test.ts +1 -1
  412. package/src/utils/__tests__/log.test.ts +1 -1
  413. package/src/utils/__tests__/prettify.test.ts +80 -0
  414. package/src/utils/__tests__/read-json.test.ts +0 -1
  415. package/src/utils/find-packages.ts +1 -1
  416. package/src/utils/get-configuration.ts +8 -7
  417. package/src/utils/get-destination-folders.ts +0 -1
  418. package/src/utils/get-folders.ts +0 -1
  419. package/src/utils/get-jest-config.ts +1 -1
  420. package/src/utils/index.ts +1 -0
  421. package/src/utils/prettify.ts +36 -0
  422. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +6 -2
  423. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +7 -4
  424. package/src/webpack/__tests__/create-webpack-config.test.ts +8 -4
  425. package/src/webpack/configs/cache-config.ts +1 -1
  426. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +1 -1
  427. package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +2 -2
  428. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +6 -15
  429. package/src/webpack/configs/plugins/ignore-plugin/__tests__/get-package-json.test.ts +1 -1
  430. package/src/webpack/configs/plugins/ignore-plugin/__tests__/is-optional-peer-dependency.test.ts +1 -1
  431. package/src/webpack/configs/plugins/ignore-plugin/ignore-plugin.ts +0 -1
  432. package/src/webpack/configs/plugins/watch-run-plugin.ts +0 -1
  433. package/src/webpack/configs/types.ts +1 -0
  434. package/src/webpack/configs/utils/__tests__/build-metadata.test.ts +71 -0
  435. package/src/webpack/configs/utils/__tests__/generate-metadata.test.ts +42 -46
  436. package/src/webpack/configs/utils/__tests__/get-exposed-dependencies.test.ts +39 -0
  437. package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +0 -1
  438. package/src/webpack/configs/utils/build-metadata.ts +40 -0
  439. package/src/webpack/configs/utils/generate-metadata.ts +7 -21
  440. package/src/webpack/configs/utils/get-exposed-dependencies.ts +17 -0
  441. package/src/webpack/configs/utils/index.ts +1 -0
  442. package/src/webpack/create-webpack-config.ts +3 -3
  443. package/src/webpack/loaders/expose-loader/__tests__/index.test.ts +0 -2
  444. package/src/webpack/loaders/expose-loader/index.ts +0 -1
  445. package/src/webpack/utils/testing/get-compiler.ts +1 -3
  446. package/src/webpack/utils/testing/get-errors.ts +0 -1
  447. package/src/webpack/utils/testing/get-warnings.ts +0 -1
  448. package/src/webpack/utils/testing/read-asset.ts +1 -2
  449. package/src/webpack/utils/testing/read-assets.ts +0 -1
@@ -2,17 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "MFEPackagePublish", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get MFEPackagePublish () {
8
13
  return MFEPackagePublish;
14
+ },
15
+ get mfePackagePublishOptions () {
16
+ return mfePackagePublishOptions;
9
17
  }
10
18
  });
11
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
19
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
20
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
21
  const _utils = require("../../utils");
14
22
  const _utils1 = require("../utils");
15
23
  const _types = require("./types");
24
+ const _utils2 = require("./utils");
16
25
  function _define_property(obj, key, value) {
17
26
  if (key in obj) {
18
27
  Object.defineProperty(obj, key, {
@@ -40,25 +49,64 @@ function _ts_decorate(decorators, target, key, desc) {
40
49
  function _ts_metadata(k, v) {
41
50
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
42
51
  }
52
+ const mfePackagePublishOptions = {
53
+ branch: {
54
+ string: true,
55
+ description: 'Branch name to associate with published version',
56
+ defaultDescription: 'current git branch'
57
+ },
58
+ build: {
59
+ string: true,
60
+ description: 'Package version',
61
+ defaultDescription: '<branch_name>.<commit_hash>'
62
+ },
63
+ dry: {
64
+ boolean: true,
65
+ description: 'Take no action and only log what would be published'
66
+ },
67
+ force: {
68
+ boolean: true,
69
+ description: 'Force publishing from an unrecognized branch'
70
+ },
71
+ registry: {
72
+ string: true,
73
+ hidden: true,
74
+ description: 'Registry url'
75
+ },
76
+ trackHistory: {
77
+ boolean: true,
78
+ description: `Tag the previous release, to support rollbacks`,
79
+ defaultDescription: 'true',
80
+ hidden: true
81
+ },
82
+ tag: {
83
+ string: true,
84
+ description: 'Tag to assign to published version'
85
+ },
86
+ uploadSourcemaps: {
87
+ boolean: true,
88
+ description: 'Upload source maps to Datadog?',
89
+ defaultDescription: 'true'
90
+ }
91
+ };
43
92
  class MFEPackagePublish extends _types.Command {
44
93
  async execute() {
45
94
  if (this.args.dry) {
46
95
  _utils.log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');
47
96
  }
48
97
  const packageJson = (0, _utils.readJson)('package.json');
49
- const data = this.getPublishData();
98
+ const data = this.getPublishData(packageJson.name);
50
99
  if (!this.checkPackage(packageJson, data)) {
51
100
  return;
52
101
  }
53
- if (!await this.tryTagExistingVersion(packageJson, data)) {
54
- await this.publishPackage(packageJson, data);
55
- }
102
+ await this.maybeApplyRollbackTag(packageJson.name, data);
103
+ await this.maybePublishPackage(packageJson, data);
56
104
  if (data.uploadSourcemaps) {
57
105
  this.uploadSourcemaps(data);
58
106
  }
59
107
  }
60
108
  get dryRunPrefix() {
61
- return this.args.dry ? '(dry-run) ' : '';
109
+ return this.args.dry ? _utils1.DRY_RUN_PREFIX : '';
62
110
  }
63
111
  checkPackage(packageJson, { force, isBranchConfigured }) {
64
112
  if (!(0, _utils.isWebComponent)()) {
@@ -74,35 +122,40 @@ class MFEPackagePublish extends _types.Command {
74
122
  }
75
123
  return true;
76
124
  }
77
- async tryTagExistingVersion({ name }, { dry, registry, tag, version }) {
78
- const versions = (0, _utils1.npmGetPackageVersions)(registry, name);
79
- if (!versions.includes(version)) {
80
- return false;
81
- }
82
- _utils.log.warning(`${this.dryRunPrefix}${name} version ${version} is already published, skipping publish`);
83
- if (tag) {
84
- _utils.log.info(`${this.dryRunPrefix}adding tag "${tag}" to ${name} version ${version}`);
85
- if (!dry) {
86
- await (0, _utils1.npmTagVersion)({
87
- packageName: name,
88
- packageVersion: version,
89
- registry,
90
- tag
91
- });
125
+ async maybePublishPackage(packageJson, data) {
126
+ try {
127
+ const { dry, registry, tag, version } = data;
128
+ const versions = (0, _utils1.npmGetPackageVersions)(registry, packageJson.name);
129
+ if (versions.includes(version)) {
130
+ _utils.log.warning(`${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`);
131
+ _utils.log.info(`${this.dryRunPrefix}Tagging version ${version} with tag "${tag}"`);
132
+ if (!dry) {
133
+ await (0, _utils1.npmTagVersion)({
134
+ packageName: packageJson.name,
135
+ packageVersion: version,
136
+ registry,
137
+ tag
138
+ });
139
+ }
140
+ return;
141
+ }
142
+ this.validateMetadata(version);
143
+ await (0, _utils1.npmPackageSet)('version', version);
144
+ await (0, _utils1.npmPackageSet)('publishConfig.registry', registry);
145
+ await this.setPackageFiles(packageJson);
146
+ _utils.log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);
147
+ await (0, _utils1.npmPublish)({
148
+ dry,
149
+ tag
150
+ });
151
+ } catch (error) {
152
+ _utils.log.error(`Failed to publish package ${packageJson.name}`);
153
+ const versionOriginallyTaggedWithRollback = data.publishedTags[(0, _utils2.buildRollbackTag)(data.tag)];
154
+ if (versionOriginallyTaggedWithRollback) {
155
+ await this.restoreRollbackTag(packageJson.name, data, versionOriginallyTaggedWithRollback);
92
156
  }
157
+ throw error;
93
158
  }
94
- return true;
95
- }
96
- async publishPackage(packageJson, { dry, fallbackTag, registry, tag, version }) {
97
- this.validateMetadata(version);
98
- await (0, _utils1.npmPackageSet)('version', version);
99
- await (0, _utils1.npmPackageSet)('publishConfig.registry', registry);
100
- await this.setPackageFiles(packageJson);
101
- await (0, _utils1.npmPublish)({
102
- dry,
103
- tag: tag || fallbackTag
104
- });
105
- _utils.log.info(`${this.dryRunPrefix}published ${packageJson.name} version ${version}`);
106
159
  }
107
160
  uploadSourcemaps({ dry, version }) {
108
161
  const options = [
@@ -113,28 +166,31 @@ class MFEPackagePublish extends _types.Command {
113
166
  ].filter((option)=>!!option);
114
167
  (0, _utils1.runCommand)(`npx startup upload-sourcemaps ${options.join(' ')}`);
115
168
  }
116
- getPublishData() {
169
+ getPublishData(packageName) {
170
+ var _cli_branch, _cli_registry, _ref, _cli_tag, _ref1, _cli_uploadSourcemaps, _ref2, _cli_trackHistory;
171
+ var _npmView;
117
172
  const cli = this.args;
118
- var _cli_branch;
119
173
  const branch = (_cli_branch = cli.branch) !== null && _cli_branch !== void 0 ? _cli_branch : (0, _utils1.gitGetBranch)();
120
174
  const branchConfig = (0, _utils.getBranchesConfigs)()[branch];
121
175
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
122
176
  const buildVersion = cli.build || (0, _utils1.getDefaultBuildVersion)(branch, (0, _utils1.gitGetCommitHash)());
123
- var _cli_registry;
124
- const registry = (_cli_registry = cli.registry) !== null && _cli_registry !== void 0 ? _cli_registry : 'https://verdaccio.servicetitan.com';
125
- var _cli_tag, _ref;
177
+ const registry = (_cli_registry = cli.registry) !== null && _cli_registry !== void 0 ? _cli_registry : _utils2.DEFAULT_MFE_REGISTRY;
126
178
  const tag = (_ref = (_cli_tag = cli.tag) !== null && _cli_tag !== void 0 ? _cli_tag : branchConfig === null || branchConfig === void 0 ? void 0 : branchConfig.publishTag) !== null && _ref !== void 0 ? _ref : '';
127
- var _cli_uploadSourcemaps, _ref1;
128
179
  const uploadSourcemaps = (_ref1 = (_cli_uploadSourcemaps = cli.uploadSourcemaps) !== null && _cli_uploadSourcemaps !== void 0 ? _cli_uploadSourcemaps : branchConfig === null || branchConfig === void 0 ? void 0 : branchConfig.uploadSourcemaps) !== null && _ref1 !== void 0 ? _ref1 : true;
129
180
  const version = '0.0.0-' + buildVersion;
181
+ const publishedTags = (_ref2 = (_npmView = (0, _utils1.npmView)({
182
+ packageName,
183
+ registry
184
+ })) === null || _npmView === void 0 ? void 0 : _npmView['dist-tags']) !== null && _ref2 !== void 0 ? _ref2 : {};
130
185
  return {
131
186
  buildVersion,
132
187
  dry: !!cli.dry,
133
- fallbackTag: 'latest',
134
188
  force: !!cli.force,
135
189
  isBranchConfigured: !!branchConfig,
190
+ publishedTags,
136
191
  registry,
137
- tag,
192
+ tag: tag || 'latest',
193
+ trackHistory: (_cli_trackHistory = cli.trackHistory) !== null && _cli_trackHistory !== void 0 ? _cli_trackHistory : true,
138
194
  uploadSourcemaps,
139
195
  version
140
196
  };
@@ -201,41 +257,44 @@ class MFEPackagePublish extends _types.Command {
201
257
  });
202
258
  });
203
259
  }
204
- }
205
- _define_property(MFEPackagePublish, "options", {
206
- 'branch': {
207
- string: true,
208
- description: 'Branch name to associate with published version',
209
- defaultDescription: 'current git branch'
210
- },
211
- 'build': {
212
- string: true,
213
- description: 'Package version',
214
- defaultDescription: '<branch_name>.<commit_hash>'
215
- },
216
- 'dry': {
217
- boolean: true,
218
- description: 'Take no action and only log what would be published'
219
- },
220
- 'force': {
221
- boolean: true,
222
- description: 'Force publishing from an unrecognized branch'
223
- },
224
- 'registry': {
225
- string: true,
226
- hidden: true,
227
- description: 'Registry url'
228
- },
229
- 'tag': {
230
- string: true,
231
- description: 'Tag to assign to published version'
232
- },
233
- 'upload-source-maps': {
234
- boolean: true,
235
- description: 'Upload source maps to Datadog?',
236
- defaultDescription: 'true'
260
+ async maybeApplyRollbackTag(packageName, data) {
261
+ const { dry, registry, tag, trackHistory, version, publishedTags } = data;
262
+ if (!trackHistory) {
263
+ _utils.log.info('Track history is turned off, skipping rollback tag');
264
+ return;
265
+ }
266
+ const previousVersion = publishedTags[tag];
267
+ if (!previousVersion) {
268
+ _utils.log.info(`No previous version published with tag "${tag}", skipping rollback tag`);
269
+ return;
270
+ }
271
+ if (previousVersion === version) {
272
+ _utils.log.info(`Version "${version}" is already tagged "${tag}", skipping rollback tag`);
273
+ return;
274
+ }
275
+ const prevTag = (0, _utils2.buildRollbackTag)(tag);
276
+ _utils.log.info(`${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag "${prevTag}"`);
277
+ if (!dry) {
278
+ await (0, _utils1.npmTagVersion)({
279
+ packageName,
280
+ packageVersion: previousVersion,
281
+ registry,
282
+ tag: prevTag
283
+ });
284
+ }
237
285
  }
238
- });
286
+ async restoreRollbackTag(packageName, { registry, tag }, version) {
287
+ const rollbackTag = (0, _utils2.buildRollbackTag)(tag);
288
+ _utils.log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);
289
+ await (0, _utils1.npmTagVersion)({
290
+ packageName,
291
+ packageVersion: version,
292
+ registry,
293
+ tag: rollbackTag
294
+ });
295
+ }
296
+ }
297
+ _define_property(MFEPackagePublish, "options", mfePackagePublishOptions);
239
298
  _ts_decorate([
240
299
  _utils.logErrors,
241
300
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
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, CommandArgs } from './types';\n\nexport interface Args extends CommandArgs {\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 extends Command<Args> {\n static readonly options = {\n 'branch': {\n string: true,\n description: 'Branch name to associate with published version',\n defaultDescription: 'current git branch',\n },\n 'build': {\n string: true,\n description: 'Package version',\n defaultDescription: '<branch_name>.<commit_hash>',\n },\n 'dry': {\n boolean: true,\n description: 'Take no action and only log what would be published',\n },\n 'force': {\n boolean: true,\n description: 'Force publishing from an unrecognized branch',\n },\n 'registry': { string: true, hidden: true, description: 'Registry url' },\n 'tag': {\n string: true,\n description: 'Tag to assign to published version',\n },\n 'upload-source-maps': {\n boolean: true,\n description: 'Upload source maps to Datadog?',\n defaultDescription: 'true',\n },\n };\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","Command","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","string","description","defaultDescription","boolean","hidden"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\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 DRY_RUN_PREFIX,\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n npmView,\n runCommand,\n} from '../utils';\nimport { Command, CommandOptions } from './types';\nimport { buildRollbackTag, DEFAULT_MFE_REGISTRY } from './utils';\n\nexport const mfePackagePublishOptions = {\n branch: {\n string: true,\n description: 'Branch name to associate with published version',\n defaultDescription: 'current git branch',\n },\n build: {\n string: true,\n description: 'Package version',\n defaultDescription: '<branch_name>.<commit_hash>',\n },\n dry: {\n boolean: true,\n description: 'Take no action and only log what would be published',\n },\n force: {\n boolean: true,\n description: 'Force publishing from an unrecognized branch',\n },\n registry: { string: true, hidden: true, description: 'Registry url' },\n trackHistory: {\n boolean: true,\n description: `Tag the previous release, to support rollbacks`,\n defaultDescription: 'true',\n hidden: true,\n },\n tag: {\n string: true,\n description: 'Tag to assign to published version',\n },\n uploadSourcemaps: {\n boolean: true,\n description: 'Upload source maps to Datadog?',\n defaultDescription: 'true',\n },\n} satisfies CommandOptions;\n\ninterface PublishData {\n buildVersion: string;\n dry: boolean;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n trackHistory: boolean;\n publishedTags: Record<string, string>;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish extends Command<typeof mfePackagePublishOptions> {\n static readonly options = mfePackagePublishOptions;\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\n const data = this.getPublishData(packageJson.name);\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n await this.maybeApplyRollbackTag(packageJson.name, data);\n\n await this.maybePublishPackage(packageJson, data);\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\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 maybePublishPackage(packageJson: PackageJson, data: PublishData) {\n try {\n const { dry, registry, tag, version } = data;\n\n const versions = npmGetPackageVersions(registry, packageJson.name);\n if (versions.includes(version)) {\n log.warning(\n `${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`\n );\n\n log.info(`${this.dryRunPrefix}Tagging version ${version} with tag \"${tag}\"`);\n\n if (!dry) {\n await npmTagVersion({\n packageName: packageJson.name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n\n return;\n }\n\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);\n await npmPublish({ dry, tag });\n } catch (error) {\n log.error(`Failed to publish package ${packageJson.name}`);\n\n const versionOriginallyTaggedWithRollback =\n data.publishedTags[buildRollbackTag(data.tag)];\n\n if (versionOriginallyTaggedWithRollback) {\n await this.restoreRollbackTag(\n packageJson.name,\n data,\n versionOriginallyTaggedWithRollback\n );\n }\n throw error;\n }\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(packageName: string): 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 ?? DEFAULT_MFE_REGISTRY;\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};\n\n return {\n buildVersion,\n dry: !!cli.dry,\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n publishedTags,\n registry,\n tag: tag || 'latest',\n trackHistory: cli.trackHistory ?? true,\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 private async maybeApplyRollbackTag(packageName: string, data: PublishData) {\n const { dry, registry, tag, trackHistory, version, publishedTags } = data;\n\n if (!trackHistory) {\n log.info('Track history is turned off, skipping rollback tag');\n return;\n }\n\n const previousVersion = publishedTags[tag];\n\n if (!previousVersion) {\n log.info(`No previous version published with tag \"${tag}\", skipping rollback tag`);\n return;\n }\n\n if (previousVersion === version) {\n log.info(`Version \"${version}\" is already tagged \"${tag}\", skipping rollback tag`);\n return;\n }\n\n const prevTag = buildRollbackTag(tag);\n\n log.info(\n `${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag \"${prevTag}\"`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: previousVersion,\n registry,\n tag: prevTag,\n });\n }\n }\n\n private async restoreRollbackTag(\n packageName: string,\n { registry, tag }: PublishData,\n version: string\n ) {\n const rollbackTag = buildRollbackTag(tag);\n\n log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);\n\n await npmTagVersion({\n packageName,\n packageVersion: version,\n registry,\n tag: rollbackTag,\n });\n }\n}\n"],"names":["MFEPackagePublish","mfePackagePublishOptions","branch","string","description","defaultDescription","build","dry","boolean","force","registry","hidden","trackHistory","tag","uploadSourcemaps","Command","execute","args","log","warning","packageJson","readJson","data","getPublishData","name","checkPackage","maybeApplyRollbackTag","maybePublishPackage","dryRunPrefix","DRY_RUN_PREFIX","isBranchConfigured","isWebComponent","Error","private","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageName","packageVersion","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","error","versionOriginallyTaggedWithRollback","publishedTags","buildRollbackTag","restoreRollbackTag","options","filter","option","runCommand","join","cli","npmView","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","getDefaultBuildVersion","gitGetCommitHash","DEFAULT_MFE_REGISTRY","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","previousVersion","prevTag","rollbackTag"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { Command } from './types';
2
+ export declare const mfePackageRollbackOptions: {
3
+ dry: {
4
+ boolean: true;
5
+ description: string;
6
+ };
7
+ registry: {
8
+ string: true;
9
+ hidden: true;
10
+ description: string;
11
+ };
12
+ tag: {
13
+ string: true;
14
+ description: string;
15
+ required: true;
16
+ };
17
+ };
18
+ export declare class MFEPackageRollback extends Command<typeof mfePackageRollbackOptions> {
19
+ static readonly description = "Rollback a package to a previous tagged version";
20
+ static readonly options: {
21
+ dry: {
22
+ boolean: true;
23
+ description: string;
24
+ };
25
+ registry: {
26
+ string: true;
27
+ hidden: true;
28
+ description: string;
29
+ };
30
+ tag: {
31
+ string: true;
32
+ description: string;
33
+ required: true;
34
+ };
35
+ };
36
+ private get dryRunPrefix();
37
+ execute(): Promise<void>;
38
+ private handleRollback;
39
+ }
40
+ //# sourceMappingURL=mfe-package-rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfe-package-rollback.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-package-rollback.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,SAAS,CAAC;AAGlD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;CAeZ,CAAC;AAM3B,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,OAAO,yBAAyB,CAAC;IAC7E,MAAM,CAAC,QAAQ,CAAC,WAAW,qDAAqD;IAEhF,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;MAA6B;IAEpD,OAAO,KAAK,YAAY,GAEvB;IAGK,OAAO;YAQC,cAAc;CAuD/B"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get MFEPackageRollback () {
13
+ return MFEPackageRollback;
14
+ },
15
+ get mfePackageRollbackOptions () {
16
+ return mfePackageRollbackOptions;
17
+ }
18
+ });
19
+ const _utils = require("../../utils");
20
+ const _utils1 = require("../utils");
21
+ const _types = require("./types");
22
+ const _utils2 = require("./utils");
23
+ function _define_property(obj, key, value) {
24
+ if (key in obj) {
25
+ Object.defineProperty(obj, key, {
26
+ value: value,
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true
30
+ });
31
+ } else {
32
+ obj[key] = value;
33
+ }
34
+ return obj;
35
+ }
36
+ function _ts_decorate(decorators, target, key, desc) {
37
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
40
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
41
+ }
42
+ function _ts_metadata(k, v) {
43
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
44
+ }
45
+ const mfePackageRollbackOptions = {
46
+ dry: {
47
+ boolean: true,
48
+ description: 'Take no action and only log what would be rolled back'
49
+ },
50
+ registry: {
51
+ string: true,
52
+ hidden: true,
53
+ description: 'Registry url'
54
+ },
55
+ tag: {
56
+ string: true,
57
+ description: 'The tag to rollback to its previous version',
58
+ required: true
59
+ }
60
+ };
61
+ class MFEPackageRollback extends _types.Command {
62
+ get dryRunPrefix() {
63
+ return this.args.dry ? _utils1.DRY_RUN_PREFIX : '';
64
+ }
65
+ async execute() {
66
+ if (this.args.dry) {
67
+ _utils.log.warning('DRY-RUN MODE ENABLED, WILL NOT PERFORM ROLLBACK');
68
+ }
69
+ await this.handleRollback();
70
+ }
71
+ async handleRollback() {
72
+ var _ref;
73
+ const { tag, registry = _utils2.DEFAULT_MFE_REGISTRY, dry } = this.args;
74
+ const packageJson = (0, _utils.readJson)('package.json');
75
+ const packageName = packageJson.name;
76
+ _utils.log.info(`${this.dryRunPrefix}Rolling back ${packageName} for tag "${tag}"`);
77
+ const packageInfo = (0, _utils1.npmView)({
78
+ packageName,
79
+ registry
80
+ });
81
+ if (!packageInfo) {
82
+ throw new Error(`Package ${packageName} not found in registry`);
83
+ }
84
+ const distTags = (_ref = packageInfo === null || packageInfo === void 0 ? void 0 : packageInfo['dist-tags']) !== null && _ref !== void 0 ? _ref : {};
85
+ const rollbackTag = (0, _utils2.buildRollbackTag)(tag);
86
+ const rollbackVersion = distTags[rollbackTag];
87
+ if (!rollbackVersion) {
88
+ throw new Error(`No rollback version found for tag "${tag}" (looking for "${rollbackTag}")`);
89
+ }
90
+ _utils.log.info(`${this.dryRunPrefix}Found rollback version ${rollbackVersion} for tag "${rollbackTag}"`);
91
+ const currentVersion = distTags[tag];
92
+ if (currentVersion === rollbackVersion) {
93
+ _utils.log.info(`${this.dryRunPrefix}Tags "${tag}" and "${rollbackTag}" both point to version ${rollbackVersion}, skipping rollback`);
94
+ return;
95
+ }
96
+ if (currentVersion) {
97
+ _utils.log.info(`${this.dryRunPrefix}Current tag "${tag}" points to version ${currentVersion}`);
98
+ }
99
+ _utils.log.info(`${this.dryRunPrefix}Rolling back ${packageName} tag "${tag}" to version ${rollbackVersion}`);
100
+ if (!dry) {
101
+ await (0, _utils1.npmTagVersion)({
102
+ packageName,
103
+ packageVersion: rollbackVersion,
104
+ registry,
105
+ tag
106
+ });
107
+ }
108
+ }
109
+ }
110
+ _define_property(MFEPackageRollback, "description", 'Rollback a package to a previous tagged version');
111
+ _define_property(MFEPackageRollback, "options", mfePackageRollbackOptions);
112
+ _ts_decorate([
113
+ _utils.logErrors,
114
+ _ts_metadata("design:type", Function),
115
+ _ts_metadata("design:paramtypes", []),
116
+ _ts_metadata("design:returntype", Promise)
117
+ ], MFEPackageRollback.prototype, "execute", null);
118
+
119
+ //# sourceMappingURL=mfe-package-rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-package-rollback.ts"],"sourcesContent":["import { log, logErrors, readJson } from '../../utils';\nimport { DRY_RUN_PREFIX, npmTagVersion, npmView } from '../utils';\nimport { Command, CommandOptions } from './types';\nimport { buildRollbackTag, DEFAULT_MFE_REGISTRY } from './utils';\n\nexport const mfePackageRollbackOptions = {\n dry: {\n boolean: true,\n description: 'Take no action and only log what would be rolled back',\n },\n registry: {\n string: true,\n hidden: true,\n description: 'Registry url',\n },\n tag: {\n string: true,\n description: 'The tag to rollback to its previous version',\n required: true,\n },\n} satisfies CommandOptions;\n\ninterface PackageJson {\n name: string;\n}\n\nexport class MFEPackageRollback extends Command<typeof mfePackageRollbackOptions> {\n static readonly description = 'Rollback a package to a previous tagged version';\n\n static readonly options = mfePackageRollbackOptions;\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\n }\n\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PERFORM ROLLBACK');\n }\n\n await this.handleRollback();\n }\n\n private async handleRollback() {\n const { tag, registry = DEFAULT_MFE_REGISTRY, dry } = this.args;\n\n const packageJson = readJson<PackageJson>('package.json');\n const packageName = packageJson.name;\n\n log.info(`${this.dryRunPrefix}Rolling back ${packageName} for tag \"${tag}\"`);\n\n const packageInfo = npmView({ packageName, registry });\n if (!packageInfo) {\n throw new Error(`Package ${packageName} not found in registry`);\n }\n\n const distTags = packageInfo?.['dist-tags'] ?? {};\n\n const rollbackTag = buildRollbackTag(tag);\n const rollbackVersion = distTags[rollbackTag];\n\n if (!rollbackVersion) {\n throw new Error(\n `No rollback version found for tag \"${tag}\" (looking for \"${rollbackTag}\")`\n );\n }\n\n log.info(\n `${this.dryRunPrefix}Found rollback version ${rollbackVersion} for tag \"${rollbackTag}\"`\n );\n\n const currentVersion = distTags[tag];\n if (currentVersion === rollbackVersion) {\n log.info(\n `${this.dryRunPrefix}Tags \"${tag}\" and \"${rollbackTag}\" both point to version ${rollbackVersion}, skipping rollback`\n );\n return;\n }\n\n if (currentVersion) {\n log.info(\n `${this.dryRunPrefix}Current tag \"${tag}\" points to version ${currentVersion}`\n );\n }\n\n log.info(\n `${this.dryRunPrefix}Rolling back ${packageName} tag \"${tag}\" to version ${rollbackVersion}`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: rollbackVersion,\n registry,\n tag,\n });\n }\n }\n}\n"],"names":["MFEPackageRollback","mfePackageRollbackOptions","dry","boolean","description","registry","string","hidden","tag","required","Command","dryRunPrefix","args","DRY_RUN_PREFIX","execute","log","warning","handleRollback","DEFAULT_MFE_REGISTRY","packageJson","readJson","packageName","name","info","packageInfo","npmView","Error","distTags","rollbackTag","buildRollbackTag","rollbackVersion","currentVersion","npmTagVersion","packageVersion","options"],"mappings":";;;;;;;;;;;QA0BaA;eAAAA;;QArBAC;eAAAA;;;uBAL4B;wBACc;uBACf;wBACe;;;;;;;;;;;;;;;;;;;;;;;AAEhD,MAAMA,4BAA4B;IACrCC,KAAK;QACDC,SAAS;QACTC,aAAa;IACjB;IACAC,UAAU;QACNC,QAAQ;QACRC,QAAQ;QACRH,aAAa;IACjB;IACAI,KAAK;QACDF,QAAQ;QACRF,aAAa;QACbK,UAAU;IACd;AACJ;AAMO,MAAMT,2BAA2BU,cAAO;IAK3C,IAAYC,eAAe;QACvB,OAAO,IAAI,CAACC,IAAI,CAACV,GAAG,GAAGW,sBAAc,GAAG;IAC5C;IAEA,MACMC,UAAU;QACZ,IAAI,IAAI,CAACF,IAAI,CAACV,GAAG,EAAE;YACfa,UAAG,CAACC,OAAO,CAAC;QAChB;QAEA,MAAM,IAAI,CAACC,cAAc;IAC7B;IAEA,MAAcA,iBAAiB;;QAC3B,MAAM,EAAET,GAAG,EAAEH,WAAWa,4BAAoB,EAAEhB,GAAG,EAAE,GAAG,IAAI,CAACU,IAAI;QAE/D,MAAMO,cAAcC,IAAAA,eAAQ,EAAc;QAC1C,MAAMC,cAAcF,YAAYG,IAAI;QAEpCP,UAAG,CAACQ,IAAI,CAAC,GAAG,IAAI,CAACZ,YAAY,CAAC,aAAa,EAAEU,YAAY,UAAU,EAAEb,IAAI,CAAC,CAAC;QAE3E,MAAMgB,cAAcC,IAAAA,eAAO,EAAC;YAAEJ;YAAahB;QAAS;QACpD,IAAI,CAACmB,aAAa;YACd,MAAM,IAAIE,MAAM,CAAC,QAAQ,EAAEL,YAAY,sBAAsB,CAAC;QAClE;QAEA,MAAMM,mBAAWH,wBAAAA,kCAAAA,WAAa,CAAC,YAAY,uCAAI,CAAC;QAEhD,MAAMI,cAAcC,IAAAA,wBAAgB,EAACrB;QACrC,MAAMsB,kBAAkBH,QAAQ,CAACC,YAAY;QAE7C,IAAI,CAACE,iBAAiB;YAClB,MAAM,IAAIJ,MACN,CAAC,mCAAmC,EAAElB,IAAI,gBAAgB,EAAEoB,YAAY,EAAE,CAAC;QAEnF;QAEAb,UAAG,CAACQ,IAAI,CACJ,GAAG,IAAI,CAACZ,YAAY,CAAC,uBAAuB,EAAEmB,gBAAgB,UAAU,EAAEF,YAAY,CAAC,CAAC;QAG5F,MAAMG,iBAAiBJ,QAAQ,CAACnB,IAAI;QACpC,IAAIuB,mBAAmBD,iBAAiB;YACpCf,UAAG,CAACQ,IAAI,CACJ,GAAG,IAAI,CAACZ,YAAY,CAAC,MAAM,EAAEH,IAAI,OAAO,EAAEoB,YAAY,wBAAwB,EAAEE,gBAAgB,mBAAmB,CAAC;YAExH;QACJ;QAEA,IAAIC,gBAAgB;YAChBhB,UAAG,CAACQ,IAAI,CACJ,GAAG,IAAI,CAACZ,YAAY,CAAC,aAAa,EAAEH,IAAI,oBAAoB,EAAEuB,gBAAgB;QAEtF;QAEAhB,UAAG,CAACQ,IAAI,CACJ,GAAG,IAAI,CAACZ,YAAY,CAAC,aAAa,EAAEU,YAAY,MAAM,EAAEb,IAAI,aAAa,EAAEsB,iBAAiB;QAGhG,IAAI,CAAC5B,KAAK;YACN,MAAM8B,IAAAA,qBAAa,EAAC;gBAChBX;gBACAY,gBAAgBH;gBAChBzB;gBACAG;YACJ;QACJ;IACJ;AACJ;AAxEI,iBADSR,oBACOI,eAAc;AAE9B,iBAHSJ,oBAGOkC,WAAUjC"}
@@ -1,30 +1,55 @@
1
- import { Args as CleanArgs } from './mfe-package-clean';
2
- import { Args as PublishArgs } from './mfe-package-publish';
1
+ import { mfePackageCleanOptions } from './mfe-package-clean';
2
+ import { mfePackagePublishOptions } from './mfe-package-publish';
3
+ import { mfePackageRollbackOptions } from './mfe-package-rollback';
3
4
  import { Command } from './types';
4
- interface Args extends PublishArgs, CleanArgs {
5
- clean?: boolean;
6
- concurrency?: number;
7
- scope?: string | string[];
8
- }
9
- export declare class MFEPublish extends Command<Args> {
5
+ declare const mfePublishOwnOptions: {
6
+ clean: {
7
+ boolean: true;
8
+ description: string;
9
+ };
10
+ concurrency: {
11
+ number: true;
12
+ description: string;
13
+ defaultDescription: string;
14
+ };
15
+ rollback: {
16
+ boolean: true;
17
+ description: string;
18
+ };
19
+ scope: {
20
+ array: true;
21
+ string: true;
22
+ description: string;
23
+ };
24
+ };
25
+ type MFEPublishOptions = typeof mfePublishOwnOptions & typeof mfePackagePublishOptions & typeof mfePackageCleanOptions & Omit<typeof mfePackageRollbackOptions, 'tag'> & {
26
+ tag: Omit<typeof mfePackageRollbackOptions.tag, 'required'>;
27
+ };
28
+ export declare class MFEPublish extends Command<MFEPublishOptions> {
10
29
  static readonly description = "Publish or unpublish MFE packages";
11
30
  static get options(): {
12
31
  clean: {
13
- boolean: boolean;
32
+ boolean: true;
14
33
  description: string;
15
34
  };
16
35
  concurrency: {
17
- number: boolean;
36
+ number: true;
18
37
  description: string;
19
38
  defaultDescription: string;
20
39
  };
40
+ rollback: {
41
+ boolean: true;
42
+ description: string;
43
+ };
21
44
  scope: {
22
- array: boolean;
45
+ array: true;
46
+ string: true;
23
47
  description: string;
24
48
  };
25
49
  };
26
50
  execute(): Promise<void>;
27
51
  getPublishOptions(): string[];
52
+ getRollbackOptions(): string[];
28
53
  getCleanOptions(): string[];
29
54
  }
30
55
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-publish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,IAAI,IAAI,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,UAAU,IAAK,SAAQ,WAAW,EAAE,SAAS;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,UAAW,SAAQ,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,CAAC,WAAW,uCAAuC;IAClE,MAAM,KAAK,OAAO;;;;;;;;;;;;;;MAkCjB;IAGK,OAAO;IAmBb,iBAAiB,IAYe,MAAM,EAAE;IAGxC,eAAe,IAQiB,MAAM,EAAE;CAE3C"}
1
+ {"version":3,"file":"mfe-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-publish.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAkB,MAAM,SAAS,CAAC;AAElD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;CAgBA,CAAC;AAE3B,KAAK,iBAAiB,GAAG,OAAO,oBAAoB,GAChD,OAAO,wBAAwB,GAC/B,OAAO,sBAAsB,GAE7B,IAAI,CAAC,OAAO,yBAAyB,EAAE,KAAK,CAAC,GAAG;IAC5C,GAAG,EAAE,IAAI,CAAC,OAAO,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;CAC/D,CAAC;AAEN,qBAAa,UAAW,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IACtD,MAAM,CAAC,QAAQ,CAAC,WAAW,uCAAuC;IAClE,MAAM,KAAK,OAAO;;;;;;;;;;;;;;;;;;;MA0CjB;IAGK,OAAO;IAgCb,iBAAiB,IAce,MAAM,EAAE;IAGxC,kBAAkB,IAMc,MAAM,EAAE;IAGxC,eAAe,IAQiB,MAAM,EAAE;CAE3C"}