@servicetitan/startup 36.4.0 → 37.0.1

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 (457) hide show
  1. package/bin/analyze.js +3 -0
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +4 -5
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-vite.d.ts.map +1 -1
  6. package/dist/cli/commands/bundle-vite.js +18 -1
  7. package/dist/cli/commands/bundle-vite.js.map +1 -1
  8. package/dist/cli/commands/registry/build.d.ts +6 -0
  9. package/dist/cli/commands/registry/build.d.ts.map +1 -1
  10. package/dist/cli/commands/registry/build.js +10 -1
  11. package/dist/cli/commands/registry/build.js.map +1 -1
  12. package/dist/cli/commands/registry/command-registry.d.ts +12 -28
  13. package/dist/cli/commands/registry/command-registry.d.ts.map +1 -1
  14. package/dist/cli/commands/registry/command-registry.js +0 -3
  15. package/dist/cli/commands/registry/command-registry.js.map +1 -1
  16. package/dist/cli/commands/registry/start.d.ts +6 -0
  17. package/dist/cli/commands/registry/start.d.ts.map +1 -1
  18. package/dist/cli/commands/registry/start.js +10 -1
  19. package/dist/cli/commands/registry/start.js.map +1 -1
  20. package/dist/cli/commands/review/rules/index.d.ts.map +1 -1
  21. package/dist/cli/commands/review/rules/index.js +2 -0
  22. package/dist/cli/commands/review/rules/index.js.map +1 -1
  23. package/dist/cli/commands/review/rules/require-compatible-typescript.d.ts +13 -0
  24. package/dist/cli/commands/review/rules/require-compatible-typescript.d.ts.map +1 -0
  25. package/dist/cli/commands/review/rules/require-compatible-typescript.js +72 -0
  26. package/dist/cli/commands/review/rules/require-compatible-typescript.js.map +1 -0
  27. package/dist/cli/commands/start.d.ts.map +1 -1
  28. package/dist/cli/commands/start.js +3 -4
  29. package/dist/cli/commands/start.js.map +1 -1
  30. package/dist/cli/commands/test/runners/vitest.d.ts.map +1 -1
  31. package/dist/cli/commands/test/runners/vitest.js +7 -1
  32. package/dist/cli/commands/test/runners/vitest.js.map +1 -1
  33. package/dist/cli/index.js +1 -1
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli/utils/get-bundle-command.d.ts +3 -0
  36. package/dist/cli/utils/get-bundle-command.d.ts.map +1 -0
  37. package/dist/cli/utils/get-bundle-command.js +16 -0
  38. package/dist/cli/utils/get-bundle-command.js.map +1 -0
  39. package/dist/cli/utils/get-exit-code.d.ts +12 -0
  40. package/dist/cli/utils/get-exit-code.d.ts.map +1 -0
  41. package/dist/cli/utils/get-exit-code.js +26 -0
  42. package/dist/cli/utils/get-exit-code.js.map +1 -0
  43. package/dist/cli/utils/index.d.ts +3 -0
  44. package/dist/cli/utils/index.d.ts.map +1 -1
  45. package/dist/cli/utils/index.js +3 -0
  46. package/dist/cli/utils/index.js.map +1 -1
  47. package/dist/cli/utils/resolve-bundler.d.ts +8 -0
  48. package/dist/cli/utils/resolve-bundler.d.ts.map +1 -0
  49. package/dist/cli/utils/resolve-bundler.js +24 -0
  50. package/dist/cli/utils/resolve-bundler.js.map +1 -0
  51. package/dist/core/bundle-report.d.ts +4 -0
  52. package/dist/core/bundle-report.d.ts.map +1 -0
  53. package/dist/core/bundle-report.js +43 -0
  54. package/dist/core/bundle-report.js.map +1 -0
  55. package/dist/core/check-resource/check-resource.d.ts +5 -3
  56. package/dist/core/check-resource/check-resource.d.ts.map +1 -1
  57. package/dist/core/check-resource/check-resource.js +20 -13
  58. package/dist/core/check-resource/check-resource.js.map +1 -1
  59. package/dist/core/check-resource/get-peer-dependency-meta.d.ts +11 -1
  60. package/dist/core/check-resource/get-peer-dependency-meta.d.ts.map +1 -1
  61. package/dist/core/check-resource/get-peer-dependency-meta.js +58 -2
  62. package/dist/core/check-resource/get-peer-dependency-meta.js.map +1 -1
  63. package/dist/core/check-resource/index.d.ts +1 -1
  64. package/dist/core/check-resource/index.d.ts.map +1 -1
  65. package/dist/core/check-resource/index.js.map +1 -1
  66. package/dist/core/check-resource/is-resolvable.d.ts +7 -0
  67. package/dist/core/check-resource/is-resolvable.d.ts.map +1 -0
  68. package/dist/core/check-resource/is-resolvable.js +31 -0
  69. package/dist/core/check-resource/is-resolvable.js.map +1 -0
  70. package/dist/core/check-resource/types.d.ts +1 -0
  71. package/dist/core/check-resource/types.d.ts.map +1 -1
  72. package/dist/core/chunk-patterns.d.ts +7 -0
  73. package/dist/core/chunk-patterns.d.ts.map +1 -0
  74. package/dist/core/chunk-patterns.js +37 -0
  75. package/dist/core/chunk-patterns.js.map +1 -0
  76. package/dist/core/create-build-context.d.ts +0 -1
  77. package/dist/core/create-build-context.d.ts.map +1 -1
  78. package/dist/core/create-build-context.js +2 -2
  79. package/dist/core/create-build-context.js.map +1 -1
  80. package/dist/core/create-extension-regexp.d.ts +5 -0
  81. package/dist/core/create-extension-regexp.d.ts.map +1 -0
  82. package/dist/core/create-extension-regexp.js +45 -0
  83. package/dist/core/create-extension-regexp.js.map +1 -0
  84. package/dist/core/get-process-env.d.ts +3 -0
  85. package/dist/core/get-process-env.d.ts.map +1 -0
  86. package/dist/core/get-process-env.js +25 -0
  87. package/dist/core/get-process-env.js.map +1 -0
  88. package/dist/core/index.d.ts +8 -1
  89. package/dist/core/index.d.ts.map +1 -1
  90. package/dist/core/index.js +8 -1
  91. package/dist/core/index.js.map +1 -1
  92. package/dist/core/moment-locales.d.ts +2 -0
  93. package/dist/core/moment-locales.d.ts.map +1 -0
  94. package/dist/core/moment-locales.js +21 -0
  95. package/dist/core/moment-locales.js.map +1 -0
  96. package/dist/core/resolve-output-path.d.ts +3 -0
  97. package/dist/core/resolve-output-path.d.ts.map +1 -0
  98. package/dist/core/resolve-output-path.js +25 -0
  99. package/dist/core/resolve-output-path.js.map +1 -0
  100. package/dist/core/resolve-output-root.d.ts +3 -0
  101. package/dist/core/resolve-output-root.d.ts.map +1 -0
  102. package/dist/core/resolve-output-root.js +23 -0
  103. package/dist/core/resolve-output-root.js.map +1 -0
  104. package/dist/core/sort-shared-css.d.ts +2 -0
  105. package/dist/core/sort-shared-css.d.ts.map +1 -0
  106. package/dist/core/sort-shared-css.js +20 -0
  107. package/dist/core/sort-shared-css.js.map +1 -0
  108. package/dist/core/types.d.ts +1 -1
  109. package/dist/core/types.d.ts.map +1 -1
  110. package/dist/cypress/config/index.d.ts +1 -0
  111. package/dist/cypress/config/index.d.ts.map +1 -1
  112. package/dist/cypress/config/index.js +1 -0
  113. package/dist/cypress/config/index.js.map +1 -1
  114. package/dist/cypress/config/vite-config.d.ts +3 -0
  115. package/dist/cypress/config/vite-config.d.ts.map +1 -0
  116. package/dist/cypress/config/vite-config.js +58 -0
  117. package/dist/cypress/config/vite-config.js.map +1 -0
  118. package/dist/jest/resolver.d.ts.map +1 -1
  119. package/dist/jest/resolver.js +20 -1
  120. package/dist/jest/resolver.js.map +1 -1
  121. package/dist/storybook-config/index.d.ts +1 -0
  122. package/dist/storybook-config/index.d.ts.map +1 -1
  123. package/dist/storybook-config/index.js +1 -0
  124. package/dist/storybook-config/index.js.map +1 -1
  125. package/dist/storybook-config/vite-final.d.ts +7 -0
  126. package/dist/storybook-config/vite-final.d.ts.map +1 -0
  127. package/dist/storybook-config/vite-final.js +86 -0
  128. package/dist/storybook-config/vite-final.js.map +1 -0
  129. package/dist/utils/get-configuration.d.ts +15 -10
  130. package/dist/utils/get-configuration.d.ts.map +1 -1
  131. package/dist/utils/get-configuration.js +32 -2
  132. package/dist/utils/get-configuration.js.map +1 -1
  133. package/dist/utils/get-package-name.d.ts +2 -1
  134. package/dist/utils/get-package-name.d.ts.map +1 -1
  135. package/dist/utils/get-package-name.js +4 -2
  136. package/dist/utils/get-package-name.js.map +1 -1
  137. package/dist/utils/index.d.ts +1 -0
  138. package/dist/utils/index.d.ts.map +1 -1
  139. package/dist/utils/index.js.map +1 -1
  140. package/dist/utils/types.d.ts +2 -0
  141. package/dist/utils/types.d.ts.map +1 -0
  142. package/dist/utils/types.js +6 -0
  143. package/dist/utils/types.js.map +1 -0
  144. package/dist/utils/validate-shared-dependencies.d.ts.map +1 -1
  145. package/dist/utils/validate-shared-dependencies.js +4 -0
  146. package/dist/utils/validate-shared-dependencies.js.map +1 -1
  147. package/dist/vite/build-shared-dependencies.d.ts.map +1 -1
  148. package/dist/vite/build-shared-dependencies.js +1 -2
  149. package/dist/vite/build-shared-dependencies.js.map +1 -1
  150. package/dist/vite/config/asset-file-names.d.ts +4 -0
  151. package/dist/vite/config/asset-file-names.d.ts.map +1 -0
  152. package/dist/vite/config/asset-file-names.js +29 -0
  153. package/dist/vite/config/asset-file-names.js.map +1 -0
  154. package/dist/vite/config/base-config.d.ts.map +1 -1
  155. package/dist/vite/config/base-config.js +67 -40
  156. package/dist/vite/config/base-config.js.map +1 -1
  157. package/dist/vite/config/code-splitting.d.ts +4 -0
  158. package/dist/vite/config/code-splitting.d.ts.map +1 -0
  159. package/dist/vite/config/code-splitting.js +48 -0
  160. package/dist/vite/config/code-splitting.js.map +1 -0
  161. package/dist/vite/config/create-css-config.d.ts +3 -0
  162. package/dist/vite/config/create-css-config.d.ts.map +1 -0
  163. package/dist/vite/config/create-css-config.js +26 -0
  164. package/dist/vite/config/create-css-config.js.map +1 -0
  165. package/dist/vite/config/create-filtering-logger.d.ts +3 -0
  166. package/dist/vite/config/create-filtering-logger.d.ts.map +1 -0
  167. package/dist/vite/config/create-filtering-logger.js +37 -0
  168. package/dist/vite/config/create-filtering-logger.js.map +1 -0
  169. package/dist/vite/config/create-vite-build-context.d.ts +2 -1
  170. package/dist/vite/config/create-vite-build-context.d.ts.map +1 -1
  171. package/dist/vite/config/create-vite-build-context.js.map +1 -1
  172. package/dist/vite/config/create-vite-config.d.ts.map +1 -1
  173. package/dist/vite/config/create-vite-config.js +30 -13
  174. package/dist/vite/config/create-vite-config.js.map +1 -1
  175. package/dist/vite/config/get-warmup-client-files.d.ts +3 -0
  176. package/dist/vite/config/get-warmup-client-files.d.ts.map +1 -0
  177. package/dist/vite/config/get-warmup-client-files.js +26 -0
  178. package/dist/vite/config/get-warmup-client-files.js.map +1 -0
  179. package/dist/vite/index.html +1 -0
  180. package/dist/vite/plugins/bundle-stat-plugin.d.ts +4 -0
  181. package/dist/vite/plugins/bundle-stat-plugin.d.ts.map +1 -0
  182. package/dist/vite/plugins/bundle-stat-plugin.js +32 -0
  183. package/dist/vite/plugins/bundle-stat-plugin.js.map +1 -0
  184. package/dist/vite/plugins/chain-source-maps-plugin.d.ts +3 -0
  185. package/dist/vite/plugins/chain-source-maps-plugin.d.ts.map +1 -0
  186. package/dist/vite/plugins/chain-source-maps-plugin.js +37 -0
  187. package/dist/vite/plugins/chain-source-maps-plugin.js.map +1 -0
  188. package/dist/vite/plugins/clean-plugin.d.ts +4 -0
  189. package/dist/vite/plugins/clean-plugin.d.ts.map +1 -0
  190. package/dist/vite/plugins/clean-plugin.js +63 -0
  191. package/dist/vite/plugins/clean-plugin.js.map +1 -0
  192. package/dist/vite/plugins/design-system-guard-plugin.d.ts +4 -0
  193. package/dist/vite/plugins/design-system-guard-plugin.d.ts.map +1 -0
  194. package/dist/vite/plugins/design-system-guard-plugin.js +35 -0
  195. package/dist/vite/plugins/design-system-guard-plugin.js.map +1 -0
  196. package/dist/vite/plugins/ignore-modules-plugin.d.ts +21 -3
  197. package/dist/vite/plugins/ignore-modules-plugin.d.ts.map +1 -1
  198. package/dist/vite/plugins/ignore-modules-plugin.js +22 -8
  199. package/dist/vite/plugins/ignore-modules-plugin.js.map +1 -1
  200. package/dist/vite/plugins/index.d.ts +7 -0
  201. package/dist/vite/plugins/index.d.ts.map +1 -1
  202. package/dist/vite/plugins/index.js +7 -0
  203. package/dist/vite/plugins/index.js.map +1 -1
  204. package/dist/vite/plugins/istanbul-plugin.d.ts +4 -0
  205. package/dist/vite/plugins/istanbul-plugin.d.ts.map +1 -0
  206. package/dist/vite/plugins/istanbul-plugin.js +27 -0
  207. package/dist/vite/plugins/istanbul-plugin.js.map +1 -0
  208. package/dist/vite/plugins/magic-comments-plugin/index.d.ts +2 -0
  209. package/dist/vite/plugins/magic-comments-plugin/index.d.ts.map +1 -0
  210. package/dist/vite/plugins/magic-comments-plugin/index.js +20 -0
  211. package/dist/vite/plugins/magic-comments-plugin/index.js.map +1 -0
  212. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.d.ts +4 -0
  213. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.d.ts.map +1 -0
  214. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js +63 -0
  215. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js.map +1 -0
  216. package/dist/vite/plugins/magic-comments-plugin/parse-magic-comments.d.ts +6 -0
  217. package/dist/vite/plugins/magic-comments-plugin/parse-magic-comments.d.ts.map +1 -0
  218. package/dist/vite/plugins/magic-comments-plugin/parse-magic-comments.js +40 -0
  219. package/dist/vite/plugins/magic-comments-plugin/parse-magic-comments.js.map +1 -0
  220. package/dist/vite/plugins/metadata-plugin.js +2 -2
  221. package/dist/vite/plugins/metadata-plugin.js.map +1 -1
  222. package/dist/vite/plugins/moment-locales-plugin.d.ts +5 -0
  223. package/dist/vite/plugins/moment-locales-plugin.d.ts.map +1 -0
  224. package/dist/vite/plugins/moment-locales-plugin.js +50 -0
  225. package/dist/vite/plugins/moment-locales-plugin.js.map +1 -0
  226. package/dist/vite/plugins/shared-dependencies-plugin/assemble-iife.d.ts +14 -0
  227. package/dist/vite/plugins/shared-dependencies-plugin/assemble-iife.d.ts.map +1 -0
  228. package/dist/vite/plugins/shared-dependencies-plugin/assemble-iife.js +100 -0
  229. package/dist/vite/plugins/shared-dependencies-plugin/assemble-iife.js.map +1 -0
  230. package/dist/vite/plugins/shared-dependencies-plugin/assert-no-dynamic-css.d.ts +3 -0
  231. package/dist/vite/plugins/shared-dependencies-plugin/assert-no-dynamic-css.d.ts.map +1 -0
  232. package/dist/vite/plugins/shared-dependencies-plugin/assert-no-dynamic-css.js +56 -0
  233. package/dist/vite/plugins/shared-dependencies-plugin/assert-no-dynamic-css.js.map +1 -0
  234. package/dist/vite/plugins/shared-dependencies-plugin/flatten.d.ts +2 -0
  235. package/dist/vite/plugins/shared-dependencies-plugin/flatten.d.ts.map +1 -0
  236. package/dist/vite/plugins/shared-dependencies-plugin/flatten.js +19 -0
  237. package/dist/vite/plugins/shared-dependencies-plugin/flatten.js.map +1 -0
  238. package/dist/vite/plugins/shared-dependencies-plugin/index.d.ts +2 -0
  239. package/dist/vite/plugins/shared-dependencies-plugin/index.d.ts.map +1 -0
  240. package/dist/vite/plugins/shared-dependencies-plugin/index.js +20 -0
  241. package/dist/vite/plugins/shared-dependencies-plugin/index.js.map +1 -0
  242. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.d.ts.map +1 -0
  243. package/dist/vite/plugins/{shared-dependencies-plugin.js → shared-dependencies-plugin/shared-dependencies-plugin.js} +29 -107
  244. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js.map +1 -0
  245. package/dist/vite/plugins/utils/import-esm.d.ts +2 -0
  246. package/dist/vite/plugins/utils/import-esm.d.ts.map +1 -0
  247. package/dist/vite/plugins/utils/import-esm.js +22 -0
  248. package/dist/vite/plugins/utils/import-esm.js.map +1 -0
  249. package/dist/vite/plugins/utils/index.d.ts +3 -0
  250. package/dist/vite/plugins/utils/index.d.ts.map +1 -0
  251. package/dist/vite/plugins/utils/index.js +21 -0
  252. package/dist/vite/plugins/utils/index.js.map +1 -0
  253. package/dist/webpack/configs/optimization-config.d.ts.map +1 -1
  254. package/dist/webpack/configs/optimization-config.js +53 -24
  255. package/dist/webpack/configs/optimization-config.js.map +1 -1
  256. package/dist/webpack/configs/output-config.d.ts.map +1 -1
  257. package/dist/webpack/configs/output-config.js +0 -1
  258. package/dist/webpack/configs/output-config.js.map +1 -1
  259. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  260. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +11 -3
  261. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  262. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -1
  263. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +2 -21
  264. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -1
  265. package/dist/webpack/configs/plugins/define-process-env-plugin.d.ts +5 -0
  266. package/dist/webpack/configs/plugins/define-process-env-plugin.d.ts.map +1 -0
  267. package/dist/webpack/configs/plugins/define-process-env-plugin.js +20 -0
  268. package/dist/webpack/configs/plugins/define-process-env-plugin.js.map +1 -0
  269. package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts +1 -1
  270. package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts.map +1 -1
  271. package/dist/webpack/configs/plugins/filter-warnings-plugin.js +1 -4
  272. package/dist/webpack/configs/plugins/filter-warnings-plugin.js.map +1 -1
  273. package/dist/webpack/configs/plugins/ignore-plugin/empty-module.d.ts +2 -0
  274. package/dist/webpack/configs/plugins/ignore-plugin/empty-module.d.ts.map +1 -0
  275. package/dist/webpack/configs/plugins/ignore-plugin/empty-module.js +11 -0
  276. package/dist/webpack/configs/plugins/ignore-plugin/empty-module.js.map +1 -0
  277. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.d.ts +26 -3
  278. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.d.ts.map +1 -1
  279. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +41 -10
  280. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  281. package/dist/webpack/configs/plugins/index.d.ts +1 -0
  282. package/dist/webpack/configs/plugins/index.d.ts.map +1 -1
  283. package/dist/webpack/configs/plugins/index.js +1 -0
  284. package/dist/webpack/configs/plugins/index.js.map +1 -1
  285. package/dist/webpack/configs/plugins/moment-locales-plugin.d.ts.map +1 -1
  286. package/dist/webpack/configs/plugins/moment-locales-plugin.js +2 -5
  287. package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -1
  288. package/dist/webpack/configs/plugins-config.d.ts.map +1 -1
  289. package/dist/webpack/configs/plugins-config.js +1 -0
  290. package/dist/webpack/configs/plugins-config.js.map +1 -1
  291. package/dist/webpack/configs/rules/font-rules.d.ts.map +1 -1
  292. package/dist/webpack/configs/rules/font-rules.js +2 -1
  293. package/dist/webpack/configs/rules/font-rules.js.map +1 -1
  294. package/dist/webpack/configs/rules/image-rules.d.ts.map +1 -1
  295. package/dist/webpack/configs/rules/image-rules.js +2 -1
  296. package/dist/webpack/configs/rules/image-rules.js.map +1 -1
  297. package/dist/webpack/create-webpack-config.d.ts.map +1 -1
  298. package/dist/webpack/create-webpack-config.js +8 -3
  299. package/dist/webpack/create-webpack-config.js.map +1 -1
  300. package/dist/webpack/create-webpack-configs.d.ts.map +1 -1
  301. package/dist/webpack/create-webpack-configs.js +4 -12
  302. package/dist/webpack/create-webpack-configs.js.map +1 -1
  303. package/dist/webpack/types.d.ts +1 -1
  304. package/dist/webpack/types.d.ts.map +1 -1
  305. package/dist/webpack/utils/create-webpack-build-context.d.ts.map +1 -1
  306. package/dist/webpack/utils/create-webpack-build-context.js +1 -2
  307. package/dist/webpack/utils/create-webpack-build-context.js.map +1 -1
  308. package/package.json +22 -18
  309. package/src/cli/commands/__tests__/build.test.ts +33 -5
  310. package/src/cli/commands/__tests__/bundle-vite.test.ts +50 -1
  311. package/src/cli/commands/__tests__/start.test.ts +17 -4
  312. package/src/cli/commands/build.ts +5 -6
  313. package/src/cli/commands/bundle-vite.ts +13 -0
  314. package/src/cli/commands/registry/build.ts +6 -1
  315. package/src/cli/commands/registry/command-registry.ts +0 -1
  316. package/src/cli/commands/registry/start.ts +6 -1
  317. package/src/cli/commands/review/rules/__tests__/require-compatible-typescript.test.ts +127 -0
  318. package/src/cli/commands/review/rules/index.ts +2 -0
  319. package/src/cli/commands/review/rules/require-compatible-typescript.ts +64 -0
  320. package/src/cli/commands/start.ts +4 -4
  321. package/src/cli/commands/test/runners/__tests__/vitest.test.ts +8 -1
  322. package/src/cli/commands/test/runners/vitest.ts +5 -3
  323. package/src/cli/index.ts +2 -2
  324. package/src/cli/utils/__tests__/get-bundle-command.test.ts +23 -0
  325. package/src/cli/utils/__tests__/get-exit-code.test.ts +41 -0
  326. package/src/cli/utils/__tests__/resolve-bundler.test.ts +64 -0
  327. package/src/cli/utils/get-bundle-command.ts +5 -0
  328. package/src/cli/utils/get-exit-code.ts +17 -0
  329. package/src/cli/utils/index.ts +3 -0
  330. package/src/cli/utils/resolve-bundler.ts +23 -0
  331. package/src/core/__tests__/bundle-report.test.ts +60 -0
  332. package/src/core/__tests__/create-extension-regexp.test.ts +32 -0
  333. package/src/core/__tests__/resolve-output-path.test.ts +45 -0
  334. package/src/core/__tests__/resolve-output-root.test.ts +37 -0
  335. package/src/core/__tests__/sort-shared-css.test.ts +39 -0
  336. package/src/core/bundle-report.ts +33 -0
  337. package/src/core/check-resource/__tests__/check-resource.test.ts +21 -7
  338. package/src/core/check-resource/__tests__/get-peer-dependency-meta.test.ts +70 -13
  339. package/src/core/check-resource/__tests__/is-resolvable.test.ts +20 -0
  340. package/src/core/check-resource/check-resource.ts +17 -16
  341. package/src/core/check-resource/get-peer-dependency-meta.ts +67 -4
  342. package/src/core/check-resource/index.ts +1 -1
  343. package/src/core/check-resource/is-resolvable.ts +19 -0
  344. package/src/core/check-resource/types.ts +2 -0
  345. package/src/core/chunk-patterns.ts +30 -0
  346. package/src/core/create-build-context.ts +2 -2
  347. package/src/core/create-extension-regexp.ts +7 -0
  348. package/src/core/get-process-env.ts +17 -0
  349. package/src/core/index.ts +8 -1
  350. package/src/core/moment-locales.ts +6 -0
  351. package/src/core/resolve-output-path.ts +10 -0
  352. package/src/core/resolve-output-root.ts +8 -0
  353. package/src/core/sort-shared-css.ts +7 -0
  354. package/src/core/types.ts +1 -1
  355. package/src/cypress/config/__tests__/vite-config.test.ts +72 -0
  356. package/src/cypress/config/index.ts +1 -0
  357. package/src/cypress/config/vite-config.ts +37 -0
  358. package/src/jest/__tests__/resolver.test.ts +42 -1
  359. package/src/jest/resolver.ts +17 -1
  360. package/src/storybook-config/__tests__/vite-final.test.ts +122 -0
  361. package/src/storybook-config/index.ts +1 -0
  362. package/src/storybook-config/vite-final.ts +65 -0
  363. package/src/utils/__tests__/get-configuration.test.ts +82 -5
  364. package/src/utils/__tests__/get-package-name.test.ts +57 -0
  365. package/src/utils/__tests__/validate-shared-dependencies.test.ts +50 -35
  366. package/src/utils/get-configuration.ts +50 -15
  367. package/src/utils/get-package-name.ts +8 -2
  368. package/src/utils/index.ts +1 -0
  369. package/src/utils/types.ts +1 -0
  370. package/src/utils/validate-shared-dependencies.ts +15 -1
  371. package/src/vite/__tests__/build-shared-dependencies.test.ts +13 -26
  372. package/src/vite/__tests__/validate-shared-dependencies.test.ts +30 -19
  373. package/src/vite/build-shared-dependencies.ts +3 -7
  374. package/src/vite/config/__tests__/asset-file-names.test.ts +40 -0
  375. package/src/vite/config/__tests__/base-config.test.ts +99 -31
  376. package/src/vite/config/__tests__/code-splitting.test.ts +34 -0
  377. package/src/vite/config/__tests__/create-css-config.test.ts +58 -0
  378. package/src/vite/config/__tests__/create-filtering-logger.test.ts +51 -0
  379. package/src/vite/config/__tests__/create-vite-build-context.test.ts +5 -2
  380. package/src/vite/config/__tests__/create-vite-config.test.ts +91 -13
  381. package/src/vite/config/__tests__/get-warmup-client-files.test.ts +20 -0
  382. package/src/vite/config/asset-file-names.ts +20 -0
  383. package/src/vite/config/base-config.ts +45 -37
  384. package/src/vite/config/code-splitting.ts +23 -0
  385. package/src/vite/config/create-css-config.ts +16 -0
  386. package/src/vite/config/create-filtering-logger.ts +34 -0
  387. package/src/vite/config/create-vite-build-context.ts +3 -5
  388. package/src/vite/config/create-vite-config.ts +45 -12
  389. package/src/vite/config/get-warmup-client-files.ts +13 -0
  390. package/src/vite/index.html +1 -0
  391. package/src/vite/plugins/__tests__/bundle-stat-plugin.test.ts +70 -0
  392. package/src/vite/plugins/__tests__/chain-source-maps-plugin.test.ts +58 -0
  393. package/src/vite/plugins/__tests__/clean-plugin.test.ts +121 -0
  394. package/src/vite/plugins/__tests__/design-system-guard-plugin.test.ts +83 -0
  395. package/src/vite/plugins/__tests__/html-template.test.ts +6 -0
  396. package/src/vite/plugins/__tests__/ignore-modules-plugin.test.ts +29 -7
  397. package/src/vite/plugins/__tests__/istanbul-plugin.test.ts +62 -0
  398. package/src/vite/plugins/__tests__/moment-locales-plugin.test.ts +104 -0
  399. package/src/vite/plugins/bundle-stat-plugin.ts +24 -0
  400. package/src/vite/plugins/chain-source-maps-plugin.ts +26 -0
  401. package/src/vite/plugins/clean-plugin.ts +46 -0
  402. package/src/vite/plugins/design-system-guard-plugin.ts +34 -0
  403. package/src/vite/plugins/ignore-modules-plugin.ts +36 -7
  404. package/src/vite/plugins/index.ts +7 -0
  405. package/src/vite/plugins/istanbul-plugin.ts +19 -0
  406. package/src/vite/plugins/magic-comments-plugin/__tests__/magic-comments-plugin.test.ts +105 -0
  407. package/src/vite/plugins/magic-comments-plugin/__tests__/parse-magic-comments.test.ts +40 -0
  408. package/src/vite/plugins/magic-comments-plugin/index.ts +1 -0
  409. package/src/vite/plugins/magic-comments-plugin/magic-comments-plugin.ts +63 -0
  410. package/src/vite/plugins/magic-comments-plugin/parse-magic-comments.ts +39 -0
  411. package/src/vite/plugins/metadata-plugin.ts +1 -1
  412. package/src/vite/plugins/moment-locales-plugin.ts +41 -0
  413. package/src/vite/plugins/shared-dependencies-plugin/__tests__/assemble-iife.test.ts +29 -0
  414. package/src/vite/plugins/shared-dependencies-plugin/__tests__/assert-no-dynamic-css.test.ts +113 -0
  415. package/src/vite/plugins/shared-dependencies-plugin/__tests__/flatten.test.ts +23 -0
  416. package/src/vite/plugins/{__tests__ → shared-dependencies-plugin/__tests__}/shared-dependencies-plugin.test.ts +38 -4
  417. package/src/vite/plugins/shared-dependencies-plugin/assemble-iife.ts +114 -0
  418. package/src/vite/plugins/shared-dependencies-plugin/assert-no-dynamic-css.ts +58 -0
  419. package/src/vite/plugins/shared-dependencies-plugin/flatten.ts +8 -0
  420. package/src/vite/plugins/shared-dependencies-plugin/index.ts +1 -0
  421. package/src/vite/plugins/{shared-dependencies-plugin.ts → shared-dependencies-plugin/shared-dependencies-plugin.ts} +24 -115
  422. package/src/vite/plugins/utils/import-esm.ts +15 -0
  423. package/src/vite/plugins/utils/index.ts +2 -0
  424. package/src/vite/rolldown-oxc.d.ts +20 -0
  425. package/src/webpack/__tests__/bundle-webpack.test.ts +8 -8
  426. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +54 -5
  427. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +81 -12
  428. package/src/webpack/__tests__/create-webpack-config.test.ts +92 -9
  429. package/src/webpack/configs/optimization-config.ts +47 -25
  430. package/src/webpack/configs/output-config.ts +1 -2
  431. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +16 -4
  432. package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +3 -25
  433. package/src/webpack/configs/plugins/define-process-env-plugin.ts +10 -0
  434. package/src/webpack/configs/plugins/filter-warnings-plugin.ts +1 -5
  435. package/src/webpack/configs/plugins/ignore-plugin/__tests__/ignore-plugin.test.ts +76 -24
  436. package/src/webpack/configs/plugins/ignore-plugin/empty-module.ts +7 -0
  437. package/src/webpack/configs/plugins/ignore-plugin/ignore-plugin.ts +59 -9
  438. package/src/webpack/configs/plugins/index.ts +1 -0
  439. package/src/webpack/configs/plugins/moment-locales-plugin.ts +2 -2
  440. package/src/webpack/configs/plugins-config.ts +2 -0
  441. package/src/webpack/configs/rules/font-rules.ts +2 -2
  442. package/src/webpack/configs/rules/image-rules.ts +2 -2
  443. package/src/webpack/create-webpack-config.ts +11 -4
  444. package/src/webpack/create-webpack-configs.ts +2 -8
  445. package/src/webpack/types.ts +1 -4
  446. package/src/webpack/utils/create-webpack-build-context.ts +1 -6
  447. package/tsconfig/base.json +1 -1
  448. package/tsconfig/types.d.ts +10 -0
  449. package/dist/core/get-output-path.d.ts +0 -3
  450. package/dist/core/get-output-path.d.ts.map +0 -1
  451. package/dist/core/get-output-path.js +0 -29
  452. package/dist/core/get-output-path.js.map +0 -1
  453. package/dist/vite/plugins/shared-dependencies-plugin.d.ts.map +0 -1
  454. package/dist/vite/plugins/shared-dependencies-plugin.js.map +0 -1
  455. package/src/core/__tests__/get-output-path.test.ts +0 -64
  456. package/src/core/get-output-path.ts +0 -15
  457. /package/dist/vite/plugins/{shared-dependencies-plugin.d.ts → shared-dependencies-plugin/shared-dependencies-plugin.d.ts} +0 -0
