@modern-js/runtime 2.22.0 → 2.22.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/document/Html.js +2 -1
  3. package/dist/cjs/document/Style.js +26 -0
  4. package/dist/cjs/document/cli/index.js +3 -0
  5. package/dist/cjs/document/constants.js +11 -6
  6. package/dist/cjs/document/index.js +1 -0
  7. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +9 -4
  8. package/dist/cjs/router/runtime/plugin.js +16 -1
  9. package/dist/cjs/router/runtime/plugin.node.js +5 -2
  10. package/dist/esm/document/Html.js +8 -3
  11. package/dist/esm/document/Style.js +14 -0
  12. package/dist/esm/document/cli/index.js +6 -1
  13. package/dist/esm/document/constants.js +3 -1
  14. package/dist/esm/document/index.js +1 -0
  15. package/dist/esm/router/runtime/DeferredDataScripts.node.js +9 -4
  16. package/dist/esm/router/runtime/plugin.js +20 -1
  17. package/dist/esm/router/runtime/plugin.node.js +6 -3
  18. package/dist/esm-node/document/Html.js +2 -1
  19. package/dist/esm-node/document/Style.js +14 -0
  20. package/dist/esm-node/document/cli/index.js +4 -1
  21. package/dist/esm-node/document/constants.js +3 -1
  22. package/dist/esm-node/document/index.js +1 -0
  23. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +9 -4
  24. package/dist/esm-node/router/runtime/plugin.js +16 -1
  25. package/dist/esm-node/router/runtime/plugin.node.js +5 -2
  26. package/dist/js/modern/cli/index.js +72 -0
  27. package/dist/js/modern/common.js +4 -0
  28. package/dist/js/modern/config.js +0 -0
  29. package/dist/js/modern/core/app-config.js +10 -0
  30. package/dist/js/modern/core/compatible.js +286 -0
  31. package/dist/js/modern/core/index.js +16 -0
  32. package/dist/js/modern/core/loader/index.js +4 -0
  33. package/dist/js/modern/core/loader/loaderManager.js +165 -0
  34. package/dist/js/modern/core/loader/useLoader.js +114 -0
  35. package/dist/js/modern/core/plugin.js +58 -0
  36. package/dist/js/modern/document/Body.js +23 -0
  37. package/dist/js/modern/document/DocumentContext.js +9 -0
  38. package/dist/js/modern/document/DocumentStructureContext.js +11 -0
  39. package/dist/js/modern/document/Head.js +27 -0
  40. package/dist/js/modern/document/Html.js +78 -0
  41. package/dist/js/modern/document/Links.js +10 -0
  42. package/dist/js/modern/document/Root.js +33 -0
  43. package/dist/js/modern/document/Script.js +20 -0
  44. package/dist/js/modern/document/Scripts.js +10 -0
  45. package/dist/js/modern/document/cli/index.js +228 -0
  46. package/dist/js/modern/document/constants.js +49 -0
  47. package/dist/js/modern/document/index.js +10 -0
  48. package/dist/js/modern/exports/head.js +6 -0
  49. package/dist/js/modern/exports/loadable.js +6 -0
  50. package/dist/js/modern/exports/server.js +4 -0
  51. package/dist/js/modern/exports/styled.js +6 -0
  52. package/dist/js/modern/index.js +22 -0
  53. package/dist/js/modern/router/cli/index.js +120 -0
  54. package/dist/js/modern/router/index.js +7 -0
  55. package/dist/js/modern/router/runtime/DefaultNotFound.js +14 -0
  56. package/dist/js/modern/router/runtime/fetch.js +5 -0
  57. package/dist/js/modern/router/runtime/fetch.node.js +4 -0
  58. package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
  59. package/dist/js/modern/router/runtime/index.js +9 -0
  60. package/dist/js/modern/router/runtime/plugin.js +104 -0
  61. package/dist/js/modern/router/runtime/plugin.node.js +189 -0
  62. package/dist/js/modern/router/runtime/server.js +1 -0
  63. package/dist/js/modern/router/runtime/types.js +0 -0
  64. package/dist/js/modern/router/runtime/utils.js +196 -0
  65. package/dist/js/modern/router/runtime/withRouter.js +36 -0
  66. package/dist/js/modern/runtime-context.js +7 -0
  67. package/dist/js/modern/ssr/cli/babel-plugin-ssr-loader-id.js +130 -0
  68. package/dist/js/modern/ssr/cli/index.js +172 -0
  69. package/dist/js/modern/ssr/index.js +159 -0
  70. package/dist/js/modern/ssr/index.node.js +79 -0
  71. package/dist/js/modern/ssr/prefetch.js +69 -0
  72. package/dist/js/modern/ssr/prefetch.worker.js +66 -0
  73. package/dist/js/modern/ssr/react/index.js +6 -0
  74. package/dist/js/modern/ssr/react/nossr/index.js +18 -0
  75. package/dist/js/modern/ssr/react/prerender/index.js +108 -0
  76. package/dist/js/modern/ssr/react/prerender/type.js +0 -0
  77. package/dist/js/modern/ssr/react/prerender/util.js +96 -0
  78. package/dist/js/modern/ssr/react/withCallback/index.js +15 -0
  79. package/dist/js/modern/ssr/serverRender/helmet.js +44 -0
  80. package/dist/js/modern/ssr/serverRender/index.js +35 -0
  81. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +36 -0
  82. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +11 -0
  83. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +61 -0
  84. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +58 -0
  85. package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
  86. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
  87. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +96 -0
  88. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +117 -0
  89. package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +12 -0
  90. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +22 -0
  91. package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
  92. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +172 -0
  93. package/dist/js/modern/ssr/serverRender/renderToString/index.js +52 -0
  94. package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
  95. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +48 -0
  96. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +8 -0
  97. package/dist/js/modern/ssr/serverRender/renderToString/styledComponent.js +11 -0
  98. package/dist/js/modern/ssr/serverRender/renderToString/template.js +58 -0
  99. package/dist/js/modern/ssr/serverRender/renderToString/type.js +9 -0
  100. package/dist/js/modern/ssr/serverRender/time.js +13 -0
  101. package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
  102. package/dist/js/modern/ssr/serverRender/types.js +4 -0
  103. package/dist/js/modern/ssr/serverRender/utils.js +11 -0
  104. package/dist/js/modern/ssr/utils.js +81 -0
  105. package/dist/js/modern/state/cli/index.js +83 -0
  106. package/dist/js/modern/state/index.js +7 -0
  107. package/dist/js/modern/state/plugins.js +13 -0
  108. package/dist/js/modern/state/runtime/index.js +9 -0
  109. package/dist/js/modern/state/runtime/plugin.js +97 -0
  110. package/dist/js/modern/state/types.js +0 -0
  111. package/dist/js/node/cli/index.js +99 -0
  112. package/dist/js/node/common.js +27 -0
  113. package/dist/js/node/config.js +15 -0
  114. package/dist/js/node/core/app-config.js +34 -0
  115. package/dist/js/node/core/compatible.js +313 -0
  116. package/dist/js/node/core/index.js +47 -0
  117. package/dist/js/node/core/loader/index.js +33 -0
  118. package/dist/js/node/core/loader/loaderManager.js +195 -0
  119. package/dist/js/node/core/loader/useLoader.js +132 -0
  120. package/dist/js/node/core/plugin.js +80 -0
  121. package/dist/js/node/document/Body.js +43 -0
  122. package/dist/js/node/document/DocumentContext.js +38 -0
  123. package/dist/js/node/document/DocumentStructureContext.js +40 -0
  124. package/dist/js/node/document/Head.js +51 -0
  125. package/dist/js/node/document/Html.js +101 -0
  126. package/dist/js/node/document/Links.js +33 -0
  127. package/dist/js/node/document/Root.js +57 -0
  128. package/dist/js/node/document/Script.js +40 -0
  129. package/dist/js/node/document/Scripts.js +33 -0
  130. package/dist/js/node/document/cli/index.js +240 -0
  131. package/dist/js/node/document/constants.js +86 -0
  132. package/dist/js/node/document/index.js +26 -0
  133. package/dist/js/node/exports/head.js +34 -0
  134. package/dist/js/node/exports/loadable.js +34 -0
  135. package/dist/js/node/exports/server.js +27 -0
  136. package/dist/js/node/exports/styled.js +34 -0
  137. package/dist/js/node/index.js +44 -0
  138. package/dist/js/node/router/cli/index.js +135 -0
  139. package/dist/js/node/router/index.js +37 -0
  140. package/dist/js/node/router/runtime/DefaultNotFound.js +37 -0
  141. package/dist/js/node/router/runtime/fetch.js +28 -0
  142. package/dist/js/node/router/runtime/fetch.node.js +27 -0
  143. package/dist/js/node/router/runtime/fetch.worker.js +28 -0
  144. package/dist/js/node/router/runtime/index.js +33 -0
  145. package/dist/js/node/router/runtime/plugin.js +127 -0
  146. package/dist/js/node/router/runtime/plugin.node.js +212 -0
  147. package/dist/js/node/router/runtime/server.js +17 -0
  148. package/dist/js/node/router/runtime/types.js +15 -0
  149. package/dist/js/node/router/runtime/utils.js +221 -0
  150. package/dist/js/node/router/runtime/withRouter.js +57 -0
  151. package/dist/js/node/runtime-context.js +31 -0
  152. package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +139 -0
  153. package/dist/js/node/ssr/cli/index.js +190 -0
  154. package/dist/js/node/ssr/index.js +185 -0
  155. package/dist/js/node/ssr/index.node.js +107 -0
  156. package/dist/js/node/ssr/prefetch.js +90 -0
  157. package/dist/js/node/ssr/prefetch.worker.js +87 -0
  158. package/dist/js/node/ssr/react/index.js +30 -0
  159. package/dist/js/node/ssr/react/nossr/index.js +47 -0
  160. package/dist/js/node/ssr/react/prerender/index.js +130 -0
  161. package/dist/js/node/ssr/react/prerender/type.js +15 -0
  162. package/dist/js/node/ssr/react/prerender/util.js +123 -0
  163. package/dist/js/node/ssr/react/withCallback/index.js +38 -0
  164. package/dist/js/node/ssr/serverRender/helmet.js +65 -0
  165. package/dist/js/node/ssr/serverRender/index.js +56 -0
  166. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +65 -0
  167. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +35 -0
  168. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +87 -0
  169. package/dist/js/node/ssr/serverRender/renderToStream/index.js +87 -0
  170. package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
  171. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +47 -0
  172. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +115 -0
  173. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +136 -0
  174. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +35 -0
  175. package/dist/js/node/ssr/serverRender/renderToStream/template.js +45 -0
  176. package/dist/js/node/ssr/serverRender/renderToStream/type.js +15 -0
  177. package/dist/js/node/ssr/serverRender/renderToString/entry.js +197 -0
  178. package/dist/js/node/ssr/serverRender/renderToString/index.js +81 -0
  179. package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
  180. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +71 -0
  181. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +31 -0
  182. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +34 -0
  183. package/dist/js/node/ssr/serverRender/renderToString/template.js +82 -0
  184. package/dist/js/node/ssr/serverRender/renderToString/type.js +32 -0
  185. package/dist/js/node/ssr/serverRender/time.js +36 -0
  186. package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
  187. package/dist/js/node/ssr/serverRender/types.js +27 -0
  188. package/dist/js/node/ssr/serverRender/utils.js +34 -0
  189. package/dist/js/node/ssr/utils.js +106 -0
  190. package/dist/js/node/state/cli/index.js +100 -0
  191. package/dist/js/node/state/index.js +37 -0
  192. package/dist/js/node/state/plugins.js +45 -0
  193. package/dist/js/node/state/runtime/index.js +40 -0
  194. package/dist/js/node/state/runtime/plugin.js +121 -0
  195. package/dist/js/node/state/types.js +15 -0
  196. package/dist/js/treeshaking/cli/index.js +186 -0
  197. package/dist/js/treeshaking/common.js +4 -0
  198. package/dist/js/treeshaking/config.js +1 -0
  199. package/dist/js/treeshaking/core/app-config.js +9 -0
  200. package/dist/js/treeshaking/core/compatible.js +486 -0
  201. package/dist/js/treeshaking/core/index.js +7 -0
  202. package/dist/js/treeshaking/core/loader/index.js +2 -0
  203. package/dist/js/treeshaking/core/loader/loaderManager.js +406 -0
  204. package/dist/js/treeshaking/core/loader/useLoader.js +188 -0
  205. package/dist/js/treeshaking/core/plugin.js +176 -0
  206. package/dist/js/treeshaking/document/Body.js +18 -0
  207. package/dist/js/treeshaking/document/DocumentContext.js +7 -0
  208. package/dist/js/treeshaking/document/DocumentStructureContext.js +9 -0
  209. package/dist/js/treeshaking/document/Head.js +24 -0
  210. package/dist/js/treeshaking/document/Html.js +99 -0
  211. package/dist/js/treeshaking/document/Links.js +8 -0
  212. package/dist/js/treeshaking/document/Root.js +26 -0
  213. package/dist/js/treeshaking/document/Script.js +15 -0
  214. package/dist/js/treeshaking/document/Scripts.js +8 -0
  215. package/dist/js/treeshaking/document/cli/index.js +393 -0
  216. package/dist/js/treeshaking/document/constants.js +35 -0
  217. package/dist/js/treeshaking/document/index.js +10 -0
  218. package/dist/js/treeshaking/exports/head.js +4 -0
  219. package/dist/js/treeshaking/exports/loadable.js +4 -0
  220. package/dist/js/treeshaking/exports/server.js +4 -0
  221. package/dist/js/treeshaking/exports/styled.js +4 -0
  222. package/dist/js/treeshaking/index.js +3 -0
  223. package/dist/js/treeshaking/router/cli/index.js +148 -0
  224. package/dist/js/treeshaking/router/index.js +4 -0
  225. package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +14 -0
  226. package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
  227. package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
  228. package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
  229. package/dist/js/treeshaking/router/runtime/index.js +6 -0
  230. package/dist/js/treeshaking/router/runtime/plugin.js +132 -0
  231. package/dist/js/treeshaking/router/runtime/plugin.node.js +447 -0
  232. package/dist/js/treeshaking/router/runtime/server.js +1 -0
  233. package/dist/js/treeshaking/router/runtime/types.js +1 -0
  234. package/dist/js/treeshaking/router/runtime/utils.js +260 -0
  235. package/dist/js/treeshaking/router/runtime/withRouter.js +67 -0
  236. package/dist/js/treeshaking/runtime-context.js +4 -0
  237. package/dist/js/treeshaking/ssr/cli/babel-plugin-ssr-loader-id.js +122 -0
  238. package/dist/js/treeshaking/ssr/cli/index.js +217 -0
  239. package/dist/js/treeshaking/ssr/index.js +315 -0
  240. package/dist/js/treeshaking/ssr/index.node.js +240 -0
  241. package/dist/js/treeshaking/ssr/prefetch.js +199 -0
  242. package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
  243. package/dist/js/treeshaking/ssr/react/index.js +3 -0
  244. package/dist/js/treeshaking/ssr/react/nossr/index.js +58 -0
  245. package/dist/js/treeshaking/ssr/react/prerender/index.js +237 -0
  246. package/dist/js/treeshaking/ssr/react/prerender/type.js +1 -0
  247. package/dist/js/treeshaking/ssr/react/prerender/util.js +108 -0
  248. package/dist/js/treeshaking/ssr/react/withCallback/index.js +16 -0
  249. package/dist/js/treeshaking/ssr/serverRender/helmet.js +42 -0
  250. package/dist/js/treeshaking/ssr/serverRender/index.js +169 -0
  251. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +34 -0
  252. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
  253. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +115 -0
  254. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +165 -0
  255. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
  256. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
  257. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +122 -0
  258. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +294 -0
  259. package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +11 -0
  260. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +63 -0
  261. package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +1 -0
  262. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +393 -0
  263. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +165 -0
  264. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
  265. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +56 -0
  266. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +10 -0
  267. package/dist/js/treeshaking/ssr/serverRender/renderToString/styledComponent.js +9 -0
  268. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +156 -0
  269. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +7 -0
  270. package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
  271. package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
  272. package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
  273. package/dist/js/treeshaking/ssr/serverRender/utils.js +13 -0
  274. package/dist/js/treeshaking/ssr/utils.js +134 -0
  275. package/dist/js/treeshaking/state/cli/index.js +71 -0
  276. package/dist/js/treeshaking/state/index.js +4 -0
  277. package/dist/js/treeshaking/state/plugins.js +14 -0
  278. package/dist/js/treeshaking/state/runtime/index.js +5 -0
  279. package/dist/js/treeshaking/state/runtime/plugin.js +198 -0
  280. package/dist/js/treeshaking/state/types.js +1 -0
  281. package/dist/types/document/Style.d.ts +5 -0
  282. package/dist/types/document/constants.d.ts +2 -1
  283. package/dist/types/document/index.d.ts +1 -0
  284. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +3 -1
  285. package/dist/types/runtimeContext.d.ts +8 -0
  286. package/package.json +11 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @modern-js/runtime
