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
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getHtmlTags = getHtmlTags;
7
7
  const isFontFallback_js_1 = require("../../renderPage/isFontFallback.js");
8
8
  const utils_js_1 = require("../../utils.js");
9
- const serializePageContextClientSide_js_1 = require("../serializePageContextClientSide.js");
9
+ const serializeContext_js_1 = require("../serializeContext.js");
10
10
  const sanitizeJson_js_1 = require("./sanitizeJson.js");
11
11
  const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
12
12
  const mergeScriptTags_js_1 = require("./mergeScriptTags.js");
@@ -14,11 +14,12 @@ const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
14
14
  const getConfigValueRuntime_js_1 = require("../../../../shared/page-configs/getConfigValueRuntime.js");
15
15
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
16
16
  const getConfigDefinedAt_js_1 = require("../../../../shared/page-configs/getConfigDefinedAt.js");
17
+ const htmlElementIds_js_1 = require("../../../../shared/htmlElementIds.js");
17
18
  const stamp = '__injectFilterEntry';
18
19
  async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
19
20
  (0, utils_js_1.assert)([true, false].includes(pageContext._isHtmlOnly));
20
21
  const isHtmlOnly = pageContext._isHtmlOnly;
21
- const { isProduction } = pageContext._globalContext;
22
+ const { _isProduction: isProduction } = pageContext._globalContext;
22
23
  const injectScriptsAt = getInjectScriptsAt(pageContext.pageId, pageContext._pageConfigs);
23
24
  const injectFilterEntries = [];
24
25
  pageAssets
@@ -124,14 +125,21 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
124
125
  // - https://github.com/vikejs/vike-vue/issues/85
125
126
  (0, utils_js_1.assertWarning)(false, "We recommend against using HTML streaming and a pageContext promise (https://vike.dev/streaming#initial-data-after-stream-end) at the same time, because progressive hydration (https://vike.dev/streaming#progressive-rendering) won't work.", { onlyOnce: true });
126
127
  }
127
- // <script id="vike_pageContext" type="application/json">
128
128
  if (!isHtmlOnly) {
129
+ // <script id="vike_pageContext" type="application/json">
129
130
  htmlTags.push({
130
131
  htmlTag: () =>
131
132
  // Needs to be called after resolvePageContextPromise()
132
133
  getPageContextJsonScriptTag(pageContext),
133
134
  position: positionJavaScriptEntry
134
135
  });
136
+ // <script id="vike_globalContext" type="application/json">
137
+ htmlTags.push({
138
+ htmlTag: () =>
139
+ // Needs to be called after resolvePageContextPromise()
140
+ getGlobalContextJsonScriptTag(pageContext),
141
+ position: positionJavaScriptEntry
142
+ });
135
143
  }
136
144
  // The JavaScript entry <script> tag
137
145
  const scriptEntry = mergeScriptEntries(pageAssets, viteDevScript);
@@ -162,13 +170,18 @@ function mergeScriptEntries(pageAssets, viteDevScript) {
162
170
  return scriptTag;
163
171
  }
164
172
  function getPageContextJsonScriptTag(pageContext) {
165
- const pageContextSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext));
166
- const htmlTag = `<script id="vike_pageContext" type="application/json">${pageContextSerialized}</script>`;
173
+ const pageContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getPageContextClientSerialized)(pageContext));
174
+ const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_pageContext}" type="application/json">${pageContextClientSerialized}</script>`;
167
175
  // Used by contra.com https://github.com/gajus
168
176
  // @ts-expect-error
169
177
  pageContext._pageContextHtmlTag = htmlTag;
170
178
  return htmlTag;
171
179
  }
