vike 0.4.235 → 0.4.236-commit-64431e7

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 (227) hide show
  1. package/dist/cjs/__internal/index.js +1 -1
  2. package/dist/cjs/client/shared/createGetGlobalContextClient.js +2 -3
  3. package/dist/cjs/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
  4. package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
  5. package/dist/cjs/node/cli/index.js +1 -1
  6. package/dist/cjs/node/createPageRenderer.js +1 -1
  7. package/dist/cjs/node/importBuild.js +1 -1
  8. package/dist/cjs/node/prerender/context.js +1 -1
  9. package/dist/cjs/node/prerender/index.js +1 -1
  10. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +2 -2
  11. package/dist/cjs/node/prerender/runPrerender.js +9 -13
  12. package/dist/cjs/node/runtime/globalContext.js +109 -28
  13. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +8 -1
  14. package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  15. package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
  16. package/dist/cjs/node/runtime/html/serializeContext.js +73 -15
  17. package/dist/cjs/node/runtime/index-deprecated.js +1 -1
  18. package/dist/cjs/node/runtime/index.js +1 -1
  19. package/dist/cjs/node/runtime/page-files/setup.js +1 -1
  20. package/dist/cjs/node/runtime/renderPage/assertArguments.js +1 -1
  21. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +9 -6
  22. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  23. package/dist/cjs/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
  24. package/dist/cjs/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +9 -9
  25. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +4 -4
  26. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  27. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +15 -12
  28. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +35 -16
  29. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
  30. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
  31. package/dist/cjs/node/runtime/renderPage.js +4 -6
  32. package/dist/cjs/node/runtime/utils.js +1 -0
  33. package/dist/cjs/node/vite/index.js +2 -0
  34. package/dist/cjs/node/vite/onLoad.js +1 -1
  35. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -3
  36. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +3 -2
  37. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
  38. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +16 -7
  39. package/dist/cjs/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
  40. package/dist/cjs/node/vite/plugins/pluginCommon.js +9 -4
  41. package/dist/cjs/node/vite/plugins/pluginDev.js +1 -1
  42. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +4 -4
  43. package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +2 -2
  44. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +1 -1
  45. package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +1 -1
  46. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +1 -1
  47. package/dist/cjs/node/vite/plugins/pluginViteRPC.js +42 -0
  48. package/dist/cjs/node/vite/shared/addSsrMiddleware.js +1 -1
  49. package/dist/cjs/node/vite/shared/applyRegExWithMagicString.js +1 -0
  50. package/dist/cjs/node/vite/shared/loggerNotProd.js +10 -6
  51. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
  52. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
  53. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
  54. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
  55. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +6 -6
  56. package/dist/cjs/shared/RenderErrorPage.js +1 -1
  57. package/dist/cjs/shared/abort.js +1 -1
  58. package/dist/cjs/shared/createGlobalContextShared.js +28 -7
  59. package/dist/cjs/shared/createPageContextShared.js +1 -2
  60. package/dist/cjs/shared/determinePageIdOld.js +1 -1
  61. package/dist/cjs/shared/error-page.js +3 -3
  62. package/dist/cjs/shared/getPageContextUrlComputed.js +4 -4
  63. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +1 -1
  64. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
  65. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  66. package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +2 -2
  67. package/dist/cjs/shared/getPageFiles/assert_exports_old_design.js +1 -1
  68. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  69. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +1 -1
  70. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +1 -1
  71. package/dist/cjs/shared/getPageFiles/parseVirtualFileExports.js +1 -1
  72. package/dist/cjs/shared/getProxyForPublicUsage.js +3 -3
  73. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +4 -3
  74. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +10 -10
  75. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  76. package/dist/cjs/shared/preparePageContextForPublicUsage.js +5 -5
  77. package/dist/cjs/shared/route/abort.js +1 -1
  78. package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  79. package/dist/cjs/shared/route/execHookGuard.js +1 -1
  80. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +1 -1
  81. package/dist/cjs/shared/route/index.js +1 -1
  82. package/dist/cjs/shared/route/loadPageRoutes.js +10 -4
  83. package/dist/cjs/shared/route/resolveRouteFunction.js +3 -3
  84. package/dist/cjs/shared/route/resolveRouteString.js +1 -1
  85. package/dist/cjs/shared/route/routing.js +1 -1
  86. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  87. package/dist/cjs/utils/assertSetup.js +11 -8
  88. package/dist/cjs/utils/debug.js +1 -0
  89. package/dist/cjs/utils/debugGlob.js +1 -1
  90. package/dist/cjs/utils/getViteRPC.js +79 -0
  91. package/dist/cjs/utils/parseNpmPackage.js +1 -1
  92. package/dist/esm/__internal/index.d.ts +1 -1
  93. package/dist/esm/__internal/index.js +1 -1
  94. package/dist/esm/client/node.js +1 -1
  95. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.d.ts +1 -1
  96. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
  97. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +10 -2
  98. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +6 -6
  99. package/dist/esm/client/runtime-client-routing/globalContext.d.ts +1 -1
  100. package/dist/esm/client/runtime-client-routing/index.js +1 -1
  101. package/dist/esm/client/runtime-client-routing/isClientSideRoutable.js +1 -1
  102. package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.js +6 -6
  103. package/dist/esm/client/runtime-client-routing/prefetch.js +10 -10
  104. package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +3 -1
  105. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +3 -3
  106. package/dist/esm/client/runtime-client-routing/skipLink.js +1 -1
  107. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +1 -1
  108. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +2 -2
  109. package/dist/esm/client/runtime-server-routing/globalContext.d.ts +1 -1
  110. package/dist/esm/client/runtime-server-routing/index.js +1 -1
  111. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +5 -4
  112. package/dist/esm/client/shared/createGetGlobalContextClient.js +1 -2
  113. package/dist/esm/client/shared/execHookOnRenderClient.js +1 -1
  114. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
  115. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
  116. package/dist/esm/node/api/prepareViteApiCall.js +1 -1
  117. package/dist/esm/node/cli/index.js +1 -1
  118. package/dist/esm/node/createPageRenderer.js +1 -1
  119. package/dist/esm/node/importBuild.js +1 -1
  120. package/dist/esm/node/prerender/context.js +1 -1
  121. package/dist/esm/node/prerender/index.js +1 -1
  122. package/dist/esm/node/prerender/resolvePrerenderConfig.js +2 -2
  123. package/dist/esm/node/prerender/runPrerender.d.ts +42 -133
  124. package/dist/esm/node/prerender/runPrerender.js +9 -13
  125. package/dist/esm/node/runtime/globalContext.d.ts +39 -59
  126. package/dist/esm/node/runtime/globalContext.js +112 -31
  127. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +8 -1
  128. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  129. package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
  130. package/dist/esm/node/runtime/html/serializeContext.d.ts +7 -1
  131. package/dist/esm/node/runtime/html/serializeContext.js +73 -15
  132. package/dist/esm/node/runtime/index-deprecated.js +1 -1
  133. package/dist/esm/node/runtime/index.js +1 -1
  134. package/dist/esm/node/runtime/page-files/setup.js +1 -1
  135. package/dist/esm/node/runtime/renderPage/assertArguments.js +1 -1
  136. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -0
  137. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +9 -6
  138. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +12 -35
  139. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  140. package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
  141. package/dist/esm/node/runtime/renderPage/getCacheControl.d.ts +5 -0
  142. package/dist/esm/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +8 -9
  143. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +4 -4
  144. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  145. package/dist/esm/node/runtime/renderPage/getPageAssets.js +16 -13
  146. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +8 -4
  147. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +36 -17
  148. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
  149. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +24 -68
  150. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
  151. package/dist/esm/node/runtime/renderPage.d.ts +13 -36
  152. package/dist/esm/node/runtime/renderPage.js +4 -6
  153. package/dist/esm/node/runtime/utils.d.ts +1 -0
  154. package/dist/esm/node/runtime/utils.js +1 -0
  155. package/dist/esm/node/vite/index.js +3 -1
  156. package/dist/esm/node/vite/onLoad.js +1 -1
  157. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +1 -1
  158. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -3
  159. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.d.ts +1 -1
  160. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +3 -2
  161. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
  162. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +16 -7
  163. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +0 -1
  164. package/dist/esm/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
  165. package/dist/esm/node/vite/plugins/pluginCommon.d.ts +3 -0
  166. package/dist/esm/node/vite/plugins/pluginCommon.js +9 -4
  167. package/dist/esm/node/vite/plugins/pluginDev.js +1 -1
  168. package/dist/esm/node/vite/plugins/pluginEnvVars.js +1 -1
  169. package/dist/esm/node/vite/plugins/pluginFileEnv.js +1 -1
  170. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +1 -1
  171. package/dist/esm/node/vite/plugins/pluginViteRPC.d.ts +25 -0
  172. package/dist/esm/node/vite/plugins/pluginViteRPC.js +40 -0
  173. package/dist/esm/node/vite/shared/addSsrMiddleware.js +1 -1
  174. package/dist/esm/node/vite/shared/applyRegExWithMagicString.js +1 -0
  175. package/dist/esm/node/vite/shared/loggerNotProd.js +10 -0
  176. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
  177. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
  178. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
  179. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
  180. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +6 -6
  181. package/dist/esm/shared/RenderErrorPage.js +1 -1
  182. package/dist/esm/shared/abort.js +1 -1
  183. package/dist/esm/shared/createGlobalContextShared.d.ts +3 -3
  184. package/dist/esm/shared/createGlobalContextShared.js +28 -7
  185. package/dist/esm/shared/createPageContextShared.d.ts +2 -3
  186. package/dist/esm/shared/createPageContextShared.js +1 -2
  187. package/dist/esm/shared/determinePageIdOld.js +1 -1
  188. package/dist/esm/shared/error-page.js +3 -3
  189. package/dist/esm/shared/getPageContextUrlComputed.js +4 -4
  190. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
  191. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
  192. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  193. package/dist/esm/shared/getPageFiles/analyzePageClientSide.js +2 -2
  194. package/dist/esm/shared/getPageFiles/assert_exports_old_design.js +1 -1
  195. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  196. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +1 -1
  197. package/dist/esm/shared/getPageFiles/getPageFileObject.js +1 -1
  198. package/dist/esm/shared/getPageFiles/parseVirtualFileExports.js +1 -1
  199. package/dist/esm/shared/getProxyForPublicUsage.js +1 -1
  200. package/dist/esm/shared/hooks/getHook.js +1 -1
  201. package/dist/esm/shared/page-configs/getConfigDefinedAt.js +4 -3
  202. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +12 -12
  203. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  204. package/dist/esm/shared/preparePageContextForPublicUsage.js +5 -5
  205. package/dist/esm/shared/route/abort.js +1 -1
  206. package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  207. package/dist/esm/shared/route/execHookGuard.js +1 -1
  208. package/dist/esm/shared/route/execHookOnBeforeRoute.js +1 -1
  209. package/dist/esm/shared/route/index.js +1 -1
  210. package/dist/esm/shared/route/loadPageRoutes.d.ts +5 -0
  211. package/dist/esm/shared/route/loadPageRoutes.js +10 -4
  212. package/dist/esm/shared/route/resolveRouteFunction.js +3 -3
  213. package/dist/esm/shared/route/resolveRouteString.js +1 -1
  214. package/dist/esm/shared/route/routing.js +1 -1
  215. package/dist/esm/types/Config.d.ts +9 -1
  216. package/dist/esm/types/PageContext.d.ts +8 -2
  217. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  218. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  219. package/dist/esm/utils/assertSetup.js +11 -8
  220. package/dist/esm/utils/debug.d.ts +1 -1
  221. package/dist/esm/utils/debug.js +1 -0
  222. package/dist/esm/utils/debugGlob.js +1 -1
  223. package/dist/esm/utils/getViteRPC.d.ts +6 -0
  224. package/dist/esm/utils/getViteRPC.js +77 -0
  225. package/dist/esm/utils/parseNpmPackage.js +1 -1
  226. package/package.json +12 -6
  227. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +0 -5
