@bleedingdev/modern-js-app-tools 3.5.0-ultramodern.10 → 3.5.0-ultramodern.101

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 (558) hide show
  1. package/bin/modern-bundle-docs.js +7 -0
  2. package/bin/modern.js +0 -0
  3. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
  4. package/dist/cjs/builder/generator/getBuilderEnvironments.js +20 -16
  5. package/dist/cjs/builder/shared/builderPlugins/adapterPrecompress.js +13 -4
  6. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +14 -11
  7. package/dist/cjs/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.js +72 -0
  8. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +28 -11
  9. package/dist/cjs/builder/shared/bundlerPlugins/index.js +13 -6
  10. package/dist/cjs/builder/shared/lazyCompilation.js +2 -10
  11. package/dist/cjs/bundleDocs.js +114 -0
  12. package/dist/cjs/commands/build.js +2 -1
  13. package/dist/cjs/commands/deploy.js +4 -2
  14. package/dist/cjs/commands/index.js +0 -8
  15. package/dist/cjs/config/build-environment.js +268 -0
  16. package/dist/cjs/config/default.js +2 -0
  17. package/dist/cjs/config/index.js +11 -4
  18. package/dist/cjs/config/public.js +46 -0
  19. package/dist/cjs/index.js +93 -75
  20. package/dist/cjs/plugins/analyze/getServerRoutes.js +19 -0
  21. package/dist/cjs/plugins/analyze/index.js +22 -14
  22. package/dist/cjs/plugins/analyze/utils.js +3 -2
  23. package/dist/cjs/plugins/backend-federation/codegen.js +255 -0
  24. package/dist/cjs/plugins/backend-federation/config.js +204 -0
  25. package/dist/cjs/plugins/backend-federation/emit.js +148 -0
  26. package/dist/cjs/plugins/backendFederationBuild.js +53 -0
  27. package/dist/cjs/plugins/deploy/index.js +4 -4
  28. package/dist/cjs/plugins/deploy/platforms/cloudflare/artifacts.js +127 -0
  29. package/dist/cjs/plugins/deploy/platforms/cloudflare/constants.js +141 -0
  30. package/dist/cjs/plugins/deploy/platforms/cloudflare/delivery-unit.js +139 -0
  31. package/dist/cjs/plugins/deploy/platforms/cloudflare/i18n-worker.js +135 -0
  32. package/dist/cjs/plugins/deploy/platforms/cloudflare/index.js +150 -0
  33. package/dist/cjs/plugins/deploy/platforms/cloudflare/security-policies.js +205 -0
  34. package/dist/cjs/plugins/deploy/platforms/cloudflare/types.js +18 -0
  35. package/dist/cjs/plugins/deploy/platforms/cloudflare/utils.js +66 -0
  36. package/dist/cjs/plugins/deploy/platforms/cloudflare/worker-manifest.js +208 -0
  37. package/dist/cjs/plugins/deploy/platforms/cloudflare/wrangler-config.js +204 -0
  38. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-contract.js +108 -0
  39. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-plan.js +93 -0
  40. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/identity.js +83 -0
  41. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +188 -0
  42. package/dist/cjs/{baseline.js → plugins/deploy/platforms/cloudflare-output-verifier/issues.js} +19 -10
  43. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/manifest.js +89 -0
  44. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.js +151 -0
  45. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +302 -0
  46. package/dist/cjs/plugins/deploy/platforms/node.js +20 -2
  47. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  48. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  49. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  50. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  51. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  52. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  53. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  54. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  55. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  56. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  57. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  58. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  59. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  60. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  61. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  62. package/dist/cjs/plugins/deploy/utils/npmAliases.js +226 -0
  63. package/dist/cjs/plugins/initialize/index.js +4 -3
  64. package/dist/cjs/plugins/serverBuild.js +3 -2
  65. package/dist/cjs/plugins/ultramodernReleaseEnvelope.js +100 -0
  66. package/dist/cjs/presetUltramodern.js +33 -2
  67. package/dist/cjs/ultramodern-release-envelope/canonical.js +68 -0
  68. package/dist/cjs/ultramodern-release-envelope/framework-output.js +597 -0
  69. package/dist/cjs/ultramodern-release-envelope/index.js +399 -0
  70. package/dist/cjs/ultramodern-release-envelope/types.js +51 -0
  71. package/dist/cjs/ultramodern-release-identity.js +110 -0
  72. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
  73. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +19 -15
  74. package/dist/esm/builder/shared/builderPlugins/adapterPrecompress.mjs +13 -4
  75. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +15 -12
  76. package/dist/esm/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +30 -0
  77. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +24 -10
  78. package/dist/esm/builder/shared/bundlerPlugins/index.mjs +1 -0
  79. package/dist/esm/builder/shared/lazyCompilation.mjs +1 -3
  80. package/dist/esm/bundleDocs.mjs +62 -0
  81. package/dist/esm/commands/build.mjs +2 -1
  82. package/dist/esm/commands/deploy.mjs +4 -2
  83. package/dist/esm/commands/index.mjs +0 -5
  84. package/dist/esm/config/build-environment.mjs +224 -0
  85. package/dist/esm/config/default.mjs +2 -0
  86. package/dist/esm/config/index.mjs +1 -0
  87. package/dist/esm/config/public.mjs +1 -0
  88. package/dist/esm/index.mjs +20 -5
  89. package/dist/esm/plugins/analyze/getHtmlTemplate.mjs +2 -2
  90. package/dist/esm/plugins/analyze/getServerRoutes.mjs +17 -1
  91. package/dist/esm/plugins/analyze/index.mjs +22 -14
  92. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  93. package/dist/esm/plugins/analyze/utils.mjs +3 -2
  94. package/dist/esm/plugins/backend-federation/codegen.mjs +204 -0
  95. package/dist/esm/plugins/backend-federation/config.mjs +128 -0
  96. package/dist/esm/plugins/backend-federation/emit.mjs +97 -0
  97. package/dist/esm/plugins/backendFederationBuild.mjs +1 -0
  98. package/dist/esm/plugins/deploy/index.mjs +1 -1
  99. package/dist/esm/plugins/deploy/platforms/cloudflare/artifacts.mjs +64 -0
  100. package/dist/esm/plugins/deploy/platforms/cloudflare/constants.mjs +34 -0
  101. package/dist/esm/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +88 -0
  102. package/dist/esm/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +97 -0
  103. package/dist/esm/plugins/deploy/platforms/cloudflare/index.mjs +102 -0
  104. package/dist/esm/plugins/deploy/platforms/cloudflare/security-policies.mjs +167 -0
  105. package/dist/esm/plugins/deploy/platforms/cloudflare/types.mjs +0 -0
  106. package/dist/esm/plugins/deploy/platforms/cloudflare/utils.mjs +12 -0
  107. package/dist/esm/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +148 -0
  108. package/dist/esm/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +150 -0
  109. package/dist/esm/plugins/deploy/platforms/cloudflare-output-contract.mjs +31 -0
  110. package/dist/esm/plugins/deploy/platforms/cloudflare-output-plan.mjs +45 -0
  111. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +45 -0
  112. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +133 -0
  113. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +10 -0
  114. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +51 -0
  115. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +99 -0
  116. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +238 -0
  117. package/dist/esm/plugins/deploy/platforms/node.mjs +20 -2
  118. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  119. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  120. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  121. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  122. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  123. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  124. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  125. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  126. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  127. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  128. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  129. package/dist/esm/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  130. package/dist/esm/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  131. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  132. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  133. package/dist/esm/plugins/deploy/utils/npmAliases.mjs +174 -0
  134. package/dist/esm/plugins/initialize/index.mjs +4 -3
  135. package/dist/esm/plugins/serverBuild.mjs +3 -2
  136. package/dist/esm/plugins/ultramodernReleaseEnvelope.mjs +52 -0
  137. package/dist/esm/presetUltramodern.mjs +33 -2
  138. package/dist/esm/ultramodern-release-envelope/canonical.mjs +21 -0
  139. package/dist/esm/ultramodern-release-envelope/framework-output.mjs +524 -0
  140. package/dist/esm/ultramodern-release-envelope/index.mjs +335 -0
  141. package/dist/esm/ultramodern-release-envelope/types.mjs +7 -0
  142. package/dist/esm/ultramodern-release-identity.mjs +66 -0
  143. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
  144. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +19 -15
  145. package/dist/esm-node/builder/shared/builderPlugins/adapterPrecompress.mjs +13 -4
  146. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +15 -12
  147. package/dist/esm-node/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +31 -0
  148. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +24 -10
  149. package/dist/esm-node/builder/shared/bundlerPlugins/index.mjs +1 -0
  150. package/dist/esm-node/builder/shared/lazyCompilation.mjs +1 -3
  151. package/dist/esm-node/bundleDocs.mjs +63 -0
  152. package/dist/esm-node/commands/build.mjs +2 -1
  153. package/dist/esm-node/commands/deploy.mjs +4 -2
  154. package/dist/esm-node/commands/index.mjs +0 -5
  155. package/dist/esm-node/config/build-environment.mjs +225 -0
  156. package/dist/esm-node/config/default.mjs +2 -0
  157. package/dist/esm-node/config/index.mjs +1 -0
  158. package/dist/esm-node/config/public.mjs +2 -0
  159. package/dist/esm-node/index.mjs +20 -5
  160. package/dist/esm-node/plugins/analyze/getHtmlTemplate.mjs +2 -2
  161. package/dist/esm-node/plugins/analyze/getServerRoutes.mjs +17 -1
  162. package/dist/esm-node/plugins/analyze/index.mjs +22 -14
  163. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  164. package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
  165. package/dist/esm-node/plugins/backend-federation/codegen.mjs +205 -0
  166. package/dist/esm-node/plugins/backend-federation/config.mjs +129 -0
  167. package/dist/esm-node/plugins/backend-federation/emit.mjs +98 -0
  168. package/dist/esm-node/plugins/backendFederationBuild.mjs +2 -0
  169. package/dist/esm-node/plugins/deploy/index.mjs +1 -1
  170. package/dist/esm-node/plugins/deploy/platforms/cloudflare/artifacts.mjs +65 -0
  171. package/dist/esm-node/plugins/deploy/platforms/cloudflare/constants.mjs +35 -0
  172. package/dist/esm-node/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +89 -0
  173. package/dist/esm-node/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +98 -0
  174. package/dist/esm-node/plugins/deploy/platforms/cloudflare/index.mjs +103 -0
  175. package/dist/esm-node/plugins/deploy/platforms/cloudflare/security-policies.mjs +168 -0
  176. package/dist/esm-node/plugins/deploy/platforms/cloudflare/types.mjs +1 -0
  177. package/dist/esm-node/plugins/deploy/platforms/cloudflare/utils.mjs +13 -0
  178. package/dist/esm-node/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +149 -0
  179. package/dist/esm-node/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +151 -0
  180. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-contract.mjs +32 -0
  181. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-plan.mjs +46 -0
  182. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +46 -0
  183. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +134 -0
  184. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +11 -0
  185. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +52 -0
  186. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +100 -0
  187. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +239 -0
  188. package/dist/esm-node/plugins/deploy/platforms/node.mjs +20 -2
  189. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  190. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  191. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  192. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  193. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  194. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  195. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  196. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  197. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  198. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  199. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  200. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  201. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  202. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  203. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  204. package/dist/esm-node/plugins/deploy/utils/npmAliases.mjs +175 -0
  205. package/dist/esm-node/plugins/initialize/index.mjs +4 -3
  206. package/dist/esm-node/plugins/serverBuild.mjs +3 -2
  207. package/dist/esm-node/plugins/ultramodernReleaseEnvelope.mjs +53 -0
  208. package/dist/esm-node/presetUltramodern.mjs +33 -2
  209. package/dist/esm-node/ultramodern-release-envelope/canonical.mjs +22 -0
  210. package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +525 -0
  211. package/dist/esm-node/ultramodern-release-envelope/index.mjs +336 -0
  212. package/dist/esm-node/ultramodern-release-envelope/types.mjs +8 -0
  213. package/dist/esm-node/ultramodern-release-identity.mjs +67 -0
  214. package/dist/types/builder/generator/createCopyPattern.d.ts +7 -5
  215. package/dist/types/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.d.ts +6 -0
  216. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +1 -0
  217. package/dist/types/builder/shared/bundlerPlugins/index.d.ts +1 -0
  218. package/dist/types/builder/shared/lazyCompilation.d.ts +2 -4
  219. package/dist/types/bundleDocs.d.ts +20 -0
  220. package/dist/types/commands/deploy.d.ts +2 -1
  221. package/dist/types/commands/index.d.ts +0 -1
  222. package/dist/types/config/build-environment.d.ts +22 -0
  223. package/dist/types/config/index.d.ts +1 -0
  224. package/dist/types/config/public.d.ts +2 -0
  225. package/dist/types/index.d.ts +4 -3
  226. package/dist/types/plugins/analyze/getServerRoutes.d.ts +1 -0
  227. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  228. package/dist/types/plugins/backend-federation/codegen.d.ts +83 -0
  229. package/dist/types/plugins/backend-federation/config.d.ts +103 -0
  230. package/dist/types/plugins/backend-federation/emit.d.ts +13 -0
  231. package/dist/types/plugins/backendFederationBuild.d.ts +2 -0
  232. package/dist/types/plugins/deploy/platforms/cloudflare/artifacts.d.ts +15 -0
  233. package/dist/types/plugins/deploy/platforms/cloudflare/constants.d.ts +24 -0
  234. package/dist/types/plugins/deploy/platforms/cloudflare/delivery-unit.d.ts +23 -0
  235. package/dist/types/plugins/deploy/platforms/cloudflare/i18n-worker.d.ts +22 -0
  236. package/dist/types/plugins/deploy/platforms/{cloudflare.d.ts → cloudflare/index.d.ts} +1 -1
  237. package/dist/types/plugins/deploy/platforms/cloudflare/security-policies.d.ts +51 -0
  238. package/dist/types/plugins/deploy/platforms/cloudflare/types.d.ts +5 -0
  239. package/dist/types/plugins/deploy/platforms/cloudflare/utils.d.ts +6 -0
  240. package/dist/types/plugins/deploy/platforms/cloudflare/worker-manifest.d.ts +122 -0
  241. package/dist/types/plugins/deploy/platforms/cloudflare/wrangler-config.d.ts +46 -0
  242. package/dist/types/plugins/deploy/platforms/cloudflare-output-contract.d.ts +14 -0
  243. package/dist/types/plugins/deploy/platforms/cloudflare-output-plan.d.ts +34 -0
  244. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/identity.d.ts +4 -0
  245. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/index.d.ts +18 -0
  246. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/issues.d.ts +14 -0
  247. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/manifest.d.ts +2 -0
  248. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.d.ts +14 -0
  249. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +20 -0
  250. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -0
  251. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.d.mts +1 -0
  252. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.d.mts +1 -0
  253. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.d.mts +1 -0
  254. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.d.mts +1 -0
  255. package/dist/types/plugins/deploy/utils/npmAliases.d.ts +14 -0
  256. package/dist/types/plugins/ultramodernReleaseEnvelope.d.ts +3 -0
  257. package/dist/types/presetUltramodern.d.ts +10 -0
  258. package/dist/types/run/index.d.ts +1 -1
  259. package/dist/types/types/config/cloudflareDeploy.d.ts +41 -0
  260. package/dist/types/types/config/deploy.d.ts +15 -2
  261. package/dist/types/types/config/dev.d.ts +6 -0
  262. package/dist/types/ultramodern-release-envelope/canonical.d.ts +5 -0
  263. package/dist/types/ultramodern-release-envelope/framework-output.d.ts +31 -0
  264. package/dist/types/ultramodern-release-envelope/index.d.ts +6 -0
  265. package/dist/types/ultramodern-release-envelope/types.d.ts +62 -0
  266. package/dist/types/ultramodern-release-identity.d.ts +16 -0
  267. package/docs/apis/app/commands.md +231 -0
  268. package/docs/apis/app/hooks/api/lambda.md +9 -0
  269. package/docs/apis/app/hooks/config/favicon.md +24 -0
  270. package/docs/apis/app/hooks/config/html.md +5 -0
  271. package/docs/apis/app/hooks/config/icon.md +24 -0
  272. package/docs/apis/app/hooks/config/mock.md +6 -0
  273. package/docs/apis/app/hooks/config/public.md +26 -0
  274. package/docs/apis/app/hooks/config/upload.md +50 -0
  275. package/docs/apis/app/hooks/modern-config.md +5 -0
  276. package/docs/apis/app/hooks/server/server.md +5 -0
  277. package/docs/apis/app/hooks/shared.md +3 -0
  278. package/docs/apis/app/hooks/src/app.md +30 -0
  279. package/docs/apis/app/hooks/src/entry.md +34 -0
  280. package/docs/apis/app/hooks/src/entry.server.md +51 -0
  281. package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
  282. package/docs/apis/app/hooks/src/routes.md +86 -0
  283. package/docs/apis/app/hooks/src/server.md +3 -0
  284. package/docs/apis/app/runtime/bff/use-backend-context.md +27 -0
  285. package/docs/apis/app/runtime/core/create-root.md +19 -0
  286. package/docs/apis/app/runtime/core/render.md +39 -0
  287. package/docs/apis/app/runtime/core/runtime-context.md +156 -0
  288. package/docs/apis/app/runtime/router/router.md +283 -0
  289. package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
  290. package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
  291. package/docs/apis/app/runtime/ssr/renderString.md +60 -0
  292. package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
  293. package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
  294. package/docs/apis/app/runtime/utility/head.md +35 -0
  295. package/docs/apis/app/runtime/utility/loadable.md +82 -0
  296. package/docs/community/blog/2022-0708-updates.md +91 -0
  297. package/docs/community/blog/2022-0910-updates.md +76 -0
  298. package/docs/community/blog/overview.md +63 -0
  299. package/docs/community/blog/v2-release-note.md +238 -0
  300. package/docs/community/blog/v3-release-note.md +622 -0
  301. package/docs/community/contributing-guide.md +252 -0
  302. package/docs/community/releases.md +23 -0
  303. package/docs/community/showcase.md +24 -0
  304. package/docs/community/team.md +14 -0
  305. package/docs/configure/app/bff/cross-project.md +20 -0
  306. package/docs/configure/app/bff/effect.md +315 -0
  307. package/docs/configure/app/bff/prefix.md +29 -0
  308. package/docs/configure/app/bff/runtime-framework.md +26 -0
  309. package/docs/configure/app/builder-plugins.md +66 -0
  310. package/docs/configure/app/dev/asset-prefix.md +13 -0
  311. package/docs/configure/app/dev/before-start-url.md +17 -0
  312. package/docs/configure/app/dev/client.md +41 -0
  313. package/docs/configure/app/dev/hmr.md +10 -0
  314. package/docs/configure/app/dev/host.md +18 -0
  315. package/docs/configure/app/dev/https.md +77 -0
  316. package/docs/configure/app/dev/lazy-compilation.md +39 -0
  317. package/docs/configure/app/dev/live-reload.md +10 -0
  318. package/docs/configure/app/dev/mock-dir.md +31 -0
  319. package/docs/configure/app/dev/progress-bar.md +19 -0
  320. package/docs/configure/app/dev/server.md +124 -0
  321. package/docs/configure/app/dev/setup-middlewares.md +32 -0
  322. package/docs/configure/app/dev/start-url.md +48 -0
  323. package/docs/configure/app/dev/watch-files.md +27 -0
  324. package/docs/configure/app/dev/write-to-disk.md +10 -0
  325. package/docs/configure/app/experiments/source-build.md +31 -0
  326. package/docs/configure/app/html/app-icon.md +28 -0
  327. package/docs/configure/app/html/crossorigin.md +10 -0
  328. package/docs/configure/app/html/favicon.md +16 -0
  329. package/docs/configure/app/html/inject.md +10 -0
  330. package/docs/configure/app/html/meta.md +24 -0
  331. package/docs/configure/app/html/mount-id.md +10 -0
  332. package/docs/configure/app/html/output-structure.md +10 -0
  333. package/docs/configure/app/html/script-loading.md +10 -0
  334. package/docs/configure/app/html/tags.md +15 -0
  335. package/docs/configure/app/html/template-parameters.md +33 -0
  336. package/docs/configure/app/html/template.md +10 -0
  337. package/docs/configure/app/html/title.md +18 -0
  338. package/docs/configure/app/output/asset-prefix.md +11 -0
  339. package/docs/configure/app/output/assets-retry.md +77 -0
  340. package/docs/configure/app/output/charset.md +10 -0
  341. package/docs/configure/app/output/clean-dist-path.md +16 -0
  342. package/docs/configure/app/output/convert-to-rem.md +79 -0
  343. package/docs/configure/app/output/copy.md +10 -0
  344. package/docs/configure/app/output/css-modules.md +48 -0
  345. package/docs/configure/app/output/data-uri-limit.md +26 -0
  346. package/docs/configure/app/output/disable-css-module-extension.md +55 -0
  347. package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
  348. package/docs/configure/app/output/disable-svgr.md +18 -0
  349. package/docs/configure/app/output/disable-ts-checker.md +49 -0
  350. package/docs/configure/app/output/dist-path.md +43 -0
  351. package/docs/configure/app/output/enable-asset-manifest.md +36 -0
  352. package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
  353. package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
  354. package/docs/configure/app/output/externals.md +20 -0
  355. package/docs/configure/app/output/filename-hash.md +10 -0
  356. package/docs/configure/app/output/filename.md +55 -0
  357. package/docs/configure/app/output/inject-styles.md +10 -0
  358. package/docs/configure/app/output/inline-scripts.md +29 -0
  359. package/docs/configure/app/output/inline-styles.md +29 -0
  360. package/docs/configure/app/output/legal-comments.md +18 -0
  361. package/docs/configure/app/output/minify.md +22 -0
  362. package/docs/configure/app/output/override-browserslist.md +22 -0
  363. package/docs/configure/app/output/polyfill.md +12 -0
  364. package/docs/configure/app/output/source-map.md +30 -0
  365. package/docs/configure/app/output/split-route-chunks.md +16 -0
  366. package/docs/configure/app/output/ssg.md +81 -0
  367. package/docs/configure/app/output/ssgByEntries.md +90 -0
  368. package/docs/configure/app/output/svg-default-export.md +30 -0
  369. package/docs/configure/app/output/temp-dir.md +20 -0
  370. package/docs/configure/app/performance/build-cache.md +44 -0
  371. package/docs/configure/app/performance/chunk-split.md +40 -0
  372. package/docs/configure/app/performance/dns-prefetch.md +15 -0
  373. package/docs/configure/app/performance/preconnect.md +16 -0
  374. package/docs/configure/app/performance/prefetch.md +21 -0
  375. package/docs/configure/app/performance/preload.md +23 -0
  376. package/docs/configure/app/performance/print-file-size.md +40 -0
  377. package/docs/configure/app/performance/profile.md +10 -0
  378. package/docs/configure/app/performance/remove-console.md +10 -0
  379. package/docs/configure/app/performance/remove-moment-locale.md +10 -0
  380. package/docs/configure/app/performance/rsdoctor.md +38 -0
  381. package/docs/configure/app/plugins.md +59 -0
  382. package/docs/configure/app/resolve/alias-strategy.md +10 -0
  383. package/docs/configure/app/resolve/alias.md +9 -0
  384. package/docs/configure/app/resolve/condition-names.md +13 -0
  385. package/docs/configure/app/resolve/dedupe.md +9 -0
  386. package/docs/configure/app/resolve/extensions.md +13 -0
  387. package/docs/configure/app/runtime/0-intro.md +58 -0
  388. package/docs/configure/app/runtime/plugins.md +58 -0
  389. package/docs/configure/app/runtime/router.md +35 -0
  390. package/docs/configure/app/security/check-syntax.md +69 -0
  391. package/docs/configure/app/security/nonce.md +15 -0
  392. package/docs/configure/app/security/sri.md +20 -0
  393. package/docs/configure/app/server/base-url.md +26 -0
  394. package/docs/configure/app/server/port.md +18 -0
  395. package/docs/configure/app/server/public-routes.md +22 -0
  396. package/docs/configure/app/server/routes.md +86 -0
  397. package/docs/configure/app/server/rsc.md +26 -0
  398. package/docs/configure/app/server/ssr-by-entries.md +25 -0
  399. package/docs/configure/app/server/ssr.md +80 -0
  400. package/docs/configure/app/server/tsconfig-path.md +59 -0
  401. package/docs/configure/app/source/alias-strategy.md +14 -0
  402. package/docs/configure/app/source/alias.md +23 -0
  403. package/docs/configure/app/source/config-dir.md +20 -0
  404. package/docs/configure/app/source/decorators.md +25 -0
  405. package/docs/configure/app/source/define.md +16 -0
  406. package/docs/configure/app/source/disable-default-entries.md +28 -0
  407. package/docs/configure/app/source/enable-async-entry.md +54 -0
  408. package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
  409. package/docs/configure/app/source/entries-dir.md +35 -0
  410. package/docs/configure/app/source/entries.md +179 -0
  411. package/docs/configure/app/source/exclude.md +10 -0
  412. package/docs/configure/app/source/global-vars.md +106 -0
  413. package/docs/configure/app/source/include.md +36 -0
  414. package/docs/configure/app/source/main-entry-name.md +24 -0
  415. package/docs/configure/app/source/pre-entry.md +10 -0
  416. package/docs/configure/app/source/react-compiler.md +68 -0
  417. package/docs/configure/app/source/transform-import.md +27 -0
  418. package/docs/configure/app/split-chunks.md +17 -0
  419. package/docs/configure/app/tools/autoprefixer.md +44 -0
  420. package/docs/configure/app/tools/bundler-chain.md +26 -0
  421. package/docs/configure/app/tools/css-extract.md +33 -0
  422. package/docs/configure/app/tools/css-loader.md +17 -0
  423. package/docs/configure/app/tools/dev-server.md +113 -0
  424. package/docs/configure/app/tools/html-plugin.md +41 -0
  425. package/docs/configure/app/tools/less.md +81 -0
  426. package/docs/configure/app/tools/lightningcss-loader.md +35 -0
  427. package/docs/configure/app/tools/minify-css.md +53 -0
  428. package/docs/configure/app/tools/postcss.md +34 -0
  429. package/docs/configure/app/tools/rspack.md +10 -0
  430. package/docs/configure/app/tools/sass.md +78 -0
  431. package/docs/configure/app/tools/style-loader.md +10 -0
  432. package/docs/configure/app/tools/swc.md +65 -0
  433. package/docs/configure/app/tools/ts-checker.md +116 -0
  434. package/docs/configure/app/usage.md +276 -0
  435. package/docs/guides/advanced-features/bff/cross-project.md +109 -0
  436. package/docs/guides/advanced-features/bff/data-platform.md +116 -0
  437. package/docs/guides/advanced-features/bff/extend-server.md +120 -0
  438. package/docs/guides/advanced-features/bff/frameworks.md +243 -0
  439. package/docs/guides/advanced-features/bff/function.md +318 -0
  440. package/docs/guides/advanced-features/bff/operators.md +554 -0
  441. package/docs/guides/advanced-features/bff/sdk.md +116 -0
  442. package/docs/guides/advanced-features/bff/upload.md +101 -0
  443. package/docs/guides/advanced-features/bff.md +18 -0
  444. package/docs/guides/advanced-features/build-performance.md +130 -0
  445. package/docs/guides/advanced-features/compatibility.md +120 -0
  446. package/docs/guides/advanced-features/international/advanced.md +128 -0
  447. package/docs/guides/advanced-features/international/api.md +267 -0
  448. package/docs/guides/advanced-features/international/best-practices.md +286 -0
  449. package/docs/guides/advanced-features/international/configuration.md +228 -0
  450. package/docs/guides/advanced-features/international/locale-detection.md +126 -0
  451. package/docs/guides/advanced-features/international/quick-start.md +128 -0
  452. package/docs/guides/advanced-features/international/resource-loading.md +154 -0
  453. package/docs/guides/advanced-features/international/routing.md +173 -0
  454. package/docs/guides/advanced-features/international.md +27 -0
  455. package/docs/guides/advanced-features/low-level.md +46 -0
  456. package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
  457. package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
  458. package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
  459. package/docs/guides/advanced-features/page-performance/react-compiler.md +51 -0
  460. package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
  461. package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
  462. package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
  463. package/docs/guides/advanced-features/source-build.md +164 -0
  464. package/docs/guides/advanced-features/web-server.md +288 -0
  465. package/docs/guides/basic-features/alias.md +102 -0
  466. package/docs/guides/basic-features/css/css-in-js.md +72 -0
  467. package/docs/guides/basic-features/css/css-modules.md +212 -0
  468. package/docs/guides/basic-features/css/css.md +27 -0
  469. package/docs/guides/basic-features/css/tailwindcss.md +27 -0
  470. package/docs/guides/basic-features/data/data-cache.md +510 -0
  471. package/docs/guides/basic-features/data/data-fetch.md +415 -0
  472. package/docs/guides/basic-features/data/data-write.md +227 -0
  473. package/docs/guides/basic-features/debug/mock.md +109 -0
  474. package/docs/guides/basic-features/debug/proxy.md +21 -0
  475. package/docs/guides/basic-features/debug/rsdoctor.md +47 -0
  476. package/docs/guides/basic-features/debug/using-storybook.md +112 -0
  477. package/docs/guides/basic-features/deploy.md +458 -0
  478. package/docs/guides/basic-features/env-vars.md +177 -0
  479. package/docs/guides/basic-features/html.md +255 -0
  480. package/docs/guides/basic-features/output-files.md +141 -0
  481. package/docs/guides/basic-features/render/before-render.md +108 -0
  482. package/docs/guides/basic-features/render/overview.md +47 -0
  483. package/docs/guides/basic-features/render/rsc.md +525 -0
  484. package/docs/guides/basic-features/render/ssg.md +228 -0
  485. package/docs/guides/basic-features/render/ssr-cache.md +201 -0
  486. package/docs/guides/basic-features/render/ssr.md +321 -0
  487. package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
  488. package/docs/guides/basic-features/routes/config-routes.md +426 -0
  489. package/docs/guides/basic-features/routes/routes.md +524 -0
  490. package/docs/guides/basic-features/static-assets/json-files.md +120 -0
  491. package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
  492. package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
  493. package/docs/guides/basic-features/static-assets.md +160 -0
  494. package/docs/guides/basic-features/testing/playwright.md +120 -0
  495. package/docs/guides/basic-features/testing/rstest.md +251 -0
  496. package/docs/guides/concept/builder.md +37 -0
  497. package/docs/guides/concept/entries.md +319 -0
  498. package/docs/guides/concept/server.md +35 -0
  499. package/docs/guides/get-started/ai-coding-agents.md +58 -0
  500. package/docs/guides/get-started/glossary.md +63 -0
  501. package/docs/guides/get-started/introduction.md +40 -0
  502. package/docs/guides/get-started/quick-start.md +269 -0
  503. package/docs/guides/get-started/tech-stack.md +91 -0
  504. package/docs/guides/get-started/ultramodern.md +428 -0
  505. package/docs/guides/get-started/upgrade.md +123 -0
  506. package/docs/guides/topic-detail/module-federation/application.md +116 -0
  507. package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
  508. package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
  509. package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
  510. package/docs/guides/topic-detail/module-federation/ssr.md +182 -0
  511. package/docs/guides/topic-detail/module-federation/usage.md +219 -0
  512. package/docs/guides/troubleshooting/builder.md +110 -0
  513. package/docs/guides/troubleshooting/cli.md +35 -0
  514. package/docs/guides/troubleshooting/dependencies.md +119 -0
  515. package/docs/guides/troubleshooting/hmr.md +144 -0
  516. package/docs/guides/upgrade/config.md +954 -0
  517. package/docs/guides/upgrade/entry.md +463 -0
  518. package/docs/guides/upgrade/other.md +183 -0
  519. package/docs/guides/upgrade/overview.md +33 -0
  520. package/docs/guides/upgrade/tailwindcss.md +91 -0
  521. package/docs/guides/upgrade/web-server.md +109 -0
  522. package/docs/index.md +33 -0
  523. package/docs/llms.txt +290 -0
  524. package/docs/plugin/cli-plugins/api.md +573 -0
  525. package/docs/plugin/cli-plugins/life-cycle.md +2 -0
  526. package/docs/plugin/introduction.md +152 -0
  527. package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
  528. package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
  529. package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
  530. package/docs/plugin/official/cli-plugins.md +4 -0
  531. package/docs/plugin/plugin-system.md +238 -0
  532. package/docs/plugin/runtime-plugins/api.md +194 -0
  533. package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
  534. package/docs/plugin/server-plugins/api.md +209 -0
  535. package/docs/plugin/server-plugins/life-cycle.md +13 -0
  536. package/docs/tutorials/examples/csr-auth.md +9 -0
  537. package/docs/tutorials/foundations/introduction.md +16 -0
  538. package/lib/types.d.ts +2 -3
  539. package/package.json +88 -32
  540. package/rslib.config.mts +11 -12
  541. package/dist/cjs/commands/runtime.js +0 -196
  542. package/dist/cjs/plugins/deploy/platforms/cloudflare.js +0 -540
  543. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  544. package/dist/cjs/ultramodern/designSystem.js +0 -123
  545. package/dist/esm/baseline.mjs +0 -4
  546. package/dist/esm/commands/runtime.mjs +0 -146
  547. package/dist/esm/plugins/deploy/platforms/cloudflare.mjs +0 -492
  548. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  549. package/dist/esm/ultramodern/designSystem.mjs +0 -73
  550. package/dist/esm-node/baseline.mjs +0 -5
  551. package/dist/esm-node/commands/runtime.mjs +0 -147
  552. package/dist/esm-node/plugins/deploy/platforms/cloudflare.mjs +0 -493
  553. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  554. package/dist/esm-node/ultramodern/designSystem.mjs +0 -74
  555. package/dist/types/baseline.d.ts +0 -16
  556. package/dist/types/commands/runtime.d.ts +0 -12
  557. package/dist/types/ultramodern/designSystem.d.ts +0 -54
  558. /package/dist/types/plugins/deploy/platforms/templates/{cloudflare-entry.d.mts → cloudflare-entry.006-fetch-handler.d.mts} +0 -0