2
2
 
3
+ ## 2.22.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e2848a2: fix: support nonce in streaming SSR
8
+ fix: 在 streaming SSR 中支持 nonce
9
+ - 9b69987: feat: support Style component to use style with some <> special chartset
10
+ feat: 支持 Style 组件,用于渲染含 <> 等特殊字符
11
+ - Updated dependencies [25b490a]
12
+ - Updated dependencies [e2848a2]
13
+ - Updated dependencies [d4045ed]
14
+ - @modern-js/types@2.22.1
15
+ - @modern-js/utils@2.22.1
16
+ - @modern-js/plugin@2.22.1
17
+
3
18
  ## 2.22.0
4
19
 
5
20
  ### Minor Changes
@@ -37,7 +37,7 @@ function findTargetElement(tag, children) {
37
37
  return findTargetElement(tag, nextChildren);
38
38
  }
39
39
  function Html(props) {
40
- const { children } = props;
40
+ const { children, ...rest } = props;
41
41
  const hasSetHead = Boolean(findTargetChild("Head", children));
42
42
  const hasSetScripts = Boolean(findTargetElement("Scripts", children));
43
43
  const hasSetLinks = Boolean(findTargetElement("Links", children));
@@ -70,6 +70,7 @@ function Html(props) {
70
70
  });