@@ -10,22 +10,17 @@ Object.defineProperty(exports, "sharedDependenciesPlugin", {
10
10
  });
11
11
  const _crypto = /*#__PURE__*/ _interop_require_default(require("crypto"));
12
12
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
- const _core = require("../../core");
13
+ const _core = require("../../../core");
14
+ const _assembleiife = require("./assemble-iife");
15
+ const _assertnodynamiccss = require("./assert-no-dynamic-css");
16
+ const _flatten = require("./flatten");
14
17
  function _interop_require_default(obj) {
15
18
  return obj && obj.__esModule ? obj : {
16
19
  default: obj
17
20
  };
18
21
  }
19
- /*
20
- * Replaces `/` with `-` so scoped packages stay flat in Rolldown output.
21
- * Without this, `@scope/foo` emits into a subdirectory and its require()
22
- * calls use `../` paths that don't match the IIFE's flat module keys.
23
- */ function flatName(dep) {
24
- return dep.replace('/', '-');
25
- }
26
- function indent(spaces) {
27
- return ' '.repeat(spaces);
28
- }
22
+ // Suffix for the CJS entry files emitted by `entryFileNames` below.
23
+ const ENTRY_FILE_SUFFIX = '.cjs.js';
29
24
  function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
30
25
  const CSS_VIRTUAL_PREFIX = '\0SHARED_DEPENDENCY_CSS';