@@ -1,185 +1,281 @@
1
1
  import loadableComponent from '@loadable/component';
2
2
  import React from 'react';
3
- const internals = loadableComponent?.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED || {};
3
+
4
+ const internals =
5
+ loadableComponent?.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED || {};
4
6
  const LoadableContext = internals.Context || React.createContext(null);
5
- const getRequiredChunkKey = internals.getRequiredChunkKey || ((namespace)=>`${namespace}__LOADABLE_REQUIRED_CHUNKS__`);
6
- const scriptExtensions = new Set([
7
- '.js',
8
- '.mjs'
9
- ]);
10
- const styleExtensions = new Set([
11
- '.css'
12
- ]);
7
+ const getRequiredChunkKey =
8
+ internals.getRequiredChunkKey ||
9
+ (namespace => `${namespace}__LOADABLE_REQUIRED_CHUNKS__`);
10
+
11
+ const scriptExtensions = new Set(['.js', '.mjs']);
12
+ const styleExtensions = new Set(['.css']);
13
+
13
14
  function uniqByUrl(assets) {
14
- const seen = new Set();
15
- return assets.filter((asset)=>{
16
- if (seen.has(asset.url)) return false;
17
- seen.add(asset.url);
18
- return true;
19
- });
15
+ const seen = new Set();
16
+
17
+ return assets.filter(asset => {
18
+ if (seen.has(asset.url)) {
19
+ return false;
20
+ }
21
+
22
+ seen.add(asset.url);
23
+ return true;
24
+ });
20
25
  }