71
71
  }
72
72
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("html", {
73
+ ...rest,
73
74
  children: /* @__PURE__ */ (0, _jsxruntime.jsxs)(_DocumentStructureContext.DocumentStructureContext.Provider, {
74
75
  value: {
75
76
  hasSetHead,
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Style", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Style;
9
+ }
10
+ });
11
+ const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
12
+ const _jsxruntime = require("react/jsx-runtime");
13
+ const _react = /* @__PURE__ */ _interop_require_default._(require("react"));
14
+ const _constants = require("./constants");
15
+ function Style(props) {
16
+ const { content, children } = props;
17
+ const contentStr = children || content;
18
+ const contentIIFE = encodeURIComponent(`(${contentStr})()`);
19
+ return /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
20
+ children: [
21
+ `${_constants.DOCUMENT_STYLE_PLACEHOLDER_START}`,
22
+ `${contentIIFE}`,
23
+ `${_constants.DOCUMENT_STYLE_PLACEHOLDER_END}`
24
+ ]
25
+ });
26
+ }
@@ -146,6 +146,9 @@ const _default = () => {
146
146
  const nonceAttr = nonce ? `nonce=${nonce}` : "";
147
147
  html = html.replace(new RegExp(`${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script ${nonceAttr}>${decodeURIComponent($1)}</script>`);
148
148
  }
149
+ if (html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_END)) {
150
+ html = html.replace(new RegExp(`${_constants.DOCUMENT_STYLE_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_STYLE_PLACEHOLDER_END}`, "g"), (_styleStr, $1) => `<style>${decodeURIComponent($1)}</style>`);
151
+ }
149
152
  if (html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_END)) {
150
153
  html = html.replace(new RegExp(`${_constants.DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
151
154
  }
@@ -19,9 +19,6 @@ _export(exports, {
19
19
  HTML_SEPARATOR: function() {
20
20
  return HTML_SEPARATOR;
21
21
  },
22
- HTML_CHUNKSMAP_SEPARATOR: function() {
23
- return HTML_CHUNKSMAP_SEPARATOR;
24
- },
25
22
  HTML_SSRDATASCRIPT_SEPARATOR: function() {
26
23
  return HTML_SSRDATASCRIPT_SEPARATOR;
27
24
  },
@@ -52,6 +49,12 @@ _export(exports, {
52
49
  DOCUMENT_SCRIPT_PLACEHOLDER_END: function() {
53
50
  return DOCUMENT_SCRIPT_PLACEHOLDER_END;
54
51
  },
52
+ DOCUMENT_STYLE_PLACEHOLDER_START: function() {
53
+ return DOCUMENT_STYLE_PLACEHOLDER_START;
54
+ },
55
+ DOCUMENT_STYLE_PLACEHOLDER_END: function() {
56
+ return DOCUMENT_STYLE_PLACEHOLDER_END;
57
+ },
55
58
  DOCUMENT_COMMENT_PLACEHOLDER_START: function() {
56
59
  return DOCUMENT_COMMENT_PLACEHOLDER_START;
57
60
  },
@@ -62,6 +65,7 @@ _export(exports, {
62
65
  return PLACEHOLDER_REPLACER_MAP;
63
66
  }
64
67
  });
68
+ const _constants = require("@modern-js/utils/universal/constants");
65
69
  const DOC_EXT = [
66
70
  "jsx",
67
71
  "tsx",
@@ -70,10 +74,9 @@ const DOC_EXT = [
70
74
  ];
71
75
  const DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
72
76
  const HTML_SEPARATOR = "<!--<?- html ?>-->";
73
- const HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
74
77
  const HTML_SSRDATASCRIPT_SEPARATOR = "<!--<?- SSRDataScript ?>-->";
75
78
  const DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
76
- const DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
79
+ const DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(_constants.HTML_CHUNKSMAP_SEPARATOR);
77
80
  const DOCUMENT_SSRDATASCRIPT_PLACEHOLDER = encodeURIComponent(HTML_SSRDATASCRIPT_SEPARATOR);
78
81
  const DOCUMENT_FILE_NAME = "Document";
79
82
  const DOCUMENT_SCRIPTS_PLACEHOLDER = encodeURIComponent("<!-- chunk scripts placeholder -->");
@@ -81,11 +84,13 @@ const DOCUMENT_LINKS_PLACEHOLDER = encodeURIComponent("<!-- chunk links placehol
81
84
  const DOCUMENT_NO_SCRIPTE_PLACEHOLDER = encodeURIComponent("<!-- no-script -->");
82
85
  const DOCUMENT_SCRIPT_PLACEHOLDER_START = encodeURIComponent("<!-- script-start -->");
83
86
  const DOCUMENT_SCRIPT_PLACEHOLDER_END = encodeURIComponent("<!-- script-end -->");
87
+ const DOCUMENT_STYLE_PLACEHOLDER_START = encodeURIComponent("<!-- style-start -->");
88
+ const DOCUMENT_STYLE_PLACEHOLDER_END = encodeURIComponent("<!-- style-end -->");
84
89
  const DOCUMENT_COMMENT_PLACEHOLDER_START = encodeURIComponent("<!-- comment-start -->");
85
90
  const DOCUMENT_COMMENT_PLACEHOLDER_END = encodeURIComponent("<!-- comment-end -->");
86
91
  const PLACEHOLDER_REPLACER_MAP = {
87
92
  [DOCUMENT_NO_SCRIPTE_PLACEHOLDER]: `We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.`,
88
93
  [DOCUMENT_SSR_PLACEHOLDER]: HTML_SEPARATOR,
89
- [DOCUMENT_CHUNKSMAP_PLACEHOLDER]: HTML_CHUNKSMAP_SEPARATOR,
94
+ [DOCUMENT_CHUNKSMAP_PLACEHOLDER]: _constants.HTML_CHUNKSMAP_SEPARATOR,
90
95
  [DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]: HTML_SSRDATASCRIPT_SEPARATOR
91
96
  };
@@ -11,6 +11,7 @@ _export_star._(require("./Body"), exports);
11
11
  _export_star._(require("./Root"), exports);
12
12
  _export_star._(require("./Links"), exports);
13
13
  _export_star._(require("./Comment"), exports);
14
+ _export_star._(require("./Style"), exports);
14
15
  _export_star._(require("./Scripts"), exports);
15
16
  _export_star._(require("./Script"), exports);
16
17
  _export_star._(require("./constants"), exports);
@@ -17,7 +17,7 @@ const _utils = require("./utils");
17
17
  const setupFnStr = `function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};`;
18
18
  const resolveFnStr = `function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};`;
19
19
  const preResolvedFnStr = `function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};`;
20
- const DeferredDataScripts = () => {
20
+ const DeferredDataScripts = (props) => {
21
21
  const context = (0, _react.useContext)(_router.UNSAFE_DataRouterContext);
22
22
  const { staticContext } = context || {};
23
23
  const hydratedRef = (0, _react.useRef)(false);
@@ -46,6 +46,7 @@ const DeferredDataScripts = () => {
46
46
  const deferredKeyPromiseStr = deferredKeys.map((key) => {
47
47
  if (pendingKeys.has(key)) {
48
48
  deferredDataScripts.push(/* @__PURE__ */ (0, _jsxruntime.jsx)(DeferredDataScript, {
49
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
49
50
  data: deferredData.data[key],
50
51
  dataKey: key,
51
52
  routeId
@@ -81,6 +82,7 @@ const DeferredDataScripts = () => {
81
82
  children: [
82
83
  !hydratedRef.current && /* @__PURE__ */ (0, _jsxruntime.jsx)("script", {
83
84
  async: true,
85
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
84
86
  suppressHydrationWarning: true,
85
87
  dangerouslySetInnerHTML: {
86
88
  __html: deferredScripts[0]
@@ -91,16 +93,18 @@ const DeferredDataScripts = () => {
91
93
  ]
92
94
  });
93
95
  };
94
- const DeferredDataScript = ({ data, routeId, dataKey }) => {
96
+ const DeferredDataScript = ({ data, routeId, dataKey, nonce }) => {
95
97
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(_react.Suspense, {
96
98
  children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.Await, {
97
99
  resolve: data,
98
100
  errorElement: /* @__PURE__ */ (0, _jsxruntime.jsx)(ErrorDeferredDataScript, {
99
101
  routeId,
100
- dataKey
102
+ dataKey,
103
+ nonce
101
104
  }),
102
105
  children: (data2) => /* @__PURE__ */ (0, _jsxruntime.jsx)("script", {
103
106
  async: true,
107
+ nonce,
104
108
  suppressHydrationWarning: true,
105
109
  dangerouslySetInnerHTML: {
106
110
  __html: `_ROUTER_DATA.r(${JSON.stringify(routeId)}, ${JSON.stringify(dataKey)}, ${(0, _runtimenode.serializeJson)(data2)});`
@@ -109,9 +113,10 @@ const DeferredDataScript = ({ data, routeId, dataKey }) => {
109
113
  }) : null
110
114
  });
111
115
  };
112
- const ErrorDeferredDataScript = ({ routeId, dataKey }) => {
116
+ const ErrorDeferredDataScript = ({ routeId, dataKey, nonce }) => {
113
117
  const error = (0, _router.useAsyncError)();
114
118
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("script", {
119
+ nonce,
115
120
  suppressHydrationWarning: true,
116
121
  dangerouslySetInnerHTML: {
117
122
  __html: `_ROUTER_DATA.r(${JSON.stringify(routeId)}, ${JSON.stringify(dataKey)}, ${void 0}, ${(0, _runtimenode.serializeJson)({
@@ -105,7 +105,22 @@ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename =
105
105
  hydrationData
106
106
  });
107
107
  const runtimeContext = (0, _react.useContext)(_core.RuntimeReactContext);
108
- runtimeContext.remixRouter = router;
108
+ Object.defineProperty(runtimeContext, "remixRouter", {
109
+ get() {
110
+ return router;
111
+ }
112
+ });
113
+ const originSubscribe = router.subscribe;
114
+ router.subscribe = (listener) => {
115
+ const wrapedListener = (...args) => {
116
+ const blockRoute = runtimeContext.unstable_blockRoute;
117
+ if (blockRoute) {
118
+ return;
119
+ }
120
+ return listener(...args);
121
+ };
122
+ return originSubscribe(wrapedListener);
123
+ };
109
124
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
110
125
  ...props,
111
126
  children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.RouterProvider, {
@@ -73,12 +73,15 @@ const routerPlugin = ({ basename = "", routesConfig, createRoutes }) => {
73
73
  context
74
74
  });
75
75
  }
76
- const { request, mode: ssrMode } = context.ssrContext;
76
+ const { request, mode: ssrMode, nonce } = context.ssrContext;
77
77
  const baseUrl = request.baseUrl;
78
78
  const _basename = baseUrl === "/" ? (0, _utils.urlJoin)(baseUrl, basename) : baseUrl;
79
79
  const routes = createRoutes ? createRoutes() : (0, _router1.createRoutesFromElements)((0, _utils.renderRoutes)({
80
80
  routesConfig,
81
- ssrMode
81
+ ssrMode,
82
+ props: {
83
+ nonce
84
+ }
82
85
  }));
83
86
  const { query } = (0, _remixrouter.createStaticHandler)(routes, {
84
87
  basename: _basename
@@ -1,3 +1,6 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
+ import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
1
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
5
  import { Body } from "./Body";
3
6
  import { DocumentStructureContext } from "./DocumentStructureContext";
@@ -44,7 +47,9 @@ function findTargetElement(tag, children) {
44
47
  return findTargetElement(tag, nextChildren);
45
48
  }
46
49
  export function Html(props) {
47
- var children = props.children;
50
+ var children = props.children, rest = _object_without_properties(props, [
51
+ "children"
52
+ ]);
48
53
  var hasSetHead = Boolean(findTargetChild("Head", children));
49
54
  var hasSetScripts = Boolean(findTargetElement("Scripts", children));
50
55
  var hasSetLinks = Boolean(findTargetElement("Links", children));
@@ -78,7 +83,7 @@ export function Html(props) {
78
83
  })
79
84
  });
80
85
  }