@@ -32,20 +32,41 @@ const passToClientBuiltInPageContext = [
32
32
  const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError_js_1.isServerSideError];
33
33
  function getPageContextClientSerialized(pageContext) {
34
34
  const passToClientPageContext = getPassToClientPageContext(pageContext);
35
- const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
36
- if (passToClientPageContext.some((prop) => (0, propKeys_js_1.getPropVal)(pageContext._pageContextInit, prop))) {
35
+ const getObj = (passToClientEntry) => {
36
+ if (passToClientEntry.once)
37
+ return undefined; // pass it to client-side globalContext
38
+ return { obj: pageContext, objName: 'pageContext' };
39
+ };
40
+ const res = applyPassToClient(passToClientPageContext, getObj);
41
+ const pageContextClient = res.objClient;
42
+ const pageContextClientProps = res.objClientProps;
43
+ if (pageContextClientProps.some((prop) => (0, propKeys_js_1.getPropVal)(pageContext._pageContextInit, prop))) {
37
44
  pageContextClient[pageContextInitIsPassedToClient_js_1.pageContextInitIsPassedToClient] = true;
38
45
  }
39
- const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
46
+ const pageContextClientSerialized = serializeObject(pageContextClient, passToClientPageContext, getObj);
40
47
  return pageContextClientSerialized;
41
48
  }
42
49
  function getGlobalContextClientSerialized(pageContext) {
43
50
  const passToClient = pageContext._passToClient;
44
- const globalContextClient = applyPassToClient(passToClient, pageContext._globalContext);
45
- const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
51
+ const globalContext = pageContext._globalContext;
52
+ const getObj = ({ prop, once }) => {
53
+ if (once && (0, propKeys_js_1.getPropVal)(pageContext, prop)) {
54
+ (0, utils_js_1.assert)(typeof pageContext.isClientSideNavigation === 'boolean');
55
+ if (!pageContext.isClientSideNavigation) {
56
+ return { obj: pageContext, objName: 'pageContext' }; // pass it to client-side globalContext
57
+ }
58
+ else {
59
+ return undefined; // already passed to client-side
60
+ }
61
+ }
62
+ return { obj: globalContext, objName: 'globalContext' };
63
+ };
64
+ const res = applyPassToClient(passToClient, getObj);
65
+ const globalContextClient = res.objClient;
66
+ const globalContextClientSerialized = serializeObject(globalContextClient, passToClient, getObj);
46
67
  return globalContextClientSerialized;
47
68
  }
48
- function serializeObject(obj, objName, passToClient) {
69
+ function serializeObject(obj, passToClient, getObj) {
49
70
  let serialized;
50
71
  try {
51
72
  serialized = serializeValue(obj);
@@ -54,11 +75,15 @@ function serializeObject(obj, objName, passToClient) {
54
75
  const h = (s) => picocolors_1.default.cyan(s);
55
76
  let hasWarned = false;
56
77
  const propsNonSerializable = [];
57
- passToClient.forEach((prop) => {
78
+ passToClient.forEach((entry) => {
79
+ const entryNormalized = normalizePassToClientEntry(entry);
80
+ const { prop } = entryNormalized;
58
81
  const res = (0, propKeys_js_1.getPropVal)(obj, prop);
59
82
  if (!res)
60
83
  return;
61
84
  const { value } = res;
85
+ const { objName } = getObj(entryNormalized) ?? {};
86
+ (0, utils_js_1.assert)(objName);
62
87
  const varName = `${objName}${(0, propKeys_js_1.getPropKeys)(prop).map(utils_js_1.getPropAccessNotation).join('')}`;
63
88
  try {
64
89
  serializeValue(value, varName);
@@ -108,7 +133,20 @@ function serializeObject(obj, objName, passToClient) {
108
133
  return serialized;
109
134
  }
110
135
  function serializeValue(value, varName) {
111
- return (0, stringify_1.stringify)(value, { forbidReactElements: true, valueName: varName });
136
+ return (0, stringify_1.stringify)(value, {
137
+ forbidReactElements: true,
138
+ valueName: varName,
139
+ // Prevent Google from crawling URLs in JSON:
140
+ // - https://github.com/vikejs/vike/discussions/2541#discussioncomment-13660198
141
+ // - https://github.com/vikejs/vike/discussions/2277
142
+ // - https://github.com/vikejs/vike/pull/2542
143
+ replacer(_key, value) {
144
+ if (typeof value === 'string' && value.startsWith('/')) {
145
+ // No need to use a reviver: https://github.com/brillout/json-serializer/blob/70fc8ed3741306391b51655b05df24e6963d1fdb/test/main.spec.ts#L74-L80
146
+ return { replacement: (value = '!' + value) };
147
+ }
148
+ },
149
+ });
112
150
  }
113
151
  function getPassToClientPageContext(pageContext) {
114
152
  let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
@@ -144,7 +182,7 @@ function getPageContextClientSerializedAbort(pageContext) {
144
182
  (0, utils_js_1.assert)(unknownProps.length === 0);
145
183
  }
146
184
  else {
147
- // TODO/v1-release: remove
185
+ // TO-DO/next-major-release: remove
148
186
  (0, utils_js_1.assertWarning)(unknownProps.length === 0, [
149
187
  "The following pageContext values won't be available on the client-side:",
150
188
  unknownProps.map((p) => ` pageContext[${JSON.stringify(p)}]`),
@@ -155,16 +193,36 @@ function getPageContextClientSerializedAbort(pageContext) {
155
193
  }
156
194
  return serializeValue(pageContext);
157
195
  }
158
- function applyPassToClient(passToClient, pageContext) {
159
- const pageContextClient = {};
160
- passToClient.forEach((prop) => {
196
+ function applyPassToClient(passToClient, getObj) {
197
+ const objClient = {};
198
+ const objClientProps = [];
199
+ passToClient.forEach((entry) => {
200
+ const entryNormalized = normalizePassToClientEntry(entry);
201
+ const { prop } = entryNormalized;
202
+ const { obj } = getObj(entryNormalized) ?? {};
203
+ if (!obj)
204
+ return;
161
205
  // Get value from pageContext
162
- const res = (0, propKeys_js_1.getPropVal)(pageContext, prop);
206
+ const res = (0, propKeys_js_1.getPropVal)(obj, prop);
163
207
  if (!res)
164
208
  return;
165
209
  const { value } = res;
166
210
  // Set value to pageContextClient
167
- (0, propKeys_js_1.setPropVal)(pageContextClient, prop, value);
211
+ (0, propKeys_js_1.setPropVal)(objClient, prop, value);
212
+ objClientProps.push(prop);
168
213
  });
169
- return pageContextClient;
214
+ return { objClient, objClientProps };
215
+ }
216
+ function normalizePassToClientEntry(entry) {
217
+ let once;
218
+ let prop;
219
+ if (typeof entry === 'string') {
220
+ prop = entry;
221
+ once = false;
222
+ }
223
+ else {
224
+ prop = entry.prop;
225
+ once = entry.once ?? false;
226
+ }
227
+ return { prop, once };
170
228
  }
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- // TO-DO/soon: point package.json#exports['./server'] to this file.
20
+ // TO-DO/eventually: point package.json#exports['./server'] to this file.
21
21
  // - Write migration guide, see comment below.
22
22
  __exportStar(require("./index.js"), exports);
23
23
  const utils_js_1 = require("./utils.js");
@@ -39,7 +39,7 @@ Object.defineProperty(exports, "getGlobalContextSync", { enumerable: true, get:
39
39
  Object.defineProperty(exports, "getGlobalContextAsync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextAsync; } });
40
40
  var index_js_1 = require("../runtime-dev/index.js");
41
41
  Object.defineProperty(exports, "createDevMiddleware", { enumerable: true, get: function () { return index_js_1.createDevMiddleware; } });
42
- // TODO/v1-release: remove
42
+ // TO-DO/next-major-release: remove
43
43
  // Deprecated exports
44
44
  __exportStar(require("../../types/index-dreprecated.js"), exports);
45
45
  var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
2
+ // TO-DO/next-major-release: remove https://github.com/vikejs/vike/issues/2122
3
3
  // This doesn't do anything anymore. (It's kept to avoid introducing a breaking change.)
@@ -15,7 +15,7 @@ function assertArguments(...args) {
15
15
  showStackTrace: true,
16
16
  });
17
17
  (0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(pageContextInit), `${prefix} called with ${picocolors_1.default.code(`typeof pageContextInit === ${JSON.stringify(typeof pageContextInit)}`)} but ${picocolors_1.default.code('pageContextInit')} should be an object.`, { showStackTrace: true });
18
- // TODO/v1-release: remove
18
+ // TO-DO/next-major-release: remove
19
19
  if ('url' in pageContextInit) {
20
20
  (0, utils_js_1.assertWarning)(false, '`pageContextInit.url` has been renamed to `pageContextInit.urlOriginal`: replace `renderPage({ url })` with `renderPage({ urlOriginal })`. (See https://vike.dev/migration/0.4.23 for more information.)', { showStackTrace: true, onlyOnce: true });
21
21
  pageContextInit.urlOriginal = pageContextInit.url;
@@ -11,8 +11,8 @@ const utils_js_1 = require("../utils.js");
11
11
  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
- const getCacheControl_js_1 = require("./createHttpResponse/getCacheControl.js");
15
14
  const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNoInfiniteHttpRedirect.js");
15
+ const getCacheControl_js_1 = require("./getCacheControl.js");
16
16
  async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
17
17
  let statusCode = pageContext.abortStatusCode;
18
18
  if (!statusCode) {
@@ -31,10 +31,13 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
31
31
  }
32
32
  const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
33
33
  const headers = [];
34
- const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs, statusCode);
35
- if (cacheControl) {
36
- headers.push(['Cache-Control', cacheControl]);
37
- }
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);
38
41
  return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
39
42
  }
40
43
  function createHttpResponse404(errMsg404) {
@@ -104,7 +107,7 @@ function createHttpResponse(statusCode, contentType, headers, htmlRender, earlyH
104
107
  return {
105
108
  statusCode,
106
109
  headers,
107
- // TODO/v1-release: remove
110
+ // TO-DO/next-major-release: remove
108
111
  get contentType() {
109
112
  (0, utils_js_1.assertWarning)(false, 'pageContext.httpResponse.contentType is deprecated and will be removed in the next major release. Use pageContext.httpResponse.headers instead, see https://vike.dev/migration/0.4.134', { onlyOnce: true });
110
113
  return contentType;
@@ -5,7 +5,7 @@ exports.createPageContextServerSideWithoutGlobalContext = createPageContextServe
5
5
  const utils_js_1 = require("../utils.js");
6
6
  const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
7
7
  const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
8
- async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
8
+ function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
9
9
  urlHandler: null,
10
10
  isClientSideNavigation: false,
11
11
  }, }) {
@@ -13,7 +13,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
13
13
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
14
14
  (0, utils_js_1.objectAssign)(pageContextCreated, {
15
15
  _globalContext: globalContext,
16
- _pageFilesAll: globalContext._pageFilesAll, // TODO/v1-release: remove
16
+ _pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
17
17
  // We use pageContext._baseServer and pageContext._baseAssets instead of pageContext._globalContext.baseServer and pageContext._globalContext.baseAssets because the Base URLs can (eventually one day if needed) be made non-global
18
18
  _baseServer: globalContext.baseServer,
19
19
  _baseAssets: globalContext.baseAssets,
@@ -35,7 +35,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
35
35
  }
36
36
  else if (pageContextInit.headers) {
37
37
  headers = pageContextInit.headers;
38
- // TODO/next-major-release: remove
38
+ // TO-DO/next-major-release: remove
39
39
  (0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
40
40
  }
41
41
  else {
@@ -43,7 +43,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
43
43
  }
44
44
  (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
45
45
  }
46
- const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal);
46
+ const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._vikeConfigPublicGlobal);
47
47
  (0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
48
48
  return pageContextCreated;
49
49
  }
@@ -8,7 +8,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
8
8
  return;
9
9
  }
10
10
  const hooks = await (0, execHookServer_js_1.execHookServer)('data', pageContext);
11
- const dataHook = hooks[0]; // TO-DO/soon: support cumulative
11
+ const dataHook = hooks[0]; // TO-DO/soon/cumulative-hooks: support cumulative
12
12
  if (dataHook) {
13
13
  // Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data
14
14
  const pageContextFromHook = {
@@ -21,7 +21,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
21
21
  }
22
22
  }
23
23
  const res = await (0, execHookServer_js_1.execHookServer)('onBeforeRender', pageContext);
24
- const onBeforeRenderHook = res[0]; // TO-DO/soon: support cumulative
24
+ const onBeforeRenderHook = res[0]; // TO-DO/soon/cumulative-hooks: support cumulative
25
25
  if (onBeforeRenderHook) {
26
26
  const { hookReturn } = onBeforeRenderHook;
27
27
  (0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookReturn, onBeforeRenderHook.hookFilePath);
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cacheControlDisable = void 0;
3
4
  exports.getCacheControl = getCacheControl;
4
- const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
5
- const getConfigValueRuntime_js_1 = require("../../../../shared/page-configs/getConfigValueRuntime.js");
6
- const defaultValue = 'no-store, max-age=0';
7
- function getCacheControl(pageId, pageConfigs, statusCode) {
8
- // TODO/v1-release: remove
5
+ const helpers_js_1 = require("../../../shared/page-configs/helpers.js");
6
+ const getConfigValueRuntime_js_1 = require("../../../shared/page-configs/getConfigValueRuntime.js");
7
+ const cacheControlDisable = 'no-store, max-age=0';
8
+ exports.cacheControlDisable = cacheControlDisable;
9
+ function getCacheControl(pageId, pageConfigs) {
10
+ // TO-DO/next-major-release: remove this line
9
11
  if (pageConfigs.length === 0)
10
- return defaultValue;
11
- if (statusCode > 499)
12
- return defaultValue;
12
+ return cacheControlDisable;
13
13
  if (pageId) {
14
14
  const pageConfig = (0, helpers_js_1.getPageConfig)(pageId, pageConfigs);
15
15
  const configValue = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'cacheControl', 'string');
@@ -20,5 +20,5 @@ function getCacheControl(pageId, pageConfigs, statusCode) {
20
20
  // - Disabling caching by default is the safest strategy, because caching is problematic with authentication as described in https://github.com/vikejs/vike/issues/1275#issuecomment-1824366875
21
21
  // - Are there use cases when we don't need to disable caching?
22
22
  // - When there isn't any <script id="vike_pageContext" type="application/json"> then we can safely have caching. (We don't implement this exception because we're lazy and it's quite a rare situation.)
23
- return defaultValue;
23
+ return cacheControlDisable;
24
24
  }
@@ -61,7 +61,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
61
61
  const body = await (0, renderHtml_js_1.getHtmlString)(htmlRender);
62
62
  return body;
63
63
  },
64
- // TODO/v1-release: remove
64
+ // TO-DO/next-major-release: remove
65
65
  async getNodeStream() {
66
66
  (0, utils_js_1.assertWarning)(false, '`pageContext.httpResponse.getNodeStream()` is outdated, use `pageContext.httpResponse.getReadableNodeStream()` instead. ' +
67
67
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -71,7 +71,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
71
71
  }
72
72
  return nodeStream;
73
73
  },
74
- // TODO/v1-release: remove
74
+ // TO-DO/next-major-release: remove
75
75
  getWebStream() {
76
76
  (0, utils_js_1.assertWarning)(false, '`pageContext.httpResponse.getWebStream(res)` is outdated, use `pageContext.httpResponse.getReadableWebStream(res)` instead. ' +
77
77
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -81,7 +81,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
81
81
  }
82
82
  return webStream;
83
83
  },
84
- // TODO/v1-release: remove
84
+ // TO-DO/next-major-release: remove
85
85
  pipeToWebWritable(writable) {
86
86
  (0, utils_js_1.assertWarning)(false, '`pageContext.httpResponse.pipeToWebWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
87
87
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -90,7 +90,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
90
90
  (0, utils_js_1.assertUsage)(false, getErrMsg(htmlRender, renderHook, 'pipeToWebWritable()'));
91
91
  }
92
92
  },
93
- // TODO/v1-release: remove
93
+ // TO-DO/next-major-release: remove
94
94
  pipeToNodeWritable(writable) {
95
95
  (0, utils_js_1.assertWarning)(false, '`pageContext.httpResponse.pipeToNodeWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
96
96
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -11,7 +11,7 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
11
11
  clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
12
12
  if (eagerlyImported)
13
13
  return; // Eagerly imported assets aren't imported with import() and therefore don't create a new Rollup entry and aren't listed in the manifest file
14
- // TODO/v1-release: remove
14
+ // TO-DO/next-major-release: remove
15
15
  if (includeAssetsImportedByServer &&
16
16
  onlyAssets &&
17
17
  id.includes('.page.server.') &&
@@ -16,18 +16,11 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
16
16
  const globalContext = pageContext._globalContext;
17
17
  const { _isProduction: isProduction } = globalContext;
18
18
  const isDev = !isProduction;
19
- let assetUrls;
20
- let clientEntriesSrc;
21
- if (isDev) {
22
- const { _viteDevServer: viteDevServer } = globalContext;
23
- clientEntriesSrc = clientEntries.map((clientEntry) => globalObject.resolveClientEntriesDev(clientEntry, viteDevServer));
24
- assetUrls = await (0, retrieveAssetsDev_js_1.retrieveAssetsDev)(clientDependencies, viteDevServer);
25
- }
26
- else {
27
- const { assetsManifest } = globalContext;
28
- clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, assetsManifest));
29
- assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, assetsManifest, resolveIncludeAssetsImportedByServer(pageContext._globalContext.config));
30
- }
19
+ const { assetUrls, clientEntriesSrc } = isDev
20
+ ? !globalContext._viteDevServer
21
+ ? await (0, utils_js_1.getViteRPC)().retrievePageAssetsDevRPC(clientDependencies, clientEntries)
22
+ : await retrievePageAssetsDev(globalContext._viteDevServer, clientDependencies, clientEntries)
23
+ : retrievePageAssetsProd(globalContext.assetsManifest, clientDependencies, clientEntries, resolveIncludeAssetsImportedByServer(globalContext.config));
31
24
  let pageAssets = [];
32
25
  (0, utils_js_1.unique)([...clientEntriesSrc, ...assetUrls]).forEach((src) => {
33
26
  const { mediaType = null, assetType = null } = (0, inferMediaType_js_1.inferMediaType)(src) || {};
@@ -61,6 +54,16 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
61
54
  await (0, sortPageAssetsForEarlyHintsHeader_js_1.sortPageAssetsForEarlyHintsHeader)(pageAssets, isProduction);
62
55
  return pageAssets;
63
56
  }
57
+ async function retrievePageAssetsDev(viteDevServer, clientDependencies, clientEntries) {
58
+ const clientEntriesSrc = clientEntries.map((clientEntry) => globalObject.resolveClientEntriesDev(clientEntry, viteDevServer));
59
+ const assetUrls = await (0, retrieveAssetsDev_js_1.retrieveAssetsDev)(clientDependencies, viteDevServer);
60
+ return { clientEntriesSrc, assetUrls };
61
+ }
62
+ function retrievePageAssetsProd(assetsManifest, clientDependencies, clientEntries, includeAssetsImportedByServer) {
63
+ const clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, assetsManifest));
64
+ const assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, assetsManifest, resolveIncludeAssetsImportedByServer(includeAssetsImportedByServer));
65
+ return { clientEntriesSrc, assetUrls };
66
+ }
64
67
  function resolveClientEntriesProd(clientEntry, assetsManifest) {
65
68
  const { manifestEntry } = (0, getManifestEntry_js_1.getManifestEntry)(clientEntry, assetsManifest);
66
69
  (0, utils_js_1.assert)(manifestEntry.isEntry || manifestEntry.isDynamicEntry || clientEntry.endsWith('.css'), { clientEntry });
@@ -11,17 +11,19 @@ const findPageConfig_js_1 = require("../../../shared/page-configs/findPageConfig
11
11
  const analyzePage_js_1 = require("./analyzePage.js");
12
12
  const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
13
13
  const execHookServer_js_1 = require("./execHookServer.js");
14
+ const getCacheControl_js_1 = require("./getCacheControl.js");
14
15
  async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
15
16
  const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
16
17
  (0, utils_js_1.objectAssign)(pageContext, pageContextAddendum);
17
18
  await (0, execHookServer_js_1.execHookServer)('onCreatePageContext', pageContext);
18
19
  return pageContext;
19
20
  }
21
+ // TODO/now: define new function resolveAfterLoad() ?
20
22
  async function loadPageConfigsLazyServerSide(pageContext) {
21
23
  const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
22
24
  const globalContext = pageContext._globalContext;
23
- const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
24
- loadPageUserFiles(pageContext._globalContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
25
+ const [{ pageFilesLoaded, configPublicPageLazy }] = await Promise.all([
26
+ loadPageConfigFiles(pageContext._globalContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
25
27
  (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
26
28
  sharedPageFilesAlreadyLoaded: true,
27
29
  }),
@@ -31,28 +33,27 @@ async function loadPageConfigsLazyServerSide(pageContext) {
31
33
  const passToClient = [];
32
34
  const errMsg = ' should be an array of strings.';
33
35
  if (!isV1Design) {
34
- pageContextExports.exportsAll.passToClient?.forEach((e) => {
36
+ configPublicPageLazy.exportsAll.passToClient?.forEach((e) => {
35
37
  (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(e, 'exportValue', 'string[]'), `${e.exportSource}${errMsg}`);
36
38
  passToClient.push(...e.exportValue);
37
39
  });
38
40
  }
39
41
  else {
40
- pageContextExports.configEntries.passToClient?.forEach((e) => {
41
- const { configValue } = e;
42
- (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue));
43
- const vals = configValue.flat(1);
44
- // TODO: improve error message by using (upcoming) new data structure instead of configEntries
45
- (0, utils_js_1.assertUsage)((0, utils_js_1.isArrayOfStrings)(vals), `${e.configDefinedAt}${errMsg}`);
46
- passToClient.push(...vals);
42
+ configPublicPageLazy.from.configsCumulative.passToClient?.values.forEach((v) => {
43
+ const { value } = v;
44
+ // const { definedAt } = v
45
+ // assertUsage(isArrayOfStrings(value), `+passToClient value defined at ${definedAt}${errMsg}`)
46
+ passToClient.push(...value);
47
47
  });
48
48
  }
49
49
  const pageContextAddendum = {};
50
- (0, utils_js_1.objectAssign)(pageContextAddendum, pageContextExports);
50
+ (0, utils_js_1.objectAssign)(pageContextAddendum, configPublicPageLazy);
51
51
  (0, utils_js_1.objectAssign)(pageContextAddendum, {
52
- Page: pageContextExports.exports.Page,
52
+ Page: configPublicPageLazy.exports.Page,
53
53
  _isHtmlOnly: isHtmlOnly,
54
54
  _passToClient: passToClient,
55
55
  _pageFilePathsLoaded: pageFilesLoaded.map((p) => p.filePath),
56
+ headersResponse: resolveHeadersResponse(pageContext, pageContextAddendum),
56
57
  });
57
58
  (0, utils_js_1.objectAssign)(pageContextAddendum, {
58
59
  __getPageAssets: async () => {
@@ -66,7 +67,7 @@ async function loadPageConfigsLazyServerSide(pageContext) {
66
67
  }
67
68
  },
68
69
  });
69
- // TODO/v1-release: remove
70
+ // TO-DO/next-major-release: remove
70
71
  Object.assign(pageContextAddendum, {
71
72
  _getPageAssets: async () => {
72
73
  (0, utils_js_1.assertWarning)(false, 'pageContext._getPageAssets() deprecated, see https://vike.dev/preloading', {
@@ -105,13 +106,31 @@ async function loadPageConfigsLazyServerSide(pageContext) {
105
106
  });
106
107
  return pageContextAddendum;
107
108
  }
108
- async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
109
+ async function loadPageConfigFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
109
110
  const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageFilesAll, pageId);
110
111
  const pageConfigLoaded = !pageConfig ? null : await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, isDev);
111
112
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
112
- const pageContextExports = (0, resolveVikeConfigPublic_js_1.resolveVikeConfigPublicPageLazy)(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
113
+ const configPublicPageLazy = (0, resolveVikeConfigPublic_js_1.resolveVikeConfigPublicPageLazy)(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
113
114
  return {
114
- pageContextExports,
115
+ configPublicPageLazy,
115
116
  pageFilesLoaded: pageFilesServerSide,
116
117
  };
117
118
  }
119
+ function resolveHeadersResponse(pageContext, pageContextAddendum) {
120
+ const headersResponse = mergeHeaders(pageContextAddendum.config.headersResponse);
121
+ if (!headersResponse.get('Cache-Control')) {
122
+ const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs);
123
+ if (cacheControl)
124
+ headersResponse.set('Cache-Control', cacheControl);
125
+ }
126
+ return headersResponse;
127
+ }
128
+ function mergeHeaders(headersList = []) {
129
+ const headersMerged = new Headers();
130
+ headersList.forEach((headers) => {
131
+ new Headers(headers).forEach((value, key) => {
132
+ headersMerged.append(key, value);
133
+ });
134
+ });
135
+ return headersMerged;
136
+ }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.preparePageContextForPublicUsageServer = preparePageContextForPublicUsageServer;
4
4
  const preparePageContextForPublicUsage_js_1 = require("../../../shared/preparePageContextForPublicUsage.js");
5
5
  function preparePageContextForPublicUsageServer(pageContext) {
6
- // TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
6
+ // TO-DO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
7
7
  (0, preparePageContextForPublicUsage_js_1.assertPropertyGetters)(pageContext);
8
8
  pageContext = (0, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage)(pageContext);
9
9
  return pageContext;
@@ -19,6 +19,7 @@ const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContex
19
19
  const execHookGuard_js_1 = require("../../../shared/route/execHookGuard.js");
20
20
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
21
21
  const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
22
+ // TODO/now: rename?
22
23
  async function renderPageAlreadyRouted(pageContext) {
23
24
  // pageContext.pageId can either be the:
24
25
  // - ID of the page matching the routing, or the
@@ -84,7 +84,7 @@ async function renderPagePrepare(pageContextInit, httpRequestId) {
84
84
  }
85
85
  }
86
86
  const { globalContext } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
87
- const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, httpRequestId);
87
+ const pageContextBegin = getPageContextBegin(pageContextInit, globalContext, httpRequestId);
88
88
  // Check Base URL
89
89
  {
90
90
  const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
@@ -174,9 +174,7 @@ async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNo
174
174
  (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
175
175
  return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
176
176
  }
177
- else {
178
- (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
179
- }
177
+ (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
180
178
  }
181
179
  let pageContextErrorPage;
182
180
  try {
@@ -313,9 +311,9 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
313
311
  (0, utils_js_1.assert)(pageContext.errorWhileRendering);
314
312
  return pageContext;
315
313
  }
316
- async function getPageContextBegin(pageContextInit, globalContext, httpRequestId) {
314
+ function getPageContextBegin(pageContextInit, globalContext, httpRequestId) {
317
315
  const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
318
- const pageContextBegin = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
316
+ const pageContextBegin = (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
319
317
  isPrerendering: false,
320
318
  ssr: {
321
319
  urlHandler: _urlHandler,
@@ -76,3 +76,4 @@ __exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
76
76
  __exportStar(require("../../utils/genPromise.js"), exports);
77
77
  __exportStar(require("../../utils/augmentType.js"), exports);
78
78
  __exportStar(require("../../utils/changeEnumerable.js"), exports);
79
+ __exportStar(require("../../utils/getViteRPC.js"), exports);
@@ -29,6 +29,7 @@ const resolveClientEntriesDev_js_1 = require("./shared/resolveClientEntriesDev.j
29
29
  const pluginWorkaroundCssModuleHmr_js_1 = require("./plugins/pluginWorkaroundCssModuleHmr.js");
30
30
  const pluginWorkaroundVite6HmrRegression_js_1 = require("./plugins/pluginWorkaroundVite6HmrRegression.js");
31
31
  const pluginReplaceConstants_js_1 = require("./plugins/pluginReplaceConstants.js");
32
+ const pluginViteRPC_js_1 = require("./plugins/pluginViteRPC.js");
32
33
  // We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
33
34
  (0, getPageAssets_js_1.setResolveClientEntriesDev)(resolveClientEntriesDev_js_1.resolveClientEntriesDev);
34
35
  // Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
@@ -48,6 +49,7 @@ function plugin(vikeVitePluginOptions = {}) {
48
49
  (0, pluginWorkaroundCssModuleHmr_js_1.pluginWorkaroundCssModuleHmr)(),
49
50
  (0, pluginWorkaroundVite6HmrRegression_js_1.pluginWorkaroundVite6HmrRegression)(),
50
51
  (0, pluginReplaceConstants_js_1.pluginReplaceConstants)(),
52
+ (0, pluginViteRPC_js_1.pluginViteRPC)(),
51
53
  ];
52
54
  Object.assign(plugins, { _vikeVitePluginOptions: vikeVitePluginOptions });
53
55
  return plugins;
@@ -12,7 +12,7 @@ function onLoad() {
12
12
  (0, assertNodeVersion_js_1.assertNodeVersion)();
13
13
  // package.json#peerDependencies isn't enough as users often ignore it
14
14
  // This assertion isn't reliable: the user may still use a Vite version older than 5.1.0 — see https://github.com/vitejs/vite/pull/19355
15
- // TO-DO/soon: let's also use this.meta.viteVersion https://github.com/vitejs/vite/pull/20088
15
+ // TO-DO/eventually: let's also use this.meta.viteVersion https://github.com/vitejs/vite/pull/20088
16
16
  (0, assertVersion_js_1.assertVersion)('Vite', vite_1.version, '5.1.0');
17
17
  // Ensure we don't bloat the server runtime with heavy dependencies such Vite and esbuild
18
18
  (0, assertSetup_js_1.assertIsNotProductionRuntime)();
@@ -300,8 +300,8 @@ async function handleAssetsManifest_getBuildConfig(config) {
300
300
  };
301
301
  }
302
302
  async function handleAssetsManifest(config, viteEnv, options, bundle) {
303
- const isSsREnv = (0, isViteServerBuild_js_1.isViteServerBuild_onlySsrEnv)(config, viteEnv);
304
- if (isSsREnv) {
303
+ const isSsrEnv = (0, isViteServerBuild_js_1.isViteServerBuild_onlySsrEnv)(config, viteEnv);
304
+ if (isSsrEnv) {
305
305
  (0, utils_js_1.assert)(!assetsJsonFilePath);
306
306
  const outDirs = (0, getOutDirs_js_1.getOutDirs)(config, viteEnv);
307
307
  assetsJsonFilePath = node_path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
@@ -315,7 +315,7 @@ async function handleAssetsManifest(config, viteEnv, options, bundle) {
315
315
  // - Also in some other server builds such as dist/vercel/ from vike-vercel
316
316
  // - Don't replace it in dist/rsc/ from vike-react-rsc since __VITE_ASSETS_MANIFEST__ doesn't exist there
317
317
  const noop = await (0, pluginBuildEntry_js_1.set_macro_ASSETS_MANIFEST)(assetsJsonFilePath, bundle, outDir);
318
- if (isSsREnv)
318
+ if (isSsrEnv)
319
319
  (0, utils_js_1.assert)(!noop); // dist/server should always contain __VITE_ASSETS_MANIFEST__
320
320
  }
321
321
  }
@@ -16,7 +16,8 @@ const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
16
16
  const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
17
17
  const handleAssetsManifest_js_1 = require("./handleAssetsManifest.js");
18
18
  const getPageAssets_js_1 = require("../../../runtime/renderPage/getPageAssets.js");
19
- const manifestTempFile = '_temp_manifest.json';
19
+ // TODO/now: stop setting `manifest` altogether and use the resolved value instead? So that other tools can easily read the manifest (e.g. @cloudflare/plugin-vite reads the manifest).
20
+ const manifestTempFile = '.vite/manifest.json';
20
21
  exports.manifestTempFile = manifestTempFile;
21
22
  function pluginBuildConfig() {
22
23
  let config;
@@ -59,7 +60,7 @@ function pluginBuildConfig() {
59
60
  async function getEntries(config) {
60
61
  const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
61
62
  const { _pageConfigs: pageConfigs } = vikeConfig;
62
- // TODO/v1-release: remove
63
+ // TO-DO/next-major-release: remove
63
64
  const pageFileEntries = await getPageFileEntries(config, (0, getPageAssets_js_1.resolveIncludeAssetsImportedByServer)(vikeConfig.config));
64
65
  (0, utils_js_1.assertUsage)(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
65
66
  if ((0, isViteServerBuild_js_1.isViteServerBuild)(config)) {