vike 0.4.238 → 0.4.239-commit-33e55d4

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 (197) hide show
  1. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +3 -2
  2. package/dist/cjs/node/prerender/runPrerender.js +1 -0
  3. package/dist/cjs/node/runtime/globalContext.js +10 -0
  4. package/dist/cjs/node/runtime/index.js +3 -3
  5. package/dist/cjs/node/runtime/page-files/setup.js +3 -1
  6. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -9
  7. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +2 -2
  8. package/dist/cjs/node/runtime/renderPage/csp.js +47 -0
  9. package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +2 -2
  10. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +1 -1
  11. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  12. package/dist/cjs/node/runtime/renderPage/headersResponse.js +48 -0
  13. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.js +16 -13
  14. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.js +1 -1
  15. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/inferHtmlTags.js +8 -6
  16. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.js +1 -1
  17. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.js +1 -1
  18. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/mergeScriptTags.js +5 -3
  19. package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets.js +2 -2
  20. package/dist/cjs/node/runtime/{html → renderPage/html}/propKeys.js +1 -1
  21. package/dist/cjs/node/runtime/{html → renderPage/html}/renderHtml.js +1 -1
  22. package/dist/cjs/node/runtime/{html → renderPage/html}/serializeContext.js +6 -6
  23. package/dist/cjs/node/runtime/{html → renderPage/html}/stream/react-streaming.js +1 -1
  24. package/dist/cjs/node/runtime/{html → renderPage/html}/stream.js +1 -1
  25. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +17 -38
  26. package/dist/cjs/node/runtime/renderPage/renderPageAfterRoute.js +2 -2
  27. package/dist/cjs/node/runtime/renderPage.js +1 -1
  28. package/dist/cjs/node/vite/onLoad.js +1 -1
  29. package/dist/cjs/node/vite/plugins/pluginBaseUrls.js +32 -28
  30. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +1 -1
  31. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +24 -20
  32. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +4 -2
  33. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +76 -74
  34. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +18 -14
  35. package/dist/cjs/node/vite/plugins/pluginBuild/pluginModuleBanner.js +17 -9
  36. package/dist/cjs/node/vite/plugins/pluginBuild/pluginProdBuildEntry.js +4 -2
  37. package/dist/cjs/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +20 -18
  38. package/dist/cjs/node/vite/plugins/pluginCommon.js +7 -21
  39. package/dist/cjs/node/vite/plugins/pluginDev.js +51 -47
  40. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +62 -57
  41. package/dist/cjs/node/vite/plugins/pluginExtractAssets.js +107 -93
  42. package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +27 -13
  43. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +107 -84
  44. package/dist/cjs/node/vite/plugins/pluginNonRunnableDev.js +40 -21
  45. package/dist/cjs/node/vite/plugins/pluginPreview.js +30 -24
  46. package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +59 -33
  47. package/dist/cjs/node/vite/plugins/pluginSetGlobalContext.js +4 -2
  48. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +1 -1
  49. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +54 -36
  50. package/dist/cjs/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +8 -6
  51. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +3 -0
  52. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -1
  53. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +20 -22
  54. package/dist/cjs/shared/createGlobalContextShared.js +4 -22
  55. package/dist/cjs/shared/createPageContextShared.js +2 -2
  56. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +62 -43
  57. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  58. package/dist/cjs/utils/assert.js +16 -1
  59. package/dist/cjs/utils/assertNodeVersion.js +3 -1
  60. package/dist/cjs/utils/assertVersion.js +26 -5
  61. package/dist/cjs/utils/joinEnglish.js +2 -1
  62. package/dist/cjs/utils/virtualFileId.js +15 -11
  63. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.d.ts +40 -17
  64. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +1 -1
  65. package/dist/esm/client/runtime-client-routing/getPageContextCurrent.d.ts +2 -2
  66. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +99 -85
  67. package/dist/esm/client/runtime-client-routing/globalContext.d.ts +39 -11
  68. package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.d.ts +2 -2
  69. package/dist/esm/client/runtime-client-routing/prefetch.d.ts +2 -2
  70. package/dist/esm/client/runtime-client-routing/prefetch.js +2 -2
  71. package/dist/esm/client/runtime-client-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
  72. package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +44 -29
  73. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +40 -17
  74. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +1 -1
  75. package/dist/esm/client/runtime-server-routing/globalContext.d.ts +39 -11
  76. package/dist/esm/client/runtime-server-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
  77. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +39 -11
  78. package/dist/esm/client/shared/execHookOnRenderClient.d.ts +2 -2
  79. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +1 -1
  80. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -3
  81. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +2 -2
  82. package/dist/esm/node/prerender/resolvePrerenderConfig.js +4 -3
  83. package/dist/esm/node/prerender/runPrerender.d.ts +61 -16
  84. package/dist/esm/node/prerender/runPrerender.js +2 -1
  85. package/dist/esm/node/runtime/globalContext.d.ts +167 -42
  86. package/dist/esm/node/runtime/globalContext.js +11 -1
  87. package/dist/esm/node/runtime/index.d.ts +3 -3
  88. package/dist/esm/node/runtime/index.js +3 -3
  89. package/dist/esm/node/runtime/page-files/setup.js +3 -1
  90. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
  91. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -9
  92. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +56 -12
  93. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
  94. package/dist/esm/node/runtime/renderPage/csp.d.ts +12 -0
  95. package/dist/esm/node/runtime/renderPage/csp.js +45 -0
  96. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +2 -2
  97. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +2 -2
  98. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +2 -2
  99. package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -1
  100. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +2 -2
  101. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  102. package/dist/esm/node/runtime/renderPage/headersResponse.d.ts +10 -0
  103. package/dist/esm/node/runtime/renderPage/headersResponse.js +46 -0
  104. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.d.ts +1 -1
  105. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.js +16 -13
  106. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.d.ts +1 -1
  107. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.js +1 -1
  108. package/dist/esm/node/runtime/renderPage/html/injectAssets/inferHtmlTags.d.ts +10 -0
  109. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/inferHtmlTags.js +7 -5
  110. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.js +1 -1
  111. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.js +1 -1
  112. package/dist/esm/node/runtime/renderPage/html/injectAssets/mergeScriptTags.d.ts +3 -0
  113. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/mergeScriptTags.js +6 -4
  114. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets.d.ts +2 -2
  115. package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets.js +2 -2
  116. package/dist/esm/node/runtime/{html → renderPage/html}/propKeys.js +1 -1
  117. package/dist/esm/node/runtime/{html → renderPage/html}/renderHtml.d.ts +1 -1
  118. package/dist/esm/node/runtime/{html → renderPage/html}/renderHtml.js +1 -1
  119. package/dist/esm/node/runtime/{html → renderPage/html}/serializeContext.d.ts +6 -5
  120. package/dist/esm/node/runtime/{html → renderPage/html}/serializeContext.js +6 -6
  121. package/dist/esm/node/runtime/{html → renderPage/html}/stream/react-streaming.js +1 -1
  122. package/dist/esm/node/runtime/{html → renderPage/html}/stream.js +1 -1
  123. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +66 -17
  124. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -39
  125. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +2 -2
  126. package/dist/esm/node/runtime/renderPage/renderPageAfterRoute.d.ts +122 -32
  127. package/dist/esm/node/runtime/renderPage/renderPageAfterRoute.js +2 -2
  128. package/dist/esm/node/runtime/renderPage.d.ts +56 -12
  129. package/dist/esm/node/runtime/renderPage.js +1 -1
  130. package/dist/esm/node/vite/onLoad.js +1 -1
  131. package/dist/esm/node/vite/plugins/pluginBaseUrls.js +32 -28
  132. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +1 -1
  133. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +24 -20
  134. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +4 -2
  135. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +76 -74
  136. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +18 -14
  137. package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.js +18 -10
  138. package/dist/esm/node/vite/plugins/pluginBuild/pluginProdBuildEntry.js +4 -2
  139. package/dist/esm/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +20 -18
  140. package/dist/esm/node/vite/plugins/pluginCommon.js +8 -22
  141. package/dist/esm/node/vite/plugins/pluginDev.js +51 -47
  142. package/dist/esm/node/vite/plugins/pluginEnvVars.js +62 -57
  143. package/dist/esm/node/vite/plugins/pluginExtractAssets.js +107 -91
  144. package/dist/esm/node/vite/plugins/pluginExtractExportNames.js +27 -13
  145. package/dist/esm/node/vite/plugins/pluginFileEnv.js +107 -84
  146. package/dist/esm/node/vite/plugins/pluginNonRunnableDev.js +41 -22
  147. package/dist/esm/node/vite/plugins/pluginPreview.js +30 -24
  148. package/dist/esm/node/vite/plugins/pluginReplaceConstants.d.ts +11 -0
  149. package/dist/esm/node/vite/plugins/pluginReplaceConstants.js +58 -33
  150. package/dist/esm/node/vite/plugins/pluginSetGlobalContext.js +4 -2
  151. package/dist/esm/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +2 -2
  152. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +56 -38
  153. package/dist/esm/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +8 -6
  154. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +3 -0
  155. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +2 -2
  156. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -8
  157. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +22 -24
  158. package/dist/esm/shared/createGlobalContextShared.d.ts +75 -19
  159. package/dist/esm/shared/createGlobalContextShared.js +5 -23
  160. package/dist/esm/shared/createPageContextShared.d.ts +2 -7
  161. package/dist/esm/shared/createPageContextShared.js +2 -2
  162. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  163. package/dist/esm/shared/hooks/execHook.d.ts +2 -2
  164. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  165. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.d.ts +91 -31
  166. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +62 -43
  167. package/dist/esm/types/Config/ConfigResolved.d.ts +8 -0
  168. package/dist/esm/types/Config.d.ts +14 -6
  169. package/dist/esm/types/PageContext.d.ts +8 -25
  170. package/dist/esm/types/VikeNamespace.d.ts +0 -27
  171. package/dist/esm/types/index.d.ts +2 -2
  172. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  173. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  174. package/dist/esm/utils/assert.js +16 -1
  175. package/dist/esm/utils/assertNodeVersion.js +3 -1
  176. package/dist/esm/utils/assertVersion.d.ts +4 -3
  177. package/dist/esm/utils/assertVersion.js +23 -5
  178. package/dist/esm/utils/joinEnglish.js +2 -1
  179. package/dist/esm/utils/virtualFileId.d.ts +4 -0
  180. package/dist/esm/utils/virtualFileId.js +14 -11
  181. package/package.json +5 -5
  182. package/dist/cjs/types/Config/helpers.js +0 -2
  183. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.d.ts +0 -9
  184. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +0 -2
  185. package/dist/esm/types/Config/PageContextConfig.d.ts +0 -15
  186. package/dist/esm/types/Config/helpers.d.ts +0 -10
  187. package/dist/esm/types/Config/helpers.js +0 -1
  188. /package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.js +0 -0
  189. /package/dist/cjs/types/Config/{PageContextConfig.js → ConfigResolved.js} +0 -0
  190. /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.d.ts +0 -0
  191. /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.d.ts +0 -0
  192. /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.d.ts +0 -0
  193. /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.js +0 -0
  194. /package/dist/esm/node/runtime/{html → renderPage/html}/propKeys.d.ts +0 -0
  195. /package/dist/esm/node/runtime/{html → renderPage/html}/stream/react-streaming.d.ts +0 -0
  196. /package/dist/esm/node/runtime/{html → renderPage/html}/stream.d.ts +0 -0
  197. /package/dist/esm/types/Config/{PageContextConfig.js → ConfigResolved.js} +0 -0
