vike 0.4.228 → 0.4.229-commit-2a06dcc

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 (244) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
  3. package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
  4. package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
  5. package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
  6. package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
  7. package/dist/cjs/client/shared/utils.js +22 -0
  8. package/dist/cjs/node/plugin/index.js +3 -1
  9. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  10. package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
  11. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
  12. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
  13. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
  14. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  15. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
  17. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
  18. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
  19. package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
  20. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  29. package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
  30. package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
  31. package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
  32. package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
  33. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +7 -19
  34. package/dist/cjs/node/plugin/utils.js +1 -0
  35. package/dist/cjs/node/prerender/runPrerender.js +44 -41
  36. package/dist/cjs/node/prerender/utils.js +1 -1
  37. package/dist/cjs/node/runtime/globalContext.js +102 -125
  38. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  39. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  40. package/dist/cjs/node/runtime/html/propKeys.js +47 -0
  41. package/dist/cjs/node/runtime/html/renderHtml.js +7 -1
  42. package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
  43. package/dist/cjs/node/runtime/index-deprecated.js +9 -38
  44. package/dist/cjs/node/runtime/index.js +56 -2
  45. package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
  46. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
  47. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
  48. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  49. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
  50. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
  51. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  52. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  53. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
  54. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  55. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  56. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
  57. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  58. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
  59. package/dist/cjs/node/runtime/renderPage.js +102 -81
  60. package/dist/cjs/node/runtime/universal-middleware.js +7 -1
  61. package/dist/cjs/node/runtime/utils.js +3 -2
  62. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  63. package/dist/cjs/shared/createGlobalContextShared.js +54 -0
  64. package/dist/cjs/shared/createPageContextShared.js +17 -0
  65. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  66. package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
  67. package/dist/cjs/shared/hooks/getHook.js +45 -27
  68. package/dist/cjs/shared/htmlElementIds.js +5 -0
  69. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  70. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  71. package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
  72. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  73. package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
  74. package/dist/cjs/utils/getPublicProxy.js +27 -0
  75. package/dist/cjs/utils/isImportPath.js +21 -0
  76. package/dist/cjs/utils/isScriptFile.js +24 -21
  77. package/dist/cjs/utils/objectAssign.js +6 -10
  78. package/dist/cjs/utils/objectReplace.js +4 -4
  79. package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
  80. package/dist/cjs/utils/path.js +12 -2
  81. package/dist/cjs/utils/requireResolve.js +134 -53
  82. package/dist/esm/__internal/index.js +3 -3
  83. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
  84. package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
  85. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
  86. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
  87. package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
  88. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
  89. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  90. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
  91. package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
  92. package/dist/esm/client/client-routing-runtime/utils.js +0 -1
  93. package/dist/esm/client/index.d.ts +1 -0
  94. package/dist/esm/client/index.js +4 -0
  95. package/dist/esm/client/node.js +1 -3
  96. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
  97. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
  98. package/dist/esm/client/server-routing-runtime/entry.js +2 -2
  99. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
  100. package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
  101. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
  102. package/dist/esm/client/server-routing-runtime/utils.js +1 -1
  103. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
  104. package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
  105. package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
  106. package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
  107. package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
  108. package/dist/esm/client/shared/removeFoucBuster.js +1 -0
  109. package/dist/esm/client/shared/utils.d.ts +4 -0
  110. package/dist/esm/client/shared/utils.js +4 -0
  111. package/dist/esm/node/plugin/index.js +3 -1
  112. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  113. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
  114. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
  115. package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
  116. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
  117. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
  118. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  119. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
  120. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
  121. package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
  122. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
  123. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
  124. package/dist/esm/node/plugin/plugins/envVars.js +18 -20
  125. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
  126. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  127. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
  128. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  129. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
  130. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
  131. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
  132. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
  133. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
  134. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  135. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  136. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  137. package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
  138. package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
  139. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
  140. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
  141. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
  142. package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
  143. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +8 -20
  144. package/dist/esm/node/plugin/utils.d.ts +1 -0
  145. package/dist/esm/node/plugin/utils.js +1 -0
  146. package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
  147. package/dist/esm/node/prerender/runPrerender.js +48 -45
  148. package/dist/esm/node/prerender/utils.d.ts +1 -1
  149. package/dist/esm/node/prerender/utils.js +1 -1
  150. package/dist/esm/node/runtime/globalContext.d.ts +425 -47
  151. package/dist/esm/node/runtime/globalContext.js +103 -126
  152. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  153. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
  154. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  155. package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
  156. package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
  157. package/dist/esm/node/runtime/html/propKeys.js +45 -0
  158. package/dist/esm/node/runtime/html/renderHtml.js +7 -1
  159. package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
  160. package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
  161. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
  162. package/dist/esm/node/runtime/index-deprecated.js +9 -36
  163. package/dist/esm/node/runtime/index.d.ts +23 -1
  164. package/dist/esm/node/runtime/index.js +38 -3
  165. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  166. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
  167. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
  168. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
  169. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
  170. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
  171. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
  172. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
  173. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
  174. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
  175. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  176. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  177. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
  178. package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
  179. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  180. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  181. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
  182. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  183. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
  184. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
  185. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
  186. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  187. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
  188. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
  189. package/dist/esm/node/runtime/renderPage.d.ts +146 -7
  190. package/dist/esm/node/runtime/renderPage.js +105 -84
  191. package/dist/esm/node/runtime/universal-middleware.js +7 -1
  192. package/dist/esm/node/runtime/utils.d.ts +3 -2
  193. package/dist/esm/node/runtime/utils.js +3 -2
  194. package/dist/esm/shared/VikeNamespace.d.ts +35 -13
  195. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  196. package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
  197. package/dist/esm/shared/createGlobalContextShared.js +51 -0
  198. package/dist/esm/shared/createPageContextShared.d.ts +9 -0
  199. package/dist/esm/shared/createPageContextShared.js +15 -0
  200. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  201. package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
  202. package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
  203. package/dist/esm/shared/hooks/getHook.d.ts +5 -3
  204. package/dist/esm/shared/hooks/getHook.js +47 -29
  205. package/dist/esm/shared/htmlElementIds.d.ts +2 -0
  206. package/dist/esm/shared/htmlElementIds.js +2 -0
  207. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  208. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
  209. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  210. package/dist/esm/shared/route/executeGuardHook.js +2 -2
  211. package/dist/esm/shared/route/loadPageRoutes.js +2 -1
  212. package/dist/esm/shared/types.d.ts +64 -32
  213. package/dist/esm/types/index.d.ts +1 -5
  214. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  215. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  216. package/dist/esm/utils/catchInfiniteLoop.js +4 -4
  217. package/dist/esm/utils/getGlobalObject.d.ts +1 -1
  218. package/dist/esm/utils/getPublicProxy.d.ts +2 -0
  219. package/dist/esm/utils/getPublicProxy.js +25 -0
  220. package/dist/esm/utils/isImportPath.d.ts +4 -0
  221. package/dist/esm/utils/isImportPath.js +19 -0
  222. package/dist/esm/utils/isScriptFile.d.ts +5 -5
  223. package/dist/esm/utils/isScriptFile.js +23 -20
  224. package/dist/esm/utils/objectAssign.d.ts +1 -1
  225. package/dist/esm/utils/objectAssign.js +6 -10
  226. package/dist/esm/utils/objectReplace.d.ts +1 -1
  227. package/dist/esm/utils/objectReplace.js +4 -4
  228. package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
  229. package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
  230. package/dist/esm/utils/path.d.ts +1 -1
  231. package/dist/esm/utils/path.js +12 -2
  232. package/dist/esm/utils/requireResolve.d.ts +20 -7
  233. package/dist/esm/utils/requireResolve.js +134 -53
  234. package/package.json +14 -13
  235. package/dist/cjs/node/runtime/index-common.js +0 -27
  236. package/dist/cjs/utils/makePublicCopy.js +0 -32
  237. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
  238. package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
  239. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
  240. package/dist/esm/node/runtime/index-common.d.ts +0 -8
  241. package/dist/esm/node/runtime/index-common.js +0 -10
  242. package/dist/esm/utils/isNpmPackage.d.ts +0 -17
  243. package/dist/esm/utils/makePublicCopy.d.ts +0 -3
  244. package/dist/esm/utils/makePublicCopy.js +0 -30