26
+
21
27
  function extname(filePath) {
22
- const basename = String(filePath).split('/').pop() || '';
23
- const index = basename.lastIndexOf('.');
24
- return index > 0 ? basename.slice(index) : '';
28
+ const basename = String(filePath).split('/').pop() || '';
29
+ const index = basename.lastIndexOf('.');
30
+
31
+ return index > 0 ? basename.slice(index) : '';
32
+ }
33
+
34
+ function isAutomaticPublicPath(publicPath) {
35
+ return publicPath === 'auto' || publicPath === 'auto/';
25
36
  }
37
+
26
38
  function joinUrl(publicPath, filename) {
27
- const base = publicPath || '/';
28
- return `${base.replace(/\/+$/u, '')}/${String(filename).replace(/^\/+/u, '')}`;
39
+ const base =
40
+ !publicPath || isAutomaticPublicPath(publicPath) ? '/' : publicPath;
41
+
42
+ return `${base.replace(/\/+$/u, '')}/${String(filename).replace(/^\/+/u, '')}`;
29
43
  }
44
+
30
45
  function extraPropsToString(extraProps = {}) {
31
- return Object.entries(extraProps).filter(([, value])=>void 0 !== value && false !== value).map(([key, value])=>true === value ? ` ${key}` : ` ${key}="${value}"`).join('');
46
+ return Object.entries(extraProps)
47
+ .filter(([, value]) => value !== undefined && value !== false)
48
+ .map(([key, value]) => (value === true ? ` ${key}` : ` ${key}="${value}"`))
49
+ .join('');
32
50
  }