@@ -4,6 +4,7 @@ exports.resolvePrerenderConfigGlobal = resolvePrerenderConfigGlobal;
4
4
  exports.resolvePrerenderConfigLocal = resolvePrerenderConfigLocal;
5
5
  const utils_js_1 = require("./utils.js");
6
6
  const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
7
+ const getConfigDefinedAt_js_1 = require("../../shared/page-configs/getConfigDefinedAt.js");
7
8
  // When setting +prerender to an object => it also enables pre-rendering
8
9
  const defaultValueForObject = true;
9
10
  function resolvePrerenderConfigGlobal(vikeConfig) {
@@ -51,9 +52,9 @@ function resolvePrerenderConfigLocal(pageConfig) {
51
52
  const values = configValue.value;
52
53
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
53
54
  const value = values[0];
54
- // If it's set to an object in a local config then Vike considers it a global config and it's skipped from local inheritance, thus we can assume the value to be a boolean.
55
- (0, utils_js_1.assert)(typeof value === 'boolean');
56
55
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
56
+ const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'prerender', configValue.definedAtData);
57
+ (0, utils_js_1.assertUsage)(typeof value === 'boolean', `${configDefinedAt} must be a boolean (it isn't defined at a global location)`);
57
58
  const prerenderConfigLocal = { value };
58
59
  return prerenderConfigLocal;
59
60
  }