81
- return /* @__PURE__ */ _jsx("html", {
86
+ return /* @__PURE__ */ _jsx("html", _object_spread_props(_object_spread({}, rest), {
82
87
  children: /* @__PURE__ */ _jsxs(DocumentStructureContext.Provider, {
83
88
  value: {
84
89
  hasSetHead: hasSetHead,
@@ -94,5 +99,5 @@ export function Html(props) {
94
99
  children
95
100
  ]
96
101
  })
97
- });
102
+ }));
98
103
  }
@@ -0,0 +1,14 @@
1
+ import { jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END } from "./constants";
3
+ export function Style(props) {
4
+ var content = props.content, children = props.children;
5
+ var contentStr = children || content;
6
+ var contentIIFE = encodeURIComponent("(".concat(contentStr, ")()"));
7
+ return /* @__PURE__ */ _jsxs(_Fragment, {
8
+ children: [
9
+ "".concat(DOCUMENT_STYLE_PLACEHOLDER_START),
10
+ "".concat(contentIIFE),
11
+ "".concat(DOCUMENT_STYLE_PLACEHOLDER_END)
12
+ ]
13
+ });
14
+ }
@@ -8,7 +8,7 @@ import ReactDomServer from "react-dom/server";
8
8
  import { build } from "esbuild";