31
26
  const dependencyNames = Object.keys(dependencies);
@@ -40,7 +35,7 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
40
35
  isProduction = env.mode === _core.bundleConstants.mode.production;
41
36
  const input = {};
42
37
  for (const dependency of dependencyNames){
43
- input[flatName(dependency)] = dependency;
38
+ input[(0, _flatten.flatten)(dependency)] = dependency;
44
39
  }
45
40
  for (const name of cssInputNames){
46
41
  input[name] = CSS_VIRTUAL_PREFIX + name;
@@ -48,7 +43,7 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
48
43
  return {
49
44
  // Relative base so CSS font URLs resolve from the CSS file's directory, not site root
50
45
  base: './',
51
- // Must match host build mode mismatch causes react-dom/client usingClientEntryPoint errors
46
+ // Must match host build mode; mismatch causes react-dom/client usingClientEntryPoint errors
52
47
  define: {
53
48
  'process.env.NODE_ENV': JSON.stringify(env.mode)
54
49
  },
@@ -63,14 +58,14 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
63
58
  * code in function(module, exports, require) { ... }
64
59
  */ format: 'cjs',
65
60
  exports: 'named',
66
- entryFileNames: '[name].cjs.js',
61
+ entryFileNames: `[name]${ENTRY_FILE_SUFFIX}`,
67
62
  chunkFileNames: '_[name]-[hash].js',
68
63
  assetFileNames: (assetInfo)=>{
69
64
  var _ref, _rawName_split_pop;
70
65
  var _assetInfo_names;
71
66
  const rawName = (_ref = (_assetInfo_names = assetInfo.names) === null || _assetInfo_names === void 0 ? void 0 : _assetInfo_names[0]) !== null && _ref !== void 0 ? _ref : '';
72
67
  const ext = (_rawName_split_pop = rawName.split('.').pop()) !== null && _rawName_split_pop !== void 0 ? _rawName_split_pop : '';
73
- // Strip scope prefix added by flatName (e.g. @servicetitan-anvil2 anvil2)
68
+ // Strip scope prefix added by flatten (e.g. @servicetitan-anvil2 to anvil2)
74
69
  const name = rawName.replace(/^@[^-]+-/, '').replace(/\.[^.]+$/, '');
75
70
  if (ext === 'css') {
76
71
  return isProduction ? `${name}.[hash].bundle[extname]` : `${name}.bundle[extname]`;
@@ -110,32 +105,42 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
110
105
  return imports.map((p)=>`import '${p}';`).join('\n');
111
106
  },
112
107
  generateBundle (_options, bundle) {
113
- const factories = [];
108
+ (0, _assertnodynamiccss.assertNoDynamicCss)(bundle);
109
+ const modules = [];
114
110
  const exposes = [];
115
111
  for (const [fileName, chunk] of Object.entries(bundle)){
116
112
  if (chunk.type !== 'chunk') {
117
113
  continue;
118
114
  }
119
115
  if (!chunk.isEntry) {
120
- factories.push(`'./${fileName}': function(module, exports, require) {\n${indent(12)}${chunk.code}\n${indent(8)}}`);
116
+ modules.push({
117
+ id: `./${fileName}`,
118
+ code: chunk.code
119
+ });
121
120
  delete bundle[fileName];
122
121
  }
123
122
  }
124
123
  for (const [dependency, variable] of Object.entries(dependencies)){
125
- const entryFileName = `${flatName(dependency)}.cjs.js`;
124
+ const entryFileName = `${(0, _flatten.flatten)(dependency)}${ENTRY_FILE_SUFFIX}`;
126
125
  const chunk = bundle[entryFileName];
127
126
  if ((chunk === null || chunk === void 0 ? void 0 : chunk.type) !== 'chunk') {
128
127
  var _ref;
129
128
  throw new Error(`Expected entry chunk for ${dependency}, got type: ${(_ref = chunk === null || chunk === void 0 ? void 0 : chunk.type) !== null && _ref !== void 0 ? _ref : 'undefined'}`);
130
129
  }
131
- factories.push(`'${dependency}': function(module, exports, require) {\n${indent(12)}${chunk.code}\n${indent(8)}}`);
132
- exposes.push(`expose('${variable}', '${dependency}');`);
130
+ modules.push({
131
+ id: dependency,
132
+ code: chunk.code
133
+ });
134
+ exposes.push({
135
+ variable,
136
+ dependency
137
+ });
133
138
  delete bundle[entryFileName];
134
139
  }
135
140
  for (const name of cssInputNames){
136
- delete bundle[`${name}.cjs.js`];
141
+ delete bundle[`${name}${ENTRY_FILE_SUFFIX}`];
137
142
  }
138
- const code = assembleIIFE(factories, exposes);
143
+ const code = (0, _assembleiife.assembleIife)(modules, exposes);
139
144
  const hash = _crypto.default.createHash('md5').update(code).digest('hex').slice(0, 20);
140
145
  const sharedFileName = isProduction ? `shared.${hash}.bundle.js` : 'shared.bundle.js';
141
146
  this.emitFile({
@@ -143,7 +148,7 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
143
148
  fileName: sharedFileName,
144
149
  source: code
145
150
  });
146
- const cssFiles = Object.keys(bundle).filter((f)=>f.endsWith('.bundle.css'));
151
+ const cssFiles = (0, _core.sortSharedCss)(Object.keys(bundle).filter((f)=>f.endsWith('.bundle.css')));
147
152
  const entrypoints = {
148
153
  css: cssFiles,
149
154
  js: [
@@ -160,93 +165,10 @@ function sharedDependenciesPlugin({ dependencies, css, metadataDir }) {
160
165
  /*
161
166
  * dir is always set when build.outDir is configured (our case).
162
167
  * Rolldown types it as optional, but falling back to '' would
163
- * silently resolve to cwd better to crash than write wrong metadata.
168
+ * silently resolve to cwd; better to crash than write wrong metadata.
164
169
  */ (0, _core.generateExposedDependenciesMetadata)(metadataDir, ()=>_path.default.resolve(options.dir, 'entrypoints.json'));
165
170
  } : undefined
166
171
  };
167
172
  }
168
- function assembleIIFE(factories, exposes) {
169
- return `\
170
- (function () {
171
- const STORAGE_KEY = Symbol.for('SERVICETITAN_EXPOSE_LOADER_STORAGE');
172
- const g = globalThis;
173
-
174
- if (g[STORAGE_KEY] === undefined) {
175
- g[STORAGE_KEY] = Object.assign(Object.create(null), {
176
- clear(scope) {
177
- delete this[scope];
178
- },
179
- });
180
- }
181
-
182
- var storage = g[STORAGE_KEY];
183
-
184
- var modules = {
185
- ${factories.join(`,\n${indent(8)}`)}
186
- };
187
-
188
- function createScopedRequire(scope) {
189
- const cache = (storage[scope] = storage[scope] || Object.create(null));
190
-
191
- function require(id) {
192
- if (cache[id]) {
193
- return cache[id].exports;
194
- }
195
- if (!modules[id]) {
196
- throw new Error('Module not found: ' + id);
197
- }
198
-
199
- const module = (cache[id] = { id, loaded: false, exports: {} });
200
- modules[id](module, module.exports, require);
201
- module.loaded = true;
202
-
203
- const keys = Object.keys(module.exports);
204
- if (module.exports.__esModule && keys.length === 1 && keys[0] === 'default') {
205
- module.exports = module.exports.default;
206
- }
207
-
208
- return module.exports;
209
- }
210
-
211
- Object.setPrototypeOf(require, {
212
- resolve(id) {
213
- return id;
214
- },
215
- });
216
- return require;
217
- }
218
-
219
- function expose(path, moduleId) {
220
- const parts = path.split('.');
221
- let obj = g;
222
-
223
- for (let i = 0; i < parts.length - 1; i++) {
224
- if (obj[parts[i]] === undefined) {
225
- obj[parts[i]] = Object.create(null);
226
- }
227
- obj = obj[parts[i]];
228
- }
229
-
230
- obj[parts[parts.length - 1]] = new Proxy(
231
- Object.assign(Object.create(null), {
232
- getStorage() {
233
- return storage;
234
- },
235
- }),
236
- {
237
- get(target, scope, receiver) {
238
- if (scope === 'getStorage') {
239
- return Reflect.get(target, scope, receiver);
240
- }
241
- return createScopedRequire(scope)(moduleId);
242
- },
243
- }
244
- );
245
- }
246
-
247
- ${exposes.join(`\n${indent(4)}`)}
248
- })();
249
- `;
250
- }
251
173
 
252
174
  //# sourceMappingURL=shared-dependencies-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.ts"],"sourcesContent":["import crypto from 'crypto';\nimport path from 'path';\nimport { Plugin } from 'vite';\nimport { bundleConstants, generateExposedDependenciesMetadata, sortSharedCss } from '../../../core';\nimport { assembleIife, Expose, ModuleFactory } from './assemble-iife';\nimport { assertNoDynamicCss } from './assert-no-dynamic-css';\nimport { flatten } from './flatten';\n\nexport interface SharedDependenciesPluginOptions {\n dependencies: Record<string, string>;\n css?: Record<string, string[]>;\n metadataDir?: string;\n}\n\n// Suffix for the CJS entry files emitted by `entryFileNames` below.\nconst ENTRY_FILE_SUFFIX = '.cjs.js';\n\nexport function sharedDependenciesPlugin({\n dependencies,\n css,\n metadataDir,\n}: SharedDependenciesPluginOptions): Plugin {\n const CSS_VIRTUAL_PREFIX = '\\0SHARED_DEPENDENCY_CSS';\n\n const dependencyNames = Object.keys(dependencies);\n const dependencySet = new Set(dependencyNames);\n const cssEntries = css ?? {};\n const cssInputNames = Object.keys(cssEntries);\n let isProduction = false;\n\n return {\n name: 'shared-dependencies',\n enforce: 'pre',\n\n config(_, env) {\n isProduction = env.mode === bundleConstants.mode.production;\n\n const input: Record<string, string> = {};\n for (const dependency of dependencyNames) {\n input[flatten(dependency)] = dependency;\n }\n for (const name of cssInputNames) {\n input[name] = CSS_VIRTUAL_PREFIX + name;\n }\n\n return {\n // Relative base so CSS font URLs resolve from the CSS file's directory, not site root\n base: './',\n // Must match host build mode; mismatch causes react-dom/client usingClientEntryPoint errors\n define: {\n 'process.env.NODE_ENV': JSON.stringify(env.mode),\n },\n build: {\n rolldownOptions: {\n // Vite defaults to false which strips all CJS exports from entry chunks\n preserveEntrySignatures: 'exports-only',\n input,\n output: {\n /*\n * CJS format + named exports: the factory system wraps each entry's\n * code in function(module, exports, require) { ... }\n */\n format: 'cjs',\n exports: 'named',\n entryFileNames: `[name]${ENTRY_FILE_SUFFIX}`,\n chunkFileNames: '_[name]-[hash].js',\n assetFileNames: assetInfo => {\n const rawName = assetInfo.names?.[0] ?? '';\n const ext = rawName.split('.').pop() ?? '';\n // Strip scope prefix added by flatten (e.g. @servicetitan-anvil2 to anvil2)\n const name = rawName\n .replace(/^@[^-]+-/, '')\n .replace(/\\.[^.]+$/, '');\n if (ext === 'css') {\n return isProduction\n ? `${name}.[hash].bundle[extname]`\n : `${name}.bundle[extname]`;\n }\n return isProduction\n ? `${name}.[hash][extname]`\n : `${name}[extname]`;\n },\n },\n // Disabled: we don't know which exports MFEs will use at runtime\n treeshake: false,\n },\n },\n };\n },\n\n resolveId(source: string, importer: string | undefined) {\n if (source.startsWith(CSS_VIRTUAL_PREFIX)) {\n return source;\n }\n if (!importer) {\n return;\n }\n if (dependencySet.has(source)) {\n return { id: source, external: true };\n }\n },\n\n load(id: string) {\n if (!id.startsWith(CSS_VIRTUAL_PREFIX)) {\n return;\n }\n const name = id.slice(CSS_VIRTUAL_PREFIX.length);\n const imports = cssEntries[name];\n if (!imports) {\n return;\n }\n return imports.map(p => `import '${p}';`).join('\\n');\n },\n\n generateBundle(_options, bundle) {\n assertNoDynamicCss(bundle);\n\n const modules: ModuleFactory[] = [];\n const exposes: Expose[] = [];\n\n for (const [fileName, chunk] of Object.entries(bundle)) {\n if (chunk.type !== 'chunk') {\n continue;\n }\n if (!chunk.isEntry) {\n modules.push({ id: `./${fileName}`, code: chunk.code });\n delete bundle[fileName];\n }\n }\n\n for (const [dependency, variable] of Object.entries(dependencies)) {\n const entryFileName = `${flatten(dependency)}${ENTRY_FILE_SUFFIX}`;\n const chunk = bundle[entryFileName];\n if (chunk?.type !== 'chunk') {\n throw new Error(\n `Expected entry chunk for ${dependency}, got type: ${chunk?.type ?? 'undefined'}`\n );\n }\n modules.push({ id: dependency, code: chunk.code });\n exposes.push({ variable, dependency });\n delete bundle[entryFileName];\n }\n\n for (const name of cssInputNames) {\n delete bundle[`${name}${ENTRY_FILE_SUFFIX}`];\n }\n\n const code = assembleIife(modules, exposes);\n const hash = crypto.createHash('md5').update(code).digest('hex').slice(0, 20);\n const sharedFileName = isProduction ? `shared.${hash}.bundle.js` : 'shared.bundle.js';\n\n this.emitFile({\n type: 'asset',\n fileName: sharedFileName,\n source: code,\n });\n\n const cssFiles = sortSharedCss(\n Object.keys(bundle).filter(f => f.endsWith('.bundle.css'))\n );\n const entrypoints = { css: cssFiles, js: [sharedFileName] };\n this.emitFile({\n type: 'asset',\n fileName: 'entrypoints.json',\n source: JSON.stringify(entrypoints, null, 2),\n });\n },\n\n writeBundle: metadataDir\n ? options => {\n /*\n * dir is always set when build.outDir is configured (our case).\n * Rolldown types it as optional, but falling back to '' would\n * silently resolve to cwd; better to crash than write wrong metadata.\n */\n generateExposedDependenciesMetadata(metadataDir, () =>\n path.resolve(options.dir!, 'entrypoints.json')\n );\n }\n : undefined,\n };\n}\n"],"names":["sharedDependenciesPlugin","ENTRY_FILE_SUFFIX","dependencies","css","metadataDir","CSS_VIRTUAL_PREFIX","dependencyNames","Object","keys","dependencySet","Set","cssEntries","cssInputNames","isProduction","name","enforce","config","_","env","mode","bundleConstants","production","input","dependency","flatten","base","define","JSON","stringify","build","rolldownOptions","preserveEntrySignatures","output","format","exports","entryFileNames","chunkFileNames","assetFileNames","assetInfo","rawName","names","ext","split","pop","replace","treeshake","resolveId","source","importer","startsWith","has","id","external","load","slice","length","imports","map","p","join","generateBundle","_options","bundle","assertNoDynamicCss","modules","exposes","fileName","chunk","entries","type","isEntry","push","code","variable","entryFileName","Error","assembleIife","hash","crypto","createHash","update","digest","sharedFileName","emitFile","cssFiles","sortSharedCss","filter","f","endsWith","entrypoints","js","writeBundle","options","generateExposedDependenciesMetadata","path","resolve","dir","undefined"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function importEsm<T = unknown>(specifier: string): Promise<T>;
2
+ //# sourceMappingURL=import-esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-esm.d.ts","sourceRoot":"","sources":["../../../../src/vite/plugins/utils/import-esm.ts"],"names":[],"mappings":"AAYA,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEpE"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "importEsm", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return importEsm;
9
+ }
10
+ });
11
+ /*
12
+ * Load an ES module from CommonJS output. SWC rewrites a plain dynamic
13
+ * import() to require(), which throws on ESM-only packages (those whose
14
+ * package exports have no "require" entry, e.g. vite-plugin-istanbul). Hiding
15
+ * the import() inside a Function keeps it native so it isn't rewritten.
16
+ */ // eslint-disable-next-line @typescript-eslint/no-implied-eval
17
+ const nativeImport = new Function('specifier', 'return import(specifier)');
18
+ function importEsm(specifier) {
19
+ return nativeImport(specifier);
20
+ }
21
+
22
+ //# sourceMappingURL=import-esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/vite/plugins/utils/import-esm.ts"],"sourcesContent":["/*\n * Load an ES module from CommonJS output. SWC rewrites a plain dynamic\n * import() to require(), which throws on ESM-only packages (those whose\n * package exports have no \"require\" entry, e.g. vite-plugin-istanbul). Hiding\n * the import() inside a Function keeps it native so it isn't rewritten.\n */\n// eslint-disable-next-line @typescript-eslint/no-implied-eval\nconst nativeImport = new Function('specifier', 'return import(specifier)') as (\n specifier: string\n) => Promise<unknown>;\n\n/* istanbul ignore next -- native import can't run in jest; verified at runtime */\nexport function importEsm<T = unknown>(specifier: string): Promise<T> {\n return nativeImport(specifier) as Promise<T>;\n}\n"],"names":["importEsm","nativeImport","Function","specifier"],"mappings":";;;;+BAYgBA;;;eAAAA;;;AAZhB;;;;;CAKC,GACD,8DAA8D;AAC9D,MAAMC,eAAe,IAAIC,SAAS,aAAa;AAKxC,SAASF,UAAuBG,SAAiB;IACpD,OAAOF,aAAaE;AACxB"}
@@ -0,0 +1,3 @@
1
+ export * from './get-css-file-names';
2
+ export * from './import-esm';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vite/plugins/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./get-css-file-names"), exports);
6
+ _export_star(require("./import-esm"), exports);
7
+ function _export_star(from, to) {
8
+ Object.keys(from).forEach(function(k) {
9
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
10
+ Object.defineProperty(to, k, {
11
+ enumerable: true,
12
+ get: function() {
13
+ return from[k];
14
+ }
15
+ });
16
+ }
17
+ });
18
+ return from;
19
+ }
20
+
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/vite/plugins/utils/index.ts"],"sourcesContent":["export * from './get-css-file-names';\nexport * from './import-esm';\n"],"names":[],"mappings":";;;;qBAAc;qBACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"optimization-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI1D,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAqBrF"}
1
+ {"version":3,"file":"optimization-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI1D,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAqBrF"}
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "optimizationConfig", {
10
10
  });