@@ -146,6 +146,7 @@ async function runPrerender(options = {}, trigger) {
146
146
  await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
147
147
  const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
148
148
  (0, utils_js_1.objectAssign)(vikeConfig.prerenderContext, prerenderContextPublic, true);
149
+ (0, globalContext_js_1.setGlobalContext_prerenderContext)(prerenderContextPublic);
149
150
  if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
150
151
  node_fs_1.default.rmSync(outDirServer, { recursive: true });
151
152
  }
@@ -16,11 +16,13 @@ exports.initGlobalContext_getPagesAndRoutes = initGlobalContext_getPagesAndRoute
16
16
  exports.setGlobalContext_viteDevServer = setGlobalContext_viteDevServer;
17
17
  exports.setGlobalContext_viteConfig = setGlobalContext_viteConfig;
18
18
  exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
19
+ exports.setGlobalContext_prerenderContext = setGlobalContext_prerenderContext;
19
20
  exports.setGlobalContext_isProductionAccordingToVite = setGlobalContext_isProductionAccordingToVite;
20
21
  exports.setGlobalContext_prodBuildEntry = setGlobalContext_prodBuildEntry;
21
22
  exports.clearGlobalContext = clearGlobalContext;
22
23
  exports.assertBuildInfo = assertBuildInfo;
23
24
  exports.updateUserFiles = updateUserFiles;
25
+ exports.isRunnable = isRunnable;
24
26
  // The core logic revolves around:
25
27
  // - virtualFileExportsGlobalEntry is the main requirement
26
28
  // - In production: globalObject.prodBuildEntry which is the production entry set by @brillout/vite-plugin-server-entry
@@ -153,6 +155,13 @@ function assertIsNotInitializedYet() {
153
155
  function setGlobalContext_isPrerendering() {
154
156
  globalObject.isPrerendering = true;
155
157
  }
158
+ function setGlobalContext_prerenderContext(prerenderContextPublic) {
159
+ globalObject.prerenderContextPublic = prerenderContextPublic;
160
+ // Ugly redundancy, which we can remove after globalContext is a proxy
161
+ const { globalContext } = globalObjectTyped;
162
+ if (globalContext)
163
+ globalContext.prerenderContext = prerenderContextPublic;
164
+ }
156
165
  function setGlobalContext_isProductionAccordingToVite(isProductionAccordingToVite) {
157
166
  globalObject.isProductionAccordingToVite = isProductionAccordingToVite;
158
167
  }
@@ -404,6 +413,7 @@ async function createGlobalContext(virtualFileExportsGlobalEntry) {
404
413
  globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
405
414
  assertGlobalContextIsDefined();
406
415
  (0, utils_js_1.onSetupRuntime)();
416
+ (0, utils_js_1.objectAssign)(globalContext, { prerenderContext: globalObject.prerenderContextPublic });
407
417
  // Never actually used, only used for TypeScript `ReturnType<typeof createGlobalContext>`
408
418
  return globalContext;
409
419
  }
@@ -23,10 +23,10 @@ const assert_js_1 = require("../../utils/assert.js");
23
23
  (0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
24
24
  var renderPage_js_1 = require("./renderPage.js");
25
25
  Object.defineProperty(exports, "renderPage", { enumerable: true, get: function () { return renderPage_js_1.renderPage; } });
26
- var renderHtml_js_1 = require("./html/renderHtml.js");
26
+ var renderHtml_js_1 = require("./renderPage/html/renderHtml.js");
27
27
  Object.defineProperty(exports, "escapeInject", { enumerable: true, get: function () { return renderHtml_js_1.escapeInject; } });
28
28
  Object.defineProperty(exports, "dangerouslySkipEscape", { enumerable: true, get: function () { return renderHtml_js_1.dangerouslySkipEscape; } });
29
- var stream_js_1 = require("./html/stream.js");
29
+ var stream_js_1 = require("./renderPage/html/stream.js");
30
30
  Object.defineProperty(exports, "pipeWebStream", { enumerable: true, get: function () { return stream_js_1.pipeWebStream; } });
31
31
  Object.defineProperty(exports, "pipeNodeStream", { enumerable: true, get: function () { return stream_js_1.pipeNodeStream; } });
32
32
  Object.defineProperty(exports, "pipeStream", { enumerable: true, get: function () { return stream_js_1.pipeStream; } });
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "createDevMiddleware", { enumerable: true, get: f
42
42
  // TO-DO/next-major-release: remove
43
43
  // Deprecated exports
44
44
  __exportStar(require("../../types/index-dreprecated.js"), exports);
45
- var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
45
+ var injectAssets__public_js_1 = require("./renderPage/html/injectAssets/injectAssets__public.js");
46
46
  Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: function () { return injectAssets__public_js_1.injectAssets__public; } });
47
47
  var createPageRenderer_js_1 = require("../createPageRenderer.js");
48
48
  Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
@@ -1,3 +1,5 @@
1
1
  "use strict";
2
- // TO-DO/next-major-release: remove https://github.com/vikejs/vike/issues/2122
2
+ // TO-DO/eventually: remove
3
+ // - This was used by some older Vike extensions made by Joël (I believe vite-plugin-vercel)
4
+ // - See also https://github.com/vikejs/vike/issues/2122
3
5
  // This doesn't do anything anymore. (It's kept to avoid introducing a breaking change.)
@@ -12,7 +12,7 @@ const error_page_js_1 = require("../../../shared/error-page.js");
12
12
  const getHttpResponseBody_js_1 = require("./getHttpResponseBody.js");
13
13
  const getEarlyHints_js_1 = require("./getEarlyHints.js");
14
14
  const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNoInfiniteHttpRedirect.js");
15
- const getCacheControl_js_1 = require("./getCacheControl.js");
15
+ const headersResponse_js_1 = require("./headersResponse.js");
16
16
  async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
17
17
  let statusCode = pageContext.abortStatusCode;
18
18
  if (!statusCode) {
@@ -30,14 +30,7 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
30
30
  }
31
31
  }
