@servicetitan/startup 22.17.0 → 22.19.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 (321) hide show
  1. package/dist/cli/commands/build.d.ts +3 -2
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +1 -0
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +2 -1
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +4 -3
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/mfe-publish.d.ts +1 -0
  10. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  11. package/dist/cli/commands/mfe-publish.js +3 -2
  12. package/dist/cli/commands/mfe-publish.js.map +1 -1
  13. package/dist/cli/commands/start.d.ts +3 -2
  14. package/dist/cli/commands/start.d.ts.map +1 -1
  15. package/dist/cli/commands/start.js +3 -2
  16. package/dist/cli/commands/start.js.map +1 -1
  17. package/dist/cli/utils/bundle.d.ts +7 -2
  18. package/dist/cli/utils/bundle.d.ts.map +1 -1
  19. package/dist/cli/utils/bundle.js +28 -58
  20. package/dist/cli/utils/bundle.js.map +1 -1
  21. package/dist/cli/utils/set-node-options.d.ts.map +1 -1
  22. package/dist/cli/utils/set-node-options.js +1 -1
  23. package/dist/cli/utils/set-node-options.js.map +1 -1
  24. package/dist/utils/debug.d.ts +5 -0
  25. package/dist/utils/debug.d.ts.map +1 -0
  26. package/dist/utils/debug.js +19 -0
  27. package/dist/utils/debug.js.map +1 -0
  28. package/dist/utils/get-configuration.d.ts +1 -0
  29. package/dist/utils/get-configuration.d.ts.map +1 -1
  30. package/dist/utils/get-configuration.js +6 -1
  31. package/dist/utils/get-configuration.js.map +1 -1
  32. package/dist/utils/log.d.ts +6 -0
  33. package/dist/utils/log.d.ts.map +1 -1
  34. package/dist/utils/log.js +22 -0
  35. package/dist/utils/log.js.map +1 -1
  36. package/dist/webpack/__mocks__/file-rules.d.ts +3 -0
  37. package/dist/webpack/__mocks__/file-rules.d.ts.map +1 -0
  38. package/dist/webpack/__mocks__/file-rules.js +31 -0
  39. package/dist/webpack/__mocks__/file-rules.js.map +1 -0
  40. package/dist/webpack/__mocks__/index.d.ts +3 -0
  41. package/dist/webpack/__mocks__/index.d.ts.map +1 -0
  42. package/dist/webpack/__mocks__/index.js +19 -0
  43. package/dist/webpack/__mocks__/index.js.map +1 -0
  44. package/dist/webpack/__mocks__/style-rules.d.ts +8 -0
  45. package/dist/webpack/__mocks__/style-rules.d.ts.map +1 -0
  46. package/dist/webpack/__mocks__/style-rules.js +124 -0
  47. package/dist/webpack/__mocks__/style-rules.js.map +1 -0
  48. package/dist/webpack/configs/cache-config.d.ts +6 -0
  49. package/dist/webpack/configs/cache-config.d.ts.map +1 -0
  50. package/dist/webpack/configs/cache-config.js +24 -0
  51. package/dist/webpack/configs/cache-config.js.map +1 -0
  52. package/dist/webpack/configs/dev-server-config.d.ts +6 -0
  53. package/dist/webpack/configs/dev-server-config.d.ts.map +1 -0
  54. package/dist/webpack/configs/dev-server-config.js +27 -0
  55. package/dist/webpack/configs/dev-server-config.js.map +1 -0
  56. package/dist/webpack/configs/devtool-config.d.ts +6 -0
  57. package/dist/webpack/configs/devtool-config.d.ts.map +1 -0
  58. package/dist/webpack/configs/devtool-config.js +16 -0
  59. package/dist/webpack/configs/devtool-config.js.map +1 -0
  60. package/dist/webpack/configs/entry.config.d.ts +6 -0
  61. package/dist/webpack/configs/entry.config.d.ts.map +1 -0
  62. package/dist/webpack/configs/entry.config.js +14 -0
  63. package/dist/webpack/configs/entry.config.js.map +1 -0
  64. package/dist/webpack/configs/externals-config.d.ts +6 -0
  65. package/dist/webpack/configs/externals-config.d.ts.map +1 -0
  66. package/dist/webpack/configs/externals-config.js +16 -0
  67. package/dist/webpack/configs/externals-config.js.map +1 -0
  68. package/dist/webpack/configs/index.d.ts +13 -0
  69. package/dist/webpack/configs/index.d.ts.map +1 -0
  70. package/dist/webpack/configs/index.js +29 -0
  71. package/dist/webpack/configs/index.js.map +1 -0
  72. package/dist/webpack/configs/loaders/css-loader.d.ts +14 -0
  73. package/dist/webpack/configs/loaders/css-loader.d.ts.map +1 -0
  74. package/dist/webpack/configs/loaders/css-loader.js +17 -0
  75. package/dist/webpack/configs/loaders/css-loader.js.map +1 -0
  76. package/dist/webpack/configs/loaders/index.d.ts +5 -0
  77. package/dist/webpack/configs/loaders/index.d.ts.map +1 -0
  78. package/dist/webpack/configs/loaders/index.js +21 -0
  79. package/dist/webpack/configs/loaders/index.js.map +1 -0
  80. package/dist/webpack/configs/loaders/less-loader.d.ts +9 -0
  81. package/dist/webpack/configs/loaders/less-loader.d.ts.map +1 -0
  82. package/dist/webpack/configs/loaders/less-loader.js +8 -0
  83. package/dist/webpack/configs/loaders/less-loader.js.map +1 -0
  84. package/dist/webpack/configs/loaders/style-loader.d.ts +9 -0
  85. package/dist/webpack/configs/loaders/style-loader.d.ts.map +1 -0
  86. package/dist/webpack/configs/loaders/style-loader.js +13 -0
  87. package/dist/webpack/configs/loaders/style-loader.js.map +1 -0
  88. package/dist/webpack/configs/loaders/types.d.ts +4 -0
  89. package/dist/webpack/configs/loaders/types.d.ts.map +1 -0
  90. package/dist/webpack/configs/loaders/types.js +3 -0
  91. package/dist/webpack/configs/loaders/types.js.map +1 -0
  92. package/dist/webpack/configs/module-config.d.ts +6 -0
  93. package/dist/webpack/configs/module-config.d.ts.map +1 -0
  94. package/dist/webpack/configs/module-config.js +10 -0
  95. package/dist/webpack/configs/module-config.js.map +1 -0
  96. package/dist/webpack/configs/optimization-config.d.ts +6 -0
  97. package/dist/webpack/configs/optimization-config.d.ts.map +1 -0
  98. package/dist/webpack/configs/optimization-config.js +57 -0
  99. package/dist/webpack/configs/optimization-config.js.map +1 -0
  100. package/dist/webpack/configs/output-config.d.ts +6 -0
  101. package/dist/webpack/configs/output-config.d.ts.map +1 -0
  102. package/dist/webpack/configs/output-config.js +23 -0
  103. package/dist/webpack/configs/output-config.js.map +1 -0
  104. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts +4 -0
  105. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -0
  106. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +34 -0
  107. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -0
  108. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts +3 -0
  109. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -0
  110. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +20 -0
  111. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -0
  112. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts +4 -0
  113. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -0
  114. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +25 -0
  115. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -0
  116. package/dist/webpack/configs/plugins/define-web-component-name-plugin.d.ts +4 -0
  117. package/dist/webpack/configs/plugins/define-web-component-name-plugin.d.ts.map +1 -0
  118. package/dist/webpack/configs/plugins/define-web-component-name-plugin.js +16 -0
  119. package/dist/webpack/configs/plugins/define-web-component-name-plugin.js.map +1 -0
  120. package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts +3 -0
  121. package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts.map +1 -0
  122. package/dist/webpack/configs/plugins/filter-warnings-plugin.js +14 -0
  123. package/dist/webpack/configs/plugins/filter-warnings-plugin.js.map +1 -0
  124. package/dist/webpack/configs/plugins/html-plugin.d.ts +4 -0
  125. package/dist/webpack/configs/plugins/html-plugin.d.ts.map +1 -0
  126. package/dist/webpack/configs/plugins/html-plugin.js +42 -0
  127. package/dist/webpack/configs/plugins/html-plugin.js.map +1 -0
  128. package/dist/webpack/configs/plugins/index.d.ts +12 -0
  129. package/dist/webpack/configs/plugins/index.d.ts.map +1 -0
  130. package/dist/webpack/configs/plugins/index.js +28 -0
  131. package/dist/webpack/configs/plugins/index.js.map +1 -0
  132. package/dist/webpack/configs/plugins/mini-css-extract-plugin.d.ts +4 -0
  133. package/dist/webpack/configs/plugins/mini-css-extract-plugin.d.ts.map +1 -0
  134. package/dist/webpack/configs/plugins/mini-css-extract-plugin.js +23 -0
  135. package/dist/webpack/configs/plugins/mini-css-extract-plugin.js.map +1 -0
  136. package/dist/webpack/configs/plugins/moment-locales-plugin.d.ts +4 -0
  137. package/dist/webpack/configs/plugins/moment-locales-plugin.d.ts.map +1 -0
  138. package/dist/webpack/configs/plugins/moment-locales-plugin.js +14 -0
  139. package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -0
  140. package/dist/webpack/configs/plugins/provide-react-plugin.d.ts +4 -0
  141. package/dist/webpack/configs/plugins/provide-react-plugin.d.ts.map +1 -0
  142. package/dist/webpack/configs/plugins/provide-react-plugin.js +14 -0
  143. package/dist/webpack/configs/plugins/provide-react-plugin.js.map +1 -0
  144. package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts +4 -0
  145. package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts.map +1 -0
  146. package/dist/webpack/configs/plugins/ts-checker-plugin.js +31 -0
  147. package/dist/webpack/configs/plugins/ts-checker-plugin.js.map +1 -0
  148. package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts +4 -0
  149. package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts.map +1 -0
  150. package/dist/webpack/configs/plugins/virtual-modules-plugin.js +42 -0
  151. package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -0
  152. package/dist/webpack/configs/plugins-config.d.ts +6 -0
  153. package/dist/webpack/configs/plugins-config.d.ts.map +1 -0
  154. package/dist/webpack/configs/plugins-config.js +24 -0
  155. package/dist/webpack/configs/plugins-config.js.map +1 -0
  156. package/dist/webpack/configs/resolve-config.d.ts +6 -0
  157. package/dist/webpack/configs/resolve-config.d.ts.map +1 -0
  158. package/dist/webpack/configs/resolve-config.js +11 -0
  159. package/dist/webpack/configs/resolve-config.js.map +1 -0
  160. package/dist/webpack/configs/rules/css-rules.d.ts +4 -0
  161. package/dist/webpack/configs/rules/css-rules.d.ts.map +1 -0
  162. package/dist/webpack/configs/rules/css-rules.js +35 -0
  163. package/dist/webpack/configs/rules/css-rules.js.map +1 -0
  164. package/dist/webpack/configs/rules/font-rules.d.ts +4 -0
  165. package/dist/webpack/configs/rules/font-rules.d.ts.map +1 -0
  166. package/dist/webpack/configs/rules/font-rules.js +16 -0
  167. package/dist/webpack/configs/rules/font-rules.js.map +1 -0
  168. package/dist/webpack/configs/rules/image-rules.d.ts +4 -0
  169. package/dist/webpack/configs/rules/image-rules.d.ts.map +1 -0
  170. package/dist/webpack/configs/rules/image-rules.js +16 -0
  171. package/dist/webpack/configs/rules/image-rules.js.map +1 -0
  172. package/dist/webpack/configs/rules/index.d.ts +8 -0
  173. package/dist/webpack/configs/rules/index.d.ts.map +1 -0
  174. package/dist/webpack/configs/rules/index.js +24 -0
  175. package/dist/webpack/configs/rules/index.js.map +1 -0
  176. package/dist/webpack/configs/rules/js-rules.d.ts +4 -0
  177. package/dist/webpack/configs/rules/js-rules.d.ts.map +1 -0
  178. package/dist/webpack/configs/rules/js-rules.js +19 -0
  179. package/dist/webpack/configs/rules/js-rules.js.map +1 -0
  180. package/dist/webpack/configs/rules/less-rules.d.ts +4 -0
  181. package/dist/webpack/configs/rules/less-rules.d.ts.map +1 -0
  182. package/dist/webpack/configs/rules/less-rules.js +23 -0
  183. package/dist/webpack/configs/rules/less-rules.js.map +1 -0
  184. package/dist/webpack/configs/rules/scss-rules.d.ts +4 -0
  185. package/dist/webpack/configs/rules/scss-rules.d.ts.map +1 -0
  186. package/dist/webpack/configs/rules/scss-rules.js +23 -0
  187. package/dist/webpack/configs/rules/scss-rules.js.map +1 -0
  188. package/dist/webpack/configs/rules/tsx-rules.d.ts +4 -0
  189. package/dist/webpack/configs/rules/tsx-rules.d.ts.map +1 -0
  190. package/dist/webpack/configs/rules/tsx-rules.js +23 -0
  191. package/dist/webpack/configs/rules/tsx-rules.js.map +1 -0
  192. package/dist/webpack/configs/rules-config.d.ts +9 -0
  193. package/dist/webpack/configs/rules-config.d.ts.map +1 -0
  194. package/dist/webpack/configs/rules-config.js +31 -0
  195. package/dist/webpack/configs/rules-config.js.map +1 -0
  196. package/dist/webpack/configs/stats-config.d.ts +6 -0
  197. package/dist/webpack/configs/stats-config.d.ts.map +1 -0
  198. package/dist/webpack/configs/stats-config.js +16 -0
  199. package/dist/webpack/configs/stats-config.js.map +1 -0
  200. package/dist/webpack/configs/types.d.ts +15 -0
  201. package/dist/webpack/configs/types.d.ts.map +1 -0
  202. package/dist/webpack/configs/types.js +3 -0
  203. package/dist/webpack/configs/types.js.map +1 -0
  204. package/dist/webpack/configs/utils/generate-metadata.d.ts +3 -0
  205. package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -0
  206. package/dist/webpack/configs/utils/generate-metadata.js +31 -0
  207. package/dist/webpack/configs/utils/generate-metadata.js.map +1 -0
  208. package/dist/webpack/configs/utils/get-startup-version.d.ts +2 -0
  209. package/dist/webpack/configs/utils/get-startup-version.d.ts.map +1 -0
  210. package/dist/webpack/configs/utils/get-startup-version.js +13 -0
  211. package/dist/webpack/configs/utils/get-startup-version.js.map +1 -0
  212. package/dist/webpack/configs/utils/index.d.ts +2 -0
  213. package/dist/webpack/configs/utils/index.d.ts.map +1 -0
  214. package/dist/webpack/configs/utils/index.js +18 -0
  215. package/dist/webpack/configs/utils/index.js.map +1 -0
  216. package/dist/webpack/create-webpack-config.d.ts +4 -0
  217. package/dist/webpack/create-webpack-config.d.ts.map +1 -0
  218. package/dist/webpack/create-webpack-config.js +67 -0
  219. package/dist/webpack/create-webpack-config.js.map +1 -0
  220. package/dist/webpack/index.d.ts +2 -10
  221. package/dist/webpack/index.d.ts.map +1 -1
  222. package/dist/webpack/index.js +16 -21
  223. package/dist/webpack/index.js.map +1 -1
  224. package/dist/webpack/types.d.ts +18 -0
  225. package/dist/webpack/types.d.ts.map +1 -0
  226. package/dist/webpack/types.js +3 -0
  227. package/dist/webpack/types.js.map +1 -0
  228. package/dist/webpack/utils/index.d.ts +5 -0
  229. package/dist/webpack/utils/index.d.ts.map +1 -0
  230. package/dist/webpack/utils/index.js +21 -0
  231. package/dist/webpack/utils/index.js.map +1 -0
  232. package/package.json +5 -4
  233. package/src/cli/commands/__tests__/build.test.ts +13 -0
  234. package/src/cli/commands/__tests__/bundle-package.test.ts +27 -4
  235. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +10 -0
  236. package/src/cli/commands/__tests__/mfe-publish.test.ts +1 -0
  237. package/src/cli/commands/__tests__/start.test.ts +15 -0
  238. package/src/cli/commands/build.ts +4 -2
  239. package/src/cli/commands/bundle-package.ts +7 -4
  240. package/src/cli/commands/mfe-publish.ts +3 -1
  241. package/src/cli/commands/start.ts +6 -4
  242. package/src/cli/utils/__tests__/bundle.test.ts +142 -111
  243. package/src/cli/utils/__tests__/set-node-options.test.ts +4 -4
  244. package/src/cli/utils/bundle.ts +37 -118
  245. package/src/cli/utils/set-node-options.ts +2 -2
  246. package/src/utils/__tests__/get-configuration.test.ts +46 -0
  247. package/src/utils/__tests__/log.test.ts +43 -1
  248. package/src/utils/debug.ts +13 -0
  249. package/src/utils/get-configuration.ts +5 -1
  250. package/src/utils/log.ts +22 -0
  251. package/src/webpack/__mocks__/file-rules.ts +29 -0
  252. package/src/webpack/__mocks__/index.ts +2 -0
  253. package/src/webpack/__mocks__/style-rules.ts +126 -0
  254. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +162 -0
  255. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +331 -0
  256. package/src/webpack/__tests__/create-webpack-config.test.ts +400 -42
  257. package/src/webpack/configs/cache-config.ts +25 -0
  258. package/src/webpack/configs/dev-server-config.ts +43 -0
  259. package/src/webpack/configs/devtool-config.ts +18 -0
  260. package/src/webpack/configs/entry.config.ts +18 -0
  261. package/src/webpack/configs/externals-config.ts +21 -0
  262. package/src/webpack/configs/index.ts +12 -0
  263. package/src/webpack/configs/loaders/css-loader.ts +19 -0
  264. package/src/webpack/configs/loaders/index.ts +4 -0
  265. package/src/webpack/configs/loaders/less-loader.ts +3 -0
  266. package/src/webpack/configs/loaders/style-loader.ts +11 -0
  267. package/src/webpack/configs/loaders/types.ts +3 -0
  268. package/src/webpack/configs/module-config.ts +12 -0
  269. package/src/webpack/configs/optimization-config.ts +63 -0
  270. package/src/webpack/configs/output-config.ts +28 -0
  271. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +34 -0
  272. package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +18 -0
  273. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +29 -0
  274. package/src/webpack/configs/plugins/define-web-component-name-plugin.ts +14 -0
  275. package/src/webpack/configs/plugins/filter-warnings-plugin.ts +12 -0
  276. package/src/webpack/configs/plugins/html-plugin.ts +53 -0
  277. package/src/webpack/configs/plugins/index.ts +11 -0
  278. package/src/webpack/configs/plugins/mini-css-extract-plugin.ts +19 -0
  279. package/src/webpack/configs/plugins/moment-locales-plugin.ts +8 -0
  280. package/src/webpack/configs/plugins/provide-react-plugin.ts +12 -0
  281. package/src/webpack/configs/plugins/ts-checker-plugin.ts +33 -0
  282. package/src/webpack/configs/plugins/virtual-modules-plugin.ts +42 -0
  283. package/src/webpack/configs/plugins-config.ts +38 -0
  284. package/src/webpack/configs/resolve-config.ts +13 -0
  285. package/src/webpack/configs/rules/css-rules.ts +36 -0
  286. package/src/webpack/configs/rules/font-rules.ts +14 -0
  287. package/src/webpack/configs/rules/image-rules.ts +14 -0
  288. package/src/webpack/configs/rules/index.ts +7 -0
  289. package/src/webpack/configs/rules/js-rules.ts +17 -0
  290. package/src/webpack/configs/rules/less-rules.ts +21 -0
  291. package/src/webpack/configs/rules/scss-rules.ts +21 -0
  292. package/src/webpack/configs/rules/tsx-rules.ts +22 -0
  293. package/src/webpack/configs/rules-config.ts +38 -0
  294. package/src/webpack/configs/stats-config.ts +18 -0
  295. package/src/webpack/configs/types.ts +15 -0
  296. package/src/webpack/configs/utils/__tests__/generate-metadata.test.ts +77 -0
  297. package/src/webpack/configs/utils/__tests__/get-startup-version.test.ts +27 -0
  298. package/src/webpack/configs/utils/generate-metadata.ts +30 -0
  299. package/src/webpack/configs/utils/get-startup-version.ts +8 -0
  300. package/src/webpack/configs/utils/index.ts +1 -0
  301. package/src/webpack/create-webpack-config.ts +110 -0
  302. package/src/webpack/index.ts +2 -52
  303. package/{dist/webpack/shared.config.d.ts → src/webpack/types.ts} +10 -4
  304. package/src/webpack/utils/index.ts +4 -0
  305. package/dist/webpack/development.config.d.ts +0 -11
  306. package/dist/webpack/development.config.d.ts.map +0 -1
  307. package/dist/webpack/development.config.js +0 -191
  308. package/dist/webpack/development.config.js.map +0 -1
  309. package/dist/webpack/production.config.d.ts +0 -14
  310. package/dist/webpack/production.config.d.ts.map +0 -1
  311. package/dist/webpack/production.config.js +0 -172
  312. package/dist/webpack/production.config.js.map +0 -1
  313. package/dist/webpack/shared.config.d.ts.map +0 -1
  314. package/dist/webpack/shared.config.js +0 -268
  315. package/dist/webpack/shared.config.js.map +0 -1
  316. package/src/webpack/__tests__/create-development-config.test.ts +0 -306
  317. package/src/webpack/__tests__/create-production-config.test.ts +0 -231
  318. package/src/webpack/__tests__/create-shared-config.test.ts +0 -508
  319. package/src/webpack/development.config.ts +0 -237
  320. package/src/webpack/production.config.ts +0 -197
  321. package/src/webpack/shared.config.ts +0 -360