11
11
  const _cssminimizerwebpackplugin = /*#__PURE__*/ _interop_require_default(require("css-minimizer-webpack-plugin"));
12
12
  const _terserwebpackplugin = /*#__PURE__*/ _interop_require_default(require("terser-webpack-plugin"));
13
+ const _core = require("../../core");
13
14
  function _interop_require_default(obj) {
14
15
  return obj && obj.__esModule ? obj : {
15
16
  default: obj
@@ -31,6 +32,7 @@ function optimizationConfig(context, _) {
31
32
  optimization.runtimeChunk = 'single';
32
33
  }
33
34
  [
35
+ hostConfig,
34
36
  minimizeConfig,
35
37
  sharedDependenciesConfig,
36
38
  webComponentConfig
@@ -39,9 +41,18 @@ function optimizationConfig(context, _) {
39
41
  optimization
40
42
  };
41
43
  }
44
+ function hostConfig(optimization, context) {
45
+ const { isProduction } = context.build;
46
+ const { isWebComponent } = context.package;
47
+ if (isWebComponent || !isProduction) {
48
+ return;
49
+ }
50
+ Object.assign(optimization.splitChunks.cacheGroups, vendorGroups());
51
+ }
42
52
  function minimizeConfig(optimization, context) {
43
53
  var _ref, _ref1;
44
54
  const { isProduction } = context.build;
55
+ const { isWebComponent } = context.package;
45
56
  const { codeCoverage } = context.options;
46
57
  const { minify } = context.bundlerConfig;
47
58
  if (!isProduction) {
@@ -53,9 +64,12 @@ function minimizeConfig(optimization, context) {
53
64
  if (!optimization.minimize) {
54
65
  return;
55
66
  }
56
- const terserOptions = {
57
- compress: false,
58
- mangle: false,
67
+ /*
68
+ * MFE source maps are available to Datadog, so compress and mangle are OK.
69
+ * Disable for hosts until their source maps are uploaded too.
70
+ */ const terserOptions = {
71
+ compress: !!isWebComponent,
72
+ mangle: !!isWebComponent,
59
73
  ...typeof minifyJs === 'object' ? minifyJs : {}
60
74
  };
61
75
  const cssMinimizerPluginOptions = {
@@ -82,44 +96,59 @@ function sharedDependenciesConfig(optimization, context) {
82
96
  test: /@servicetitan[\\/]anvil2[\\/].*\.css$/,
83
97
  name: 'anvil2',
84
98
  chunks: 'all',
85
- enforce: true
99
+ enforce: true,
100
+ // Must outrank vendor groups so anvil2 CSS lands in separate chunk
101
+ priority: 10
86
102
  }
87
103
  });
88
104
  }
89
105
  function webComponentConfig(optimization, context) {
90
106
  const { headless, isProduction } = context.build;
91
107
  const { isWebComponent } = context.package;
92
- if (!isWebComponent || headless) {
108
+ if (!isWebComponent) {
93
109
  return;
94
110
  }
111
+ const groups = vendorGroups();
112
+ const styles = {
113
+ name: 'main',
114
+ type: 'css/mini-extract',
115
+ chunks: 'all',
116
+ enforce: true
117
+ };
95
118
  Object.assign(optimization.splitChunks.cacheGroups, {
96
- styles: {
97
- name: 'main',
98
- type: 'css/mini-extract',
99
- chunks: 'all',
100
- enforce: true
119
+ ...headless ? {} : {
120
+ styles
101
121
  },
102
- servicetitan: {
103
- name: 'servicetitan',
104
- test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
105
- chunks: 'all'
122
+ // assets-manifest-plugin requires servicetitan to order CSS correctly (headless has no CSS)
123
+ ...isProduction ? groups : headless ? {} : {
124
+ servicetitan: groups.servicetitan
106
125
  }
107
126
  });
108
- if (!isProduction) {
109
- return;
110
- }
111
- Object.assign(optimization.splitChunks.cacheGroups, {
112
- common: {
113
- name: 'common',
114
- test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
127
+ }
128
+ function vendorGroups() {
129
+ return {
130
+ 'servicetitan': {
131
+ name: 'servicetitan',
132
+ test: _core.CHUNK_PATTERNS.servicetitan,
115
133
  chunks: 'all'
116
134
  },
117
- kendo: {
135
+ 'vendor-core': {
136
+ name: 'vendor-core',
137
+ test: _core.CHUNK_PATTERNS['vendor-core'],
138
+ chunks: 'all'
139
+ },
140
+ 'kendo': {
118
141
  name: 'kendo',
119
- test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
142
+ test: _core.CHUNK_PATTERNS.kendo,
120
143
  chunks: 'all'
144
+ },
145
+ 'vendor': {
146
+ name: 'vendor',
147
+ test: _core.CHUNK_PATTERNS.vendor,
148
+ chunks: 'all',
149
+ priority: -5
121
150
  }
122
- });
151
+ };
123
152
  }
124
153
 
125
154
  //# sourceMappingURL=optimization-config.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webpack/configs/optimization-config.ts"],"sourcesContent":["import CssMinimizerWebpackPlugin from 'css-minimizer-webpack-plugin';\nimport TerserPlugin from 'terser-webpack-plugin';\nimport { Configuration } from 'webpack';\nimport { Overrides, WebpackBuildContext } from '../types';\n\ntype Config = Configuration['optimization'];\ntype ConfigWithCacheGroups = Config & { splitChunks: { cacheGroups: Record<string, any> } };\ntype Result = Pick<Configuration, 'optimization'>;\n\nexport function optimizationConfig(context: WebpackBuildContext, _: Overrides): Result {\n const { headless, isProduction, emitExposedDependencies } = context.build;\n\n const optimization: ConfigWithCacheGroups = {\n chunkIds: isProduction ? 'deterministic' : 'named',\n moduleIds: 'size',\n mangleExports: 'size',\n splitChunks: { cacheGroups: {} },\n };\n\n if (emitExposedDependencies) {\n optimization.runtimeChunk = false;\n } else if (!headless && isProduction) {\n optimization.runtimeChunk = 'single';\n }\n\n [minimizeConfig, sharedDependenciesConfig, webComponentConfig].forEach(handler =>\n handler(optimization, context)\n );\n\n return { optimization };\n}\n\nfunction minimizeConfig(optimization: ConfigWithCacheGroups, context: WebpackBuildContext) {\n const { isProduction } = context.build;\n const { codeCoverage } = context.options;\n const { minify } = context.bundlerConfig;\n if (!isProduction) {\n return;\n }\n\n const minifyJs = minify?.js ?? true;\n const minifyCss = minify?.css ?? true;\n optimization.minimize = !codeCoverage && (!!minifyJs || !!minifyCss);\n if (!optimization.minimize) {\n return;\n }\n\n const terserOptions = {\n compress: false,\n mangle: false,\n ...(typeof minifyJs === 'object' ? minifyJs : {}),\n };\n\n const cssMinimizerPluginOptions = {\n ...(typeof minifyCss === 'object' ? minifyCss : {}),\n };\n\n optimization.minimizer = [\n ...(minifyJs ? [new TerserPlugin({ terserOptions })] : []),\n ...(minifyCss ? [new CssMinimizerWebpackPlugin(cssMinimizerPluginOptions)] : []),\n ];\n}\n\nfunction sharedDependenciesConfig(\n optimization: ConfigWithCacheGroups,\n context: WebpackBuildContext\n) {\n const { emitExposedDependencies } = context.build;\n if (!emitExposedDependencies) {\n return;\n }\n\n Object.assign(optimization.splitChunks.cacheGroups, {\n anvil2: {\n test: /@servicetitan[\\\\/]anvil2[\\\\/].*\\.css$/,\n name: 'anvil2',\n chunks: 'all',\n enforce: true,\n },\n });\n}\n\nfunction webComponentConfig(optimization: ConfigWithCacheGroups, context: WebpackBuildContext) {\n const { headless, isProduction } = context.build;\n const { isWebComponent } = context.package;\n if (!isWebComponent || headless) {\n return;\n }\n\n Object.assign(optimization.splitChunks.cacheGroups, {\n styles: {\n name: 'main',\n type: 'css/mini-extract',\n chunks: 'all',\n enforce: true,\n },\n servicetitan: {\n name: 'servicetitan',\n test: /[\\\\/]node_modules[\\\\/]@servicetitan[\\\\/]/,\n chunks: 'all',\n },\n });\n\n if (!isProduction) {\n return;\n }\n\n Object.assign(optimization.splitChunks.cacheGroups, {\n common: {\n name: 'common',\n test: /[\\\\/]node_modules[\\\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\\\/]/,\n chunks: 'all',\n },\n kendo: {\n name: 'kendo',\n test: /[\\\\/]node_modules[\\\\/](@progress|@telerik)[\\\\/]/,\n chunks: 'all',\n },\n });\n}\n"],"names":["optimizationConfig","context","_","headless","isProduction","emitExposedDependencies","build","optimization","chunkIds","moduleIds","mangleExports","splitChunks","cacheGroups","runtimeChunk","minimizeConfig","sharedDependenciesConfig","webComponentConfig","forEach","handler","codeCoverage","options","minify","bundlerConfig","minifyJs","js","minifyCss","css","minimize","terserOptions","compress","mangle","cssMinimizerPluginOptions","minimizer","TerserPlugin","CssMinimizerWebpackPlugin","Object","assign","anvil2","test","name","chunks","enforce","isWebComponent","package","styles","type","servicetitan","common","kendo"],"mappings":";;;;+BASgBA;;;eAAAA;;;kFATsB;4EACb;;;;;;AAQlB,SAASA,mBAAmBC,OAA4B,EAAEC,CAAY;IACzE,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IAEzE,MAAMC,eAAsC;QACxCC,UAAUJ,eAAe,kBAAkB;QAC3CK,WAAW;QACXC,eAAe;QACfC,aAAa;YAAEC,aAAa,CAAC;QAAE;IACnC;IAEA,IAAIP,yBAAyB;QACzBE,aAAaM,YAAY,GAAG;IAChC,OAAO,IAAI,CAACV,YAAYC,cAAc;QAClCG,aAAaM,YAAY,GAAG;IAChC;IAEA;QAACC;QAAgBC;QAA0BC;KAAmB,CAACC,OAAO,CAACC,CAAAA,UACnEA,QAAQX,cAAcN;IAG1B,OAAO;QAAEM;IAAa;AAC1B;AAEA,SAASO,eAAeP,YAAmC,EAAEN,OAA4B;;IACrF,MAAM,EAAEG,YAAY,EAAE,GAAGH,QAAQK,KAAK;IACtC,MAAM,EAAEa,YAAY,EAAE,GAAGlB,QAAQmB,OAAO;IACxC,MAAM,EAAEC,MAAM,EAAE,GAAGpB,QAAQqB,aAAa;IACxC,IAAI,CAAClB,cAAc;QACf;IACJ;IAEA,MAAMmB,mBAAWF,mBAAAA,6BAAAA,OAAQG,EAAE,uCAAI;IAC/B,MAAMC,qBAAYJ,mBAAAA,6BAAAA,OAAQK,GAAG,yCAAI;IACjCnB,aAAaoB,QAAQ,GAAG,CAACR,gBAAiB,CAAA,CAAC,CAACI,YAAY,CAAC,CAACE,SAAQ;IAClE,IAAI,CAAClB,aAAaoB,QAAQ,EAAE;QACxB;IACJ;IAEA,MAAMC,gBAAgB;QAClBC,UAAU;QACVC,QAAQ;QACR,GAAI,OAAOP,aAAa,WAAWA,WAAW,CAAC,CAAC;IACpD;IAEA,MAAMQ,4BAA4B;QAC9B,GAAI,OAAON,cAAc,WAAWA,YAAY,CAAC,CAAC;IACtD;IAEAlB,aAAayB,SAAS,GAAG;WACjBT,WAAW;YAAC,IAAIU,4BAAY,CAAC;gBAAEL;YAAc;SAAG,GAAG,EAAE;WACrDH,YAAY;YAAC,IAAIS,kCAAyB,CAACH;SAA2B,GAAG,EAAE;KAClF;AACL;AAEA,SAAShB,yBACLR,YAAmC,EACnCN,OAA4B;IAE5B,MAAM,EAAEI,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IACjD,IAAI,CAACD,yBAAyB;QAC1B;IACJ;IAEA8B,OAAOC,MAAM,CAAC7B,aAAaI,WAAW,CAACC,WAAW,EAAE;QAChDyB,QAAQ;YACJC,MAAM;YACNC,MAAM;YACNC,QAAQ;YACRC,SAAS;QACb;IACJ;AACJ;AAEA,SAASzB,mBAAmBT,YAAmC,EAAEN,OAA4B;IACzF,MAAM,EAAEE,QAAQ,EAAEC,YAAY,EAAE,GAAGH,QAAQK,KAAK;IAChD,MAAM,EAAEoC,cAAc,EAAE,GAAGzC,QAAQ0C,OAAO;IAC1C,IAAI,CAACD,kBAAkBvC,UAAU;QAC7B;IACJ;IAEAgC,OAAOC,MAAM,CAAC7B,aAAaI,WAAW,CAACC,WAAW,EAAE;QAChDgC,QAAQ;YACJL,MAAM;YACNM,MAAM;YACNL,QAAQ;YACRC,SAAS;QACb;QACAK,cAAc;YACVP,MAAM;YACND,MAAM;YACNE,QAAQ;QACZ;IACJ;IAEA,IAAI,CAACpC,cAAc;QACf;IACJ;IAEA+B,OAAOC,MAAM,CAAC7B,aAAaI,WAAW,CAACC,WAAW,EAAE;QAChDmC,QAAQ;YACJR,MAAM;YACND,MAAM;YACNE,QAAQ;QACZ;QACAQ,OAAO;YACHT,MAAM;YACND,MAAM;YACNE,QAAQ;QACZ;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../src/webpack/configs/optimization-config.ts"],"sourcesContent":["import CssMinimizerWebpackPlugin from 'css-minimizer-webpack-plugin';\nimport TerserPlugin from 'terser-webpack-plugin';\nimport { Configuration } from 'webpack';\nimport { CHUNK_PATTERNS } from '../../core';\nimport { Overrides, WebpackBuildContext } from '../types';\n\ntype Config = Configuration['optimization'];\ntype ConfigWithCacheGroups = Config & { splitChunks: { cacheGroups: Record<string, any> } };\ntype Result = Pick<Configuration, 'optimization'>;\n\nexport function optimizationConfig(context: WebpackBuildContext, _: Overrides): Result {\n const { headless, isProduction, emitExposedDependencies } = context.build;\n\n const optimization: ConfigWithCacheGroups = {\n chunkIds: isProduction ? 'deterministic' : 'named',\n moduleIds: 'size',\n mangleExports: 'size',\n splitChunks: { cacheGroups: {} },\n };\n\n if (emitExposedDependencies) {\n optimization.runtimeChunk = false;\n } else if (!headless && isProduction) {\n optimization.runtimeChunk = 'single';\n }\n\n [hostConfig, minimizeConfig, sharedDependenciesConfig, webComponentConfig].forEach(handler =>\n handler(optimization, context)\n );\n\n return { optimization };\n}\n\nfunction hostConfig(optimization: ConfigWithCacheGroups, context: WebpackBuildContext) {\n const { isProduction } = context.build;\n const { isWebComponent } = context.package;\n if (isWebComponent || !isProduction) {\n return;\n }\n\n Object.assign(optimization.splitChunks.cacheGroups, vendorGroups());\n}\n\nfunction minimizeConfig(optimization: ConfigWithCacheGroups, context: WebpackBuildContext) {\n const { isProduction } = context.build;\n const { isWebComponent } = context.package;\n const { codeCoverage } = context.options;\n const { minify } = context.bundlerConfig;\n if (!isProduction) {\n return;\n }\n\n const minifyJs = minify?.js ?? true;\n const minifyCss = minify?.css ?? true;\n optimization.minimize = !codeCoverage && (!!minifyJs || !!minifyCss);\n if (!optimization.minimize) {\n return;\n }\n\n /*\n * MFE source maps are available to Datadog, so compress and mangle are OK.\n * Disable for hosts until their source maps are uploaded too.\n */\n const terserOptions = {\n compress: !!isWebComponent,\n mangle: !!isWebComponent,\n ...(typeof minifyJs === 'object' ? minifyJs : {}),\n };\n\n const cssMinimizerPluginOptions = {\n ...(typeof minifyCss === 'object' ? minifyCss : {}),\n };\n\n optimization.minimizer = [\n ...(minifyJs ? [new TerserPlugin({ terserOptions })] : []),\n ...(minifyCss ? [new CssMinimizerWebpackPlugin(cssMinimizerPluginOptions)] : []),\n ];\n}\n\nfunction sharedDependenciesConfig(\n optimization: ConfigWithCacheGroups,\n context: WebpackBuildContext\n) {\n const { emitExposedDependencies } = context.build;\n if (!emitExposedDependencies) {\n return;\n }\n\n Object.assign(optimization.splitChunks.cacheGroups, {\n anvil2: {\n test: /@servicetitan[\\\\/]anvil2[\\\\/].*\\.css$/,\n name: 'anvil2',\n chunks: 'all',\n enforce: true,\n // Must outrank vendor groups so anvil2 CSS lands in separate chunk\n priority: 10,\n },\n });\n}\n\nfunction webComponentConfig(optimization: ConfigWithCacheGroups, context: WebpackBuildContext) {\n const { headless, isProduction } = context.build;\n const { isWebComponent } = context.package;\n if (!isWebComponent) {\n return;\n }\n\n const groups = vendorGroups();\n const styles = { name: 'main', type: 'css/mini-extract', chunks: 'all', enforce: true };\n\n Object.assign(optimization.splitChunks.cacheGroups, {\n ...(headless ? {} : { styles }),\n // assets-manifest-plugin requires servicetitan to order CSS correctly (headless has no CSS)\n ...(isProduction ? groups : headless ? {} : { servicetitan: groups.servicetitan }),\n });\n}\n\nfunction vendorGroups() {\n return {\n 'servicetitan': {\n name: 'servicetitan',\n test: CHUNK_PATTERNS.servicetitan,\n chunks: 'all',\n },\n 'vendor-core': {\n name: 'vendor-core',\n test: CHUNK_PATTERNS['vendor-core'],\n chunks: 'all',\n },\n 'kendo': {\n name: 'kendo',\n test: CHUNK_PATTERNS.kendo,\n chunks: 'all',\n },\n 'vendor': {\n name: 'vendor',\n test: CHUNK_PATTERNS.vendor,\n chunks: 'all',\n priority: -5,\n },\n };\n}\n"],"names":["optimizationConfig","context","_","headless","isProduction","emitExposedDependencies","build","optimization","chunkIds","moduleIds","mangleExports","splitChunks","cacheGroups","runtimeChunk","hostConfig","minimizeConfig","sharedDependenciesConfig","webComponentConfig","forEach","handler","isWebComponent","package","Object","assign","vendorGroups","codeCoverage","options","minify","bundlerConfig","minifyJs","js","minifyCss","css","minimize","terserOptions","compress","mangle","cssMinimizerPluginOptions","minimizer","TerserPlugin","CssMinimizerWebpackPlugin","anvil2","test","name","chunks","enforce","priority","groups","styles","type","servicetitan","CHUNK_PATTERNS","kendo","vendor"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/output-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAA4C,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE5C,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAqBxE"}
1
+ {"version":3,"file":"output-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/output-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6B,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE5C,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAoBxE"}
@@ -14,7 +14,6 @@ function outputConfig(context, _) {
14
14
  const { isWebComponent } = context.package;
15
15
  const output = {
16
16
  filename: '[name].bundle.js',
17
- path: (0, _core.getOutputPath)(context),
18
17
  clean: getClean(context),
19
18
  ...emitExposedDependencies ? {
20
19
  chunkLoadingGlobal: `sharedChunk${name}`
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webpack/configs/output-config.ts"],"sourcesContent":["import { Configuration } from 'webpack';\nimport { BuildContext, getBundleType, getCdnPath, getOutputPath } from '../../core';\nimport { Overrides } from '../types';\n\ntype Config = Configuration['output'];\ntype Result = Pick<Configuration, 'output'>;\n\nexport function outputConfig(context: BuildContext, _: Overrides): Result {\n const { name, isProduction, emitExposedDependencies } = context.build;\n const { isWebComponent } = context.package;\n\n const output: Config = {\n filename: '[name].bundle.js',\n path: getOutputPath(context),\n clean: getClean(context),\n ...(emitExposedDependencies ? { chunkLoadingGlobal: `sharedChunk${name}` } : {}),\n };\n\n if (isProduction) {\n const cdnPath = getCdnPath(context);\n Object.assign(output, {\n filename: '[name].[contenthash].bundle.js',\n ...(isWebComponent ? { uniqueName: name } : {}),\n ...(cdnPath ? { publicPath: cdnPath } : {}),\n });\n }\n\n return { output };\n}\n\nfunction getClean(context: BuildContext): NonNullable<Config>['clean'] {\n const { emitExposedDependencies } = context.build;\n if (emitExposedDependencies) {\n return true;\n }\n const exposedDependenciesDir = getBundleType({\n ...context,\n build: { ...context.build, emitExposedDependencies: true },\n });\n return exposedDependenciesDir ? { keep: new RegExp(exposedDependenciesDir) } : true;\n}\n"],"names":["outputConfig","context","_","name","isProduction","emitExposedDependencies","build","isWebComponent","package","output","filename","path","getOutputPath","clean","getClean","chunkLoadingGlobal","cdnPath","getCdnPath","Object","assign","uniqueName","publicPath","exposedDependenciesDir","getBundleType","keep","RegExp"],"mappings":";;;;+BAOgBA;;;eAAAA;;;sBANuD;AAMhE,SAASA,aAAaC,OAAqB,EAAEC,CAAY;IAC5D,MAAM,EAAEC,IAAI,EAAEC,YAAY,EAAEC,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IACrE,MAAM,EAAEC,cAAc,EAAE,GAAGN,QAAQO,OAAO;IAE1C,MAAMC,SAAiB;QACnBC,UAAU;QACVC,MAAMC,IAAAA,mBAAa,EAACX;QACpBY,OAAOC,SAASb;QAChB,GAAII,0BAA0B;YAAEU,oBAAoB,CAAC,WAAW,EAAEZ,MAAM;QAAC,IAAI,CAAC,CAAC;IACnF;IAEA,IAAIC,cAAc;QACd,MAAMY,UAAUC,IAAAA,gBAAU,EAAChB;QAC3BiB,OAAOC,MAAM,CAACV,QAAQ;YAClBC,UAAU;YACV,GAAIH,iBAAiB;gBAAEa,YAAYjB;YAAK,IAAI,CAAC,CAAC;YAC9C,GAAIa,UAAU;gBAAEK,YAAYL;YAAQ,IAAI,CAAC,CAAC;QAC9C;IACJ;IAEA,OAAO;QAAEP;IAAO;AACpB;AAEA,SAASK,SAASb,OAAqB;IACnC,MAAM,EAAEI,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IACjD,IAAID,yBAAyB;QACzB,OAAO;IACX;IACA,MAAMiB,yBAAyBC,IAAAA,mBAAa,EAAC;QACzC,GAAGtB,OAAO;QACVK,OAAO;YAAE,GAAGL,QAAQK,KAAK;YAAED,yBAAyB;QAAK;IAC7D;IACA,OAAOiB,yBAAyB;QAAEE,MAAM,IAAIC,OAAOH;IAAwB,IAAI;AACnF"}
1
+ {"version":3,"sources":["../../../src/webpack/configs/output-config.ts"],"sourcesContent":["import { Configuration } from 'webpack';\nimport { BuildContext, getBundleType, getCdnPath } from '../../core';\nimport { Overrides } from '../types';\n\ntype Config = Configuration['output'];\ntype Result = Pick<Configuration, 'output'>;\n\nexport function outputConfig(context: BuildContext, _: Overrides): Result {\n const { name, isProduction, emitExposedDependencies } = context.build;\n const { isWebComponent } = context.package;\n\n const output: Config = {\n filename: '[name].bundle.js',\n clean: getClean(context),\n ...(emitExposedDependencies ? { chunkLoadingGlobal: `sharedChunk${name}` } : {}),\n };\n\n if (isProduction) {\n const cdnPath = getCdnPath(context);\n Object.assign(output, {\n filename: '[name].[contenthash].bundle.js',\n ...(isWebComponent ? { uniqueName: name } : {}),\n ...(cdnPath ? { publicPath: cdnPath } : {}),\n });\n }\n\n return { output };\n}\n\nfunction getClean(context: BuildContext): NonNullable<Config>['clean'] {\n const { emitExposedDependencies } = context.build;\n if (emitExposedDependencies) {\n return true;\n }\n const exposedDependenciesDir = getBundleType({\n ...context,\n build: { ...context.build, emitExposedDependencies: true },\n });\n return exposedDependenciesDir ? { keep: new RegExp(exposedDependenciesDir) } : true;\n}\n"],"names":["outputConfig","context","_","name","isProduction","emitExposedDependencies","build","isWebComponent","package","output","filename","clean","getClean","chunkLoadingGlobal","cdnPath","getCdnPath","Object","assign","uniqueName","publicPath","exposedDependenciesDir","getBundleType","keep","RegExp"],"mappings":";;;;+BAOgBA;;;eAAAA;;;sBANwC;AAMjD,SAASA,aAAaC,OAAqB,EAAEC,CAAY;IAC5D,MAAM,EAAEC,IAAI,EAAEC,YAAY,EAAEC,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IACrE,MAAM,EAAEC,cAAc,EAAE,GAAGN,QAAQO,OAAO;IAE1C,MAAMC,SAAiB;QACnBC,UAAU;QACVC,OAAOC,SAASX;QAChB,GAAII,0BAA0B;YAAEQ,oBAAoB,CAAC,WAAW,EAAEV,MAAM;QAAC,IAAI,CAAC,CAAC;IACnF;IAEA,IAAIC,cAAc;QACd,MAAMU,UAAUC,IAAAA,gBAAU,EAACd;QAC3Be,OAAOC,MAAM,CAACR,QAAQ;YAClBC,UAAU;YACV,GAAIH,iBAAiB;gBAAEW,YAAYf;YAAK,IAAI,CAAC,CAAC;YAC9C,GAAIW,UAAU;gBAAEK,YAAYL;YAAQ,IAAI,CAAC,CAAC;QAC9C;IACJ;IAEA,OAAO;QAAEL;IAAO;AACpB;AAEA,SAASG,SAASX,OAAqB;IACnC,MAAM,EAAEI,uBAAuB,EAAE,GAAGJ,QAAQK,KAAK;IACjD,IAAID,yBAAyB;QACzB,OAAO;IACX;IACA,MAAMe,yBAAyBC,IAAAA,mBAAa,EAAC;QACzC,GAAGpB,OAAO;QACVK,OAAO;YAAE,GAAGL,QAAQK,KAAK;YAAED,yBAAyB;QAAK;IAC7D;IACA,OAAOe,yBAAyB;QAAEE,MAAM,IAAIC,OAAOH;IAAwB,IAAI;AACnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"assets-manifest-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/assets-manifest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAyD,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,qCAkCvE"}
1
+ {"version":3,"file":"assets-manifest-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/assets-manifest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACH,YAAY,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,qCAoCvE"}
@@ -21,13 +21,17 @@ function assetsManifestPlugin(context, _) {
21
21
  output: 'entrypoints.json',
22
22
  transform (assets) {
23
23
  const getAssetsByType = (type)=>{
24
- return Object.values(assets.entrypoints).flatMap(({ assets })=>{
24
+ const assetsForType = Object.values(assets.entrypoints).flatMap(({ assets })=>{
25
25
  var _assets_type;
26
26
  return (_assets_type = assets[type]) !== null && _assets_type !== void 0 ? _assets_type : [];
27
27
  });
28
+ // Dedupe chunks shared by entry points
29
+ return [
30
+ ...new Set(assetsForType)
31
+ ];
28
32
  };
29
33
  return {
30
- css: ensureDesignSystemCssIsFirst(getAssetsByType('css')),
34
+ css: ensureDesignSystemCssIsFirst(context, getAssetsByType('css')),
31
35
  js: getAssetsByType('js')
32
36
  };
33
37
  },
@@ -41,7 +45,11 @@ function assetsManifestPlugin(context, _) {
41
45
  }
42
46
  });
43
47
  }
44
- function ensureDesignSystemCssIsFirst(cssAssets) {
48
+ function ensureDesignSystemCssIsFirst(context, cssAssets) {
49
+ if (context.build.emitExposedDependencies) {
50
+ return (0, _core.sortSharedCss)(cssAssets);
51
+ }
52
+ // Put MFE's 'servicetitan' CSS chunk first to give custom CSS higher precedence
45
53
  const offset = cssAssets.findIndex((name)=>name.startsWith('servicetitan'));
46
54
  return offset > 0 ? [
47
55
  cssAssets[offset],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/plugins/assets-manifest-plugin.ts"],"sourcesContent":["import { WebpackAssetsManifest } from 'webpack-assets-manifest';\nimport { BuildContext, generateExposedDependenciesMetadata, generateMetadata } from '../../../core';\nimport { Overrides } from '../../types';\n\ninterface EntryPoints {\n css: string[];\n js: string[];\n}\n\nexport function assetsManifestPlugin(context: BuildContext, _: Overrides) {\n const { destination, isWebComponent } = context.package;\n const { emitExposedDependencies } = context.build;\n\n if (!(isWebComponent || emitExposedDependencies)) {\n return;\n }\n\n return new WebpackAssetsManifest({\n entrypoints: true,\n output: 'entrypoints.json',\n transform(assets: {\n entrypoints: Record<string, { assets: Record<string, string[]> }>;\n }): EntryPoints {\n const getAssetsByType = (type: string) => {\n return Object.values(assets.entrypoints).flatMap(\n ({ assets }) => assets[type] ?? []\n );\n };\n\n return {\n css: ensureDesignSystemCssIsFirst(getAssetsByType('css')),\n js: getAssetsByType('js'),\n };\n },\n // eslint-disable-next-line @typescript-eslint/require-await\n done: async (manifest: WebpackAssetsManifest) => {\n if (emitExposedDependencies) {\n generateExposedDependenciesMetadata(destination, () => manifest.getOutputPath());\n } else {\n generateMetadata(context);\n }\n },\n });\n}\n\nfunction ensureDesignSystemCssIsFirst(cssAssets: string[]) {\n const offset = cssAssets.findIndex(name => name.startsWith('servicetitan'));\n return offset > 0\n ? [cssAssets[offset], ...cssAssets.filter((_, index) => index !== offset)]\n : cssAssets;\n}\n"],"names":["assetsManifestPlugin","context","_","destination","isWebComponent","package","emitExposedDependencies","build","WebpackAssetsManifest","entrypoints","output","transform","assets","getAssetsByType","type","Object","values","flatMap","css","ensureDesignSystemCssIsFirst","js","done","manifest","generateExposedDependenciesMetadata","getOutputPath","generateMetadata","cssAssets","offset","findIndex","name","startsWith","filter","index"],"mappings":";;;;+BASgBA;;;eAAAA;;;uCATsB;sBAC8C;AAQ7E,SAASA,qBAAqBC,OAAqB,EAAEC,CAAY;IACpE,MAAM,EAAEC,WAAW,EAAEC,cAAc,EAAE,GAAGH,QAAQI,OAAO;IACvD,MAAM,EAAEC,uBAAuB,EAAE,GAAGL,QAAQM,KAAK;IAEjD,IAAI,CAAEH,CAAAA,kBAAkBE,uBAAsB,GAAI;QAC9C;IACJ;IAEA,OAAO,IAAIE,4CAAqB,CAAC;QAC7BC,aAAa;QACbC,QAAQ;QACRC,WAAUC,MAET;YACG,MAAMC,kBAAkB,CAACC;gBACrB,OAAOC,OAAOC,MAAM,CAACJ,OAAOH,WAAW,EAAEQ,OAAO,CAC5C,CAAC,EAAEL,MAAM,EAAE;wBAAKA;4BAAAA,eAAAA,MAAM,CAACE,KAAK,cAAZF,0BAAAA,eAAgB,EAAE;;YAE1C;YAEA,OAAO;gBACHM,KAAKC,6BAA6BN,gBAAgB;gBAClDO,IAAIP,gBAAgB;YACxB;QACJ;QACA,4DAA4D;QAC5DQ,MAAM,OAAOC;YACT,IAAIhB,yBAAyB;gBACzBiB,IAAAA,yCAAmC,EAACpB,aAAa,IAAMmB,SAASE,aAAa;YACjF,OAAO;gBACHC,IAAAA,sBAAgB,EAACxB;YACrB;QACJ;IACJ;AACJ;AAEA,SAASkB,6BAA6BO,SAAmB;IACrD,MAAMC,SAASD,UAAUE,SAAS,CAACC,CAAAA,OAAQA,KAAKC,UAAU,CAAC;IAC3D,OAAOH,SAAS,IACV;QAACD,SAAS,CAACC,OAAO;WAAKD,UAAUK,MAAM,CAAC,CAAC7B,GAAG8B,QAAUA,UAAUL;KAAQ,GACxED;AACV"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/plugins/assets-manifest-plugin.ts"],"sourcesContent":["import { WebpackAssetsManifest } from 'webpack-assets-manifest';\nimport {\n BuildContext,\n generateExposedDependenciesMetadata,\n generateMetadata,\n sortSharedCss,\n} from '../../../core';\nimport { Overrides } from '../../types';\n\ninterface EntryPoints {\n css: string[];\n js: string[];\n}\n\nexport function assetsManifestPlugin(context: BuildContext, _: Overrides) {\n const { destination, isWebComponent } = context.package;\n const { emitExposedDependencies } = context.build;\n\n if (!(isWebComponent || emitExposedDependencies)) {\n return;\n }\n\n return new WebpackAssetsManifest({\n entrypoints: true,\n output: 'entrypoints.json',\n transform(assets: {\n entrypoints: Record<string, { assets: Record<string, string[]> }>;\n }): EntryPoints {\n const getAssetsByType = (type: string) => {\n const assetsForType = Object.values(assets.entrypoints).flatMap(\n ({ assets }) => assets[type] ?? []\n );\n // Dedupe chunks shared by entry points\n return [...new Set(assetsForType)];\n };\n\n return {\n css: ensureDesignSystemCssIsFirst(context, getAssetsByType('css')),\n js: getAssetsByType('js'),\n };\n },\n // eslint-disable-next-line @typescript-eslint/require-await\n done: async (manifest: WebpackAssetsManifest) => {\n if (emitExposedDependencies) {\n generateExposedDependenciesMetadata(destination, () => manifest.getOutputPath());\n } else {\n generateMetadata(context);\n }\n },\n });\n}\n\nfunction ensureDesignSystemCssIsFirst(context: BuildContext, cssAssets: string[]) {\n if (context.build.emitExposedDependencies) {\n return sortSharedCss(cssAssets);\n }\n\n // Put MFE's 'servicetitan' CSS chunk first to give custom CSS higher precedence\n const offset = cssAssets.findIndex(name => name.startsWith('servicetitan'));\n return offset > 0\n ? [cssAssets[offset], ...cssAssets.filter((_, index) => index !== offset)]\n : cssAssets;\n}\n"],"names":["assetsManifestPlugin","context","_","destination","isWebComponent","package","emitExposedDependencies","build","WebpackAssetsManifest","entrypoints","output","transform","assets","getAssetsByType","type","assetsForType","Object","values","flatMap","Set","css","ensureDesignSystemCssIsFirst","js","done","manifest","generateExposedDependenciesMetadata","getOutputPath","generateMetadata","cssAssets","sortSharedCss","offset","findIndex","name","startsWith","filter","index"],"mappings":";;;;+BAcgBA;;;eAAAA;;;uCAdsB;sBAM/B;AAQA,SAASA,qBAAqBC,OAAqB,EAAEC,CAAY;IACpE,MAAM,EAAEC,WAAW,EAAEC,cAAc,EAAE,GAAGH,QAAQI,OAAO;IACvD,MAAM,EAAEC,uBAAuB,EAAE,GAAGL,QAAQM,KAAK;IAEjD,IAAI,CAAEH,CAAAA,kBAAkBE,uBAAsB,GAAI;QAC9C;IACJ;IAEA,OAAO,IAAIE,4CAAqB,CAAC;QAC7BC,aAAa;QACbC,QAAQ;QACRC,WAAUC,MAET;YACG,MAAMC,kBAAkB,CAACC;gBACrB,MAAMC,gBAAgBC,OAAOC,MAAM,CAACL,OAAOH,WAAW,EAAES,OAAO,CAC3D,CAAC,EAAEN,MAAM,EAAE;wBAAKA;4BAAAA,eAAAA,MAAM,CAACE,KAAK,cAAZF,0BAAAA,eAAgB,EAAE;;gBAEtC,uCAAuC;gBACvC,OAAO;uBAAI,IAAIO,IAAIJ;iBAAe;YACtC;YAEA,OAAO;gBACHK,KAAKC,6BAA6BpB,SAASY,gBAAgB;gBAC3DS,IAAIT,gBAAgB;YACxB;QACJ;QACA,4DAA4D;QAC5DU,MAAM,OAAOC;YACT,IAAIlB,yBAAyB;gBACzBmB,IAAAA,yCAAmC,EAACtB,aAAa,IAAMqB,SAASE,aAAa;YACjF,OAAO;gBACHC,IAAAA,sBAAgB,EAAC1B;YACrB;QACJ;IACJ;AACJ;AAEA,SAASoB,6BAA6BpB,OAAqB,EAAE2B,SAAmB;IAC5E,IAAI3B,QAAQM,KAAK,CAACD,uBAAuB,EAAE;QACvC,OAAOuB,IAAAA,mBAAa,EAACD;IACzB;IAEA,gFAAgF;IAChF,MAAME,SAASF,UAAUG,SAAS,CAACC,CAAAA,OAAQA,KAAKC,UAAU,CAAC;IAC3D,OAAOH,SAAS,IACV;QAACF,SAAS,CAACE,OAAO;WAAKF,UAAUM,MAAM,CAAC,CAAChC,GAAGiC,QAAUA,UAAUL;KAAQ,GACxEF;AACV"}
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-analyser-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/bundle-analyser-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,OAUvE"}
1
+ {"version":3,"file":"bundle-analyser-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/bundle-analyser-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAA2C,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,OAUvE"}
@@ -23,28 +23,9 @@ function bundleAnalyzerPlugin(context, _) {
23
23
  }
24
24
  return new BundleAnalyzerPlugin({
25
25
  analyzerMode: 'static',
26
- reportFilename: _path.default.join(_os.default.tmpdir(), getReportFileName(context)),
27
- reportTitle: getReportTitle(context)
26
+ reportFilename: _path.default.join(_os.default.tmpdir(), `${(0, _core.bundleReportFileName)(context)}.html`),
27
+ reportTitle: (0, _core.bundleReportTitle)(context)
28
28
  });
29
29
  }
30
- function getReportFileName(context) {
31
- const type = (0, _core.getBundleType)(context);
32
- const qualifier = type ? `-${type}` : '';
33
- return `${context.package.name}${qualifier}-bundle-${Date.now()}.html`;
34
- }
35
- function getReportTitle(context) {
36
- const unscopedName = context.package.name.replace(/^@[^/]+\//, '');
37
- const type = (0, _core.getBundleType)(context);
38
- const qualifier = type ? ` (${type})` : '';
39
- return `${unscopedName}${qualifier} ${formatDate(new Date())}`;
40
- }
41
- function formatDate(date) {
42
- const yyyy = date.getFullYear();
43
- const mm = date.getMonth() + 1;
44
- const dd = date.getDate();
45
- const HH = date.getHours();
46
- const MM = date.getMinutes();
47
- return `${yyyy}-${mm}-${dd} ${HH}:${MM}`;
48
- }
49
30
 
50
31
  //# sourceMappingURL=bundle-analyser-plugin.js.map