51
+
33
52
  function assetScriptType(filename) {
34
- const extension = extname(filename);
35
- if (scriptExtensions.has(extension)) return "script";
36
- if (styleExtensions.has(extension)) return 'style';
53
+ const extension = extname(filename);
54
+
55
+ if (scriptExtensions.has(extension)) {
56
+ return 'script';
57
+ }
58
+
59
+ if (styleExtensions.has(extension)) {
60
+ return 'style';
61
+ }
37
62
  }
63
+
38
64
  function getAssetName(asset) {
39
- return 'object' == typeof asset && asset?.name ? asset.name : asset;
65
+ return typeof asset === 'object' && asset?.name ? asset.name : asset;
40
66
  }
67
+
41
68
  function getAssetIntegrity(asset) {
42
- return 'object' == typeof asset && asset?.integrity ? asset.integrity : null;
69
+ return typeof asset === 'object' && asset?.integrity ? asset.integrity : null;
43
70
  }
71
+
44
72
  function getChunkGroupAssets(chunkGroup) {
45
- const assets = chunkGroup?.assets;
46
- if (Array.isArray(assets)) return assets;
47
- if (assets && 'object' == typeof assets) return [
48
- ...assets.js || [],
49
- ...assets.css || []
50
- ];
51
- return [];
73
+ const assets = chunkGroup?.assets;
74
+
75
+ if (Array.isArray(assets)) {
76
+ return assets;
77
+ }
78
+
79
+ if (assets && typeof assets === 'object') {
80
+ return [...(assets.js || []), ...(assets.css || [])];
81
+ }
82
+
83
+ return [];
52
84
  }
