@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,360 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import os from 'os';
4
-
5
- import deepmerge from 'deepmerge';
6
-
7
- import { Configuration, DefinePlugin, ProvidePlugin } from 'webpack';
8
-
9
- import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
10
- import { ForkTsCheckerWebpackPluginOptions } from 'fork-ts-checker-webpack-plugin/lib/plugin-options';
11
- const FilterWarningsPlugin = require('webpack-filter-warnings-plugin');
12
- import HtmlWebpackPlugin, { Options as HtmlWebpackPluginOptions } from 'html-webpack-plugin';
13
- import MomentLocalesPlugin from 'moment-locales-webpack-plugin';
14
- import WebpackAssetsManifest from 'webpack-assets-manifest';
15
- import VirtualModulesPlugin from 'webpack-virtual-modules';
16
- import merge from 'webpack-merge';
17
- import { argv, Arguments } from 'yargs';
18
-
19
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
20
-
21
- import {
22
- getFolders,
23
- getPackageData,
24
- getPackageDependencyVersion,
25
- getTsConfig,
26
- isExposeSharedDependencies,
27
- isWebComponent,
28
- loadSharedDependencies,
29
- } from '../utils';
30
- import { splitByEntry } from './utils/split-by-entry';
31
- import { getModuleEntryPath } from './utils/bundle';
32
-
33
- import { Options } from '.';
34
-
35
- export interface Overrides {
36
- configuration?: Configuration;
37
- plugins?: {
38
- ForkTsCheckerWebpackPlugin?: ForkTsCheckerWebpackPluginOptions;
39
- HtmlWebpackPlugin?: HtmlWebpackPluginOptions;
40
- };
41
- }
42
-
43
- export function createConfig(
44
- { configuration = {}, plugins = {} }: Overrides,
45
- { buildStat, embed, name }: Options
46
- ): Configuration {
47
- const { source, destination } = getFolders();
48
- const packageData = getPackageData();
49
-
50
- const {
51
- ForkTsCheckerWebpackPlugin: forkTsCheckerWebpackPluginOptions = {},
52
- HtmlWebpackPlugin: htmlWebpackPluginOptions = {},
53
- } = plugins;
54
-
55
- const argvSync = argv as Arguments;
56
- const sharedDependencies = loadSharedDependencies(
57
- packageData.dependencies,
58
- packageData.sharedDependencies
59
- );
60
-
61
- return merge(
62
- {
63
- entry: {
64
- main: [
65
- `./${source}/index`,
66
- ...(isExposeSharedDependencies()
67
- ? Object.keys(sharedDependencies).map(dependency =>
68
- getModuleEntryPath(dependency)
69
- )
70
- : []),
71
- ],
72
- },
73
- resolve: {
74
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
75
- },
76
- module: {
77
- rules: [
78
- {
79
- enforce: 'pre',
80
- test: /\.js$/,
81
- exclude: /node_modules/,
82
- loader: 'source-map-loader',
83
- },
84
- {
85
- test: /\.worker\.js$/,
86
- use: { loader: 'worker-loader' },
87
- },
88
- {
89
- test: /\.(png|svg|jpg|jpeg|gif)$/i,
90
- type: 'asset',
91
- generator: {
92
- filename: 'images/[contenthash][ext][query]',
93
- },
94
- },
95
- {
96
- test: /\.(woff|woff2|eot|ttf|otf)$/i,
97
- type: 'asset/resource',
98
- generator: {
99
- filename: 'fonts/[contenthash][ext][query]',
100
- },
101
- },
102
- argvSync.esbuild
103
- ? {
104
- test: /\.tsx?$/,
105
- exclude: /node_modules/,
106
- use: [
107
- {
108
- loader: 'esbuild-loader',
109
- options: {
110
- loader: 'tsx',
111
- target: 'es2018',
112
- },
113
- },
114
- ],
115
- }
116
- : {
117
- test: /\.tsx?$/,
118
- exclude: /node_modules/,
119
- use: [
120
- {
121
- loader: 'ts-loader',
122
- options: {
123
- transpileOnly: true,
124
- },
125
- },
126
- ],
127
- },
128
- ...(isExposeSharedDependencies()
129
- ? Object.entries(sharedDependencies).map(([dependency, variable]) => ({
130
- test: getModuleEntryPath(dependency),
131
- loader: require.resolve('./loaders/expose-loader'),
132
- options: {
133
- exposes: variable,
134
- },
135
- }))
136
- : []),
137
- ],
138
- },
139
- plugins: [
140
- argvSync.esbuild &&
141
- new ProvidePlugin({
142
- React: 'react',
143
- }),
144
- new MomentLocalesPlugin({
145
- localesToKeep: ['en-au', 'en-ca', 'en-gb'],
146
- }),
147
- ...(!embed
148
- ? [
149
- new ForkTsCheckerWebpackPlugin(
150
- deepmerge<ForkTsCheckerWebpackPluginOptions>(
151
- {
152
- typescript: {
153
- configFile: getTsConfig(),
154
- configOverwrite: {
155
- exclude: [
156
- '**/__tests__/**/*',
157
- '**/__mocks__/**/*',
158
- '**/*.test.*',
159
- '**/*.stories.tsx',
160
- ],
161
- references: [],
162
- },
163
- },
164
- },
165
- forkTsCheckerWebpackPluginOptions
166
- )
167
- ),
168
- new FilterWarningsPlugin({
169
- exclude: /export .* was not found in/,
170
- }),
171
- new HtmlWebpackPlugin(
172
- deepmerge<HtmlWebpackPluginOptions>(
173
- {
174
- title: 'ServiceTitan',
175
- hash: true,
176
- ...(isWebComponent()
177
- ? {
178
- inject: false,
179
- publicPath: '/',
180
- templateContent: ({
181
- htmlWebpackPlugin: {
182
- tags: { headTags, bodyTags },
183
- files,
184
- },
185
- }) => {
186
- const styleUrls = encodeURIComponent(
187
- JSON.stringify(files.css)
188
- );
189
-
190
- return `
191
- <!DOCTYPE html>
192
- <html>
193
- <head>
194
- <meta name="viewport" content="width=device-width,initial-scale=1">
195
- ${headTags}
196
- </head>
197
- <body>
198
- <${name} style-urls="${styleUrls}" />
199
-
200
- ${bodyTags}
201
- </body>
202
- </html>
203
- `;
204
- },
205
- }
206
- : {}),
207
- templateParameters: {
208
- splitByEntry,
209
- },
210
- },
211
- htmlWebpackPluginOptions
212
- )
213
- ),
214
- ]
215
- : []),
216
- ...(isExposeSharedDependencies()
217
- ? [
218
- new DefinePlugin({
219
- // eslint-disable-next-line @typescript-eslint/naming-convention
220
- EXPOSED_DEPENDENCIES: JSON.stringify(
221
- Object.entries(sharedDependencies).reduce(
222
- (result, [dependency, variable]) =>
223
- Object.assign(result, {
224
- [dependency]: {
225
- version: getPackageDependencyVersion(
226
- dependency,
227
- packageData.dependencies?.[dependency]
228
- ),
229
- variable,
230
- },
231
- }),
232
- {}
233
- )
234
- ),
235
- }),
236
- ]
237
- : []),
238
- ...(buildStat
239
- ? [
240
- new BundleAnalyzerPlugin({
241
- analyzerMode: 'static',
242
- reportFilename: path.join(
243
- os.tmpdir(),
244
- `report-${embed ? 'light' : 'full'}-bundle-${Date.now()}.html`
245
- ),
246
- }),
247
- ]
248
- : []),
249
- ...(isWebComponent()
250
- ? [
251
- new DefinePlugin({
252
- // eslint-disable-next-line @typescript-eslint/naming-convention
253
- WEB_COMPONENT_NAME: JSON.stringify(name),
254
- }),
255
- new VirtualModulesPlugin({
256
- ...(!fs.existsSync(
257
- path.join(process.cwd(), `${source}/design-system.css`)
258
- )
259
- ? {
260
- [path.join(process.cwd(), `${source}/design-system.css`)]: [
261
- `@import '~@servicetitan/tokens/core/tokens.css';`,
262
- `@import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';`,
263
- `@import '~@servicetitan/design-system/dist/system.min.css';`,
264
- ].join('\n'),
265
- }
266
- : {}),
267
- [path.join(process.cwd(), `${source}/index.ts`)]: [
268
- `import { register } from '@servicetitan/web-components';`,
269
- `import { App } from './app';`,
270
- embed
271
- ? [`register(App, true);`]
272
- : [
273
- `require('./design-system.css');`,
274
- `register(App, false);`,
275
- ],
276
- ]
277
- .flat()
278
- .join('\n'),
279
- }),
280
- new WebpackAssetsManifest({
281
- entrypoints: true,
282
- output: 'entrypoints.json',
283
- transform(assets) {
284
- const entrypoints = assets.entrypoints as Record<
285
- string,
286
- { assets: Record<string, string[]> }
287
- >;
288
-
289
- const getAssetsByType = (type: string) => {
290
- return Object.values(entrypoints)
291
- .map(({ assets }) => assets[type] ?? [])
292
- .flat();
293
- };
294
-
295
- return {
296
- css: getAssetsByType('css'),
297
- js: getAssetsByType('js'),
298
- };
299
- },
300
- }),
301
- ]
302
- : []),
303
- ].filter(item => item),
304
- ...(embed
305
- ? {
306
- externals: Object.entries(sharedDependencies).reduce(
307
- (result, [dependency, variable]) =>
308
- Object.assign(result, {
309
- [dependency]: `${variable}['${name}']`,
310
- }),
311
- {}
312
- ),
313
- }
314
- : {}),
315
- output: {
316
- path: isWebComponent()
317
- ? path.join(process.cwd(), `${destination}/bundle/${embed ? 'light' : 'full'}`)
318
- : path.join(process.cwd(), `${destination}/bundle`),
319
- },
320
- optimization: {
321
- chunkIds: 'size',
322
- moduleIds: 'size',
323
- mangleExports: 'size',
324
- splitChunks: {
325
- cacheGroups: {
326
- ...(isExposeSharedDependencies()
327
- ? {
328
- 'design-system': {
329
- test: /[\\/]node_modules[\\/]@servicetitan[\\/](tokens|anvil-fonts|design-system)[\\/].*\.css$/,
330
- name: 'design-system',
331
- chunks: 'all',
332
- enforce: true,
333
- },
334
- }
335
- : {}),
336
- ...(isWebComponent()
337
- ? {
338
- styles: {
339
- name: 'main',
340
- type: 'css/mini-extract',
341
- chunks: 'all',
342
- enforce: true,
343
- },
344
- }
345
- : {}),
346
- },
347
- },
348
- },
349
- stats: {
350
- all: false,
351
- errors: true,
352
- errorDetails: true,
353
- warnings: true,
354
- builtAt: true,
355
- colors: true,
356
- },
357
- },
358
- configuration
359
- );
360
- }