@@ -1,306 +0,0 @@
1
- import MiniCssExtractPlugin from 'mini-css-extract-plugin';
2
- import mockFS from 'mock-fs';
3
- import path from 'path';
4
- import {
5
- Package,
6
- PackageType,
7
- getFolders,
8
- getPackages,
9
- isCustomStyleRules,
10
- isExposeSharedDependencies,
11
- isWebComponent,
12
- } from '../../utils';
13
- import { createPackage } from '../../__mocks__';
14
- import { createConfig as createSharedConfig } from '../shared.config';
15
- import { featureCohort } from '../utils/feature-cohort';
16
-
17
- import { createConfig as createDevelopmentConfig } from '../development.config';
18
-
19
- jest.mock('mini-css-extract-plugin', () =>
20
- Object.assign(jest.fn(), { loader: 'MiniCssExtractPlugin.loader' })
21
- );
22
- jest.mock('../../utils', () => ({
23
- ...jest.requireActual('../../utils'),
24
- getFolders: jest.fn(),
25
- getPackages: jest.fn(),
26
- isCustomStyleRules: jest.fn(),
27
- isExposeSharedDependencies: jest.fn(),
28
- isWebComponent: jest.fn(),
29
- log: { info: jest.fn() },
30
- }));
31
- jest.mock('../shared.config');
32
- jest.mock('../utils/feature-cohort');
33
-
34
- describe('createDevelopmentConfig', () => {
35
- const packageName = '@servicetitan/foo';
36
- const packageJson = 'package.json';
37
- const sharedConfiguration = { resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'] } };
38
-
39
- let packages: Package[];
40
- let overrides: Parameters<typeof createDevelopmentConfig>[0];
41
- let options: Parameters<typeof createDevelopmentConfig>[1];
42
-
43
- beforeEach(() => {
44
- packages = [];
45
- overrides = { configuration: { mode: 'development' } };
46
- options = { name: '' };
47
-
48
- jest.resetAllMocks();
49
- jest.mocked(MiniCssExtractPlugin).mockImplementation(
50
- (options: Record<string, any>): any => ({ MiniCssExtractPlugin: options })
51
- );
52
- jest.mocked(getPackages).mockImplementation(() => packages);
53
- jest.mocked(createSharedConfig).mockReturnValue(sharedConfiguration);
54
-
55
- mockFS({ [packageJson]: JSON.stringify({ name: packageName }) });
56
- });
57
-
58
- afterEach(() => mockFS.restore());
59
-
60
- const subject = () => createDevelopmentConfig(overrides, options);
61
-
62
- test('includes shared configuration', () => {
63
- expect(subject()).toEqual(expect.objectContaining(sharedConfiguration));
64
- });
65
-
66
- test('includes input configuration', () => {
67
- expect(subject()).toEqual(expect.objectContaining(overrides.configuration));
68
- });
69
-
70
- test('configures "devtool"', () => {
71
- expect(subject().devtool).toEqual('cheap-module-source-map');
72
- });
73
-
74
- test('configures "output.filename"', () => {
75
- expect(subject().output?.filename).toEqual('[name].bundle.js');
76
- });
77
-
78
- test('configures "devServer"', () => {
79
- expect(subject().devServer).toEqual({
80
- port: 8080,
81
- historyApiFallback: true,
82
- writeToDisk: true,
83
- headers: {
84
- 'Access-Control-Allow-Origin': '*',
85
- 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
86
- },
87
- });
88
- });
89
-
90
- describe('with subordinate TSC packages', () => {
91
- const source = 'src';
92
- const destination = 'dist';
93
-
94
- beforeEach(() => {
95
- jest.mocked(getFolders).mockReturnValue({ source, destination });
96
- packages = [
97
- createPackage({ name: 'bar', type: PackageType.TSC }),
98
- createPackage({ name: 'baz', type: PackageType.Webpack }),
99
- ];
100
- });
101
-
102
- test('configures "devServer.watchOptions" to ignore TSC packages', () => {
103
- const ignored = packages
104
- .filter(({ type }) => type === PackageType.TSC)
105
- .map(({ location }) => path.join(location, source));
106
- expect(subject().devServer?.watchOptions).toEqual({ ignored });
107
- });
108
- });
109
-
110
- Object.entries({
111
- '.css': {
112
- test: /(\.css)$/,
113
- exclude: expect.any(Function),
114
- use: ['style-loader', 'css-loader'],
115
- },
116
- '.scss': {
117
- test: /(\.scss)$/,
118
- exclude: /\.module.scss$/,
119
- use: ['style-loader', 'css-loader', 'sass-loader'],
120
- },
121
- '.less': {
122
- test: /(\.less)$/,
123
- exclude: /\.module.less$/,
124
- use: [
125
- 'style-loader',
126
- 'css-loader',
127
- {
128
- loader: 'less-loader',
129
- options: { lessOptions: { math: 'always' } },
130
- },
131
- ],
132
- },
133
- '.module.css': {
134
- test: /\.module.css$/,
135
- use: [
136
- {
137
- loader: 'style-loader',
138
- options: { esModule: true },
139
- },
140
- {
141
- loader: 'css-loader',
142
- options: {
143
- esModule: true,
144
- modules: { exportLocalsConvention: 'camelCaseOnly', namedExport: true },
145
- },
146
- },
147
- ],
148
- },
149
- '.module.scss': {
150
- test: /\.module.scss$/,
151
- use: [
152
- {
153
- loader: 'style-loader',
154
- options: { esModule: true },
155
- },
156
- {
157
- loader: 'css-loader',
158
- options: {
159
- esModule: true,
160
- modules: { exportLocalsConvention: 'camelCaseOnly', namedExport: true },
161
- },
162
- },
163
- 'sass-loader',
164
- ],
165
- },
166
- '.module.less': {
167
- test: /\.module.less$/,
168
- use: [
169
- {
170
- loader: 'style-loader',
171
- options: { esModule: true },
172
- },
173
- {
174
- loader: 'css-loader',
175
- options: {
176
- esModule: true,
177
- modules: { exportLocalsConvention: 'camelCaseOnly', namedExport: true },
178
- },
179
- },
180
- {
181
- loader: 'less-loader',
182
- options: { lessOptions: { math: 'always' } },
183
- },
184
- ],
185
- },
186
- }).forEach(([extension, rules]) => {
187
- test(`configures "${extension}" rules`, () => {
188
- expect(subject().module?.rules).toContainEqual(rules);
189
- });
190
-
191
- describe('when package is web component', () => {
192
- beforeEach(() => jest.mocked(isWebComponent).mockReturnValue(true));
193
-
194
- test(`configures "${extension}" rules to use MiniCssExtractPlugin.loader instead of style-loader`, () => {
195
- expect(subject().module?.rules).toContainEqual({
196
- ...rules,
197
- use: rules.use.map((loader: string | Record<string, any>) =>
198
- loader === 'style-loader'
199
- ? MiniCssExtractPlugin.loader
200
- : typeof loader === 'object' && loader.loader === 'style-loader'
201
- ? { ...loader, loader: MiniCssExtractPlugin.loader }
202
- : loader
203
- ),
204
- });
205
- });
206
- });
207
- });
208
-
209
- test('does not configure "plugins"', () => {
210
- expect(subject().plugins).toEqual([]);
211
- });
212
-
213
- function itConfiguresMiniCssExtractPlugIn() {
214
- test('configures MiniCssExtractPlugIn plugin', () => {
215
- expect(subject().plugins).toEqual([
216
- new MiniCssExtractPlugin({ filename: '[name].bundle.css' }),
217
- ]);
218
- });
219
- }
220
-
221
- describe('when package is web component', () => {
222
- beforeEach(() => jest.mocked(isWebComponent).mockReturnValue(true));
223
-
224
- itConfiguresMiniCssExtractPlugIn();
225
- });
226
-
227
- describe('when package exposes shared dependencies', () => {
228
- beforeEach(() => jest.mocked(isExposeSharedDependencies).mockReturnValue(true));
229
-
230
- itConfiguresMiniCssExtractPlugIn();
231
-
232
- describe('when package has custom style rules', () => {
233
- beforeEach(() => jest.mocked(isCustomStyleRules).mockReturnValue(true));
234
-
235
- test('does not configure MiniCssExtractPlugIn plugin', () => {
236
- expect(subject().plugins).toEqual([]);
237
- });
238
- });
239
-
240
- test('configures "design-system.css" rules', () => {
241
- expect(subject().module?.rules).toContainEqual({
242
- test: /design-system.css$/,
243
- use: [MiniCssExtractPlugin.loader, 'css-loader'],
244
- });
245
- });
246
-
247
- test('configures ".css" rule to exclude design-system.css and .module.css files', () => {
248
- const cssRule: any = subject().module?.rules?.find(({ test }: { test: RegExp }) =>
249
- '.css'.match(test)
250
- );
251
- expect(
252
- ['design-system.css', 'foo.module.css', 'foo.css'].filter(
253
- path => !cssRule.exclude(path)
254
- )
255
- ).toEqual(['foo.css']);
256
- });
257
- });
258
-
259
- describe('when package has custom style rules', () => {
260
- beforeEach(() => jest.mocked(isCustomStyleRules).mockReturnValue(true));
261
-
262
- test('does not configure "module.rules"', () => {
263
- expect(subject().module?.rules).toEqual([]);
264
- });
265
- });
266
-
267
- test('does not configure "cache"', () => {
268
- expect(subject().cache).toBeUndefined();
269
- });
270
-
271
- describe('when featureCohort is active', () => {
272
- beforeEach(() => {
273
- jest.mocked(featureCohort).mockImplementation((_: number[], fn: Function) => fn());
274
- });
275
-
276
- test('configures "cache"', () => {
277
- expect(subject().cache).toEqual({
278
- type: 'filesystem',
279
- name: packageName,
280
- profile: true,
281
- });
282
- });
283
-
284
- describe('when package is web component', () => {
285
- beforeEach(() => jest.mocked(isWebComponent).mockReturnValue(true));
286
-
287
- function itAppendsSuffixToPackageName(suffix: string) {
288
- test(`appends "${suffix}" to package name`, () => {
289
- expect(subject().cache).toEqual(
290
- expect.objectContaining({
291
- name: `${packageName}${suffix}`,
292
- })
293
- );
294
- });
295
- }
296
-
297
- itAppendsSuffixToPackageName('__full');
298
-
299
- describe('when embed option is set to true', () => {
300
- beforeEach(() => (options.embed = true));
301
-
302
- itAppendsSuffixToPackageName('__light');
303
- });
304
- });
305
- });
306
- });
@@ -1,231 +0,0 @@
1
- import MiniCssExtractPlugin from 'mini-css-extract-plugin';
2
- import { isCustomStyleRules, isWebComponent } from '../../utils';
3
- import { createConfig as createSharedConfig } from '../shared.config';
4
-
5
- import { createConfig as createProductionConfig } from '../production.config';
6
-
7
- jest.mock('mini-css-extract-plugin', () =>
8
- Object.assign(jest.fn(), { loader: 'MiniCssExtractPlugin.loader' })
9
- );
10
- jest.mock('../shared.config');
11
- jest.mock('../../utils', () => ({
12
- ...jest.requireActual('../../utils'),
13
- isCustomStyleRules: jest.fn(),
14
- isWebComponent: jest.fn(),
15
- }));
16
-
17
- describe('createProductionConfig', () => {
18
- const sharedConfig = { resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'] } };
19
- let overrides: Parameters<typeof createProductionConfig>[0];
20
- let options: Parameters<typeof createProductionConfig>[1];
21
-
22
- beforeEach(() => {
23
- overrides = {
24
- configuration: { mode: 'production' },
25
- plugins: { MiniCssExtractPlugin: { attributes: { foo: 'bar' } } },
26
- };
27
- options = { name: '' };
28
-
29
- jest.resetAllMocks();
30
- jest.mocked(MiniCssExtractPlugin).mockImplementation(
31
- (options: Record<string, any>): any => ({ MiniCssExtractPlugin: options })
32
- );
33
- jest.mocked(createSharedConfig).mockReturnValue(sharedConfig);
34
- });
35
-
36
- const subject = () => createProductionConfig(overrides, options);
37
-
38
- test('includes shared config', () => {
39
- expect(subject()).toEqual(expect.objectContaining(sharedConfig));
40
- });
41
-
42
- test('includes input configuration', () => {
43
- expect(subject()).toEqual(expect.objectContaining(overrides.configuration));
44
- });
45
-
46
- test('configures "devtool"', () => {
47
- expect(subject().devtool).toEqual('source-map');
48
- });
49
-
50
- test('configures MiniCssExtractPlugin plugin', () => {
51
- expect(subject().plugins).toContainEqual(
52
- new MiniCssExtractPlugin({
53
- ...overrides.plugins?.MiniCssExtractPlugin,
54
- filename: '[name].[contenthash:8].bundle.css',
55
- })
56
- );
57
- });
58
-
59
- describe('when package has custom style rules', () => {
60
- beforeEach(() => jest.mocked(isCustomStyleRules).mockReturnValue(true));
61
-
62
- test('does not configure "plugins"', () => {
63
- expect(subject().plugins).toEqual([]);
64
- });
65
- });
66
-
67
- test('configures "output"', () => {
68
- expect(subject().output).toEqual({
69
- filename: '[name].[contenthash:8].bundle.js',
70
- clean: true,
71
- });
72
- });
73
-
74
- describe('with process.env.CLIENT_CDN_PATH', () => {
75
- const cdnPath = 'http://www.example.com/cdn';
76
-
77
- beforeEach(() => (process.env.CLIENT_CDN_PATH = cdnPath));
78
- afterEach(() => delete process.env.CLIENT_CDN_PATH);
79
-
80
- const subject = () => {
81
- let result: ReturnType<typeof createProductionConfig>;
82
-
83
- jest.isolateModules(() => {
84
- const { createConfig } = require('../production.config');
85
- result = createConfig(overrides, options);
86
- });
87
-
88
- // @ts-expect-error because result is assigned inside callback
89
- return result;
90
- };
91
-
92
- test('configures "output.publicPath"', () => {
93
- expect(subject().output?.publicPath).toEqual(cdnPath);
94
- });
95
- });
96
-
97
- Object.entries({
98
- '.css': {
99
- test: /(\.css)$/,
100
- exclude: /\.module.css$/,
101
- use: [MiniCssExtractPlugin.loader, 'css-loader'],
102
- },
103
- '.scss': {
104
- test: /(\.scss)$/,
105
- exclude: /\.module.scss$/,
106
- use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],
107
- },
108
- '.less': {
109
- test: /(\.less)$/,
110
- exclude: /\.module.less$/,
111
- use: [
112
- MiniCssExtractPlugin.loader,
113
- 'css-loader',
114
- {
115
- loader: 'less-loader',
116
- options: { lessOptions: { math: 'always' } },
117
- },
118
- ],
119
- },
120
- '.module.css': {
121
- test: /\.module.css$/,
122
- use: [
123
- {
124
- loader: MiniCssExtractPlugin.loader,
125
- options: { esModule: true },
126
- },
127
- {
128
- loader: 'css-loader',
129
- options: {
130
- esModule: true,
131
- modules: {
132
- localIdentName: '[local]__[hash:base64:5]',
133
- exportLocalsConvention: 'camelCaseOnly',
134
- namedExport: true,
135
- },
136
- },
137
- },
138
- ],
139
- },
140
- '.module.scss': {
141
- test: /\.module.scss$/,
142
- use: [
143
- {
144
- loader: MiniCssExtractPlugin.loader,
145
- options: { esModule: true },
146
- },
147
- {
148
- loader: 'css-loader',
149
- options: {
150
- esModule: true,
151
- modules: {
152
- localIdentName: '[local]__[hash:base64:5]',
153
- exportLocalsConvention: 'camelCaseOnly',
154
- namedExport: true,
155
- },
156
- },
157
- },
158
- 'sass-loader',
159
- ],
160
- },
161
- '.module.less': {
162
- test: /\.module.less$/,
163
- use: [
164
- {
165
- loader: MiniCssExtractPlugin.loader,
166
- options: { esModule: true },
167
- },
168
- {
169
- loader: 'css-loader',
170
- options: {
171
- esModule: true,
172
- modules: {
173
- localIdentName: '[local]__[hash:base64:5]',
174
- exportLocalsConvention: 'camelCaseOnly',
175
- namedExport: true,
176
- },
177
- },
178
- },
179
- {
180
- loader: 'less-loader',
181
- options: {
182
- lessOptions: {
183
- math: 'always',
184
- },
185
- },
186
- },
187
- ],
188
- },
189
- }).forEach(([extension, rules]) => {
190
- test(`configures "${extension}" rules`, () => {
191
- expect(subject().module?.rules).toContainEqual(rules);
192
- });
193
- });
194
-
195
- test('configures "optimization"', () => {
196
- expect(subject().optimization).toEqual({
197
- runtimeChunk: 'single',
198
- splitChunks: { cacheGroups: {} },
199
- });
200
- });
201
-
202
- describe('when package is web component', () => {
203
- beforeEach(() => jest.mocked(isWebComponent).mockReturnValue(true));
204
-
205
- test('configures "devtool" to false', () => {
206
- expect(subject().devtool).toBe(false);
207
- });
208
-
209
- test('configures "optimization.splitChunks.cacheGroups"', () => {
210
- expect(subject().optimization?.splitChunks).toEqual({
211
- cacheGroups: {
212
- common: {
213
- name: 'common',
214
- test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
215
- chunks: 'all',
216
- },
217
- kendo: {
218
- name: 'kendo',
219
- test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
220
- chunks: 'all',
221
- },
222
- servicetitan: {
223
- name: 'servicetitan',
224
- test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
225
- chunks: 'all',
226
- },
227
- },
228
- });
229
- });
230
- });
231
- });