85
+
53
86
  function getChunkGroupChildAssets(chunkGroup, type) {
54
- const childAssets = chunkGroup?.childAssets?.[type];
55
- return Array.isArray(childAssets) ? childAssets : [];
87
+ const childAssets = chunkGroup?.childAssets?.[type];
88
+
89
+ return Array.isArray(childAssets) ? childAssets : [];
56
90
  }
91
+
57
92
  function chunkIncludesJs(chunkInfo) {
58
- return (chunkInfo?.files || []).some((file)=>scriptExtensions.has(extname(file)));
93
+ return (chunkInfo?.files || []).some(file =>
94
+ scriptExtensions.has(extname(file)),
95
+ );
59
96
  }
97
+
60
98
  export function ChunkExtractorManager({ extractor, children }) {
61
- return React.createElement(LoadableContext.Provider, {
62
- value: extractor
63
- }, children);
99
+ return React.createElement(
100
+ LoadableContext.Provider,
101
+ { value: extractor },
102
+ children,
103
+ );
64
104
  }
105
+
65
106
  export class ChunkExtractor {
66
- constructor({ stats, entrypoints = [
67
- 'main'
68
- ], namespace = '', outputPath = '/', publicPath } = {}){
69
- this.namespace = namespace;
70
- this.stats = stats || {};
71
- this.publicPath = publicPath || this.stats.publicPath || '/';
72
- this.outputPath = outputPath || this.stats.outputPath || '/';
73
- this.entrypoints = Array.isArray(entrypoints) ? entrypoints : [
74
- entrypoints
75
- ];
76
- this.chunks = [];
77
- }
78
- addChunk(chunk) {
79
- if (!this.chunks.includes(chunk)) this.chunks.push(chunk);
80
- }
81
- collectChunks(app) {
82
- return React.createElement(ChunkExtractorManager, {
83
- extractor: this
84
- }, app);
107
+ constructor({
108
+ stats,
109
+ entrypoints = ['main'],
110
+ namespace = '',
111
+ outputPath = '/',
112
+ publicPath,
113
+ } = {}) {
114
+ this.namespace = namespace;
115
+ this.stats = stats || {};
116
+ const configuredPublicPath = publicPath || this.stats.publicPath;
117
+ this.publicPath =
118
+ !configuredPublicPath || isAutomaticPublicPath(configuredPublicPath)
119
+ ? '/'
120
+ : configuredPublicPath;
121
+ this.outputPath = outputPath || this.stats.outputPath || '/';
122
+ this.entrypoints = Array.isArray(entrypoints) ? entrypoints : [entrypoints];
123
+ this.chunks = [];
124
+ }
125
+
126
+ addChunk(chunk) {
127
+ if (!this.chunks.includes(chunk)) {
128
+ this.chunks.push(chunk);
85
129
  }
86
- getChunkGroup(chunk) {
87
- return this.stats.namedChunkGroups?.[chunk] || {
88
- assets: [],
89
- childAssets: {},
90
- chunks: []
91
- };
130
+ }
131
+
132
+ collectChunks(app) {
133
+ return React.createElement(ChunkExtractorManager, { extractor: this }, app);
134
+ }
135
+
136
+ getChunkGroup(chunk) {
137
+ return (
138
+ this.stats.namedChunkGroups?.[chunk] || {
139
+ assets: [],
140
+ childAssets: {},
141
+ chunks: [],
142
+ }
143
+ );
144
+ }
145
+
146
+ getChunkInfo(chunkId) {
147
+ return (this.stats.chunks || []).find(chunk => chunk.id === chunkId);
148
+ }
149
+
150
+ resolvePublicUrl(filename) {
151
+ return joinUrl(this.publicPath, filename);
152
+ }
153
+
154
+ createChunkAsset({ filename, chunk, type, linkType }) {
155
+ const resolvedFilename = getAssetName(filename);
156
+ const scriptType = assetScriptType(resolvedFilename);
157
+
158
+ if (!scriptType) {
159
+ return undefined;
92
160
  }
93
- getChunkInfo(chunkId) {
94
- return (this.stats.chunks || []).find((chunk)=>chunk.id === chunkId);
95
- }
96
- resolvePublicUrl(filename) {
97
- return joinUrl(this.publicPath, filename);
98
- }
99
- createChunkAsset({ filename, chunk, type, linkType }) {
100
- const resolvedFilename = getAssetName(filename);
101
- const scriptType = assetScriptType(resolvedFilename);
102
- if (!scriptType) return;
103
- return {
104
- filename: resolvedFilename,
105
- integrity: getAssetIntegrity(filename),
106
- scriptType,
161
+
162
+ return {
163
+ filename: resolvedFilename,
164
+ integrity: getAssetIntegrity(filename),
165
+ scriptType,
166
+ chunk,
167
+ url: this.resolvePublicUrl(resolvedFilename),
168
+ path: String(resolvedFilename).replace(/^\/+/u, ''),
169
+ type,
170
+ linkType,
171
+ };
172
+ }
173
+
174
+ getChunkAssets(chunks) {
175
+ const one = chunk =>
176
+ getChunkGroupAssets(this.getChunkGroup(chunk))
177
+ .map(filename =>
178
+ this.createChunkAsset({
179
+ filename,
107
180
  chunk,
108
- url: this.resolvePublicUrl(resolvedFilename),
109
- path: String(resolvedFilename).replace(/^\/+/u, ''),
110
- type,
111
- linkType
112
- };
113
- }
114
- getChunkAssets(chunks) {
115
- const one = (chunk)=>getChunkGroupAssets(this.getChunkGroup(chunk)).map((filename)=>this.createChunkAsset({
116
- filename,
117
- chunk,
118
- type: 'mainAsset',
119
- linkType: 'preload'
120
- })).filter(Boolean);
121
- return Array.isArray(chunks) ? uniqByUrl(chunks.flatMap(one)) : one(chunks);
122
- }
123
- getChunkChildAssets(chunks, type) {
124
- const one = (chunk)=>getChunkGroupChildAssets(this.getChunkGroup(chunk), type).map((filename)=>this.createChunkAsset({
125
- filename,
126
- chunk,
127
- type: 'childAsset',
128
- linkType: type
129
- })).filter(Boolean);
130
- return Array.isArray(chunks) ? uniqByUrl(chunks.flatMap(one)) : one(chunks);
131
- }
132
- getChunkDependencies(chunks) {
133
- const one = (chunk)=>(this.getChunkGroup(chunk).chunks || []).filter((chunkId)=>chunkIncludesJs(this.getChunkInfo(chunkId)));
134
- return Array.isArray(chunks) ? [
135
- ...new Set(chunks.flatMap(one))
136
- ] : one(chunks);
137
- }
138
- getRequiredChunksScriptContent() {
139
- return JSON.stringify(this.getChunkDependencies(this.chunks));
140
- }
141
- getRequiredChunksNamesScriptContent() {
142
- return JSON.stringify({
143
- namedChunks: this.chunks
144
- });
145
- }
146
- getRequiredChunksScriptTag(extraProps = {}) {
147
- const id = getRequiredChunkKey(this.namespace);
148
- const props = `type="application/json"${extraPropsToString(extraProps)}`;
149
- return [
150
- `<script id="${id}" ${props}>${this.getRequiredChunksScriptContent()}</script>`,
151
- `<script id="${id}_ext" ${props}>${this.getRequiredChunksNamesScriptContent()}</script>`
152
- ].join('');
153
- }
154
- getMainAssets(scriptType) {
155
- const assets = this.getChunkAssets([
156
- ...this.entrypoints,
157
- ...this.chunks
158
- ]);
159
- return scriptType ? assets.filter((asset)=>asset.scriptType === scriptType) : assets;
160
- }
161
- getScriptTags(extraProps = {}) {
162
- const scripts = this.getMainAssets("script").map((asset)=>`<script async data-chunk="${asset.chunk}" src="${asset.url}"${extraPropsToString(extraProps)}></script>`);
163
- return [
164
- this.getRequiredChunksScriptTag(extraProps),
165
- ...scripts
166
- ].join('');
167
- }
168
- getStyleTags(extraProps = {}) {
169
- return this.getMainAssets('style').map((asset)=>`<link data-chunk="${asset.chunk}" rel="stylesheet" href="${asset.url}"${extraPropsToString(extraProps)}>`).join('');
170
- }
171
- getLinkTags(extraProps = {}) {
172
- const assets = [
173
- ...this.getMainAssets(),
174
- ...this.getChunkChildAssets([
175
- ...this.entrypoints,
176
- ...this.chunks
177
- ], 'preload'),
178
- ...this.getChunkChildAssets([
179
- ...this.entrypoints,
180
- ...this.chunks
181
- ], 'prefetch')
182
- ];
183
- return uniqByUrl(assets).map((asset)=>`<link data-chunk="${asset.chunk}" rel="${asset.linkType}" as="${asset.scriptType}" href="${asset.url}"${extraPropsToString(extraProps)}>`).join('');
184
- }
181
+ type: 'mainAsset',
182
+ linkType: 'preload',
183
+ }),
184
+ )
185
+ .filter(Boolean);
186
+
187
+ return Array.isArray(chunks) ? uniqByUrl(chunks.flatMap(one)) : one(chunks);
188
+ }
189
+
190
+ getChunkChildAssets(chunks, type) {
191
+ const one = chunk =>
192
+ getChunkGroupChildAssets(this.getChunkGroup(chunk), type)
193
+ .map(filename =>
194
+ this.createChunkAsset({
195
+ filename,
196
+ chunk,
197
+ type: 'childAsset',
198
+ linkType: type,
199
+ }),
200
+ )
201
+ .filter(Boolean);
202
+
203
+ return Array.isArray(chunks) ? uniqByUrl(chunks.flatMap(one)) : one(chunks);
204
+ }
205
+
206
+ getChunkDependencies(chunks) {
207
+ const one = chunk =>
208
+ (this.getChunkGroup(chunk).chunks || []).filter(chunkId =>
209
+ chunkIncludesJs(this.getChunkInfo(chunkId)),
210
+ );
211
+
212
+ return Array.isArray(chunks)
213
+ ? [...new Set(chunks.flatMap(one))]
214
+ : one(chunks);
215
+ }
216
+
217
+ getRequiredChunksScriptContent() {
218
+ return JSON.stringify(this.getChunkDependencies(this.chunks));
219
+ }
220
+
221
+ getRequiredChunksNamesScriptContent() {
222
+ return JSON.stringify({ namedChunks: this.chunks });
223
+ }
224
+
225
+ getRequiredChunksScriptTag(extraProps = {}) {
226
+ const id = getRequiredChunkKey(this.namespace);
227
+ const props = `type="application/json"${extraPropsToString(extraProps)}`;
228
+
229
+ return [
230
+ `<script id="${id}" ${props}>${this.getRequiredChunksScriptContent()}</script>`,
231
+ `<script id="${id}_ext" ${props}>${this.getRequiredChunksNamesScriptContent()}</script>`,
232
+ ].join('');
233
+ }
234
+
235
+ getMainAssets(scriptType) {
236
+ const assets = this.getChunkAssets([...this.entrypoints, ...this.chunks]);
237
+
238
+ return scriptType
239
+ ? assets.filter(asset => asset.scriptType === scriptType)
240
+ : assets;
241
+ }
242
+
243
+ getScriptTags(extraProps = {}) {
244
+ const scripts = this.getMainAssets('script').map(
245
+ asset =>
246
+ `<script async data-chunk="${asset.chunk}" src="${asset.url}"${extraPropsToString(extraProps)}></script>`,
247
+ );
248
+
249
+ return [this.getRequiredChunksScriptTag(extraProps), ...scripts].join('');
250
+ }
251
+
252
+ getStyleTags(extraProps = {}) {
253
+ return this.getMainAssets('style')
254
+ .map(
255
+ asset =>
256
+ `<link data-chunk="${asset.chunk}" rel="stylesheet" href="${asset.url}"${extraPropsToString(extraProps)}>`,
257
+ )
258
+ .join('');
259
+ }
260
+
261
+ getLinkTags(extraProps = {}) {
262
+ const assets = [
263
+ ...this.getMainAssets(),
264
+ ...this.getChunkChildAssets(
265
+ [...this.entrypoints, ...this.chunks],
266
+ 'preload',
267
+ ),
268
+ ...this.getChunkChildAssets(
269
+ [...this.entrypoints, ...this.chunks],
270
+ 'prefetch',
271
+ ),
272
+ ];
273
+
274
+ return uniqByUrl(assets)
275
+ .map(
276
+ asset =>
277
+ `<link data-chunk="${asset.chunk}" rel="${asset.linkType}" as="${asset.scriptType}" href="${asset.url}"${extraPropsToString(extraProps)}>`,
278
+ )
279
+ .join('');
280
+ }
185
281
  }
@@ -1,59 +1,98 @@
1
- const trimSlashes = (value)=>String(value).replace(/^\/+|\/+$/gu, '');
2
- const normalizeSeparators = (value)=>String(value).replace(/\\+/gu, '/');
1
+ const trimSlashes = value => String(value).replace(/^\/+|\/+$/gu, '');
2
+ const normalizeSeparators = value => String(value).replace(/\\+/gu, '/');
3
+
3
4
  export const sep = '/';
4
5
  export const delimiter = ':';
6
+
5
7
  export function isAbsolute(filePath) {
6
- return normalizeSeparators(filePath).startsWith('/');
8
+ return normalizeSeparators(filePath).startsWith('/');
7
9
  }
10
+
8
11
  export function normalize(filePath) {
9
- const normalized = normalizeSeparators(filePath);
10
- const absolute = isAbsolute(normalized);
11
- const parts = [];
12
- for (const part of normalized.split('/'))if (part && '.' !== part) {
13
- if ('..' === part) {
14
- if (parts.length > 0 && '..' !== parts[parts.length - 1]) parts.pop();
15
- else if (!absolute) parts.push(part);
16
- continue;
17
- }
12
+ const normalized = normalizeSeparators(filePath);
13
+ const absolute = isAbsolute(normalized);
14
+ const parts = [];
15
+
16
+ for (const part of normalized.split('/')) {
17
+ if (!part || part === '.') {
18
+ continue;
19
+ }
20
+
21
+ if (part === '..') {
22
+ if (parts.length > 0 && parts[parts.length - 1] !== '..') {
23
+ parts.pop();
24
+ } else if (!absolute) {
18
25
  parts.push(part);
26
+ }
27
+ continue;
19
28
  }
20
- const joined = parts.join('/');
21
- if (absolute) return joined ? `/${joined}` : '/';
22
- return joined || '.';
29
+
30
+ parts.push(part);
31
+ }
32
+
33
+ const joined = parts.join('/');
34
+
35
+ if (absolute) {
36
+ return joined ? `/${joined}` : '/';
37
+ }
38
+
39
+ return joined || '.';
23
40
  }
41
+
24
42
  export function join(...segments) {
25
- const joined = segments.map(normalizeSeparators).filter(Boolean).map((segment, index)=>0 === index ? segment : trimSlashes(segment)).filter(Boolean).join('/');
26
- return joined ? normalize(joined) : '.';
43
+ const joined = segments
44
+ .map(normalizeSeparators)
45
+ .filter(Boolean)
46
+ .map((segment, index) => (index === 0 ? segment : trimSlashes(segment)))
47
+ .filter(Boolean)
48
+ .join('/');
49
+
50
+ return joined ? normalize(joined) : '.';
27
51
  }
52
+
28
53
  export function resolve(...segments) {
29
- const joined = join(...segments);
30
- return joined.startsWith('/') ? joined : `/${joined}`;
54
+ const joined = join(...segments);
55
+
56
+ return joined.startsWith('/') ? joined : `/${joined}`;
31
57
  }
58
+
32
59
  export function dirname(filePath) {
33
- const normalized = normalizeSeparators(filePath).replace(/\/+$/u, '');
34
- const index = normalized.lastIndexOf('/');
35
- if (index <= 0) return '/';
36
- return normalized.slice(0, index);
60
+ const normalized = normalizeSeparators(filePath).replace(/\/+$/u, '');
61
+ const index = normalized.lastIndexOf('/');
62
+
63
+ if (index <= 0) {
64
+ return '/';
65
+ }
66
+
67
+ return normalized.slice(0, index);
37
68
  }
69
+
38
70
  export function basename(filePath, suffix = '') {
39
- const normalized = normalizeSeparators(filePath).replace(/\/+$/u, '');
40
- const base = normalized.slice(normalized.lastIndexOf('/') + 1);
41
- return suffix && base.endsWith(suffix) ? base.slice(0, -suffix.length) : base;
71
+ const normalized = normalizeSeparators(filePath).replace(/\/+$/u, '');
72
+ const base = normalized.slice(normalized.lastIndexOf('/') + 1);
73
+
74
+ return suffix && base.endsWith(suffix) ? base.slice(0, -suffix.length) : base;
42
75
  }
76
+
43
77
  export function extname(filePath) {
44
- const base = basename(filePath);
45
- const index = base.lastIndexOf('.');
46
- if (index <= 0) return '';
47
- return base.slice(index);
78
+ const base = basename(filePath);
79
+ const index = base.lastIndexOf('.');
80
+
81
+ if (index <= 0) {
82
+ return '';
83
+ }
84
+
85
+ return base.slice(index);
48
86
  }
87
+
49
88
  export default {
50
- basename,
51
- delimiter,
52
- dirname,
53
- extname,
54
- isAbsolute,
55
- join,
56
- normalize,
57
- resolve,
58
- sep
89
+ basename,
90
+ delimiter,
91
+ dirname,
92
+ extname,
93
+ isAbsolute,
94
+ join,
95
+ normalize,
96
+ resolve,
97
+ sep,
59
98
  };