@servicetitan/startup 33.1.1 → 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
@@ -1,12 +1,14 @@
1
1
  /**
2
2
  * @jest-environment node
3
3
  */
4
- import { Package, PackageType, getPackages, log } from '../../../utils';
5
4
  import { createPackage } from '../../../__mocks__';
6
- import { lernaExec, compile, typeCheck } from '../../utils';
5
+ import { Package, PackageType, getPackages, log } from '../../../utils';
6
+ import { compile, lernaExec, typeCheck } from '../../utils';
7
+ import { Build } from '../build';
7
8
  import { kendoUILicense } from '../kendo-ui-license';
8
9
 
9
- import { Build } from '../build';
10
+ jest.mock('yargs', () => jest.fn());
11
+ jest.mock('yargs/helpers', () => ({ hideBin: jest.fn() }));
10
12
 
11
13
  jest.mock('../../../utils', () => ({
12
14
  ...jest.requireActual('../../../utils'),
@@ -60,6 +62,25 @@ describe(`[startup] ${Build.name}`, () => {
60
62
  });
61
63
  }
62
64
 
65
+ function itRunsPrebuildScript() {
66
+ describe('when package has "precompile" script', () => {
67
+ beforeEach(() => {
68
+ packages[0].scripts = { precompile: 'foo' };
69
+ });
70
+
71
+ test('runs precompile script', async () => {
72
+ await subject();
73
+
74
+ expect(lernaExec).toHaveBeenCalledWith({
75
+ cmd: 'npm run precompile',
76
+ scope: [packages[0].name],
77
+ parallel: true,
78
+ stream: true,
79
+ });
80
+ });
81
+ });
82
+ }
83
+
63
84
  test('command is greedy', () => {
64
85
  expect(Build.greedy).toBe(true);
65
86
  });
@@ -75,9 +96,10 @@ describe(`[startup] ${Build.name}`, () => {
75
96
 
76
97
  itPreparesThePackage();
77
98
  itRunsCompileAndTypeCheck();
99
+ itRunsPrebuildScript();
78
100
 
79
101
  describe('with --use-tsc flag', () => {
80
- beforeEach(() => (args['use-tsc'] = true));
102
+ beforeEach(() => (args.useTsc = true));
81
103
 
82
104
  itPreparesThePackage();
83
105
  itRunsCompileAndTypeCheck({ useTsc: true });
@@ -89,6 +111,7 @@ describe(`[startup] ${Build.name}`, () => {
89
111
 
90
112
  itPreparesThePackage();
91
113
  itRunsCompileAndTypeCheck();
114
+ itRunsPrebuildScript();
92
115
 
93
116
  test('registers Kendo UI license', async () => {
94
117
  await subject();
@@ -120,7 +143,7 @@ describe(`[startup] ${Build.name}`, () => {
120
143
  });
121
144
 
122
145
  describe('with "code-coverage"', () => {
123
- beforeEach(() => (args['code-coverage'] = true));
146
+ beforeEach(() => (args.codeCoverage = true));
124
147
 
125
148
  test('enables code-coverage', async () => {
126
149
  await subject();
@@ -165,20 +188,20 @@ describe(`[startup] ${Build.name}`, () => {
165
188
  });
166
189
 
167
190
  describe('with "cdn-path"', () => {
168
- beforeEach(() => (args['cdn-path'] = 'https://example.com/foo'));
191
+ beforeEach(() => (args.cdnPath = 'https://example.com/foo'));
169
192
 
170
193
  afterEach(() => delete process.env.CLIENT_CDN_PATH);
171
194
 
172
195
  test('sets process.env.CLIENT_CDN_PATH', async () => {
173
196
  await subject();
174
197
 
175
- expect(process.env.CLIENT_CDN_PATH).toBe(args['cdn-path']);
198
+ expect(process.env.CLIENT_CDN_PATH).toBe(args.cdnPath);
176
199
  });
177
200
  });
178
201
  });
179
202
 
180
203
  describe('with "scope"', () => {
181
- beforeEach(() => (args.scope = 'foo'));
204
+ beforeEach(() => (args.scope = ['foo']));
182
205
 
183
206
  test('selects scoped packages', async () => {
184
207
  await subject();
@@ -190,7 +213,7 @@ describe(`[startup] ${Build.name}`, () => {
190
213
  });
191
214
 
192
215
  describe('with "ignore"', () => {
193
- beforeEach(() => (args.ignore = 'foo'));
216
+ beforeEach(() => (args.ignore = ['foo']));
194
217
 
195
218
  test('selectively ignores packages', async () => {
196
219
  await subject();
@@ -1,10 +1,11 @@
1
1
  import { fs, vol } from 'memfs';
2
2
  import { log } from '../../../utils';
3
3
  import { bundle } from '../../utils';
4
-
5
4
  import { BundlePackage } from '../bundle-package';
6
5
 
7
6
  jest.mock('fs', () => fs);
7
+ jest.mock('yargs', () => jest.fn());
8
+ jest.mock('yargs/helpers', () => ({ hideBin: jest.fn() }));
8
9
 
9
10
  jest.mock('../../../utils', () => ({
10
11
  ...jest.requireActual('../../../utils'),
@@ -1,34 +1,125 @@
1
- import { exec, execSync } from 'child_process';
1
+ import { fs, vol } from 'memfs';
2
+ import { exec, ExecException, execSync } from 'node:child_process';
2
3
  import { log } from '../../../utils';
3
4
  import { Clean } from '../clean';
4
5
 
5
- jest.mock('child_process', () => ({
6
+ jest.mock('node:fs', () => fs);
7
+ jest.mock('node:child_process', () => ({
6
8
  execSync: jest.fn(),
7
9
  exec: jest.fn(),
8
10
  }));
9
11
 
12
+ type ExecCallback = (error: ExecException | null, stdout: string, stderr: string) => void;
13
+
10
14
  describe(`[startup] ${Clean.name}`, () => {
15
+ const cachePath = '/test-npm-cache';
16
+ const npxCacheDirectoryName = '_npx';
17
+
11
18
  beforeEach(() => {
12
19
  jest.clearAllMocks();
13
20
  jest.spyOn(log, 'info').mockImplementation(jest.fn()); // suppress output
21
+ jest.spyOn(log, 'error').mockImplementation(jest.fn()); // suppress output
22
+ jest.mocked(execSync).mockImplementation((cmd: string) =>
23
+ cmd === 'npm config get cache' ? cachePath : ''
24
+ );
25
+ // @ts-expect-error this is a valid exec overload but TS shows an error
26
+ jest.mocked(exec).mockImplementation((_cmd: string, callback?: ExecCallback) => {
27
+ if (callback) {
28
+ process.nextTick(() => callback(null, '', ''));
29
+ }
30
+ return {} as ReturnType<typeof exec>;
31
+ });
32
+ vol.fromNestedJSON({
33
+ [cachePath]: {
34
+ [npxCacheDirectoryName]: {
35
+ 'some-package': {},
36
+ },
37
+ },
38
+ });
39
+ });
40
+
41
+ const subject = async () => new Clean({}).execute();
42
+
43
+ test('allows running from global location', () => {
44
+ expect(Clean.allowRunFromGlobal).toBe(true);
14
45
  });
15
46
 
16
- const subject = async () => new Clean().execute();
47
+ function itLogsError(expectedMessage: string) {
48
+ test('logs error', async () => {
49
+ await subject();
50
+
51
+ expect(log.error).toHaveBeenCalledWith(expect.stringContaining(expectedMessage));
52
+ });
53
+ }
54
+
55
+ function itRunsGitClean() {
56
+ test('runs "git clean -fdX"', async () => {
57
+ await subject();
58
+
59
+ expect(exec).toHaveBeenCalledWith('git clean -fdX', expect.any(Function));
60
+ });
61
+ }
62
+
63
+ function failExecOn(command: string) {
64
+ // @ts-expect-error this is a valid exec overload but TS shows an error
65
+ jest.mocked(exec).mockImplementation((cmd: string, callback?: ExecCallback) => {
66
+ if (callback) {
67
+ process.nextTick(() => {
68
+ if (cmd === command) {
69
+ callback(new Error(`${command} failed`), '', '');
70
+ } else {
71
+ callback(null, '', '');
72
+ }
73
+ });
74
+ }
75
+ return {} as ReturnType<typeof exec>;
76
+ });
77
+ }
17
78
 
18
79
  test.each(['npx nx reset', 'npx jest --clearCache', 'npm cache clear --force'])(
19
80
  'runs "%s"',
20
81
  async command => {
21
82
  await subject();
22
83
 
23
- expect(execSync).toHaveBeenCalledWith(command, {
24
- stdio: ['ignore', 'ignore', 'inherit'],
25
- });
84
+ expect(exec).toHaveBeenCalledWith(command, expect.any(Function));
26
85
  }
27
86
  );
28
87
 
29
- test('runs "git clean -fdX"', async () => {
88
+ itRunsGitClean();
89
+
90
+ test('clears npx cache', async () => {
30
91
  await subject();
31
92
 
32
- expect(exec).toHaveBeenCalledWith('git clean -fdX');
93
+ expect(vol.existsSync(`${cachePath}/${npxCacheDirectoryName}`)).toBe(false);
94
+ });
95
+
96
+ describe('when "npx nx reset" fails', () => {
97
+ beforeEach(() => {
98
+ failExecOn('npx nx reset');
99
+ });
100
+
101
+ itLogsError('Error running npx nx reset');
102
+ itRunsGitClean();
103
+
104
+ test('runs remaining commands', async () => {
105
+ await subject();
106
+
107
+ expect(exec).toHaveBeenCalledWith('npx jest --clearCache', expect.any(Function));
108
+ expect(exec).toHaveBeenCalledWith('npm cache clear --force', expect.any(Function));
109
+ });
110
+ });
111
+
112
+ describe('when clearing npx cache fails', () => {
113
+ beforeEach(() => {
114
+ jest.mocked(execSync).mockImplementation(cmd => {
115
+ if (cmd === 'npm config get cache') {
116
+ throw new Error('cache path error');
117
+ }
118
+ return '';
119
+ });
120
+ });
121
+
122
+ itLogsError('Error clearing npx cache');
123
+ itRunsGitClean();
33
124
  });
34
125
  });
@@ -1,9 +1,12 @@
1
- import execa from 'execa';
2
1
  import { fs, vol } from 'memfs';
2
+ import { prettify } from '../../../utils';
3
3
  import { ConvertEslintConfig } from '../convert-eslint-config';
4
4
 
5
5
  jest.mock('fs', () => fs);
6
- jest.mock('execa', () => jest.fn());
6
+ jest.mock('../../../utils', () => ({
7
+ ...jest.requireActual('../../../utils'),
8
+ prettify: jest.fn(),
9
+ }));
7
10
 
8
11
  describe(`[startup] ${ConvertEslintConfig.name}`, () => {
9
12
  const eslintignoreFile = '.eslintignore';
@@ -17,7 +20,7 @@ describe(`[startup] ${ConvertEslintConfig.name}`, () => {
17
20
  });
18
21
 
19
22
  const subject = async () => {
20
- await new ConvertEslintConfig().execute();
23
+ await new ConvertEslintConfig({}).execute();
21
24
  return fs.readFileSync(outputFile, 'utf-8').toString();
22
25
  };
23
26
 
@@ -37,6 +40,10 @@ describe(`[startup] ${ConvertEslintConfig.name}`, () => {
37
40
  vol.fromJSON({ [eslintrcFile]: JSON.stringify(config) });
38
41
  }
39
42
 
43
+ test('allows running from global location', () => {
44
+ expect(ConvertEslintConfig.allowRunFromGlobal).toBe(true);
45
+ });
46
+
40
47
  describe(`when ${eslintrcFile} does not exist`, () => {
41
48
  beforeEach(() => fs.rmSync(eslintrcFile));
42
49
 
@@ -413,16 +420,14 @@ describe(`[startup] ${ConvertEslintConfig.name}`, () => {
413
420
  test('prettifies the output', async () => {
414
421
  await subject();
415
422
 
416
- expect(execa).toHaveBeenCalledWith('npx', ['prettier', '-w', outputFile], {
417
- stdout: 'ignore',
418
- });
423
+ expect(prettify).toHaveBeenCalledWith(outputFile);
419
424
  });
420
425
 
421
426
  describe('when prettier fails', () => {
422
- const exitCode = 123;
423
-
424
427
  beforeEach(() => {
425
- jest.mocked(execa).mockRejectedValue({ exitCode });
428
+ jest.mocked(prettify).mockRejectedValue(
429
+ new Error('prettier failed with exit code 123')
430
+ );
426
431
  });
427
432
 
428
433
  itReportsError(/prettier failed with exit code/);
@@ -25,7 +25,7 @@ describe(`[startup] ${ESLintCommand.name}`, () => {
25
25
 
26
26
  expect(eslint).toHaveBeenCalledWith({
27
27
  fix: args.fix,
28
- paths: [...args._, ...args.paths!],
28
+ paths: [...(args._ ?? []), ...args.paths!],
29
29
  });
30
30
  });
31
31
  });
@@ -2,9 +2,11 @@
2
2
  * @jest-environment node
3
3
  */
4
4
  import { CommandName } from '../../../utils';
5
-
6
5
  import { getCommand } from '../get-command';
7
6
 
7
+ jest.mock('yargs', () => jest.fn());
8
+ jest.mock('yargs/helpers', () => ({ hideBin: jest.fn() }));
9
+
8
10
  describe(`${getCommand.name}`, () => {
9
11
  const subject = (name: CommandName) => getCommand(name);
10
12
 
@@ -2,7 +2,6 @@ import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';
2
2
  import fs from 'fs';
3
3
  import { vol } from 'memfs';
4
4
  import path from 'path';
5
-
6
5
  import { log } from '../../../utils';
7
6
  import { Init } from '../init';
8
7
 
@@ -26,6 +25,10 @@ describe(`[startup] ${Init.name}`, () => {
26
25
 
27
26
  const subject = async () => new Init(args).execute();
28
27
 
28
+ test('allows running from global location', () => {
29
+ expect(Init.allowRunFromGlobal).toBe(true);
30
+ });
31
+
29
32
  test('clones "frontend-example" to current directory', async () => {
30
33
  const cwd = path.resolve('.');
31
34
  await subject();
@@ -42,6 +45,16 @@ describe(`[startup] ${Init.name}`, () => {
42
45
  describe('when cloning fails', () => {
43
46
  beforeEach(() => jest.mocked(gitCloneRepo).mockReturnValue(false));
44
47
 
48
+ describe('when repo is reachable', () => {
49
+ beforeEach(() => {
50
+ jest.mocked(gitIsReachable).mockReturnValue(true);
51
+ });
52
+
53
+ test('resolves without error', async () => {
54
+ await expect(subject()).resolves.toBeUndefined();
55
+ });
56
+ });
57
+
45
58
  describe('when repo is not reachable', () => {
46
59
  beforeEach(() => {
47
60
  jest.mocked(gitIsReachable).mockReturnValue(false);
@@ -1,6 +1,5 @@
1
1
  import { execSync } from 'child_process';
2
2
  import { getStartupVersion, log } from '../../../utils';
3
-
4
3
  import { Install } from '../install';
5
4
 
6
5
  jest.mock('child_process', () => ({ execSync: jest.fn() }));
@@ -22,13 +21,18 @@ describe(`${Install.name}`, () => {
22
21
 
23
22
  const subject = async () => new Install(args).execute();
24
23
 
24
+ test('allows running from global location', () => {
25
+ expect(Install.allowRunFromGlobal).toBe(true);
26
+ });
27
+
25
28
  test('runs install', async () => {
26
29
  await subject();
27
30
 
28
31
  expect(execSync).toHaveBeenCalledWith(`npx @servicetitan/install`, { stdio: 'inherit' });
29
32
  });
30
33
 
31
- describe.each(['fix', 'quiet', 'token'])('with --%s', option => {
34
+ const keys = ['fix', 'quiet', 'token'] satisfies (keyof typeof args)[];
35
+ describe.each(keys)('with --%s', option => {
32
36
  beforeEach(() => (args[option] = true));
33
37
 
34
38
  test(`runs install with --${option}`, async () => {
@@ -1,10 +1,11 @@
1
1
  import execa from 'execa';
2
-
3
2
  import { log } from '../../../utils';
4
3
  import { isModuleInstalled } from '../../utils';
5
- import { kendoUILicense } from '../kendo-ui-license';
4
+ import { KendoUILicense, kendoUILicense } from '../kendo-ui-license';
6
5
 
7
6
  jest.mock('execa', () => jest.fn());
7
+ jest.mock('yargs', () => jest.fn());
8
+ jest.mock('yargs/helpers', () => ({ hideBin: jest.fn() }));
8
9
 
9
10
  jest.mock('../../../utils', () => ({
10
11
  ...jest.requireActual('../../../utils'),
@@ -24,6 +25,10 @@ describe(`${kendoUILicense.name}`, () => {
24
25
 
25
26
  const subject = async () => kendoUILicense();
26
27
 
28
+ test('allows running from global location', () => {
29
+ expect(KendoUILicense.allowRunFromGlobal).toBe(true);
30
+ });
31
+
27
32
  test('activates license', async () => {
28
33
  await subject();
29
34
 
@@ -1,9 +1,11 @@
1
- import { Lint } from '../lint';
2
- import { eslint, lernaExec } from '../../utils';
3
1
  import { getPackages } from '../../../utils';
2
+ import { eslint, lernaExec } from '../../utils';
4
3
  import { stylelint } from '../../utils/stylelint';
4
+ import { Lint } from '../lint';
5
5
 
6
6
  jest.mock('stylelint', () => ({ lint: jest.fn() }));
7
+ jest.mock('yargs', () => jest.fn());
8
+ jest.mock('yargs/helpers', () => ({ hideBin: jest.fn() }));
7
9
 
8
10
  jest.mock('../../utils');
9
11
  jest.mock('../../utils/stylelint');