32
32
  const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
33
- const headers = [];
34
- const headersResponse = pageContext.headersResponse || new Headers();
35
- headersResponse.forEach((value, key) => {
36
- headers.push([key, value]);
37
- });
38
- // An 5xx error page shouldn't be cached (it should be temporary)
39
- if (statusCode >= 500)
40
- headersResponse.set('Cache-Control', getCacheControl_js_1.cacheControlDisable);
33
+ const headers = (0, headersResponse_js_1.resolveHeadersResponseFinal)(pageContext, statusCode);
41
34
  return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
42
35
  }
43
36
  function createHttpResponse404(errMsg404) {
@@ -19,7 +19,7 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
19
19
  _urlHandler: args.ssr?.urlHandler ?? null,
20
20
  isClientSideNavigation: args.ssr?.isClientSideNavigation ?? false,
21
21
  });
22
- (0, utils_js_1.objectAssign)(pageContextCreated, globalContext._vikeConfigPublicGlobal);
22
+ (0, utils_js_1.objectAssign)(pageContextCreated, globalContext._globalConfigPublic);
23
23
  // pageContext.urlParsed
24
24
  const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextCreated);
25
25
  (0, utils_js_1.objectAssign)(pageContextCreated, pageContextUrlComputed);
@@ -40,7 +40,7 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
40
40
  }
41
41
  (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
42
42
  }
43
- const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._vikeConfigPublicGlobal);
43
+ const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._globalConfigPublic);
44
44
  (0, utils_js_1.updateType)(pageContextCreated, pageContextAugmented);
45
45
  return pageContextCreated;
46
46
  }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePageContextCspNone = resolvePageContextCspNone;
4
+ exports.inferNonceAttr = inferNonceAttr;
5
+ exports.addCspResponseHeader = addCspResponseHeader;
6
+ const import_1 = require("@brillout/import");
7
+ const utils_js_1 = require("../utils.js");
8
+ async function resolvePageContextCspNone(pageContext) {
9
+ if (pageContext.cspNonce)
10
+ return null; // already set by user e.g. `renderPage({ cspNonce: '123456789' })`
11
+ const { csp } = pageContext.config;
12
+ const pageContextAddendum = { cspNonce: null };
13
+ if (csp?.nonce) {
14
+ if (csp.nonce === true) {
15
+ pageContextAddendum.cspNonce = await generateNonce();
16
+ }
17
+ else {
18
+ pageContextAddendum.cspNonce = await csp.nonce(pageContext);
19
+ }
20
+ }
21
+ return pageContextAddendum;
22
+ }
23
+ // Generate a cryptographically secure nonce for Content Security Policy (CSP).
24
+ // Returns a base64url-encoded nonce string (URL-safe, no padding).
25
+ // https://github.com/vikejs/vike/issues/1554#issuecomment-3181128304
26
+ async function generateNonce() {
27
+ let cryptoModule;
28
+ try {
29
+ cryptoModule = (await (0, import_1.import_)('crypto')).default;
30
+ }
31
+ catch {
32
+ return Math.random().toString(36).substring(2, 18);
33
+ }
34
+ return cryptoModule.randomBytes(16).toString('base64url');
35
+ }
36
+ function inferNonceAttr(pageContext) {
37
+ const nonceAttr = pageContext.cspNonce ? ` nonce="${pageContext.cspNonce}"` : '';
38
+ return nonceAttr;
39
+ }
40
+ function addCspResponseHeader(pageContext, headersResponse) {
41
+ (0, utils_js_1.assert)(pageContext.cspNonce === null || typeof pageContext.cspNonce === 'string'); // ensure resolvePageContextCspNone() is called before addCspResponseHeader()
42
+ if (!pageContext.cspNonce)
43
+ return;
44
+ if (headersResponse.get('Content-Security-Policy'))
45
+ return;
46
+ headersResponse.set('Content-Security-Policy', `script-src 'self' 'nonce-${pageContext.cspNonce}'`);
47
+ }
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.execHookOnRenderHtml = execHookOnRenderHtml;
7
- const renderHtml_js_1 = require("../html/renderHtml.js");
7
+ const renderHtml_js_1 = require("./html/renderHtml.js");
8
8
  const getHook_js_1 = require("../../../shared/hooks/getHook.js");
9
9
  const utils_js_1 = require("../utils.js");
10
- const stream_js_1 = require("../html/stream.js");
10
+ const stream_js_1 = require("./html/stream.js");
11
11
  const assertPageContextProvidedByUser_js_1 = require("../../../shared/assertPageContextProvidedByUser.js");
12
12
  const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
13
13
  const assertHookReturnedObject_js_1 = require("../../../shared/assertHookReturnedObject.js");
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getEarlyHints = getEarlyHints;
4
4
  const isFontFallback_js_1 = require("./isFontFallback.js");