9
9
  import { createDebugger, findExists, fs } from "@modern-js/utils";
10
10
  import { DocumentContext } from "../DocumentContext";
11
- import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END } from "../constants";
11
+ import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END } from "../constants";
12
12
  var debug = createDebugger("html_genarate");
13
13
  export var getDocumenByEntryName = function getDocumenByEntryName2(entrypoints, entryName, fallbackDir) {
14
14
  var _entrypoints_find;
@@ -180,6 +180,11 @@ export default function() {
180
180
  return "<script ".concat(nonceAttr, ">").concat(decodeURIComponent($1), "</script>");
181
181
  });
182
182
  }
183
+ if (html.includes(DOCUMENT_STYLE_PLACEHOLDER_START) && html.includes(DOCUMENT_STYLE_PLACEHOLDER_END)) {
184
+ html = html.replace(new RegExp("".concat(DOCUMENT_STYLE_PLACEHOLDER_START, "(.*?)").concat(DOCUMENT_STYLE_PLACEHOLDER_END), "g"), function(_styleStr, $1) {
185
+ return "<style>".concat(decodeURIComponent($1), "</style>");
186
+ });
187
+ }
183
188
  if (html.includes(DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(DOCUMENT_COMMENT_PLACEHOLDER_END)) {
184
189
  html = html.replace(new RegExp("".concat(DOCUMENT_COMMENT_PLACEHOLDER_START, "(.*?)").concat(DOCUMENT_COMMENT_PLACEHOLDER_END), "g"), function(_scriptStr, $1) {
185
190
  return "".concat(decodeURIComponent($1));
@@ -1,4 +1,5 @@
1
1
  import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
+ import { HTML_CHUNKSMAP_SEPARATOR } from "@modern-js/utils/universal/constants";
2
3
  export var DOC_EXT = [
3
4
  "jsx",
4
5
  "tsx",
@@ -7,7 +8,6 @@ export var DOC_EXT = [
7
8
  ];
8
9
  export var DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
9
10
  export var HTML_SEPARATOR = "<!--<?- html ?>-->";
10
- export var HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
11
11
  export var HTML_SSRDATASCRIPT_SEPARATOR = "<!--<?- SSRDataScript ?>-->";
12
12
  export var DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
13
13
  export var DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
@@ -18,6 +18,8 @@ export var DOCUMENT_LINKS_PLACEHOLDER = encodeURIComponent("<!-- chunk links pla
18
18
  export var DOCUMENT_NO_SCRIPTE_PLACEHOLDER = encodeURIComponent("<!-- no-script -->");
19
19
  export var DOCUMENT_SCRIPT_PLACEHOLDER_START = encodeURIComponent("<!-- script-start -->");
20
20
  export var DOCUMENT_SCRIPT_PLACEHOLDER_END = encodeURIComponent("<!-- script-end -->");
21
+ export var DOCUMENT_STYLE_PLACEHOLDER_START = encodeURIComponent("<!-- style-start -->");
22
+ export var DOCUMENT_STYLE_PLACEHOLDER_END = encodeURIComponent("<!-- style-end -->");
21
23
  export var DOCUMENT_COMMENT_PLACEHOLDER_START = encodeURIComponent("<!-- comment-start -->");
22
24
  export var DOCUMENT_COMMENT_PLACEHOLDER_END = encodeURIComponent("<!-- comment-end -->");
23
25
  var _obj;
@@ -6,6 +6,7 @@ export * from "./Body";
6
6
  export * from "./Root";
7
7
  export * from "./Links";
8
8
  export * from "./Comment";
9
+ export * from "./Style";
9
10
  export * from "./Scripts";
10
11
  export * from "./Script";
11
12
  export * from "./constants";
@@ -8,7 +8,7 @@ import { serializeErrors } from "./utils";
8
8
  var setupFnStr = "function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};";
9
9
  var resolveFnStr = "function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};";
10
10
  var preResolvedFnStr = "function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};";
11
- var DeferredDataScripts = function() {
11
+ var DeferredDataScripts = function(props) {
12
12
  var context = useContext(DataRouterContext);
13
13
  var staticContext = (context || {}).staticContext;
14
14
  var hydratedRef = useRef(false);
@@ -38,6 +38,7 @@ var DeferredDataScripts = function() {
38
38
  var deferredKeyPromiseStr = deferredKeys.map(function(key) {
39
39
  if (pendingKeys.has(key)) {
40
40
  deferredDataScripts.push(/* @__PURE__ */ _jsx(DeferredDataScript, {
41
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
41
42
  data: deferredData.data[key],
42
43
  dataKey: key,
43
44
  routeId: routeId
@@ -73,6 +74,7 @@ var DeferredDataScripts = function() {
73
74
  children: [
74
75
  !hydratedRef.current && /* @__PURE__ */ _jsx("script", {
75
76
  async: true,
77
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
76
78
  suppressHydrationWarning: true,
77
79
  dangerouslySetInnerHTML: {
78
80
  __html: deferredScripts[0]
@@ -84,17 +86,19 @@ var DeferredDataScripts = function() {
84
86
  });
85
87
  };
86
88
  var DeferredDataScript = function(param) {
87
- var data = param.data, routeId = param.routeId, dataKey = param.dataKey;
89
+ var data = param.data, routeId = param.routeId, dataKey = param.dataKey, nonce = param.nonce;
88
90
  return /* @__PURE__ */ _jsx(Suspense, {
89
91
  children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ _jsx(Await, {
90
92
  resolve: data,
91
93
  errorElement: /* @__PURE__ */ _jsx(ErrorDeferredDataScript, {
92
94
  routeId: routeId,
93
- dataKey: dataKey
95
+ dataKey: dataKey,
96
+ nonce: nonce
94
97
  }),
95
98
  children: function(data2) {
96
99
  return /* @__PURE__ */ _jsx("script", {
97
100
  async: true,
101
+ nonce: nonce,
98
102
  suppressHydrationWarning: true,
99
103
  dangerouslySetInnerHTML: {
100
104
  __html: "_ROUTER_DATA.r(".concat(JSON.stringify(routeId), ", ").concat(JSON.stringify(dataKey), ", ").concat(serializeJson(data2), ");")
@@ -105,9 +109,10 @@ var DeferredDataScript = function(param) {
105
109
  });
106
110
  };
107
111
  var ErrorDeferredDataScript = function(param) {
108
- var routeId = param.routeId, dataKey = param.dataKey;
112
+ var routeId = param.routeId, dataKey = param.dataKey, nonce = param.nonce;
109
113
  var error = useAsyncError();
110
114
  return /* @__PURE__ */ _jsx("script", {
115
+ nonce: nonce,
111
116
  suppressHydrationWarning: true,
112
117
  dangerouslySetInnerHTML: {
113
118
  __html: "_ROUTER_DATA.r(".concat(JSON.stringify(routeId), ", ").concat(JSON.stringify(dataKey), ", ").concat(void 0, ", ").concat(serializeJson({
@@ -1,5 +1,6 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
2
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
+ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
4
  import { jsx as _jsx } from "react/jsx-runtime";
4
5
  import { useContext } from "react";
5
6
  import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/utils/runtime/router";
@@ -86,7 +87,25 @@ export var routerPlugin = function(param) {
86
87
  hydrationData: hydrationData
87
88
  });
88
89
  var runtimeContext = useContext(RuntimeReactContext);
89
- runtimeContext.remixRouter = router;
90
+ Object.defineProperty(runtimeContext, "remixRouter", {
91
+ get: function get() {
92
+ return router;
93
+ }
94
+ });
95
+ var originSubscribe = router.subscribe;
96
+ router.subscribe = function(listener) {
97
+ var wrapedListener = function() {
98
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
99
+ args[_key] = arguments[_key];
100
+ }
101
+ var blockRoute = runtimeContext.unstable_blockRoute;
102
+ if (blockRoute) {
103
+ return;
104
+ }
105
+ return listener.apply(void 0, _to_consumable_array(args));
106
+ };
107
+ return originSubscribe(wrapedListener);
108
+ };
90
109
  return /* @__PURE__ */ _jsx(App, _object_spread_props(_object_spread({}, props), {
91
110
  children: /* @__PURE__ */ _jsx(RouterProvider, {
92
111
  router: router
@@ -87,7 +87,7 @@ export var routerPlugin = function(param) {
87
87
  init: function init(param2, next) {
88
88
  var context = param2.context;
89
89
  return _async_to_generator(function() {
90
- var _context_ssrContext, request, ssrMode, baseUrl, _basename, routes, query, remixRequest, routerContext, router, runner;
90
+ var _context_ssrContext, request, ssrMode, nonce, baseUrl, _basename, routes, query, remixRequest, routerContext, router, runner;
91
91
  return _ts_generator(this, function(_state) {
92
92
  switch (_state.label) {
93
93
  case 0:
@@ -99,12 +99,15 @@ export var routerPlugin = function(param) {
99
99
  })
100
100
  ];
101
101
  }
102
- _context_ssrContext = context.ssrContext, request = _context_ssrContext.request, ssrMode = _context_ssrContext.mode;
102
+ _context_ssrContext = context.ssrContext, request = _context_ssrContext.request, ssrMode = _context_ssrContext.mode, nonce = _context_ssrContext.nonce;
103
103
  baseUrl = request.baseUrl;
104
104
  _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
105
105
  routes = createRoutes ? createRoutes() : createRoutesFromElements(renderRoutes({
106
106
  routesConfig: routesConfig,
107
- ssrMode: ssrMode
107
+ ssrMode: ssrMode,
108
+ props: {
109
+ nonce: nonce
110
+ }
108
111
  }));
109
112
  query = createStaticHandler(routes, {
110
113
  basename: _basename
@@ -25,7 +25,7 @@ function findTargetElement(tag, children) {
25
25
  return findTargetElement(tag, nextChildren);
26
26
  }
27
27
  export function Html(props) {
28
- const { children } = props;
28
+ const { children, ...rest } = props;
29
29
  const hasSetHead = Boolean(findTargetChild("Head", children));
30
30
  const hasSetScripts = Boolean(findTargetElement("Scripts", children));
31
31
  const hasSetLinks = Boolean(findTargetElement("Links", children));
@@ -58,6 +58,7 @@ export function Html(props) {
58
58
  });
59
59
  }
60
60
  return /* @__PURE__ */ _jsx("html", {
61
+ ...rest,
61
62
  children: /* @__PURE__ */ _jsxs(DocumentStructureContext.Provider, {
62
63
  value: {
63
64
  hasSetHead,
@@ -0,0 +1,14 @@
1
+ import { jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END } from "./constants";
3
+ export function Style(props) {
4
+ const { content, children } = props;
5
+ const contentStr = children || content;
6
+ const contentIIFE = encodeURIComponent(`(${contentStr})()`);
7
+ return /* @__PURE__ */ _jsxs(_Fragment, {
8
+ children: [
9
+ `${DOCUMENT_STYLE_PLACEHOLDER_START}`,
10
+ `${contentIIFE}`,
11
+ `${DOCUMENT_STYLE_PLACEHOLDER_END}`
12
+ ]
13
+ });
14
+ }
@@ -4,7 +4,7 @@ import ReactDomServer from "react-dom/server";
4
4
  import { build } from "esbuild";
5
5
  import { createDebugger, findExists, fs } from "@modern-js/utils";
6
6
  import { DocumentContext } from "../DocumentContext";
7
- import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END } from "../constants";
7
+ import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END } from "../constants";
8
8
  const debug = createDebugger("html_genarate");
9
9
  export const getDocumenByEntryName = function(entrypoints, entryName, fallbackDir) {
10
10
  var _entrypoints_find;
@@ -126,6 +126,9 @@ export default () => {
126
126
  const nonceAttr = nonce ? `nonce=${nonce}` : "";
127
127
  html = html.replace(new RegExp(`${DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script ${nonceAttr}>${decodeURIComponent($1)}</script>`);
128
128
  }
129
+ if (html.includes(DOCUMENT_STYLE_PLACEHOLDER_START) && html.includes(DOCUMENT_STYLE_PLACEHOLDER_END)) {
130
+ html = html.replace(new RegExp(`${DOCUMENT_STYLE_PLACEHOLDER_START}(.*?)${DOCUMENT_STYLE_PLACEHOLDER_END}`, "g"), (_styleStr, $1) => `<style>${decodeURIComponent($1)}</style>`);
131
+ }
129
132
  if (html.includes(DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(DOCUMENT_COMMENT_PLACEHOLDER_END)) {
130
133
  html = html.replace(new RegExp(`${DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
131
134
  }
@@ -1,3 +1,4 @@
1
+ import { HTML_CHUNKSMAP_SEPARATOR } from "@modern-js/utils/universal/constants";
1
2
  export const DOC_EXT = [
2
3
  "jsx",
3
4
  "tsx",
@@ -6,7 +7,6 @@ export const DOC_EXT = [
6
7
  ];
7
8
  export const DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
8
9
  export const HTML_SEPARATOR = "<!--<?- html ?>-->";
9
- export const HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
10
10
  export const HTML_SSRDATASCRIPT_SEPARATOR = "<!--<?- SSRDataScript ?>-->";
11
11
  export const DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
12
12
  export const DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
@@ -17,6 +17,8 @@ export const DOCUMENT_LINKS_PLACEHOLDER = encodeURIComponent("<!-- chunk links p
17
17
  export const DOCUMENT_NO_SCRIPTE_PLACEHOLDER = encodeURIComponent("<!-- no-script -->");
18
18
  export const DOCUMENT_SCRIPT_PLACEHOLDER_START = encodeURIComponent("<!-- script-start -->");
19
19
  export const DOCUMENT_SCRIPT_PLACEHOLDER_END = encodeURIComponent("<!-- script-end -->");
20
+ export const DOCUMENT_STYLE_PLACEHOLDER_START = encodeURIComponent("<!-- style-start -->");
21
+ export const DOCUMENT_STYLE_PLACEHOLDER_END = encodeURIComponent("<!-- style-end -->");
20
22
  export const DOCUMENT_COMMENT_PLACEHOLDER_START = encodeURIComponent("<!-- comment-start -->");
21
23
  export const DOCUMENT_COMMENT_PLACEHOLDER_END = encodeURIComponent("<!-- comment-end -->");
22
24
  export const PLACEHOLDER_REPLACER_MAP = {
@@ -6,6 +6,7 @@ export * from "./Body";
6
6
  export * from "./Root";
7
7
  export * from "./Links";
8
8
  export * from "./Comment";
9
+ export * from "./Style";
9
10
  export * from "./Scripts";
10
11
  export * from "./Script";
11
12
  export * from "./constants";
@@ -7,7 +7,7 @@ import { serializeErrors } from "./utils";
7
7
  const setupFnStr = `function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};`;
8
8
  const resolveFnStr = `function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};`;
9
9
  const preResolvedFnStr = `function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};`;
10
- const DeferredDataScripts = () => {
10
+ const DeferredDataScripts = (props) => {
11
11
  const context = useContext(DataRouterContext);
12
12
  const { staticContext } = context || {};
13
13
  const hydratedRef = useRef(false);
@@ -36,6 +36,7 @@ const DeferredDataScripts = () => {
36
36
  const deferredKeyPromiseStr = deferredKeys.map((key) => {
37
37
  if (pendingKeys.has(key)) {
38
38
  deferredDataScripts.push(/* @__PURE__ */ _jsx(DeferredDataScript, {
39
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
39
40
  data: deferredData.data[key],
40
41
  dataKey: key,
41
42
  routeId
@@ -71,6 +72,7 @@ const DeferredDataScripts = () => {
71
72
  children: [
72
73
  !hydratedRef.current && /* @__PURE__ */ _jsx("script", {
73
74
  async: true,
75
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
74
76
  suppressHydrationWarning: true,
75
77
  dangerouslySetInnerHTML: {
76
78
  __html: deferredScripts[0]
@@ -81,16 +83,18 @@ const DeferredDataScripts = () => {
81
83
  ]
82
84
  });
83
85
  };
84
- const DeferredDataScript = ({ data, routeId, dataKey }) => {
86
+ const DeferredDataScript = ({ data, routeId, dataKey, nonce }) => {
85
87
  return /* @__PURE__ */ _jsx(Suspense, {
86
88
  children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ _jsx(Await, {
87
89
  resolve: data,
88
90
  errorElement: /* @__PURE__ */ _jsx(ErrorDeferredDataScript, {
89
91
  routeId,
90
- dataKey
92
+ dataKey,
93
+ nonce
91
94
  }),
92
95
  children: (data2) => /* @__PURE__ */ _jsx("script", {
93
96
  async: true,
97
+ nonce,
94
98
  suppressHydrationWarning: true,
95
99
  dangerouslySetInnerHTML: {
96
100
  __html: `_ROUTER_DATA.r(${JSON.stringify(routeId)}, ${JSON.stringify(dataKey)}, ${serializeJson(data2)});`
@@ -99,9 +103,10 @@ const DeferredDataScript = ({ data, routeId, dataKey }) => {
99
103
  }) : null
100
104
  });
101
105
  };
102
- const ErrorDeferredDataScript = ({ routeId, dataKey }) => {
106
+ const ErrorDeferredDataScript = ({ routeId, dataKey, nonce }) => {
103
107
  const error = useAsyncError();
104
108
  return /* @__PURE__ */ _jsx("script", {
109
+ nonce,
105
110
  suppressHydrationWarning: true,
106
111
  dangerouslySetInnerHTML: {
107
112
  __html: `_ROUTER_DATA.r(${JSON.stringify(routeId)}, ${JSON.stringify(dataKey)}, ${void 0}, ${serializeJson({
@@ -78,7 +78,22 @@ export const routerPlugin = ({ serverBase = [], supportHtml5History = true, base
78
78
  hydrationData
79
79
  });
80
80
  const runtimeContext = useContext(RuntimeReactContext);
81
- runtimeContext.remixRouter = router;
81
+ Object.defineProperty(runtimeContext, "remixRouter", {
82
+ get() {
83
+ return router;
84
+ }
85
+ });
86
+ const originSubscribe = router.subscribe;
87
+ router.subscribe = (listener) => {
88
+ const wrapedListener = (...args) => {
89
+ const blockRoute = runtimeContext.unstable_blockRoute;
90
+ if (blockRoute) {
91
+ return;
92
+ }
93
+ return listener(...args);
94
+ };
95
+ return originSubscribe(wrapedListener);
96
+ };
82
97
  return /* @__PURE__ */ _jsx(App, {
83
98
  ...props,
84
99
  children: /* @__PURE__ */ _jsx(RouterProvider, {