@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
@@ -0,0 +1,283 @@
1
+ # router
2
+
3
+ :::info
4
+ The router solution based on [react-router](https://reactrouter.com/).
5
+
6
+ This page documents the React Router runtime export (`@modern-js/runtime/router`).\
7
+ If your app uses TanStack Router (`--router tanstack`), use `@modern-js/plugin-tanstack/runtime` and refer to TanStack Router API docs.
8
+
9
+ :::
10
+
11
+ ## hooks
12
+
13
+ ### useNavigate
14
+
15
+ ```ts
16
+ declare function useNavigate(): NavigateFunction;
17
+
18
+ interface NavigateFunction {
19
+ (
20
+ to: To,
21
+ options?: {
22
+ replace?: boolean;
23
+ state?: any;
24
+ relative?: RelativeRoutingType;
25
+ },
26
+ ): void;
27
+ (delta: number): void;
28
+ }
29
+ ```
30
+
31
+ The `useNavigate` hook returns a function that lets you navigate programmatically.
32
+
33
+ ```tsx
34
+ import { useNavigate } from '@modern-js/runtime/router';
35
+
36
+ export function HomeButton() {
37
+ let navigate = useNavigate();
38
+
39
+ function handleClick() {
40
+ navigate('/home');
41
+ }
42
+
43
+ return (
44
+ <button type="button" onClick={handleClick}>
45
+ Go home
46
+ </button>
47
+ );
48
+ }
49
+ ```
50
+
51
+ ### useLocation
52
+
53
+ ```ts
54
+ declare function useLocation(): Location;
55
+
56
+ interface Location extends Path {
57
+ state: unknown;
58
+ key: Key;
59
+ }
60
+ ```
61
+
62
+ The `useLocation` hook returns the current [location](https://reactrouter.com/web/api/location) object. A new location object would be returned whenever the current location changes.
63
+
64
+ ```ts
65
+ import { useLocation } from '@modern-js/runtime/router';
66
+
67
+ function usePageViews() {
68
+ let location = useLocation();
69
+ React.useEffect(() => {
70
+ ga.send(["pageview", location.pathname]);
71
+ }, [location]);
72
+ }
73
+
74
+ function App() {
75
+ usePageViews();
76
+ return (
77
+ //...
78
+ );
79
+ }
80
+ ```
81
+
82
+ ### useParams
83
+
84
+ ```ts
85
+ declare function useParams<K extends string = string>(): Readonly<Params<K>>;
86
+ ```
87
+
88
+ The `useParams` hook returns an object of key/value pairs of the dynamic params from the current URL that were matched by the `<Route path>`.
89
+
90
+ ```tsx
91
+ import { Routes, Route, useParams } from '@modern-js/runtime/router';
92
+
93
+ function BlogPost() {
94
+ const { slug } = useParams();
95
+ return <div>Now showing post {slug}</div>;
96
+ }
97
+
98
+ function App() {
99
+ return (
100
+ <Routes>
101
+ <Route path="/" element={<div>home</div>} />
102
+ <Route path="/blog/:slug" element={<BlogPost />} />
103
+ </Routes>
104
+ );
105
+ }
106
+ ```
107
+
108
+ ### useRouteError
109
+
110
+ ```ts
111
+ export declare function useRouteError(): unknown;
112
+ ```
113
+
114
+ `useRouteError` returns the nearest ancestor Route error。
115
+
116
+ ```tsx
117
+ import { useRouteError } from '@modern-js/runtime/router';
118
+ const ErrorBoundary = () => {
119
+ const error = useRouteError();
120
+ return (
121
+ <div>
122
+ <h1>{error.status}</h1>
123
+ <h2>{error.message}</h2>
124
+ </div>
125
+ );
126
+ };
127
+ export default ErrorBoundary;
128
+ ```
129
+
130
+ ## Components
131
+
132
+ ### Link
133
+
134
+ ```ts
135
+ declare function Link(props: LinkProps): React.ReactElement;
136
+
137
+ interface LinkProps
138
+ extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
139
+ replace?: boolean;
140
+ state?: any;
141
+ to: To;
142
+ reloadDocument?: boolean;
143
+ }
144
+
145
+ type To = string | Partial<Path>;
146
+ ```
147
+
148
+ A `<Link>` is an element that lets the user navigate to another page by clicking or tapping on it.
149
+
150
+ ```ts
151
+ <Link to="/about">About</Link>
152
+ ```
153
+
154
+ ### NavLink
155
+
156
+ ```ts
157
+ declare function NavLink(props: NavLinkProps): React.ReactElement;
158
+
159
+ interface NavLinkProps
160
+ extends Omit<LinkProps, 'className' | 'style' | 'children'> {
161
+ caseSensitive?: boolean;
162
+ children?:
163
+ | React.ReactNode
164
+ | ((props: { isActive: boolean }) => React.ReactNode);
165
+ className?: string | ((props: { isActive: boolean }) => string | undefined);
166
+ end?: boolean;
167
+ style?:
168
+ | React.CSSProperties
169
+ | ((props: { isActive: boolean }) => React.CSSProperties);
170
+ }
171
+ ```
172
+
173
+ A `<NavLink>` is a special kind of `<Link>` that knows whether or not it is "active".
174
+
175
+ ### Outlet
176
+
177
+ ```ts
178
+ interface OutletProps {
179
+ context?: unknown;
180
+ }
181
+ declare function Outlet(props: OutletProps): React.ReactElement | null;
182
+ ```
183
+
184
+ An `<Outlet>` should be used in parent route elements to render their child route elements. This allows nested UI to show up when child routes are rendered.
185
+
186
+ ```tsx
187
+ function Dashboard() {
188
+ return (
189
+ <div>
190
+ <h1>Dashboard</h1>
191
+
192
+ {/* This element will render either <DashboardMessages> when the URL is
193
+ "/messages", <DashboardTasks> at "/tasks", or null if it is "/"
194
+ */}
195
+ <Outlet />
196
+ </div>
197
+ );
198
+ }
199
+
200
+ function App() {
201
+ return (
202
+ <Routes>
203
+ <Route path="/" element={<Dashboard />}>
204
+ <Route path="messages" element={<DashboardMessages />} />
205
+ <Route path="tasks" element={<DashboardTasks />} />
206
+ </Route>
207
+ </Routes>
208
+ );
209
+ }
210
+ ```
211
+
212
+ ### Route
213
+
214
+ ```ts
215
+ interface RouteObject {
216
+ path?: string;
217
+ index?: boolean;
218
+ children?: React.ReactNode;
219
+ caseSensitive?: boolean;
220
+ id?: string;
221
+ loader?: LoaderFunction;
222
+ action?: ActionFunction;
223
+ element?: React.ReactNode | null;
224
+ errorElement?: React.ReactNode | null;
225
+ handle?: RouteObject['handle'];
226
+ shouldRevalidate?: ShouldRevalidateFunction;
227
+ }
228
+ ```
229
+
230
+ `Route` represents the route information. A `Route` object couples URL segments to components, data loading and data mutations.
231
+
232
+ `Route` can be used as a plain object, passing to the router creation functions:
233
+
234
+ ```ts
235
+ const router = createBrowserRouter([
236
+ {
237
+ // it renders this element
238
+ element: <Team />,
239
+
240
+ // when the URL matches this segment
241
+ path: 'teams/:teamId',
242
+
243
+ // with this data loaded before rendering
244
+ loader: async ({ request, params }) => {
245
+ return fetch(`/fake/api/teams/${params.teamId}.json`, {
246
+ signal: request.signal,
247
+ });
248
+ },
249
+
250
+ // performing this mutation when data is submitted to it
251
+ action: async ({ request }) => {
252
+ return updateFakeTeam(await request.formData());
253
+ },
254
+
255
+ // and renders this element in case something went wrong
256
+ errorElement: <ErrorBoundary />,
257
+ },
258
+ ]);
259
+ ```
260
+
261
+ You can also declare your routes with JSX and `createRoutesFromElements`, the props to the element are identical to the properties of the route objects:
262
+
263
+ ```ts
264
+ const router = createBrowserRouter(
265
+ createRoutesFromElements(
266
+ <Route
267
+ element={<Team />}
268
+ path="teams/:teamId"
269
+ loader={async ({ params }) => {
270
+ return fetch(`/fake/api/teams/${params.teamId}.json`);
271
+ }}
272
+ action={async ({ request }) => {
273
+ return updateFakeTeam(await request.formData());
274
+ }}
275
+ errorElement={<ErrorBoundary />}
276
+ />,
277
+ ),
278
+ );
279
+ ```
280
+
281
+ ## More
282
+
283
+ You can access to [React Router](https://reactrouter.com/) to get the full API information.
@@ -0,0 +1,35 @@
1
+ # NoSSR
2
+
3
+ The content wrapped by NoSSR will not be rendered at the server, nor will it be rendered during the client side hydrate. it will only be rendered immediately after the entire app is rendered.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { NoSSR } from '@modern-js/runtime/ssr';
9
+
10
+ export default () => <NoSSR>...</NoSSR>;
11
+ ```
12
+
13
+ ## Example
14
+
15
+ In the following code, the `Time` component is used to display the current time. Since the time obtained by server-side rendering and client side hydrate are diff, React will throw an exception. For this case, you can use `NoSSR` to optimize:
16
+
17
+ ```tsx
18
+ import { NoSSR } from '@modern-js/runtime/ssr';
19
+
20
+ function Time() {
21
+ return (
22
+ <NoSSR>
23
+ <div>Time: {Date.now()}</div>
24
+ </NoSSR>
25
+ );
26
+ }
27
+ ```
28
+
29
+ ## Scene
30
+
31
+ In CSR, it is often necessary to render different content according to the browser UA, or a parameter of the current page URL. If the application switches directly to SSR at this time, it is very likely that the results will not meet the expectations.
32
+
33
+ Modern.js provides complete browser side information in the SSR context, which can be used to determine the rendering result of the component on the server side.
34
+
35
+ Even so, if there is too much logic in the application, or the developer wants to use the context later, or does not want some content to be rendered at the server side. developer can use the NoSSR component to exclude this part from server-side rendering.
@@ -0,0 +1,67 @@
1
+ # renderStreaming
2
+
3
+ Used for `React v18` + `Streaming SSR` to render readable streams, used in conjunction with `createRequestHandler`.
4
+
5
+ ## Usage
6
+
7
+ ```ts title="src/entry.server.tsx"
8
+ import {
9
+ renderStreaming,
10
+ createRequestHandler,
11
+ type HandleRequest,
12
+ } from '@modern-js/runtime/ssr/server';
13
+
14
+ const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
15
+ const stream = await renderStreaming(request, <ServerRoot />, options);
16
+
17
+ return new Response(stream, {
18
+ headers: {
19
+ 'content-type': 'text/html; charset=utf-8',
20
+ },
21
+ });
22
+ };
23
+
24
+ export default createRequestHandler(handleRequest);
25
+ ```
26
+
27
+ ## Function Signature
28
+
29
+ ```ts
30
+ export type RenderStreaming = (
31
+ request: Request,
32
+ serverRoot: React.ReactElement,
33
+ optinos: RenderOptions,
34
+ ) => Promise<ReadableStream>;
35
+ ```
36
+
37
+ ## Example
38
+
39
+ ```tsx title="src/entry.server.tsx"
40
+ import {
41
+ renderStreaming,
42
+ createRequestHandler,
43
+ type HandleRequest,
44
+ } from '@modern-js/runtime/ssr/server';
45
+
46
+ const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
47
+ // do something before render
48
+ const stream = await renderStreaming(request, <ServerRoot />, options);
49
+
50
+ // docs: https://developer.mozilla.org/en-US/docs/Web/API/TransformStream
51
+ const transformStream = new TransformStream({
52
+ transform(chunk, controller) {
53
+ // do some transform
54
+ },
55
+ });
56
+
57
+ stream.pipeThrough(transformStream);
58
+
59
+ return new Response(transformStream.readable, {
60
+ headers: {
61
+ 'content-type': 'text/html; charset=utf-8',
62
+ },
63
+ });
64
+ };
65
+
66
+ export default createRequestHandler(handleRequest);
67
+ ```
@@ -0,0 +1,60 @@
1
+ # renderString
2
+
3
+ Used for React String SSR to render strings, used in conjunction with `createRequestHandler`.
4
+
5
+ ## Usage
6
+
7
+ ```tsx title="src/entry.server.tsx"
8
+ import {
9
+ renderString,
10
+ createRequestHandler,
11
+ type HandleRequest,
12
+ } from '@modern-js/runtime/ssr/server';
13
+
14
+ const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
15
+ const body = await renderString(request, <ServerRoot />, options);
16
+
17
+ return new Response(body, {
18
+ headers: {
19
+ 'content-type': 'text/html; charset=utf-8',
20
+ },
21
+ });
22
+ };
23
+
24
+ export default createRequestHandler(handleRequest);
25
+ ```
26
+
27
+ ## Function Signature
28
+
29
+ ```ts
30
+ export type RenderString = (
31
+ request: Request,
32
+ serverRoot: React.ReactElement,
33
+ optinos: RenderOptions,
34
+ ) => Promise<string>;
35
+ ```
36
+
37
+ ## Example
38
+
39
+ ```tsx title="src/entry.server.tsx"
40
+ import {
41
+ renderString,
42
+ createRequestHandler,
43
+ type HandleRequest,
44
+ } from '@modern-js/runtime/ssr/server';
45
+
46
+ const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
47
+ // do something before render
48
+ const body = await renderString(request, <ServerRoot />, options);
49
+
50
+ const newBody = body + '<div>Byte-Dance</div>';
51
+
52
+ return new Response(newBody, {
53
+ headers: {
54
+ 'content-type': 'text/html; charset=utf-8',
55
+ },
56
+ });
57
+ };
58
+
59
+ export default createRequestHandler(handleRequest);
60
+ ```
@@ -0,0 +1,44 @@
1
+ # createRequestHandler
2
+
3
+ Used to customize the Server-Side Rendering entry to return the `requestHandler`.
4
+
5
+ ## Usage
6
+
7
+ ```tsx title="src/entry.server.tsx"
8
+ import {
9
+ renderString,
10
+ createRequestHandler,
11
+ type HandleRequest,
12
+ } from '@modern-js/runtime/ssr/server';
13
+
14
+ const handleRequest: HandleRequest = async (request, ServerRoot, options) => {
15
+ const body = await renderString(request, <ServerRoot />, options);
16
+
17
+ return new Response(body, {
18
+ headers: {
19
+ 'content-type': 'text/html; charset=utf-8',
20
+ },
21
+ });
22
+ };
23
+
24
+ export default createRequestHandler(handleRequest);
25
+ ```
26
+
27
+ ## Function Signature
28
+
29
+ ```ts
30
+ export type HandleRequest = (
31
+ request: Request,
32
+ ServerRoot: React.ComponentType,
33
+ options: HandleRequestOptions,
34
+ ) => Promise<Response>;
35
+
36
+ export type RequestHandler = (
37
+ request: Request,
38
+ options: RequestHandlerOptions,
39
+ ) => Promise<Response>;
40
+
41
+ export type CreateRequestHandler = (
42
+ handleRequest: HandleRequest,
43
+ ) => Promise<RequestHandler>;
44
+ ```
@@ -0,0 +1,40 @@
1
+ # CSS-In-JS API
2
+
3
+ Use Style Component to write CSS.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import styled from '@modern-js/plugin-styled-components/styled';
9
+ ```
10
+
11
+ ## Function Signature
12
+
13
+ see [styled-component API](https://styled-components.com/docs/api).
14
+
15
+ ## Example
16
+
17
+ ```tsx
18
+ import styled from '@modern-js/plugin-styled-components/styled';
19
+
20
+ const Button = styled.button`
21
+ background: palevioletred;
22
+ border-radius: 3px;
23
+ border: none;
24
+ color: white;
25
+ `;
26
+
27
+ const TomatoButton = styled(Button)`
28
+ background: tomato;
29
+ `;
30
+
31
+ function ButtonExample() {
32
+ return (
33
+ <>
34
+ <Button>I'm purple.</Button>
35
+ <br />
36
+ <TomatoButton>I'm red.</TomatoButton>
37
+ </>
38
+ );
39
+ }
40
+ ```
@@ -0,0 +1,35 @@
1
+ # Head
2
+
3
+ Used to add html elements (such as title, meta, script, etc.) to the `<head>` element, supports SSR.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { Helmet } from '@modern-js/runtime/head';
9
+
10
+ export default () => <Helmet>...</Helmet>;
11
+ ```
12
+
13
+ ## Example
14
+
15
+ ```tsx
16
+ import { Helmet } from '@modern-js/runtime/head';
17
+
18
+ function IndexPage() {
19
+ return (
20
+ <div>
21
+ <Helmet>
22
+ <title>My page title</title>
23
+ <meta name="viewport" content="initial-scale=1.0, width=device-width" />
24
+ </Helmet>
25
+ <p>Hello Modern.js!</p>
26
+ </div>
27
+ );
28
+ }
29
+
30
+ export default IndexPage;
31
+ ```
32
+
33
+ ## More
34
+
35
+ For detail, see [react-helmet](https://github.com/nfl/react-helmet).
@@ -0,0 +1,82 @@
1
+ # loadable
2
+
3
+ Used to create Loadable component
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import loadable from '@modern-js/runtime/loadable';
9
+ ```
10
+
11
+ ## Function Signature
12
+
13
+ ```ts
14
+ type Options = {
15
+ resolveComponent?: (
16
+ module: Module,
17
+ props: Props,
18
+ ) => React.ComponentType<Props>,
19
+ fallback?: JSX.Element;
20
+ ssr?: boolean;
21
+ }
22
+
23
+ function loadable(loadFn: Function, options?: Options) => LoadableComponent
24
+ ```
25
+
26
+ ### Input
27
+
28
+ #### loadFn
29
+
30
+ Used to load component.
31
+
32
+ ```ts
33
+ import loadable from '@modern-js/runtime/loadable';
34
+
35
+ const OtherComponent = loadable(() => import('./OtherComponent'));
36
+ ```
37
+
38
+ #### options.resolveComponent
39
+
40
+ Type: `(module: Module, props: Props) => React.ComponentType<Props>`
41
+
42
+ `module` is the component returned by `loadFn`, and `props` is the props parameter accepted by the component.
43
+
44
+ By default, we think that the default export of file is a react component, so we can render the component directly. But when the component is named export, or we need to dynamically determine which component needs to be rendered according to the `props`, we can use `resolveComponent`. Here is an example:
45
+
46
+ ```ts title='component.js'
47
+ export const Apple = () => 'Apple!';
48
+ export const Orange = () => 'Orange!';
49
+ ```
50
+
51
+ ```ts title='loadable.js'
52
+ const LoadableApple = loadable(() => import('./components'), {
53
+ resolveComponent: components => components.Apple,
54
+ });
55
+ const LoadableOrange = loadable(() => import('./components'), {
56
+ resolveComponent: components => components.Orange,
57
+ });
58
+ const LoadableFruit = loadable(() => import('./components'), {
59
+ resolveComponent: (components, props) => components[props.fruit],
60
+ });
61
+ ```
62
+
63
+ #### options.fallback
64
+
65
+ Whether to display fallback content during loading.
66
+
67
+ #### options.ssr
68
+
69
+ Whether to support SSR, the default value is `true`.
70
+
71
+ ### Return Value
72
+
73
+ #### LoadableComponent
74
+
75
+ ```ts
76
+ type LoadableComponent<Props> = React.ComponentType<
77
+ Props & { fallback?: JSX.Element }
78
+ > & {
79
+ preload(props?: Props): void;
80
+ load(props?: Props): Promise<React.ComponentType<Props>>;
81
+ };
82
+ ```