5
- const inferHtmlTags_js_1 = require("../html/injectAssets/inferHtmlTags.js");
5
+ const inferHtmlTags_js_1 = require("./html/injectAssets/inferHtmlTags.js");
6
6
  function getEarlyHints(assets) {
7
7
  const earlyHints = [];
8
8
  {
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getHttpResponseBody = getHttpResponseBody;
7
7
  exports.getHttpResponseBodyStreamHandlers = getHttpResponseBodyStreamHandlers;
8
- const stream_js_1 = require("../html/stream.js");
8
+ const stream_js_1 = require("./html/stream.js");
9
9
  const utils_js_1 = require("../utils.js");
10
- const renderHtml_js_1 = require("../html/renderHtml.js");
10
+ const renderHtml_js_1 = require("./html/renderHtml.js");
11
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
12
  const streamDocs = 'See https://vike.dev/streaming for more information.';
13
13
  function getHttpResponseBody(htmlRender, renderHook) {
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveHeadersResponseEarly = resolveHeadersResponseEarly;
4
+ exports.resolveHeadersResponseFinal = resolveHeadersResponseFinal;
5
+ const csp_js_1 = require("./csp.js");
6
+ const utils_js_1 = require("../utils.js");
7
+ const getCacheControl_js_1 = require("./getCacheControl.js");
8
+ function resolveHeadersResponseFinal(pageContext, statusCode) {
9
+ const headersResponse = pageContext.headersResponse || new Headers();
10
+ // 5xx error pages are temporary and shouldn't be cached.
11
+ // This overrides any previously set Cache-Control value.
12
+ if (statusCode >= 500)
13
+ headersResponse.set('Cache-Control', getCacheControl_js_1.cacheControlDisable);
14
+ const headers = [];
15
+ headersResponse.forEach((value, key) => {
16
+ headers.push([key, value]);
17
+ });
18
+ return headers;
19
+ }
20
+ async function resolveHeadersResponseEarly(pageContext) {
21
+ const headersResponse = await resolveHeadersResponseConfig(pageContext);
22
+ if (!headersResponse.get('Cache-Control')) {
23
+ const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs);
24
+ if (cacheControl)
25
+ headersResponse.set('Cache-Control', cacheControl);
26
+ }
27
+ (0, csp_js_1.addCspResponseHeader)(pageContext, headersResponse);
28
+ const pageContextAddendum = {
29
+ headersResponse,
30
+ };
31
+ return pageContextAddendum;
32
+ }
33
+ async function resolveHeadersResponseConfig(pageContext) {
34
+ const headersMerged = new Headers();
35
+ await Promise.all((pageContext.config.headersResponse ?? []).map(async (headers) => {
36
+ let headersInit;
37
+ if ((0, utils_js_1.isCallable)(headers)) {
38
+ headersInit = await headers(pageContext);
39
+ }
40
+ else {
41
+ headersInit = headers;
42
+ }
43
+ new Headers(headersInit).forEach((value, key) => {
44
+ headersMerged.append(key, value);
45
+ });
46
+ }));
47
+ return headersMerged;
48
+ }
@@ -4,17 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getHtmlTags = getHtmlTags;
7
- const utils_js_1 = require("../../utils.js");
7
+ const utils_js_1 = require("../../../utils.js");
8
8
  const serializeContext_js_1 = require("../serializeContext.js");
9
9
  const sanitizeJson_js_1 = require("./sanitizeJson.js");
10
10
  const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
11
11
  const mergeScriptTags_js_1 = require("./mergeScriptTags.js");
12
- const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
13
- const getConfigValueRuntime_js_1 = require("../../../../shared/page-configs/getConfigValueRuntime.js");
12
+ const helpers_js_1 = require("../../../../../shared/page-configs/helpers.js");
13
+ const getConfigValueRuntime_js_1 = require("../../../../../shared/page-configs/getConfigValueRuntime.js");
14
14
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
15
- const getConfigDefinedAt_js_1 = require("../../../../shared/page-configs/getConfigDefinedAt.js");
16
- const htmlElementIds_js_1 = require("../../../../shared/htmlElementIds.js");
17
- const isFontFallback_js_1 = require("../../renderPage/isFontFallback.js");
15
+ const getConfigDefinedAt_js_1 = require("../../../../../shared/page-configs/getConfigDefinedAt.js");
16
+ const htmlElementIds_js_1 = require("../../../../../shared/htmlElementIds.js");
17
+ const isFontFallback_js_1 = require("../../isFontFallback.js");
18
+ const csp_js_1 = require("../../csp.js");
18
19
  const stamp = '__injectFilterEntry';
19
20
  async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
20
21
  (0, utils_js_1.assert)([true, false].includes(pageContext._isHtmlOnly));
@@ -81,7 +82,7 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
81
82
  .forEach((asset) => {
82
83
  if (!asset.inject)
83
84
  return;
84
- const htmlTag = asset.isEntry ? (0, inferHtmlTags_js_1.inferAssetTag)(asset) : (0, inferHtmlTags_js_1.inferPreloadTag)(asset);
85
+ const htmlTag = asset.isEntry ? (0, inferHtmlTags_js_1.inferAssetTag)(asset, pageContext) : (0, inferHtmlTags_js_1.inferPreloadTag)(asset);
85
86
  htmlTags.push({ htmlTag, position: asset.inject });
86
87
  });
87
88
  // ==========
@@ -142,7 +143,7 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
142
143
  });
143
144
  }
144
145
  // The JavaScript entry <script> tag
145
- const scriptEntry = mergeScriptEntries(pageAssets, viteDevScript);
146
+ const scriptEntry = mergeScriptEntries(pageAssets, viteDevScript, pageContext);
146
147
  if (scriptEntry) {
147
148
  htmlTags.push({
148
149
  htmlTag: scriptEntry,
@@ -163,9 +164,9 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
163
164
  });
164
165
  return htmlTags;
165
166
  }