@@ -1,16 +1,16 @@
1
- export { serializePageContextClientSide };
2
- export { serializePageContextAbort };
3
- // For ./serializePageContextClientSide.spec.ts
4
- export { getPropKeys };
1
+ export { getPageContextClientSerialized };
2
+ export { getPageContextClientSerializedAbort };
3
+ export { getGlobalContextClientSerialized };
5
4
  import { stringify, isJsonSerializerError } from '@brillout/json-serializer/stringify';
6
- import { assert, assertUsage, assertWarning, getPropAccessNotation, hasProp, isObject, unique } from '../utils.js';
5
+ import { assert, assertUsage, assertWarning, getPropAccessNotation, hasProp, unique } from '../utils.js';
7
6
  import { isErrorPage } from '../../../shared/error-page.js';
8
7
  import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
9
8
  import pc from '@brillout/picocolors';
10
9
  import { NOT_SERIALIZABLE } from '../../../shared/NOT_SERIALIZABLE.js';
11
10
  import { pageContextInitIsPassedToClient } from '../../../shared/misc/pageContextInitIsPassedToClient.js';
12
11
  import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
13
- const PASS_TO_CLIENT = [
12
+ import { getPropKeys, getPropVal, setPropVal } from './propKeys.js';
13
+ const passToClientBuiltInPageContext = [
14
14
  'abortReason',
15
15
  '_urlRewrite',
16
16
  '_urlRedirect',
@@ -24,29 +24,39 @@ const PASS_TO_CLIENT = [
24
24
  'routeParams',
25
25
  'data' // for data() hook
26
26
  ];
27
- const PASS_TO_CLIENT_ERROR_PAGE = ['pageProps', 'is404', isServerSideError];
28
- function serializePageContextClientSide(pageContext) {
29
- const passToClient = getPassToClient(pageContext);
30
- const pageContextClient = applyPassToClient(passToClient, pageContext);
31
- if (passToClient.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
27
+ const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError];
28
+ function getPageContextClientSerialized(pageContext) {
29
+ const passToClientPageContext = getPassToClientPageContext(pageContext);
30
+ const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
31
+ if (passToClientPageContext.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
32
32
  pageContextClient[pageContextInitIsPassedToClient] = true;
33
33
  }
34
- let pageContextSerialized;
34
+ const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
35
+ return pageContextClientSerialized;
36
+ }
37
+ function getGlobalContextClientSerialized(pageContext) {
38
+ const passToClient = pageContext._passToClient;
39
+ const globalContextClient = applyPassToClient(passToClient, pageContext.globalContext);
40
+ const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
41
+ return globalContextClientSerialized;
42
+ }
43
+ function serializeObject(obj, objName, passToClient) {
44
+ let serialized;
35
45
  try {
36
- pageContextSerialized = serialize(pageContextClient);
46
+ serialized = serializeValue(obj);
37
47
  }
38
48
  catch (err) {
39
49
  const h = (s) => pc.cyan(s);
40
50
  let hasWarned = false;
41
51
  const propsNonSerializable = [];
42
52
  passToClient.forEach((prop) => {
43
- const res = getPropVal(pageContext, prop);
53
+ const res = getPropVal(obj, prop);
44
54
  if (!res)
45
55
  return;
46
56
  const { value } = res;
47
- const varName = `pageContext${getPropKeys(prop).map(getPropAccessNotation).join('')}`;
57
+ const varName = `${objName}${getPropKeys(prop).map(getPropAccessNotation).join('')}`;
48
58
  try {
49
- serialize(value, varName);
59
+ serializeValue(value, varName);
50
60
  }
51
61
  catch (err) {
52
62
  propsNonSerializable.push(prop);
@@ -58,7 +68,7 @@ function serializePageContextClientSide(pageContext) {
58
68
  }
59
69
  assertUsage(false, `Cannot serialize config ${h(pathString)} set by useConfig(), see https://vike.dev/useConfig#serialization-error`);
60
70
  }
61
- // Non-serializable pageContext set by the user
71
+ // Non-serializable property set by the user
62
72
  let msg = [
63
73
  `${h(varName)} can't be serialized and, therefore, can't be passed to the client side.`,
64
74
  `Make sure ${h(varName)} is serializable, or remove ${h(JSON.stringify(prop))} from ${h('passToClient')}.`
@@ -79,31 +89,31 @@ function serializePageContextClientSide(pageContext) {
79
89
  });
80
90
  assert(hasWarned);
81
91
  propsNonSerializable.forEach((prop) => {
82
- pageContextClient[getPropKeys(prop)[0]] = NOT_SERIALIZABLE;
92
+ obj[getPropKeys(prop)[0]] = NOT_SERIALIZABLE;
83
93
  });
84
94
  try {
85
- pageContextSerialized = serialize(pageContextClient);
95
+ serialized = serializeValue(obj);
86
96
  }
87
97
  catch (err) {
88
98
  assert(false);
89
99
  }
90
100
  }
91
- return pageContextSerialized;
101
+ return serialized;
92
102
  }
93
- function serialize(value, varName) {
103
+ function serializeValue(value, varName) {
94
104
  return stringify(value, { forbidReactElements: true, valueName: varName });
95
105
  }
96
- function getPassToClient(pageContext) {
97
- let passToClient = [...pageContext._passToClient, ...PASS_TO_CLIENT];
106
+ function getPassToClientPageContext(pageContext) {
107
+ let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
98
108
  if (isErrorPage(pageContext.pageId, pageContext._pageConfigs)) {
99
109
  assert(hasProp(pageContext, 'is404', 'boolean'));
100
110
  addIs404ToPageProps(pageContext);
101
- passToClient.push(...PASS_TO_CLIENT_ERROR_PAGE);
111
+ passToClient.push(...pageToClientBuiltInPageContextError);
102
112
  }
103
113
  passToClient = unique(passToClient);
104
114
  return passToClient;
105
115
  }
106
- function serializePageContextAbort(pageContext) {
116
+ function getPageContextClientSerializedAbort(pageContext) {
107
117
  assert(pageContext._urlRedirect || pageContext._urlRewrite || pageContext.abortStatusCode);
108
118
  assert(pageContext._abortCall);
109
119
  assert(pageContext._abortCaller);
@@ -136,7 +146,7 @@ function serializePageContextAbort(pageContext) {
136
146
  onlyOnce: false
137
147
  });
138
148
  }
139
- return serialize(pageContext);
149
+ return serializeValue(pageContext);
140
150
  }
141
151
  function applyPassToClient(passToClient, pageContext) {
142
152
  const pageContextClient = {};
@@ -151,44 +161,3 @@ function applyPassToClient(passToClient, pageContext) {
151
161
  });
152
162
  return pageContextClient;
153
163
  }
154
- // Get a nested property from an object using a dot-separated path such as 'user.id'
155
- function getPropVal(obj, prop) {
156
- const keys = getPropKeys(prop);
157
- let value = obj;
158
- for (const key of keys) {
159
- if (isObject(value) && key in value) {
160
- value = value[key];
161
- }
162
- else {
163
- return null; // Property or intermediate property doesn't exist
164
- }
165
- }
166
- return { value };
167
- }
168
- // Set a nested property in an object using a dot-separated path such as 'user.id'
169
- function setPropVal(obj, prop, val) {
170
- const keys = getPropKeys(prop);
171
- let currentObj = obj;
172
- // Creating intermediate objects if necessary
173
- for (let i = 0; i <= keys.length - 2; i++) {
174
- const key = keys[i];
175
- if (!(key in currentObj)) {
176
- // Create intermediate object
177
- currentObj[key] = {};
178
- }
179
- if (!isObject(currentObj[key])) {
180
- // Skip value upon data structure conflict
181
- return;
182
- }
183
- currentObj = currentObj[key];
184
- }
185
- // Set the final key to the value
186
- const finalKey = keys[keys.length - 1];
187
- currentObj[finalKey] = val;
188
- }
189
- function getPropKeys(prop) {
190
- // Like `prop.split('.')` but with added support for `\` escaping, see serializePageContextClientSide.spec.ts
191
- return prop
192
- .split(/(?<!\\)\./) // Split on unescaped dots
193
- .map((key) => key.replace(/\\\./g, '.')); // Replace escaped dots with literal dots
194
- }
@@ -1,16 +1 @@
1
- export * from './index-common.js';
2
- export * from '../../types/index-dreprecated.js';
3
- import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
4
- /** @deprecated
5
- * Replace:
6
- * ```
7
- * import { RenderErrorPage } from 'vike'
8
- * ```
9
- * With:
10
- * ```
11
- * import { render } from 'vike/abort'
12
- * ```
13
- *
14
- * See https://vike.dev/render
15
- */
16
- export declare const RenderErrorPage: (...args: Parameters<typeof RenderErrorPage_>) => Error;
1
+ export * from './index.js';
@@ -1,41 +1,14 @@
1
- // TODO/v1-release: replace this with:
2
- // assertUsage(false, "`import { something } from 'vike'` doesn't exist: instead import from 'vike/server', 'vike/client', 'vike/plugin', ...")
3
- import { isBrowser } from '../../utils/isBrowser.js';
4
- import { assertUsage } from '../../utils/assert.js';
5
- assertUsage(!isBrowser(), "It's forbidden to `import { something } from 'vike'` on the client-side: the module 'vike' is a server-only module.", { showStackTrace: true });
6
- export * from './index-common.js';
7
- export * from '../../types/index-dreprecated.js';
1
+ // TODO/soon: point package.json#exports['./server'] to this file.
2
+ // - Write migration guide, see comment below.
3
+ export * from './index.js';
8
4
  import { assertWarning } from './utils.js';
9
5
  import pc from '@brillout/picocolors';
10
- import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
11
- /** @deprecated
12
- * Replace:
13
- * ```
14
- * import { RenderErrorPage } from 'vike'
15
- * ```
16
- * With:
17
- * ```
18
- * import { render } from 'vike/abort'
19
- * ```
20
- *
21
- * See https://vike.dev/render
22
- */
23
- export const RenderErrorPage = (...args) => {
24
- assertWarning(false, [
25
- 'Replace:',
26
- pc.red(" import { RenderErrorPage } from 'vike'"),
27
- 'With:',
28
- pc.green(" import { render } from 'vike/abort'"),
29
- 'See https://vike.dev/render'
30
- ].join('\n'), { onlyOnce: true, showStackTrace: true });
31
- return RenderErrorPage_(...args);
32
- };
33
6
  assertWarning(false, [
34
- 'You have following imports which are outdated:',
35
- pc.red(" import { something } from 'vike'"),
7
+ 'You have outdated imports:',
8
+ pc.bold(pc.red(" import { something } from 'vike/server'")),
36
9
  'Replace them with:',
37
- pc.green(" import { something } from 'vike/server'"),
38
- `Or if ${pc.cyan('something')} is a type:`,
39
- pc.green(" import type { something } from 'vike/types'"),
40
- "Make sure to import renderPage(), escapeInject, html, dangerouslySkipEscape(), pipeWebStream(), pipeNodeStream(), pipeStream(), stampPipe() from 'vike/server'. (Or inspect the error stack below to find the import causing this warning.)"
10
+ pc.bold(pc.green(" import { something } from 'vike'"))
11
+ /* Add migration guide, with migration scritps such as `$ rename vike/server vike`
12
+ `See ${pc.underline('https://vike.dev/migration/0.4.xxx')}`
13
+ */
41
14
  ].join('\n'), { showStackTrace: true, onlyOnce: true });
@@ -1 +1,23 @@
1
- export * from './index-common.js';
1
+ export { renderPage } from './renderPage.js';
2
+ export { escapeInject, dangerouslySkipEscape } from './html/renderHtml.js';
3
+ export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/stream.js';
4
+ export { PROJECT_VERSION as version } from './utils.js';
5
+ export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
6
+ export { createDevMiddleware } from '../runtime-dev/index.js';
7
+ export * from '../../types/index-dreprecated.js';
8
+ export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
9
+ export { createPageRenderer } from '../createPageRenderer.js';
10
+ import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
11
+ /** @deprecated
12
+ * Replace:
13
+ * ```
14
+ * import { RenderErrorPage } from 'vike'
15
+ * ```
16
+ * With:
17
+ * ```
18
+ * import { render } from 'vike/abort'
19
+ * ```
20
+ *
21
+ * See https://vike.dev/render
22
+ */
23
+ export declare const RenderErrorPage: (...args: Parameters<typeof RenderErrorPage_>) => Error;
@@ -1,4 +1,39 @@
1
1
  import { isBrowser } from '../../utils/isBrowser.js';
2
- import { assertUsage } from '../../utils/assert.js';
3
- assertUsage(!isBrowser(), "It's forbidden to `import { something } from 'vike/server'` on the client-side: the module 'vike/server' is a server-only module.", { showStackTrace: true });
4
- export * from './index-common.js';
2
+ import { assert } from '../../utils/assert.js';
3
+ assert(!isBrowser());
4
+ export { renderPage } from './renderPage.js';
5
+ export { escapeInject, dangerouslySkipEscape } from './html/renderHtml.js';
6
+ export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/stream.js';
7
+ export { PROJECT_VERSION as version } from './utils.js';
8
+ export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
9
+ export { createDevMiddleware } from '../runtime-dev/index.js';
10
+ // TODO/v1-release: remove
11
+ // Deprecated exports
12
+ export * from '../../types/index-dreprecated.js';
13
+ export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
14
+ export { createPageRenderer } from '../createPageRenderer.js';
15
+ import { assertWarning } from './utils.js';
16
+ import pc from '@brillout/picocolors';
17
+ import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
18
+ /** @deprecated
19
+ * Replace:
20
+ * ```
21
+ * import { RenderErrorPage } from 'vike'
22
+ * ```
23
+ * With:
24
+ * ```
25
+ * import { render } from 'vike/abort'
26
+ * ```
27
+ *
28
+ * See https://vike.dev/render
29
+ */
30
+ export const RenderErrorPage = (...args) => {
31
+ assertWarning(false, [
32
+ 'Replace:',
33
+ pc.red(" import { RenderErrorPage } from 'vike'"),
34
+ 'With:',
35
+ pc.green(" import { render } from 'vike/abort'"),
36
+ 'See https://vike.dev/render'
37
+ ].join('\n'), { onlyOnce: true, showStackTrace: true });
38
+ return RenderErrorPage_(...args);
39
+ };
@@ -2,5 +2,5 @@ export { analyzePage };
2
2
  import type { PageFile } from '../../../shared/getPageFiles/getPageFileObject.js';
3
3
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
4
  import { type AnalysisResult } from '../../../shared/getPageFiles/analyzePageClientSide.js';
5
- import type { GlobalContextInternal } from '../globalContext.js';
6
- declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string, globalContext: GlobalContextInternal): Promise<AnalysisResult>;
5
+ import type { GlobalContextServerInternal } from '../globalContext.js';
6
+ declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string, globalContext: GlobalContextServerInternal): Promise<AnalysisResult>;
@@ -20,7 +20,7 @@ async function analyzePage(pageFilesAll, pageConfig, pageId, globalContext) {
20
20
  eagerlyImported: false
21
21
  });
22
22
  // In production we inject the import of the server virtual module with ?extractAssets inside the client virtual module
23
- if (!globalContext.isProduction) {
23
+ if (!globalContext._isProduction) {
24
24
  clientDependencies.push({
25
25
  id: getVirtualFileIdPageConfigValuesAll(pageConfig.pageId, false),
26
26
  onlyAssets: true,
@@ -1,6 +1,7 @@
1
1
  export { createHttpResponsePage };
2
2
  export { createHttpResponsePageContextJson };
3
3
  export { createHttpResponseError };
4
+ export { createHttpResponseErrorWithoutGlobalContext };
4
5
  export { createHttpResponseRedirect };
5
6
  export { createHttpResponseFavicon404 };
6
7
  export { createHttpResponseBaseIsMissing };
@@ -13,6 +14,7 @@ import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../
13
14
  import { HttpResponseBody } from './getHttpResponseBody.js';
14
15
  import { type EarlyHint } from './getEarlyHints.js';
15
16
  import type { PageFile } from '../../../shared/getPageFiles.js';
17
+ import type { PageContextBegin } from '../renderPage.js';
16
18
  type HttpResponse = {
17
19
  statusCode: 200 | 404 | 500 | RedirectStatusCode | AbortStatusCode;
18
20
  headers: [string, string][];
@@ -30,11 +32,10 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
30
32
  }): Promise<HttpResponse>;
31
33
  declare function createHttpResponseFavicon404(): HttpResponse;
32
34
  declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
33
- declare function createHttpResponseError(pageContext: null | {
35
+ declare function createHttpResponseError(pageContext: {
34
36
  _pageFilesAll: PageFile[];
35
37
  _pageConfigs: PageConfigRuntime[];
36
38
  }): HttpResponse;
39
+ declare function createHttpResponseErrorWithoutGlobalContext(): HttpResponse;
37
40
  declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
38
- declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, pageContextInit: {
39
- urlOriginal: string;
40
- }): HttpResponse;
41
+ declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, pageContextInit: PageContextBegin): HttpResponse;
@@ -1,6 +1,7 @@
1
1
  export { createHttpResponsePage };
2
2
  export { createHttpResponsePageContextJson };
3
3
  export { createHttpResponseError };
4
+ export { createHttpResponseErrorWithoutGlobalContext };
4
5
  export { createHttpResponseRedirect };
5
6
  export { createHttpResponseFavicon404 };
6
7
  export { createHttpResponseBaseIsMissing };
@@ -64,9 +65,6 @@ function createHttpResponseBaseIsMissing(urlOriginal, baseServer) {
64
65
  }
65
66
  function createHttpResponseError(pageContext) {
66
67
  const reason = (() => {
67
- if (!pageContext) {
68
- return 'no error page (https://vike.dev/error-page) could be rendered';
69
- }
70
68
  const errorPageId = getErrorPageId(pageContext._pageFilesAll, pageContext._pageConfigs);
71
69
  if (errorPageId) {
72
70
  return "the error page (https://vike.dev/error-page) couldn't be rendered (for example if an error occurred while rendering the error page)";
@@ -75,6 +73,13 @@ function createHttpResponseError(pageContext) {
75
73
  return 'no error page (https://vike.dev/error-page) is defined, make sure to create one';
76
74
  }
77
75
  })();
76
+ return createHttpResponseError_(reason);
77
+ }
78
+ function createHttpResponseErrorWithoutGlobalContext() {
79
+ const reason = 'no error page (https://vike.dev/error-page) could be rendered';
80
+ return createHttpResponseError_(reason);
81
+ }
82
+ function createHttpResponseError_(reason) {
78
83
  const httpResponse = createHttpResponse(500, 'text/html;charset=utf-8', [], `<p>An error occurred.</p><script>console.log(${JSON.stringify(`This HTTP response was generated by Vike. Vike returned this response because ${reason}.`)})</script>`);
79
84
  return httpResponse;
80
85
  }
@@ -0,0 +1,155 @@
1
+ export { createPageContextServerSide };
2
+ export { createPageContextServerSideWithoutGlobalContext };
3
+ export type { PageContextCreatedServerSide };
4
+ import type { GlobalContextServerInternal, GlobalContextServer } from '../globalContext.js';
5
+ import type { PageContextInit } from '../renderPage.js';
6
+ type PageContextCreatedServerSide = Awaited<ReturnType<typeof createPageContextServerSide>>;
7
+ declare function createPageContextServerSide(pageContextInit: PageContextInit, globalContext: GlobalContextServerInternal, globalObject_public: GlobalContextServer, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } }: {
8
+ isPrerendering: false;
9
+ ssr: {
10
+ urlHandler: null | ((url: string) => string);
11
+ isClientSideNavigation: boolean;
12
+ };
13
+ } | {
14
+ isPrerendering: true;
15
+ ssr?: undefined;
16
+ }): Promise<{
17
+ isClientSide: boolean;
18
+ isPrerendering: boolean;
19
+ } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
20
+ url?: string;
21
+ headers?: Record<string, string>;
22
+ } & {
23
+ globalContext: GlobalContextServer;
24
+ _globalContext: {
25
+ isGlobalContext: true;
26
+ _virtualFileExports: unknown;
27
+ _pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
28
+ _pageConfigs: import("../../../__internal/index.js").PageConfig[];
29
+ _pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
30
+ _allPageIds: string[];
31
+ config: import("../../../types/index.js").ConfigResolved;
32
+ pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
33
+ } & ({
34
+ _isProduction: false;
35
+ _isPrerendering: false;
36
+ assetsManifest: null;
37
+ _viteDevServer: import("vite").ViteDevServer;
38
+ viteConfig: import("vite").ResolvedConfig;
39
+ viteConfigRuntime: {
40
+ root: string;
41
+ build: {
42
+ outDir: string;
43
+ };
44
+ _baseViteOriginal: string;
45
+ vitePluginServerEntry: {
46
+ inject: boolean | undefined;
47
+ };
48
+ };
49
+ baseServer: string;
50
+ baseAssets: string;
51
+ isClientSide: false;
52
+ _pageRoutes: import("../../../__internal/index.js").PageRoutes;
53
+ _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
54
+ isGlobalContext: true;
55
+ _virtualFileExports: unknown;
56
+ _pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
57
+ _pageConfigs: import("../../../__internal/index.js").PageConfig[];
58
+ _pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
59
+ _allPageIds: string[];
60
+ config: import("../../../types/index.js").ConfigResolved;
61
+ pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
62
+ } | {
63
+ _isPrerendering: true;
64
+ viteConfig: import("vite").ResolvedConfig;
65
+ _isProduction: true;
66
+ assetsManifest: import("../../shared/ViteManifest.js").ViteManifest;
67
+ _viteDevServer: null;
68
+ viteConfigRuntime: {
69
+ root: string;
70
+ build: {
71
+ outDir: string;
72
+ };
73
+ _baseViteOriginal: string;
74
+ vitePluginServerEntry: {
75
+ inject: boolean | undefined;
76
+ };
77
+ };
78
+ _usesClientRouter: boolean;
79
+ baseServer: string;
80
+ baseAssets: string;
81
+ isClientSide: false;
82
+ _pageRoutes: import("../../../__internal/index.js").PageRoutes;
83
+ _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
84
+ isGlobalContext: true;
85
+ _virtualFileExports: unknown;
86
+ _pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
87
+ _pageConfigs: import("../../../__internal/index.js").PageConfig[];
88
+ _pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
89
+ _allPageIds: string[];
90
+ config: import("../../../types/index.js").ConfigResolved;
91
+ pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
92
+ } | {
93
+ _isPrerendering: false;
94
+ viteConfig: null;
95
+ _isProduction: true;
96
+ assetsManifest: import("../../shared/ViteManifest.js").ViteManifest;
97
+ _viteDevServer: null;
98
+ viteConfigRuntime: {
99
+ root: string;
100
+ build: {
101
+ outDir: string;
102
+ };
103
+ _baseViteOriginal: string;
104
+ vitePluginServerEntry: {
105
+ inject: boolean | undefined;
106
+ };
107
+ };
108
+ _usesClientRouter: boolean;
109
+ baseServer: string;
110
+ baseAssets: string;
111
+ isClientSide: false;
112
+ _pageRoutes: import("../../../__internal/index.js").PageRoutes;
113
+ _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
114
+ isGlobalContext: true;
115
+ _virtualFileExports: unknown;
116
+ _pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
117
+ _pageConfigs: import("../../../__internal/index.js").PageConfig[];
118
+ _pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
119
+ _allPageIds: string[];
120
+ config: import("../../../types/index.js").ConfigResolved;
121
+ pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
122
+ });
123
+ _baseServer: string;
124
+ _baseAssets: string;
125
+ _includeAssetsImportedByServer: boolean;
126
+ _pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
127
+ _pageConfigs: import("../../../__internal/index.js").PageConfig[];
128
+ _pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
129
+ _allPageIds: string[];
130
+ _pageRoutes: import("../../../__internal/index.js").PageRoutes;
131
+ _onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
132
+ _pageContextInit: PageContextInit;
133
+ _urlRewrite: null;
134
+ _urlHandler: ((url: string) => string) | null;
135
+ isClientSideNavigation: boolean;
136
+ } & {
137
+ urlParsed: import("../utils.js").UrlPublic;
138
+ urlPathname: string;
139
+ url: string;
140
+ } & {
141
+ headers: Record<string, string> | null;
142
+ } & {
143
+ config: import("../../../types/index.js").ConfigResolved;
144
+ _source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
145
+ _sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
146
+ _from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
147
+ isPageContext: true;
148
+ }>;
149
+ declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
150
+ isClientSide: boolean;
151
+ isPrerendering: boolean;
152
+ } & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
153
+ url?: string;
154
+ headers?: Record<string, string>;
155
+ };
@@ -0,0 +1,71 @@
1
+ export { createPageContextServerSide };
2
+ export { createPageContextServerSideWithoutGlobalContext };
3
+ import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
4
+ import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
5
+ import { createPageContextShared } from '../../../shared/createPageContextShared.js';
6
+ async function createPageContextServerSide(pageContextInit, globalContext, globalObject_public, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
7
+ urlHandler: null,
8
+ isClientSideNavigation: false
9
+ } }) {
10
+ assert(pageContextInit.urlOriginal);
11
+ const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
12
+ objectAssign(pageContextCreated, {
13
+ /* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
14
+ // We must use Flatten<T> otherwise TypeScript complains upon assigning types
15
+ ...(globalContext as Flatten<typeof globalContext>), // least precedence
16
+ */
17
+ globalContext: globalObject_public,
18
+ _globalContext: globalContext,
19
+ // The following is defined on `pageContext` because we can eventually make these non-global
20
+ _baseServer: globalContext.baseServer,
21
+ _baseAssets: globalContext.baseAssets,
22
+ // TODO/now: add meta.default
23
+ _includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
24
+ // TODO/soon: use GloablContext instead
25
+ _pageFilesAll: globalContext._pageFilesAll,
26
+ _pageConfigs: globalContext._pageConfigs,
27
+ _pageConfigGlobal: globalContext._pageConfigGlobal,
28
+ _allPageIds: globalContext._allPageIds,
29
+ _pageRoutes: globalContext._pageRoutes,
30
+ _onBeforeRouteHook: globalContext._onBeforeRouteHook,
31
+ _pageContextInit: pageContextInit,
32
+ _urlRewrite: null,
33
+ _urlHandler: urlHandler,
34
+ isClientSideNavigation
35
+ });
36
+ // pageContext.urlParsed
37
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
38
+ objectAssign(pageContextCreated, pageContextUrlComputed);
39
+ // pageContext.headers
40
+ {
41
+ let headers;
42
+ if (pageContextInit.headersOriginal) {
43
+ headers = normalizeHeaders(pageContextInit.headersOriginal);
44
+ assertUsage(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
45
+ }
46
+ else if (pageContextInit.headers) {
47
+ headers = pageContextInit.headers;
48
+ // TODO/next-major-release: remove
49
+ assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
50
+ }
51
+ else {
52
+ headers = null;
53
+ }
54
+ objectAssign(pageContextCreated, { headers });
55
+ }
56
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
57
+ augmentType(pageContextCreated, pageContextAugmented);
58
+ return pageContextCreated;
59
+ }
60
+ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
61
+ const pageContext = createPageContext(pageContextInit, false);
62
+ return pageContext;
63
+ }
64
+ function createPageContext(pageContextInit, isPrerendering) {
65
+ const pageContext = {
66
+ isClientSide: false,
67
+ isPrerendering
68
+ };
69
+ objectAssign(pageContext, pageContextInit);
70
+ return pageContext;
71
+ }
@@ -1,5 +1,5 @@
1
1
  export { executeOnBeforeRenderAndDataHooks };