180
+ function getGlobalContextJsonScriptTag(pageContext) {
181
+ const globalContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getGlobalContextClientSerialized)(pageContext));
182
+ const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_globalContext}" type="application/json">${globalContextClientSerialized}</script>`;
183
+ return htmlTag;
184
+ }
172
185
  function assertInjectFilterEntries(injectFilterEntries) {
173
186
  try {
174
187
  checkForWrongUsage(injectFilterEntries);
@@ -9,10 +9,10 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
9
  const reachOutCTA = 'Create a new GitHub issue to discuss a solution.';
10
10
  async function getViteDevScript(pageContext) {
11
11
  const globalContext = pageContext._globalContext;
12
- if (globalContext.isProduction) {
12
+ if (globalContext._isProduction) {
13
13
  return '';
14
14
  }
15
- const { viteDevServer } = globalContext;
15
+ const { _viteDevServer: viteDevServer } = globalContext;
16
16
  const fakeHtmlBegin = '<html> <head>'; // White space to test whether user is using a minifier
17
17
  const fakeHtmlEnd = '</head><body></body></html>';
18
18
  let fakeHtml = fakeHtmlBegin + fakeHtmlEnd;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPropVal = getPropVal;
4
+ exports.setPropVal = setPropVal;
5
+ exports.getPropKeys = getPropKeys;
6
+ const utils_js_1 = require("../utils.js");
7
+ // Get a nested property from an object using a dot-separated path such as 'user.id'
8
+ function getPropVal(obj, prop) {
9
+ const keys = getPropKeys(prop);
10
+ let value = obj;
11
+ for (const key of keys) {
12
+ if ((0, utils_js_1.isObject)(value) && key in value) {
13
+ value = value[key];
14
+ }
15
+ else {
16
+ return null; // Property or intermediate property doesn't exist
17
+ }
18
+ }
19
+ return { value };
20
+ }
21
+ // Set a nested property in an object using a dot-separated path such as 'user.id'
22
+ function setPropVal(obj, prop, val) {
23
+ const keys = getPropKeys(prop);
24
+ let currentObj = obj;
25
+ // Creating intermediate objects if necessary
26
+ for (let i = 0; i <= keys.length - 2; i++) {
27
+ const key = keys[i];
28
+ if (!(key in currentObj)) {
29
+ // Create intermediate object
30
+ currentObj[key] = {};
31
+ }
32
+ if (!(0, utils_js_1.isObject)(currentObj[key])) {
33
+ // Skip value upon data structure conflict
34
+ return;
35
+ }
36
+ currentObj = currentObj[key];
37
+ }
38
+ // Set the final key to the value
39
+ const finalKey = keys[keys.length - 1];
40
+ currentObj[finalKey] = val;
41
+ }
42
+ function getPropKeys(prop) {
43
+ // Like `prop.split('.')` but with added support for `\` escaping, see getPageContextClientSerialized.spec.ts
44
+ return prop
45
+ .split(/(?<!\\)\./) // Split on unescaped dots
46
+ .map((key) => key.replace(/\\\./g, '.')); // Replace escaped dots with literal dots
47
+ }
@@ -76,7 +76,13 @@ async function renderHtmlStream(streamOriginal, injectString, pageContext, onErr
76
76
  return injectAtStreamAfterFirstChunk();
77
77
  };
78
78
  }
79
+ let makeClosableAgain = () => { };
80
+ if ((0, react_streaming_js_1.isStreamFromReactStreamingPackage)(streamOriginal)) {
81
+ // Make sure Vike injects its HTML fragments, such as `<script id="vike_pageContext" type="application/json">`, before the stream is closed
82
+ makeClosableAgain = streamOriginal.doNotClose();
83
+ }
79
84
  const streamWrapper = await (0, stream_js_1.processStream)(streamOriginal, processStreamOptions);
85
+ makeClosableAgain();
80
86
  return streamWrapper;
81
87
  }
82
88
  function isTemplateWrapped(something) {
@@ -197,7 +203,7 @@ function renderTemplate(templateContent, pageContext) {
197
203
  }
198
204
  }
199
205
  {
200
- const { isProduction } = pageContext._globalContext;
206
+ const { _isProduction: isProduction } = pageContext._globalContext;
201
207
  if ((0, utils_js_1.isHtml)(templateVar) &&
202
208
  // We don't show this warning in production because it's expected that some users may (un)willingly do some XSS injection: we avoid flooding the production logs.
203
209
  !isProduction) {
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.serializePageContextClientSide = serializePageContextClientSide;
7
- exports.serializePageContextAbort = serializePageContextAbort;
8
- exports.getPropKeys = getPropKeys;
6
+ exports.getPageContextClientSerialized = getPageContextClientSerialized;
7
+ exports.getPageContextClientSerializedAbort = getPageContextClientSerializedAbort;
8
+ exports.getGlobalContextClientSerialized = getGlobalContextClientSerialized;
9
9
  const stringify_1 = require("@brillout/json-serializer/stringify");
10
10
  const utils_js_1 = require("../utils.js");
11
11
  const error_page_js_1 = require("../../../shared/error-page.js");
@@ -14,7 +14,8 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
14
14
  const NOT_SERIALIZABLE_js_1 = require("../../../shared/NOT_SERIALIZABLE.js");
15
15
  const pageContextInitIsPassedToClient_js_1 = require("../../../shared/misc/pageContextInitIsPassedToClient.js");
16
16
  const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
17
- const PASS_TO_CLIENT = [
17
+ const propKeys_js_1 = require("./propKeys.js");
18
+ const passToClientBuiltInPageContext = [
18
19
  'abortReason',
19
20
  '_urlRewrite',
20
21
  '_urlRedirect',
@@ -28,29 +29,39 @@ const PASS_TO_CLIENT = [
28
29
  'routeParams',
29
30
  'data' // for data() hook
30
31
  ];
31
- const PASS_TO_CLIENT_ERROR_PAGE = ['pageProps', 'is404', isServerSideError_js_1.isServerSideError];
32
- function serializePageContextClientSide(pageContext) {
33
- const passToClient = getPassToClient(pageContext);
34
- const pageContextClient = applyPassToClient(passToClient, pageContext);
35
- if (passToClient.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
32
+ const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError_js_1.isServerSideError];
33
+ function getPageContextClientSerialized(pageContext) {
34
+ const passToClientPageContext = getPassToClientPageContext(pageContext);
35
+ const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
36
+ if (passToClientPageContext.some((prop) => (0, propKeys_js_1.getPropVal)(pageContext._pageContextInit, prop))) {
36
37
  pageContextClient[pageContextInitIsPassedToClient_js_1.pageContextInitIsPassedToClient] = true;
37
38
  }
38
- let pageContextSerialized;
39
+ const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
40
+ return pageContextClientSerialized;
41
+ }
42
+ function getGlobalContextClientSerialized(pageContext) {
43
+ const passToClient = pageContext._passToClient;
44
+ const globalContextClient = applyPassToClient(passToClient, pageContext.globalContext);
45
+ const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
46
+ return globalContextClientSerialized;
47
+ }
48
+ function serializeObject(obj, objName, passToClient) {
49
+ let serialized;
39
50
  try {
40
- pageContextSerialized = serialize(pageContextClient);
51
+ serialized = serializeValue(obj);
41
52
  }
42
53
  catch (err) {
43
54
  const h = (s) => picocolors_1.default.cyan(s);
44
55
  let hasWarned = false;
45
56
  const propsNonSerializable = [];
46
57
  passToClient.forEach((prop) => {
47
- const res = getPropVal(pageContext, prop);
58
+ const res = (0, propKeys_js_1.getPropVal)(obj, prop);
48
59
  if (!res)
49
60
  return;
50
61
  const { value } = res;
51
- const varName = `pageContext${getPropKeys(prop).map(utils_js_1.getPropAccessNotation).join('')}`;
62
+ const varName = `${objName}${(0, propKeys_js_1.getPropKeys)(prop).map(utils_js_1.getPropAccessNotation).join('')}`;
52
63
  try {
53
- serialize(value, varName);
64
+ serializeValue(value, varName);
54
65
  }
55
66
  catch (err) {
56
67
  propsNonSerializable.push(prop);
@@ -62,7 +73,7 @@ function serializePageContextClientSide(pageContext) {
62
73
  }
63
74
  (0, utils_js_1.assertUsage)(false, `Cannot serialize config ${h(pathString)} set by useConfig(), see https://vike.dev/useConfig#serialization-error`);
64
75
  }
65
- // Non-serializable pageContext set by the user
76
+ // Non-serializable property set by the user
66
77
  let msg = [
67
78
  `${h(varName)} can't be serialized and, therefore, can't be passed to the client side.`,
68
79
  `Make sure ${h(varName)} is serializable, or remove ${h(JSON.stringify(prop))} from ${h('passToClient')}.`
@@ -83,31 +94,31 @@ function serializePageContextClientSide(pageContext) {
83
94
  });
84
95
  (0, utils_js_1.assert)(hasWarned);
85
96
  propsNonSerializable.forEach((prop) => {
86
- pageContextClient[getPropKeys(prop)[0]] = NOT_SERIALIZABLE_js_1.NOT_SERIALIZABLE;
97
+ obj[(0, propKeys_js_1.getPropKeys)(prop)[0]] = NOT_SERIALIZABLE_js_1.NOT_SERIALIZABLE;
87
98
  });
88
99
  try {
89
- pageContextSerialized = serialize(pageContextClient);
100
+ serialized = serializeValue(obj);
90
101
  }
91
102
  catch (err) {
92
103
  (0, utils_js_1.assert)(false);
93
104
  }
94
105
  }
95
- return pageContextSerialized;
106
+ return serialized;
96
107
  }
97
- function serialize(value, varName) {
108
+ function serializeValue(value, varName) {
98
109
  return (0, stringify_1.stringify)(value, { forbidReactElements: true, valueName: varName });
99
110
  }
100
- function getPassToClient(pageContext) {
101
- let passToClient = [...pageContext._passToClient, ...PASS_TO_CLIENT];
111
+ function getPassToClientPageContext(pageContext) {
112
+ let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
102
113
  if ((0, error_page_js_1.isErrorPage)(pageContext.pageId, pageContext._pageConfigs)) {
103
114
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'is404', 'boolean'));
104
115
  (0, addIs404ToPageProps_js_1.addIs404ToPageProps)(pageContext);
105
- passToClient.push(...PASS_TO_CLIENT_ERROR_PAGE);
116
+ passToClient.push(...pageToClientBuiltInPageContextError);
106
117
  }
107
118
  passToClient = (0, utils_js_1.unique)(passToClient);
108
119
  return passToClient;
109
120
  }
110
- function serializePageContextAbort(pageContext) {
121
+ function getPageContextClientSerializedAbort(pageContext) {
111
122
  (0, utils_js_1.assert)(pageContext._urlRedirect || pageContext._urlRewrite || pageContext.abortStatusCode);
112
123
  (0, utils_js_1.assert)(pageContext._abortCall);
113
124
  (0, utils_js_1.assert)(pageContext._abortCaller);
@@ -140,59 +151,18 @@ function serializePageContextAbort(pageContext) {
140
151
  onlyOnce: false
141
152
  });
142
153
  }
143
- return serialize(pageContext);
154
+ return serializeValue(pageContext);
144
155
  }
145
156
  function applyPassToClient(passToClient, pageContext) {
146
157
  const pageContextClient = {};
147
158
  passToClient.forEach((prop) => {
148
159
  // Get value from pageContext
149
- const res = getPropVal(pageContext, prop);
160
+ const res = (0, propKeys_js_1.getPropVal)(pageContext, prop);
150
161
  if (!res)
151
162
  return;
152
163
  const { value } = res;
153
164
  // Set value to pageContextClient
154
- setPropVal(pageContextClient, prop, value);
165
+ (0, propKeys_js_1.setPropVal)(pageContextClient, prop, value);
155
166
  });
156
167
  return pageContextClient;
157
168
  }
158
- // Get a nested property from an object using a dot-separated path such as 'user.id'
159
- function getPropVal(obj, prop) {
160
- const keys = getPropKeys(prop);
161
- let value = obj;
162
- for (const key of keys) {
163
- if ((0, utils_js_1.isObject)(value) && key in value) {
164
- value = value[key];
165
- }
166
- else {
167
- return null; // Property or intermediate property doesn't exist
168
- }
169
- }
170
- return { value };
171
- }
172
- // Set a nested property in an object using a dot-separated path such as 'user.id'
173
- function setPropVal(obj, prop, val) {
174
- const keys = getPropKeys(prop);
175
- let currentObj = obj;
176
- // Creating intermediate objects if necessary
177
- for (let i = 0; i <= keys.length - 2; i++) {
178
- const key = keys[i];
179
- if (!(key in currentObj)) {
180
- // Create intermediate object
181
- currentObj[key] = {};
182
- }
183
- if (!(0, utils_js_1.isObject)(currentObj[key])) {
184
- // Skip value upon data structure conflict
185
- return;
186
- }
187
- currentObj = currentObj[key];
188
- }
189
- // Set the final key to the value
190
- const finalKey = keys[keys.length - 1];
191
- currentObj[finalKey] = val;
192
- }
193
- function getPropKeys(prop) {
194
- // Like `prop.split('.')` but with added support for `\` escaping, see serializePageContextClientSide.spec.ts
195
- return prop
196
- .split(/(?<!\\)\./) // Split on unescaped dots
197
- .map((key) => key.replace(/\\\./g, '.')); // Replace escaped dots with literal dots
198
- }
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- // TODO/v1-release: replace this with:
3
- // assertUsage(false, "`import { something } from 'vike'` doesn't exist: instead import from 'vike/server', 'vike/client', 'vike/plugin', ...")
4
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
3
  if (k2 === undefined) k2 = k;
6
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -19,44 +17,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
20
18
  };
21
19
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.RenderErrorPage = void 0;
23
- const isBrowser_js_1 = require("../../utils/isBrowser.js");
24
- const assert_js_1 = require("../../utils/assert.js");
25
- (0, assert_js_1.assertUsage)(!(0, isBrowser_js_1.isBrowser)(), "It's forbidden to `import { something } from 'vike'` on the client-side: the module 'vike' is a server-only module.", { showStackTrace: true });
26
- __exportStar(require("./index-common.js"), exports);
27
- __exportStar(require("../../types/index-dreprecated.js"), exports);
20
+ // TODO/soon: point package.json#exports['./server'] to this file.
21
+ // - Write migration guide, see comment below.
22
+ __exportStar(require("./index.js"), exports);
28
23
  const utils_js_1 = require("./utils.js");
29
24
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
30
- const abort_js_1 = require("../../shared/route/abort.js");
31
- /** @deprecated
32
- * Replace:
33
- * ```
34
- * import { RenderErrorPage } from 'vike'
35
- * ```
36
- * With:
37
- * ```
38
- * import { render } from 'vike/abort'
39
- * ```
40
- *
41
- * See https://vike.dev/render
42
- */
43
- const RenderErrorPage = (...args) => {
44
- (0, utils_js_1.assertWarning)(false, [
45
- 'Replace:',
46
- picocolors_1.default.red(" import { RenderErrorPage } from 'vike'"),
47
- 'With:',
48
- picocolors_1.default.green(" import { render } from 'vike/abort'"),
49
- 'See https://vike.dev/render'
50
- ].join('\n'), { onlyOnce: true, showStackTrace: true });
51
- return (0, abort_js_1.RenderErrorPage)(...args);
52
- };
53
- exports.RenderErrorPage = RenderErrorPage;
54
25
  (0, utils_js_1.assertWarning)(false, [
55
- 'You have following imports which are outdated:',
56
- picocolors_1.default.red(" import { something } from 'vike'"),
26
+ 'You have outdated imports:',
27
+ picocolors_1.default.bold(picocolors_1.default.red(" import { something } from 'vike/server'")),
57
28
  'Replace them with:',
58
- picocolors_1.default.green(" import { something } from 'vike/server'"),
59
- `Or if ${picocolors_1.default.cyan('something')} is a type:`,
60
- picocolors_1.default.green(" import type { something } from 'vike/types'"),
61
- "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.)"
29
+ picocolors_1.default.bold(picocolors_1.default.green(" import { something } from 'vike'"))
30
+ /* Add migration guide, with migration scritps such as `$ rename vike/server vike`
31
+ `See ${pc.underline('https://vike.dev/migration/0.4.xxx')}`
32
+ */
62
33
  ].join('\n'), { showStackTrace: true, onlyOnce: true });
@@ -13,8 +13,62 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
16
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.RenderErrorPage = exports.createPageRenderer = exports._injectAssets = exports.createDevMiddleware = exports.getGlobalContextAsync = exports.getGlobalContextSync = exports.getGlobalContext = exports.version = exports.stampPipe = exports.pipeStream = exports.pipeNodeStream = exports.pipeWebStream = exports.dangerouslySkipEscape = exports.escapeInject = exports.renderPage = void 0;
17
21
  const isBrowser_js_1 = require("../../utils/isBrowser.js");
18
22
  const assert_js_1 = require("../../utils/assert.js");
19
- (0, assert_js_1.assertUsage)(!(0, isBrowser_js_1.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 });
20
- __exportStar(require("./index-common.js"), exports);
23
+ (0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
24
+ var renderPage_js_1 = require("./renderPage.js");
25
+ Object.defineProperty(exports, "renderPage", { enumerable: true, get: function () { return renderPage_js_1.renderPage; } });
26
+ var renderHtml_js_1 = require("./html/renderHtml.js");
27
+ Object.defineProperty(exports, "escapeInject", { enumerable: true, get: function () { return renderHtml_js_1.escapeInject; } });
28
+ Object.defineProperty(exports, "dangerouslySkipEscape", { enumerable: true, get: function () { return renderHtml_js_1.dangerouslySkipEscape; } });
29
+ var stream_js_1 = require("./html/stream.js");
30
+ Object.defineProperty(exports, "pipeWebStream", { enumerable: true, get: function () { return stream_js_1.pipeWebStream; } });
31
+ Object.defineProperty(exports, "pipeNodeStream", { enumerable: true, get: function () { return stream_js_1.pipeNodeStream; } });
32
+ Object.defineProperty(exports, "pipeStream", { enumerable: true, get: function () { return stream_js_1.pipeStream; } });
33
+ Object.defineProperty(exports, "stampPipe", { enumerable: true, get: function () { return stream_js_1.stampPipe; } });
34
+ var utils_js_1 = require("./utils.js");
35
+ Object.defineProperty(exports, "version", { enumerable: true, get: function () { return utils_js_1.PROJECT_VERSION; } });
36
+ var globalContext_js_1 = require("./globalContext.js");
37
+ Object.defineProperty(exports, "getGlobalContext", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContext; } });
38
+ Object.defineProperty(exports, "getGlobalContextSync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextSync; } });
39
+ Object.defineProperty(exports, "getGlobalContextAsync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextAsync; } });
40
+ var index_js_1 = require("../runtime-dev/index.js");
41
+ Object.defineProperty(exports, "createDevMiddleware", { enumerable: true, get: function () { return index_js_1.createDevMiddleware; } });
42
+ // TODO/v1-release: remove
43
+ // Deprecated exports
44
+ __exportStar(require("../../types/index-dreprecated.js"), exports);
45
+ var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
46
+ Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: function () { return injectAssets__public_js_1.injectAssets__public; } });
47
+ var createPageRenderer_js_1 = require("../createPageRenderer.js");
48
+ Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
49
+ const utils_js_2 = require("./utils.js");
50
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
51
+ const abort_js_1 = require("../../shared/route/abort.js");
52
+ /** @deprecated
53
+ * Replace:
54
+ * ```
55
+ * import { RenderErrorPage } from 'vike'
56
+ * ```
57
+ * With:
58
+ * ```
59
+ * import { render } from 'vike/abort'
60
+ * ```
61
+ *
62
+ * See https://vike.dev/render
63
+ */
64
+ const RenderErrorPage = (...args) => {
65
+ (0, utils_js_2.assertWarning)(false, [
66
+ 'Replace:',
67
+ picocolors_1.default.red(" import { RenderErrorPage } from 'vike'"),
68
+ 'With:',
69
+ picocolors_1.default.green(" import { render } from 'vike/abort'"),
70
+ 'See https://vike.dev/render'
71
+ ].join('\n'), { onlyOnce: true, showStackTrace: true });
72
+ return (0, abort_js_1.RenderErrorPage)(...args);
73
+ };
74
+ exports.RenderErrorPage = RenderErrorPage;
@@ -22,7 +22,7 @@ async function analyzePage(pageFilesAll, pageConfig, pageId, globalContext) {
22
22
  eagerlyImported: false
23
23
  });
24
24
  // In production we inject the import of the server virtual module with ?extractAssets inside the client virtual module
25
- if (!globalContext.isProduction) {
25
+ if (!globalContext._isProduction) {
26
26
  clientDependencies.push({
27
27
  id: (0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageConfig.pageId, false),
28
28
  onlyAssets: true,
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createHttpResponsePage = createHttpResponsePage;
4
4
  exports.createHttpResponsePageContextJson = createHttpResponsePageContextJson;
5
5
  exports.createHttpResponseError = createHttpResponseError;
6
+ exports.createHttpResponseErrorWithoutGlobalContext = createHttpResponseErrorWithoutGlobalContext;
6
7
  exports.createHttpResponseRedirect = createHttpResponseRedirect;
7
8
  exports.createHttpResponseFavicon404 = createHttpResponseFavicon404;
8
9
  exports.createHttpResponseBaseIsMissing = createHttpResponseBaseIsMissing;
@@ -66,9 +67,6 @@ function createHttpResponseBaseIsMissing(urlOriginal, baseServer) {
66
67
  }
67
68
  function createHttpResponseError(pageContext) {
68
69
  const reason = (() => {
69
- if (!pageContext) {
70
- return 'no error page (https://vike.dev/error-page) could be rendered';
71
- }
72
70
  const errorPageId = (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs);
73
71
  if (errorPageId) {
74
72
  return "the error page (https://vike.dev/error-page) couldn't be rendered (for example if an error occurred while rendering the error page)";
@@ -77,6 +75,13 @@ function createHttpResponseError(pageContext) {
77
75
  return 'no error page (https://vike.dev/error-page) is defined, make sure to create one';
78
76
  }
79
77
  })();
78
+ return createHttpResponseError_(reason);
79
+ }
80
+ function createHttpResponseErrorWithoutGlobalContext() {
81
+ const reason = 'no error page (https://vike.dev/error-page) could be rendered';
82
+ return createHttpResponseError_(reason);
83
+ }
84
+ function createHttpResponseError_(reason) {
80
85
  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>`);
81
86
  return httpResponse;
82
87
  }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPageContextServerSide = createPageContextServerSide;
4
+ exports.createPageContextServerSideWithoutGlobalContext = createPageContextServerSideWithoutGlobalContext;
5
+ const utils_js_1 = require("../utils.js");
6
+ const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
7
+ const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
8
+ async function createPageContextServerSide(pageContextInit, globalContext, globalObject_public, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
9
+ urlHandler: null,
10
+ isClientSideNavigation: false
11
+ } }) {
12
+ (0, utils_js_1.assert)(pageContextInit.urlOriginal);
13
+ const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
14
+ (0, utils_js_1.objectAssign)(pageContextCreated, {
15
+ /* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
16
+ // We must use Flatten<T> otherwise TypeScript complains upon assigning types
17
+ ...(globalContext as Flatten<typeof globalContext>), // least precedence
18
+ */
19
+ globalContext: globalObject_public,
20
+ _globalContext: globalContext,
21
+ // The following is defined on `pageContext` because we can eventually make these non-global
22
+ _baseServer: globalContext.baseServer,
23
+ _baseAssets: globalContext.baseAssets,
24
+ // TODO/now: add meta.default
25
+ _includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
26
+ // TODO/soon: use GloablContext instead
27
+ _pageFilesAll: globalContext._pageFilesAll,
28
+ _pageConfigs: globalContext._pageConfigs,
29
+ _pageConfigGlobal: globalContext._pageConfigGlobal,
30
+ _allPageIds: globalContext._allPageIds,
31
+ _pageRoutes: globalContext._pageRoutes,
32
+ _onBeforeRouteHook: globalContext._onBeforeRouteHook,
33
+ _pageContextInit: pageContextInit,
34
+ _urlRewrite: null,
35
+ _urlHandler: urlHandler,
36
+ isClientSideNavigation
37
+ });
38
+ // pageContext.urlParsed
39
+ const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextCreated);
40
+ (0, utils_js_1.objectAssign)(pageContextCreated, pageContextUrlComputed);
41
+ // pageContext.headers
42
+ {
43
+ let headers;
44
+ if (pageContextInit.headersOriginal) {
45
+ headers = (0, utils_js_1.normalizeHeaders)(pageContextInit.headersOriginal);
46
+ (0, utils_js_1.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");
47
+ }
48
+ else if (pageContextInit.headers) {
49
+ headers = pageContextInit.headers;
50
+ // TODO/next-major-release: remove
51
+ (0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
52
+ }
53
+ else {
54
+ headers = null;
55
+ }
56
+ (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
57
+ }
58
+ const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._pageConfigGlobal);
59
+ (0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
60
+ return pageContextCreated;
61
+ }
62
+ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
63
+ const pageContext = createPageContext(pageContextInit, false);
64
+ return pageContext;
65
+ }
66
+ function createPageContext(pageContextInit, isPrerendering) {
67
+ const pageContext = {
68
+ isClientSide: false,
69
+ isPrerendering
70
+ };
71
+ (0, utils_js_1.objectAssign)(pageContext, pageContextInit);
72
+ return pageContext;
73
+ }
@@ -9,8 +9,8 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
9
9
  if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
10
10
  return;
11
11
  }
12
- const dataHook = (0, getHook_js_1.getHook)(pageContext, 'data');
13
- const onBeforeRenderHook = (0, getHook_js_1.getHook)(pageContext, 'onBeforeRender');
12
+ const dataHook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'data');
13
+ const onBeforeRenderHook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'onBeforeRender');
14
14
  if (!dataHook && !onBeforeRenderHook) {
15
15
  return;
16
16
  }
@@ -41,12 +41,12 @@ function getRenderHook(pageContext) {
41
41
  {
42
42
  let hook;
43
43
  let hookName = undefined;
44
- hook = (0, getHook_js_1.getHook)(pageContext, 'onRenderHtml');
44
+ hook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'onRenderHtml');
45
45
  if (hook) {
46
46
  hookName = 'onRenderHtml';
47
47
  }
48
48
  else {
49
- hook = (0, getHook_js_1.getHook)(pageContext, 'render');
49
+ hook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'render');
50
50
  if (hook) {
51
51
  hookName = 'render';
52
52
  }
@@ -42,7 +42,7 @@ function getManifestEntry(id, assetsManifest) {
42
42
  return { manifestEntry, manifestKey };
43
43
  }
44
44
  // npm package import
45
- (0, utils_js_1.assertIsNpmPackageImport)(id);
45
+ (0, utils_js_1.assertIsImportPathNpmPackage)(id);
46
46
  const found = Object.entries(assetsManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
47
47
  (0, utils_js_1.assert)(found);
48
48
  const [manifestKey, manifestEntry] = found;