166
- function mergeScriptEntries(pageAssets, viteDevScript) {
167
+ function mergeScriptEntries(pageAssets, viteDevScript, pageContext) {
167
168
  const scriptEntries = pageAssets.filter((pageAsset) => pageAsset.isEntry && pageAsset.assetType === 'script');
168
- let scriptEntry = `${viteDevScript}${scriptEntries.map((asset) => (0, inferHtmlTags_js_1.inferAssetTag)(asset)).join('')}`;
169
+ let scriptEntry = `${viteDevScript}${scriptEntries.map((asset) => (0, inferHtmlTags_js_1.inferAssetTag)(asset, pageContext)).join('')}`;
169
170
  // We merge scripts to avoid the infamous HMR preamble error.
170
171
  // - Infamous HMR preamble error:
171
172
  // ```browser-console
@@ -183,12 +184,13 @@ function mergeScriptEntries(pageAssets, viteDevScript) {
183
184
  // ```
184
185
  // - Maybe an alternative would be to make Vike's client runtime entry <script> tag non-async. Would that work? Would it be a performance issue?
185
186
  // - The entry <script> shouldn't be `<script defer>` upon HTML streaming, otherwise progressive hydration while SSR streaming won't work.
186
- scriptEntry = (0, mergeScriptTags_js_1.mergeScriptTags)(scriptEntry);
187
+ scriptEntry = (0, mergeScriptTags_js_1.mergeScriptTags)(scriptEntry, pageContext);
187
188
  return scriptEntry;
188
189
  }
189
190
  function getPageContextJsonScriptTag(pageContext) {
190
191
  const pageContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getPageContextClientSerialized)(pageContext, true));
191
- const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_pageContext}" type="application/json">${pageContextClientSerialized}</script>`;
192
+ const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
193
+ const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_pageContext}" type="application/json"${nonceAttr}>${pageContextClientSerialized}</script>`;
192
194
  // Used by contra.com https://github.com/gajus
193
195
  // @ts-expect-error
194
196
  pageContext._pageContextHtmlTag = htmlTag;
@@ -196,7 +198,8 @@ function getPageContextJsonScriptTag(pageContext) {
196
198
  }
197
199
  function getGlobalContextJsonScriptTag(pageContext) {
198
200
  const globalContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getGlobalContextClientSerialized)(pageContext, true));
199
- const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_globalContext}" type="application/json">${globalContextClientSerialized}</script>`;
201
+ const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
202
+ const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_globalContext}" type="application/json"${nonceAttr}>${globalContextClientSerialized}</script>`;
200
203
  return htmlTag;
201
204
  }