2
- import { getHook } from '../../../shared/hooks/getHook.js';
2
+ import { getHookFromPageContext } from '../../../shared/hooks/getHook.js';
3
3
  import { preparePageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
4
4
  import { assertOnBeforeRenderHookReturn } from '../../../shared/assertOnBeforeRenderHookReturn.js';
5
5
  import { executeHook } from '../../../shared/hooks/executeHook.js';
@@ -7,8 +7,8 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
7
7
  if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
8
8
  return;
9
9
  }
10
- const dataHook = getHook(pageContext, 'data');
11
- const onBeforeRenderHook = getHook(pageContext, 'onBeforeRender');
10
+ const dataHook = getHookFromPageContext(pageContext, 'data');
11
+ const onBeforeRenderHook = getHookFromPageContext(pageContext, 'onBeforeRender');
12
12
  if (!dataHook && !onBeforeRenderHook) {
13
13
  return;
14
14
  }
@@ -5,7 +5,7 @@ import { type Hook } from '../../../shared/hooks/getHook.js';
5
5
  import type { PageAsset } from './getPageAssets.js';
6
6
  import { type PageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
7
7
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
8
- import type { PageContextSerialization } from '../html/serializePageContextClientSide.js';
8
+ import type { PageContextSerialization } from '../html/serializeContext.js';
9
9
  type GetPageAssets = () => Promise<PageAsset[]>;
10
10
  type RenderHook = Hook & {
11
11
  hookName: HookName;