202
205
  function assertInjectFilterEntries(injectFilterEntries) {
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getViteDevScript = getViteDevScript;
7
- const utils_js_1 = require("../../utils.js");
7
+ const utils_js_1 = require("../../../utils.js");
8
8
  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) {
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scriptAttrs = void 0;
3
+ exports.scriptCommonAttrs = void 0;
4
4
  exports.inferAssetTag = inferAssetTag;
5
5
  exports.inferPreloadTag = inferPreloadTag;
6
6
  exports.inferEarlyHintLink = inferEarlyHintLink;
7
- const utils_js_1 = require("../../utils.js");
7
+ const utils_js_1 = require("../../../utils.js");
8
+ const csp_js_1 = require("../../csp.js");
8
9
  // We can't use `defer` here. With `defer`, the entry script won't start before `</body>` has been parsed, preventing progressive hydration during SSR streaming, see https://github.com/vikejs/vike/pull/1271
9
- const scriptAttrs = 'type="module" async';
10
- exports.scriptAttrs = scriptAttrs;
10
+ const scriptCommonAttrs = 'type="module" async';
11
+ exports.scriptCommonAttrs = scriptCommonAttrs;
11
12
  function inferPreloadTag(pageAsset) {
12
13
  const { src, assetType, mediaType } = pageAsset;
13
14
  const rel = getRel(pageAsset);
@@ -23,11 +24,12 @@ function inferPreloadTag(pageAsset) {
23
24
  .join(' ');
24
25
  return `<link ${attributes}>`;
25
26
  }
26
- function inferAssetTag(pageAsset) {
27
+ function inferAssetTag(pageAsset, pageContext) {
27
28
  const { src, assetType, mediaType } = pageAsset;
28
29
  if (assetType === 'script') {
29
30
  (0, utils_js_1.assert)(mediaType === 'text/javascript');
30
- return `<script src="${src}" ${scriptAttrs}></script>`;
31
+ const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
32
+ return `<script src="${src}" ${scriptCommonAttrs}${nonceAttr}></script>`;
31
33
  }
32
34
  if (assetType === 'style') {
33
35
  // WARNING: if changing following line, then also update https://github.com/vikejs/vike/blob/fae90a15d88e5e87ca9fcbb54cf2dc8773d2f229/vike/client/shared/removeFoucBuster.ts#L29
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.injectAssets__public = injectAssets__public;
4
- const utils_js_1 = require("../../utils.js");
4
+ const utils_js_1 = require("../../../utils.js");
5
5
  const injectAssets_js_1 = require("../injectAssets.js");
6
6
  // TO-DO/next-major-release: remove
7
7
  async function injectAssets__public(htmlString, pageContext) {
@@ -7,7 +7,7 @@ exports.createHtmlHeadIfMissing = createHtmlHeadIfMissing;
7
7
  exports.joinHtmlTags = joinHtmlTags;
8
8
  exports.injectAtOpeningTag = injectAtOpeningTag;
9
9
  exports.injectAtClosingTag = injectAtClosingTag;
10
- const utils_js_1 = require("../../utils.js");
10
+ const utils_js_1 = require("../../../utils.js");
11
11
  function injectHtmlTags(htmlString, htmlTags, position) {
12
12
  const htmlFragment = joinHtmlTags(htmlTags.filter((h) => h.position === position));
13
13
  if (htmlFragment) {
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeScriptTags = mergeScriptTags;
4
- const utils_js_1 = require("../../utils.js");
4
+ const csp_js_1 = require("../../csp.js");
5
+ const utils_js_1 = require("../../../utils.js");
5
6
  const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
6
7
  const scriptRE = /(<script\b(?:\s[^>]*>|>))(.*?)<\/script>/gims;
7
8
  const srcRE = /\bsrc\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im;
8
9
  const typeRE = /\btype\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im;
9
- function mergeScriptTags(scriptTagsHtml) {
10
+ function mergeScriptTags(scriptTagsHtml, pageContext) {
10
11
  let scriptTag = '';
11
12
  const scripts = parseScripts(scriptTagsHtml);
12
13
  // We need to merge module scripts to ensure execution order
@@ -35,7 +36,8 @@ function mergeScriptTags(scriptTagsHtml) {
35
36
  }
36
37
  });
37
38
  if (contents.length > 0) {
38
- scriptTag += `<script ${inferHtmlTags_js_1.scriptAttrs}>\n${contents.join('\n')}\n</script>`;
39
+ const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
40
+ scriptTag += `<script ${inferHtmlTags_js_1.scriptCommonAttrs}${nonceAttr}>\n${contents.join('\n')}\n</script>`;
39
41
  }
40
42
  }
41
43
  }
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.injectHtmlTagsToString = injectHtmlTagsToString;
4
4
  exports.injectHtmlTagsToStream = injectHtmlTagsToStream;
5
- const utils_js_1 = require("../utils.js");
6
- const assertPageContextProvidedByUser_js_1 = require("../../../shared/assertPageContextProvidedByUser.js");
5
+ const utils_js_1 = require("../../utils.js");
6
+ const assertPageContextProvidedByUser_js_1 = require("../../../../shared/assertPageContextProvidedByUser.js");
7
7
  const injectHtmlTags_js_1 = require("./injectAssets/injectHtmlTags.js");
8
8
  const getHtmlTags_js_1 = require("./injectAssets/getHtmlTags.js");
9
9
  const getViteDevScript_js_1 = require("./injectAssets/getViteDevScript.js");
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPropVal = getPropVal;
4
4
  exports.setPropVal = setPropVal;
5
5
  exports.getPropKeys = getPropKeys;
6
- const utils_js_1 = require("../utils.js");
6
+ const utils_js_1 = require("../../utils.js");
7
7
  // Get a nested property from an object using a dot-separated path such as 'user.id'
8
8
  function getPropVal(obj, prop) {
9
9
  const keys = getPropKeys(prop);
@@ -8,7 +8,7 @@ exports.dangerouslySkipEscape = dangerouslySkipEscape;
8
8
  exports.renderDocumentHtml = renderDocumentHtml;
9
9
  exports.isDocumentHtml = isDocumentHtml;
10
10
  exports.getHtmlString = getHtmlString;
11
- const utils_js_1 = require("../utils.js");
11
+ const utils_js_1 = require("../../utils.js");
12
12
  const injectAssets_js_1 = require("./injectAssets.js");
13
13
  const stream_js_1 = require("./stream.js");
14
14
  const react_streaming_js_1 = require("./stream/react-streaming.js");
@@ -7,13 +7,13 @@ exports.getPageContextClientSerialized = getPageContextClientSerialized;
7
7
  exports.getPageContextClientSerializedAbort = getPageContextClientSerializedAbort;
8
8
  exports.getGlobalContextClientSerialized = getGlobalContextClientSerialized;
9
9
  const stringify_1 = require("@brillout/json-serializer/stringify");
10
- const utils_js_1 = require("../utils.js");
11
- const error_page_js_1 = require("../../../shared/error-page.js");
12
- const addIs404ToPageProps_js_1 = require("../../../shared/addIs404ToPageProps.js");
10
+ const utils_js_1 = require("../../utils.js");
11
+ const error_page_js_1 = require("../../../../shared/error-page.js");
12
+ const addIs404ToPageProps_js_1 = require("../../../../shared/addIs404ToPageProps.js");
13
13
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
14
- const NOT_SERIALIZABLE_js_1 = require("../../../shared/NOT_SERIALIZABLE.js");
15
- const pageContextInitIsPassedToClient_js_1 = require("../../../shared/misc/pageContextInitIsPassedToClient.js");
16
- const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
14
+ const NOT_SERIALIZABLE_js_1 = require("../../../../shared/NOT_SERIALIZABLE.js");
15
+ const pageContextInitIsPassedToClient_js_1 = require("../../../../shared/misc/pageContextInitIsPassedToClient.js");
16
+ const isServerSideError_js_1 = require("../../../../shared/misc/isServerSideError.js");
17
17
  const propKeys_js_1 = require("./propKeys.js");
18
18
  const passToClientBuiltInPageContext = [
19
19
  'abortReason',
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.isStreamFromReactStreamingPackage = isStreamFromReactStreamingPackage;
5
5
  exports.streamFromReactStreamingPackageToString = streamFromReactStreamingPackageToString;
6
6
  exports.getStreamOfReactStreamingPackage = getStreamOfReactStreamingPackage;
7
- const utils_js_1 = require("../../utils.js");
7
+ const utils_js_1 = require("../../../utils.js");
8
8
  const stream_js_1 = require("../stream.js");
9
9
  function streamFromReactStreamingPackageToString(stream) {
10
10
  if (stream.pipe) {
@@ -24,7 +24,7 @@ exports.streamReadableWebToString = streamReadableWebToString;
24
24
  exports.streamPipeNodeToString = streamPipeNodeToString;
25
25
  exports.isStreamWritableWeb = isStreamWritableWeb;
26
26
  exports.isStreamWritableNode = isStreamWritableNode;
27
- const utils_js_1 = require("../utils.js");
27
+ const utils_js_1 = require("../../utils.js");
28
28
  const react_streaming_js_1 = require("./stream/react-streaming.js");
29
29
  const import_1 = require("@brillout/import");
30
30
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
@@ -10,13 +10,14 @@ const findPageConfig_js_1 = require("../../../shared/page-configs/findPageConfig
10
10
  const analyzePage_js_1 = require("./analyzePage.js");
11
11
  const loadAndParseVirtualFilePageEntry_js_1 = require("../../../shared/page-configs/loadAndParseVirtualFilePageEntry.js");
12
12
  const execHookServer_js_1 = require("./execHookServer.js");
13
- const getCacheControl_js_1 = require("./getCacheControl.js");
13
+ const headersResponse_js_1 = require("./headersResponse.js");
14
+ const csp_js_1 = require("./csp.js");
14
15
  async function loadPageConfigsLazyServerSide(pageContext) {
15
16
  (0, utils_js_1.objectAssign)(pageContext, {
16
17
  _pageConfig: (0, findPageConfig_js_1.findPageConfig)(pageContext._globalContext._pageConfigs, pageContext.pageId),
17
18
  });
18
19
  // Load the page's + files
19
- (0, utils_js_1.updateType)(pageContext, await loadPageUserFiles(pageContext));
20
+ (0, utils_js_1.objectAssign)(pageContext, await loadPageUserFiles(pageContext));
20
21
  // Resolve new computed pageContext properties
21
22
  (0, utils_js_1.updateType)(pageContext, await resolvePageContext(pageContext));
22
23
  // Execute +onCreatePageContext
@@ -55,12 +56,13 @@ async function resolvePageContext(pageContext) {
55
56
  passToClient.push(...valS);
56
57
  });
57
58
  }
59
+ (0, utils_js_1.objectAssign)(pageContext, await (0, csp_js_1.resolvePageContextCspNone)(pageContext));
58
60
  (0, utils_js_1.objectAssign)(pageContext, {
59
61
  Page: pageContext.exports.Page,
60
62
  _isHtmlOnly: isHtmlOnly,
61
63
  _passToClient: passToClient,
62
- headersResponse: resolveHeadersResponse(pageContext),
63
64
  });
65
+ (0, utils_js_1.objectAssign)(pageContext, await (0, headersResponse_js_1.resolveHeadersResponseEarly)(pageContext));
64
66
  (0, utils_js_1.objectAssign)(pageContext, {
65
67
  __getPageAssets: async () => {
66
68
  if ('_pageAssets' in pageContext) {
@@ -103,43 +105,20 @@ async function resolvePageContext(pageContext) {
103
105
  return pageContext;
104
106
  }
105
107
  async function loadPageUserFiles(pageContext) {
106
- const [{ configPublicPageLazy }] = await Promise.all([
107
- loadPageUserFiles_v1Design(pageContext),
108
+ const [{ pageContextAddendum }] = await Promise.all([
109
+ (async () => {
110
+ const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageContext._pageFilesAll, pageContext.pageId);
111
+ const isDev = !pageContext._globalContext._isProduction;
112
+ const pageConfigLoaded = !pageContext._pageConfig
113
+ ? null
114
+ : await (0, loadAndParseVirtualFilePageEntry_js_1.loadAndParseVirtualFilePageEntry)(pageContext._pageConfig, isDev);
115
+ await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
116
+ const pageContextAddendum = (0, resolveVikeConfigPublic_js_1.resolvePageContextConfig)(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
117
+ return { pageContextAddendum };
118
+ })(),
108
119
  (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
109
120
  sharedPageFilesAlreadyLoaded: true,
110
121
  }),
111
122
  ]);
112
- (0, utils_js_1.objectAssign)(pageContext, configPublicPageLazy);
113
- return pageContext;
114
- }
115
- async function loadPageUserFiles_v1Design(pageContext) {
116
- const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageContext._pageFilesAll, pageContext.pageId);
117
- const isDev = !pageContext._globalContext._isProduction;
118
- const pageConfigLoaded = !pageContext._pageConfig
119
- ? null
120
- : await (0, loadAndParseVirtualFilePageEntry_js_1.loadAndParseVirtualFilePageEntry)(pageContext._pageConfig, isDev);
121
- await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
122
- const configPublicPageLazy = (0, resolveVikeConfigPublic_js_1.resolveVikeConfigPublicPageLazyLoaded)(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
123
- return {
124
- configPublicPageLazy,
125
- pageFilesLoaded: pageFilesServerSide,
126
- };
127
- }
128
- function resolveHeadersResponse(pageContext) {
129
- const headersResponse = mergeHeaders(pageContext.config.headersResponse);
130
- if (!headersResponse.get('Cache-Control')) {
131
- const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs);
132
- if (cacheControl)
133
- headersResponse.set('Cache-Control', cacheControl);
134
- }
135
- return headersResponse;
136
- }
137
- function mergeHeaders(headersList = []) {
138
- const headersMerged = new Headers();
139
- headersList.forEach((headers) => {
140
- new Headers(headers).forEach((value, key) => {
141
- headersMerged.append(key, value);
142
- });
143
- });
144
- return headersMerged;
123
+ return pageContextAddendum;
145
124
  }
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.renderPageAfterRoute = renderPageAfterRoute;
7
7
  exports.prerenderPage = prerenderPage;
8
8
  const error_page_js_1 = require("../../../shared/error-page.js");
9
- const renderHtml_js_1 = require("../html/renderHtml.js");
9
+ const renderHtml_js_1 = require("./html/renderHtml.js");
10
10
  const utils_js_1 = require("../utils.js");
11
- const serializeContext_js_1 = require("../html/serializeContext.js");
11
+ const serializeContext_js_1 = require("./html/serializeContext.js");
12
12
  const createHttpResponse_js_1 = require("./createHttpResponse.js");
13
13
  const loadPageConfigsLazyServerSide_js_1 = require("./loadPageConfigsLazyServerSide.js");
14
14
  const execHookOnRenderHtml_js_1 = require("./execHookOnRenderHtml.js");