vike 0.4.171 → 0.4.172-commit-c1b0884

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 (216) hide show
  1. package/dist/cjs/node/plugin/index.js +3 -0
  2. package/dist/cjs/node/plugin/plugins/buildConfig.js +3 -4
  3. package/dist/cjs/node/plugin/plugins/config/index.js +9 -5
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  5. package/dist/cjs/node/plugin/plugins/devConfig/index.js +2 -1
  6. package/dist/cjs/node/plugin/plugins/envVars.js +2 -1
  7. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  8. package/dist/cjs/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +8 -10
  9. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +19 -7
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +43 -85
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +5 -44
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +10 -51
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  17. package/dist/cjs/node/plugin/resolveClientEntriesDev.js +59 -0
  18. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +17 -2
  19. package/dist/cjs/node/prerender/runPrerender.js +35 -15
  20. package/dist/cjs/node/prerender/utils.js +1 -0
  21. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
  22. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScripts.js +2 -1
  23. package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
  24. package/dist/cjs/node/runtime/html/renderHtml.js +19 -20
  25. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +1 -1
  26. package/dist/cjs/node/runtime/html/stream.js +9 -9
  27. package/dist/cjs/node/runtime/renderPage/analyzePage.js +9 -7
  28. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +1 -1
  29. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  30. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
  31. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  32. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +9 -59
  33. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  34. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +91 -282
  35. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  36. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +30 -10
  37. package/dist/cjs/node/runtime/renderPage.js +24 -17
  38. package/dist/cjs/node/runtime/utils.js +2 -0
  39. package/dist/cjs/node/shared/assertV1Design.js +3 -4
  40. package/dist/cjs/shared/getPageContext.js +5 -0
  41. package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  42. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +2 -2
  43. package/dist/cjs/shared/getPageFiles/getExports.js +49 -1
  44. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +15 -8
  45. package/dist/cjs/shared/hooks/executeHook.js +22 -3
  46. package/dist/cjs/shared/hooks/getHook.js +2 -2
  47. package/dist/cjs/shared/page-configs/getConfigValue.js +14 -17
  48. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +70 -0
  49. package/dist/cjs/shared/page-configs/loadConfigValues.js +3 -12
  50. package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +0 -18
  51. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +110 -16
  52. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +198 -0
  53. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  54. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +1 -1
  55. package/dist/cjs/shared/route/index.js +2 -2
  56. package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
  57. package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
  58. package/dist/cjs/shared/sortPageContext.js +4 -8
  59. package/dist/cjs/shared/utils.js +2 -0
  60. package/dist/cjs/utils/assert.js +3 -3
  61. package/dist/cjs/utils/assertNodeVersion.js +1 -1
  62. package/dist/cjs/utils/changeEnumerable.js +9 -0
  63. package/dist/cjs/utils/escapeHtml.js +14 -0
  64. package/dist/cjs/utils/getPropAccessNotation.js +1 -4
  65. package/dist/cjs/utils/hasProp.js +5 -7
  66. package/dist/cjs/utils/normalizeHeaders.js +13 -0
  67. package/dist/cjs/utils/objectAssign.js +1 -1
  68. package/dist/cjs/utils/objectDefineProperty.js +8 -0
  69. package/dist/cjs/utils/objectKeys.js +8 -4
  70. package/dist/cjs/utils/projectInfo.js +1 -1
  71. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +6 -4
  72. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
  73. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +16 -12
  74. package/dist/esm/client/client-routing-runtime/installClientRouter.js +18 -10
  75. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +3 -3
  76. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +4 -4
  77. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  78. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  79. package/dist/esm/client/shared/executeOnRenderClientHook.js +1 -1
  80. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +3 -2
  81. package/dist/esm/client/shared/getPageContextProxyForUser.js +35 -48
  82. package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
  83. package/dist/esm/node/plugin/index.js +3 -0
  84. package/dist/esm/node/plugin/plugins/buildConfig.js +3 -4
  85. package/dist/esm/node/plugin/plugins/config/index.js +9 -5
  86. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  87. package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -1
  88. package/dist/esm/node/plugin/plugins/envVars.js +2 -1
  89. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  90. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +14 -0
  91. package/dist/esm/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +7 -9
  92. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -1
  94. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  95. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  96. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +20 -8
  97. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  98. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +4 -1
  99. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +43 -85
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +5 -44
  101. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +10 -51
  102. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +1 -0
  103. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  104. package/dist/esm/node/plugin/resolveClientEntriesDev.d.ts +4 -0
  105. package/dist/esm/node/plugin/resolveClientEntriesDev.js +56 -0
  106. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +14 -2
  107. package/dist/esm/node/prerender/runPrerender.js +37 -17
  108. package/dist/esm/node/prerender/utils.d.ts +1 -0
  109. package/dist/esm/node/prerender/utils.js +1 -0
  110. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
  111. package/dist/esm/node/runtime/html/injectAssets/getViteDevScripts.js +3 -2
  112. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +1 -1
  113. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
  114. package/dist/esm/node/runtime/html/renderHtml.js +19 -20
  115. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -1
  116. package/dist/esm/node/runtime/html/stream.d.ts +1 -1
  117. package/dist/esm/node/runtime/html/stream.js +9 -9
  118. package/dist/esm/node/runtime/renderPage/analyzePage.js +9 -7
  119. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -2
  120. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  121. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
  122. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  123. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +3 -0
  124. package/dist/esm/node/runtime/renderPage/getPageAssets.js +9 -59
  125. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -6
  126. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  127. package/dist/esm/node/runtime/renderPage/logErrorHint.d.ts +2 -6
  128. package/dist/esm/node/runtime/renderPage/logErrorHint.js +92 -283
  129. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  130. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  131. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +65 -39
  132. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +31 -11
  133. package/dist/esm/node/runtime/renderPage.js +24 -17
  134. package/dist/esm/node/runtime/utils.d.ts +2 -0
  135. package/dist/esm/node/runtime/utils.js +2 -0
  136. package/dist/esm/node/shared/assertV1Design.d.ts +2 -2
  137. package/dist/esm/node/shared/assertV1Design.js +3 -4
  138. package/dist/esm/shared/ConfigVike.d.ts +7 -0
  139. package/dist/esm/shared/VikeNamespace.d.ts +9 -0
  140. package/dist/esm/shared/getPageContext.d.ts +1 -0
  141. package/dist/esm/shared/getPageContext.js +1 -0
  142. package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
  143. package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  144. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +3 -3
  145. package/dist/esm/shared/getPageFiles/getExports.d.ts +36 -0
  146. package/dist/esm/shared/getPageFiles/getExports.js +50 -2
  147. package/dist/esm/shared/getPageFiles/parseGlobResults.js +14 -7
  148. package/dist/esm/shared/hooks/executeHook.d.ts +10 -1
  149. package/dist/esm/shared/hooks/executeHook.js +21 -2
  150. package/dist/esm/shared/hooks/getHook.d.ts +2 -2
  151. package/dist/esm/shared/hooks/getHook.js +3 -3
  152. package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +2 -2
  153. package/dist/esm/shared/page-configs/PageConfig.d.ts +14 -8
  154. package/dist/esm/shared/page-configs/getConfigValue.d.ts +12 -12
  155. package/dist/esm/shared/page-configs/getConfigValue.js +13 -16
  156. package/dist/esm/shared/page-configs/getConfigValueBuildTime.d.ts +9 -0
  157. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +67 -0
  158. package/dist/esm/shared/page-configs/loadConfigValues.js +3 -12
  159. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +17 -21
  160. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.d.ts +1 -5
  161. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -16
  162. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +4 -1
  163. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +109 -15
  164. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +5 -0
  165. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +192 -0
  166. package/dist/esm/shared/route/executeGuardHook.js +1 -1
  167. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +1 -1
  168. package/dist/esm/shared/route/index.d.ts +3 -3
  169. package/dist/esm/shared/route/index.js +2 -2
  170. package/dist/esm/shared/route/loadPageRoutes.js +3 -3
  171. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  172. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  173. package/dist/esm/shared/sortPageContext.js +4 -8
  174. package/dist/esm/shared/types.d.ts +32 -6
  175. package/dist/esm/shared/utils.d.ts +2 -0
  176. package/dist/esm/shared/utils.js +2 -0
  177. package/dist/esm/types/index.d.ts +1 -1
  178. package/dist/esm/utils/assert.js +3 -3
  179. package/dist/esm/utils/assertNodeVersion.js +1 -1
  180. package/dist/esm/utils/changeEnumerable.d.ts +2 -0
  181. package/dist/esm/utils/changeEnumerable.js +5 -0
  182. package/dist/esm/utils/escapeHtml.d.ts +1 -0
  183. package/dist/esm/utils/escapeHtml.js +10 -0
  184. package/dist/esm/utils/getPropAccessNotation.d.ts +1 -2
  185. package/dist/esm/utils/getPropAccessNotation.js +2 -6
  186. package/dist/esm/utils/hasProp.d.ts +4 -13
  187. package/dist/esm/utils/hasProp.js +5 -7
  188. package/dist/esm/utils/normalizeHeaders.d.ts +1 -0
  189. package/dist/esm/utils/normalizeHeaders.js +9 -0
  190. package/dist/esm/utils/objectAssign.js +1 -1
  191. package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
  192. package/dist/esm/utils/objectDefineProperty.js +4 -0
  193. package/dist/esm/utils/objectKeys.d.ts +1 -3
  194. package/dist/esm/utils/objectKeys.js +8 -4
  195. package/dist/esm/utils/projectInfo.d.ts +2 -2
  196. package/dist/esm/utils/projectInfo.js +1 -1
  197. package/package.json +23 -14
  198. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -76
  199. package/dist/cjs/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -14
  200. package/dist/cjs/node/shared/getClientEntry.js +0 -12
  201. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +0 -85
  202. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -24
  203. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +0 -50
  204. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +0 -16
  205. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.d.ts +0 -5
  206. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -70
  207. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.d.ts +0 -5
  208. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -11
  209. package/dist/esm/node/shared/getClientEntry.d.ts +0 -3
  210. package/dist/esm/node/shared/getClientEntry.js +0 -9
  211. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +0 -4
  212. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +0 -82
  213. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.d.ts +0 -4
  214. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -21
  215. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +0 -8
  216. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +0 -47
@@ -9,7 +9,7 @@ const renderHtml_js_1 = require("../html/renderHtml.js");
9
9
  const getPageFiles_js_1 = require("../../../shared/getPageFiles.js");
10
10
  const utils_js_1 = require("../utils.js");
11
11
  const serializePageContextClientSide_js_1 = require("../html/serializePageContextClientSide.js");
12
- const addUrlComputedProps_js_1 = require("../../../shared/addUrlComputedProps.js");
12
+ const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
13
13
  const globalContext_js_1 = require("../globalContext.js");
14
14
  const createHttpResponseObject_js_1 = require("./createHttpResponseObject.js");
15
15
  const loadUserFilesServerSide_js_1 = require("./loadUserFilesServerSide.js");
@@ -22,7 +22,6 @@ const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js
22
22
  const loadPageRoutes_js_1 = require("../../../shared/route/loadPageRoutes.js");
23
23
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
24
24
  const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
25
- const assertV1Design_js_1 = require("../../shared/assertV1Design.js");
26
25
  async function renderPageAlreadyRouted(pageContext) {
27
26
  // pageContext._pageId can either be the:
28
27
  // - ID of the page matching the routing, or the
@@ -109,9 +108,9 @@ async function prerender404Page(renderContext, pageContextInit_) {
109
108
  _debugRouteMatches: []
110
109
  };
111
110
  const pageContextInit = {
112
- urlOriginal: '/fake-404-url', // A URL is needed for `applyViteHtmlTransform`
113
- ...pageContextInit_
111
+ urlOriginal: '/fake-404-url' // A URL is needed for `applyViteHtmlTransform`
114
112
  };
113
+ (0, utils_js_1.objectAssign)(pageContextInit, pageContextInit_);
115
114
  {
116
115
  const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
117
116
  (0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
@@ -120,15 +119,16 @@ async function prerender404Page(renderContext, pageContextInit_) {
120
119
  return prerenderPage(pageContext);
121
120
  }
122
121
  exports.prerender404Page = prerender404Page;
123
- function getPageContextInitEnhanced(pageContextInit, renderContext, { urlComputedPropsNonEnumerable = false, ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
122
+ function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
124
123
  urlRewrite: null,
125
124
  urlHandler: null,
126
125
  isClientSideNavigation: false
127
126
  } } = {}) {
128
127
  (0, utils_js_1.assert)(pageContextInit.urlOriginal);
129
128
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
130
- const pageContextInitEnhanced = {
131
- ...pageContextInit,
129
+ const pageContextInitEnhanced = {};
130
+ (0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
131
+ (0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
132
132
  _objectCreatedByVike: true,
133
133
  // The following is defined on `pageContext` because we can eventually make these non-global (e.g. sot that two pages can have different includeAssetsImportedByServer settings)
134
134
  _baseServer: globalContext.baseServer,
@@ -145,8 +145,27 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
145
145
  _urlRewrite: urlRewrite,
146
146
  _urlHandler: urlHandler,
147
147
  isClientSideNavigation
148
- };
149
- (0, addUrlComputedProps_js_1.addUrlComputedProps)(pageContextInitEnhanced, !urlComputedPropsNonEnumerable);
148
+ });
149
+ // pageContext.urlParsed
150
+ const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextInitEnhanced);
151
+ (0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextUrlComputed);
152
+ // pageContext.headers
153
+ {
154
+ let headers;
155
+ if (pageContextInit.headersOriginal) {
156
+ headers = (0, utils_js_1.normalizeHeaders)(pageContextInit.headersOriginal);
157
+ (0, utils_js_1.assertUsage)(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
158
+ }
159
+ else if (pageContextInit.headers) {
160
+ headers = pageContextInit.headers;
161
+ // TODO/next-major-release: assertUsage() instead of assertWarning()
162
+ (0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
163
+ }
164
+ else {
165
+ headers = null;
166
+ }
167
+ (0, utils_js_1.objectAssign)(pageContextInitEnhanced, { headers });
168
+ }
150
169
  return pageContextInitEnhanced;
151
170
  }
152
171
  exports.getPageContextInitEnhanced = getPageContextInitEnhanced;
@@ -156,7 +175,8 @@ async function getRenderContext() {
156
175
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
157
176
  const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = await (0, getPageFiles_js_1.getPageFilesAll)(false, globalContext.isProduction);
158
177
  const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
159
- (0, assertV1Design_js_1.assertV1Design)(pageFilesAll.length > 0, pageConfigs, pageFilesAll);
178
+ // We assume assertV1Design() was already called at build-time
179
+ (0, utils_js_1.assert)(pageFilesAll.length === 0 || pageConfigs.length === 0);
160
180
  const renderContext = {
161
181
  pageFilesAll: pageFilesAll,
162
182
  pageConfigs,
@@ -205,7 +205,7 @@ function logHttpRequest(urlOriginal, httpRequestId) {
205
205
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(getRequestInfoMessage(urlOriginal), httpRequestId, 'info', clearErrors);
206
206
  }
207
207
  function getRequestInfoMessage(urlOriginal) {
208
- return `HTTP request: ${picocolors_1.default.bold(urlOriginal)}`;
208
+ return `HTTP request: ${prettyUrl(urlOriginal)}`;
209
209
  }
210
210
  function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
211
211
  const statusCode = pageContextReturn.httpResponse?.statusCode ?? null;
@@ -221,7 +221,7 @@ function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
221
221
  // - We should show `HTTP response ${urlOriginal} ERR` instead.
222
222
  // - Maybe we can/should make the error available at pageContext.errorWhileRendering
223
223
  (0, utils_js_1.assert)(errorWhileRendering === null || errorWhileRendering === undefined);
224
- msg = `HTTP response ${picocolors_1.default.bold(urlOriginal)} ${picocolors_1.default.dim('null')}`;
224
+ msg = `HTTP response ${prettyUrl(urlOriginal)} ${picocolors_1.default.dim('null')}`;
225
225
  // Erroneous value (it shoud sometimes be `false`) but it's fine as it doesn't seem to have much of an impact.
226
226
  isNominal = true;
227
227
  }
@@ -241,7 +241,7 @@ function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
241
241
  const urlRedirect = headerRedirect[1];
242
242
  urlOriginal = urlRedirect;
243
243
  }
244
- msg = `HTTP ${type} ${picocolors_1.default.bold(urlOriginal)} ${color(statusCode ?? 'ERR')}`;
244
+ msg = `HTTP ${type} ${prettyUrl(urlOriginal)} ${color(statusCode ?? 'ERR')}`;
245
245
  }
246
246
  }
247
247
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(msg, httpRequestId, isNominal ? 'info' : 'error');
@@ -289,12 +289,13 @@ async function renderPageNominal(pageContext) {
289
289
  async function getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPagePartial, renderContext, httpRequestId) {
290
290
  const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, renderContext, null, httpRequestId);
291
291
  (0, utils_js_1.assert)(errNominalPage);
292
- const pageContext = {
293
- ...pageContextInitEnhanced,
292
+ const pageContext = {};
293
+ (0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
294
+ (0, utils_js_1.objectAssign)(pageContext, {
294
295
  is404: false,
295
296
  errorWhileRendering: errNominalPage,
296
297
  routeParams: {}
297
- };
298
+ });
298
299
  (0, utils_js_1.objectAssign)(pageContext, {
299
300
  _debugRouteMatches: pageContextNominalPagePartial._debugRouteMatches || 'ROUTING_ERROR'
300
301
  });
@@ -346,7 +347,9 @@ function normalizeUrl(pageContextInit, httpRequestId) {
346
347
  return null;
347
348
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
348
349
  const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)({ url: urlNormalized, statusCode: 301 }, pageContextInit.urlOriginal);
349
- const pageContextHttpResponse = { ...pageContextInit, httpResponse };
350
+ const pageContextHttpResponse = {};
351
+ (0, utils_js_1.objectAssign)(pageContextHttpResponse, pageContextInit);
352
+ (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
350
353
  return pageContextHttpResponse;
351
354
  }
352
355
  function getPermanentRedirect(pageContextInit, httpRequestId) {
@@ -381,7 +384,9 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
381
384
  }
382
385
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirect defined by your config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
383
386
  const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)({ url: urlTarget, statusCode: 301 }, urlWithoutBase);
384
- const pageContextHttpResponse = { ...pageContextInit, httpResponse };
387
+ const pageContextHttpResponse = {};
388
+ (0, utils_js_1.objectAssign)(pageContextHttpResponse, pageContextInit);
389
+ (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
385
390
  return pageContextHttpResponse;
386
391
  }
387
392
  async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
@@ -397,11 +402,11 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
397
402
  (0, utils_js_1.assert)(abortCall);
398
403
  (0, utils_js_1.assertUsage)(errorPageId, `You called ${picocolors_1.default.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
399
404
  const pageContext = {
400
- _pageId: errorPageId,
401
- ...pageContextAbort,
402
- ...pageContextErrorPageInit,
403
- ...renderContext
405
+ _pageId: errorPageId
404
406
  };
407
+ (0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
408
+ (0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit);
409
+ (0, utils_js_1.objectAssign)(pageContext, renderContext);
405
410
  (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
406
411
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
407
412
  pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
@@ -422,10 +427,9 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
422
427
  return { pageContextReturn };
423
428
  }
424
429
  if (pageContextAbort._urlRedirect) {
425
- const pageContextReturn = {
426
- ...pageContextInit,
427
- ...pageContextAbort
428
- };
430
+ const pageContextReturn = {};
431
+ (0, utils_js_1.objectAssign)(pageContextReturn, pageContextInit);
432
+ (0, utils_js_1.objectAssign)(pageContextReturn, pageContextAbort);
429
433
  const httpResponse = (0, createHttpResponseObject_js_1.createHttpResponseObjectRedirect)(pageContextAbort._urlRedirect, (() => {
430
434
  const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
431
435
  const urlLogical = (0, utils_js_1.createUrlFromComponents)(null, pathname, searchOriginal,
@@ -445,9 +449,12 @@ function checkBaseUrl(pageContextInit, httpRequestId) {
445
449
  const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
446
450
  const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
447
451
  if (!hasBaseServer) {
448
- (0, loggerRuntime_js_1.logRuntimeInfo)?.(`${getRequestInfoMessage(urlOriginal)} skipped because URL ${picocolors_1.default.bold(urlOriginal)} doesn't start with Base URL ${picocolors_1.default.bold(baseServer)} (https://vike.dev/base-url)`, httpRequestId, 'info');
452
+ (0, loggerRuntime_js_1.logRuntimeInfo)?.(`${getRequestInfoMessage(urlOriginal)} skipped because URL ${prettyUrl(urlOriginal)} doesn't start with Base URL ${prettyUrl(baseServer)} (https://vike.dev/base-url)`, httpRequestId, 'info');
449
453
  const pageContextHttpResponseNull = getPageContextHttpResponseNull(pageContextInit);
450
454
  return pageContextHttpResponseNull;
451
455
  }
452
456
  return null;
453
457
  }
458
+ function prettyUrl(url) {
459
+ return picocolors_1.default.bold(decodeURI(url));
460
+ }
@@ -68,3 +68,5 @@ __exportStar(require("../../utils/truncateString.js"), exports);
68
68
  __exportStar(require("../../utils/formatHintLog.js"), exports);
69
69
  __exportStar(require("../../utils/joinEnglish.js"), exports);
70
70
  __exportStar(require("../../utils/isArrayOfStrings.js"), exports);
71
+ __exportStar(require("../../utils/escapeHtml.js"), exports);
72
+ __exportStar(require("../../utils/normalizeHeaders.js"), exports);
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertV1Design = void 0;
4
- const helpers_js_1 = require("../../shared/page-configs/helpers.js");
5
4
  const utils_js_1 = require("./utils.js");
6
5
  function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
7
6
  const isV1Design = pageConfigs.length > 0;
@@ -11,10 +10,10 @@ function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
11
10
  (0, utils_js_1.assert)(pageFilesAll.length > 0);
12
11
  const indent = '- ';
13
12
  const filesV1 = (0, utils_js_1.unique)(pageConfigs
14
- .map((p) => Object.values(p.configValues)
15
- .map((c) => (0, helpers_js_1.getConfigValueFilePathToShowToUser)(c.definedAtData))
13
+ .map((p) => Object.values(p.configValueSources).map((sources) => sources
14
+ .map((c) => c.definedAtFilePath.filePathAbsoluteUserRootDir)
16
15
  .filter(utils_js_1.isNotNullish)
17
- .map((filePathToShowToUser) => indent + filePathToShowToUser))
16
+ .map((filePathToShowToUser) => indent + filePathToShowToUser)))
18
17
  .flat(2));
19
18
  const filesOld = pageFilesAll.map((p) => indent + p.filePath);
20
19
  lines.push(...['V1 design files:', ...filesV1, 'Old design files:', ...filesOld]);
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPageContext = void 0;
4
+ var executeHook_js_1 = require("./hooks/executeHook.js");
5
+ Object.defineProperty(exports, "getPageContext", { enumerable: true, get: function () { return executeHook_js_1.getPageContext; } });
@@ -1,48 +1,34 @@
1
1
  "use strict";
2
- // URLs props need to be computed props, because the user can modify the URL e.g. with onBeforeRoute() for i18n
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.assertPageContextUrlComputedProps = exports.addUrlComputedProps = void 0;
3
+ exports.assertPageContextUrl = exports.getPageContextUrlComputed = void 0;
4
+ // =====================
5
+ // File determining the URL logic.
6
+ // URLs need to be computed, because the user can modify the URL e.g. with onBeforeRoute() for i18n.
7
+ // =====================
8
+ const objectDefineProperty_js_1 = require("../utils/objectDefineProperty.js");
5
9
  const utils_js_1 = require("./utils.js");
6
- function addUrlComputedProps(pageContext, enumerable = true) {
7
- (0, utils_js_1.assert)(pageContext.urlOriginal);
8
- if ('urlPathname' in pageContext) {
9
- (0, utils_js_1.assert)(typeof pageContext.urlPathname === 'string');
10
- /* If the following assert() fails then it's most likely because Object.assign() was used instead of objectAssign(), i.e.:
11
- ```js
12
- // Add property getters such as pageContext.urlPathname to pageContext
13
- addUrlComputedProps(pageContext)
14
- // ❌ Breaks the property getters of pageContext set by addUrlComputedProps() such as pageContext.urlPathname
15
- Object.assign(pageContext2, pageContext)
16
- // ❌ Also breaks the property getters
17
- const pageContext3 = { ...pageContext }
18
- // ✅ Preserves property getters of pageContext (see objectAssign() implementation)
19
- objectAssign(pageContext2, pageContext)
20
- ```
21
- */
22
- (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlPathname'));
23
- }
24
- if ('urlParsed' in pageContext)
25
- (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlParsed'));
26
- // TODO/v1-release: move pageContext.urlParsed to pageContext.url
27
- if ('url' in pageContext)
28
- (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
29
- Object.defineProperty(pageContext, 'urlPathname', {
10
+ function getPageContextUrlComputed(pageContext) {
11
+ (0, utils_js_1.assert)(typeof pageContext.urlOriginal === 'string');
12
+ assertPageContextUrlComputed(pageContext);
13
+ const pageContextUrlComputed = {};
14
+ (0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'urlPathname', {
30
15
  get: urlPathnameGetter,
31
- enumerable,
16
+ enumerable: true,
32
17
  configurable: true
33
18
  });
34
- Object.defineProperty(pageContext, 'url', {
19
+ (0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'url', {
35
20
  get: urlGetter,
36
21
  enumerable: false,
37
22
  configurable: true
38
23
  });
39
- Object.defineProperty(pageContext, 'urlParsed', {
24
+ (0, objectDefineProperty_js_1.objectDefineProperty)(pageContextUrlComputed, 'urlParsed', {
40
25
  get: urlParsedGetter,
41
- enumerable,
26
+ enumerable: true,
42
27
  configurable: true
43
28
  });
29
+ return pageContextUrlComputed;
44
30
  }
45
- exports.addUrlComputedProps = addUrlComputedProps;
31
+ exports.getPageContextUrlComputed = getPageContextUrlComputed;
46
32
  function getUrlParsed(pageContext) {
47
33
  // We need a url handler function because the onBeforeRoute() hook may set pageContext.urlLogical (typically for i18n)
48
34
  let urlHandler = pageContext._urlHandler;
@@ -92,7 +78,7 @@ function urlParsedGetter() {
92
78
  const { origin, pathname, pathnameOriginal, search, searchAll, searchOriginal, hash, hashOriginal } = urlParsedOriginal;
93
79
  const hashIsAvailable = (0, utils_js_1.isBrowser)();
94
80
  const warnHashNotAvailable = (prop) => {
95
- (0, utils_js_1.assertWarning)(hashIsAvailable, `pageContext.urlParsed.${prop} isn't available on the server-side (HTTP requests don't include the URL hash by design)`, { onlyOnce: true, showStackTrace: true });
81
+ (0, utils_js_1.assertWarning)(hashIsAvailable, `pageContext.urlParsed.${prop} isn't available on the server-side (HTTP requests don't include the URL hash)`, { onlyOnce: true, showStackTrace: true });
96
82
  };
97
83
  const urlParsed = {
98
84
  origin,
@@ -122,22 +108,46 @@ function urlParsedGetter() {
122
108
  return searchOriginal;
123
109
  }
124
110
  };
125
- makeNonEnumerable(urlParsed, 'hashString');
126
- makeNonEnumerable(urlParsed, 'searchString');
111
+ (0, utils_js_1.changeEnumerable)(urlParsed, 'hashString', false);
112
+ (0, utils_js_1.changeEnumerable)(urlParsed, 'searchString', false);
127
113
  if (!hashIsAvailable) {
128
- makeNonEnumerable(urlParsed, 'hash');
129
- makeNonEnumerable(urlParsed, 'hashOriginal');
114
+ (0, utils_js_1.changeEnumerable)(urlParsed, 'hash', false);
115
+ (0, utils_js_1.changeEnumerable)(urlParsed, 'hashOriginal', false);
130
116
  }
131
117
  return urlParsed;
132
118
  }
133
- function makeNonEnumerable(obj, prop) {
134
- const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
135
- Object.defineProperty(obj, prop, { ...descriptor, enumerable: false });
136
- }
137
- function assertPageContextUrlComputedProps(pageContext) {
119
+ function assertPageContextUrl(pageContext) {
138
120
  (0, utils_js_1.assert)(typeof pageContext.urlOriginal === 'string');
139
121
  (0, utils_js_1.assert)(typeof pageContext.urlPathname === 'string');
140
122
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.urlParsed));
141
123
  (0, utils_js_1.assert)(pageContext.urlPathname === pageContext.urlParsed.pathname);
124
+ assertPageContextUrlComputed(pageContext);
125
+ }
126
+ exports.assertPageContextUrl = assertPageContextUrl;
127
+ function assertPageContextUrlComputed(pageContext) {
128
+ /*
129
+ If the isPropertyGetter() assertions fail then it's most likely because Object.assign() was used instead of `objectAssign()`:
130
+ ```js
131
+ const PageContextUrlComputed = getPageContextUrlComputed(pageContext)
132
+
133
+ // ❌ Breaks the property descriptors/getters of pageContext defined by getPageContextUrlComputed() such as pageContext.urlPathname
134
+ Object.assign(pageContext, pageContextUrlComputed)
135
+
136
+ // ❌ Also breaks property descriptors/getters
137
+ const pageContext = { ...pageContextUrlComputed }
138
+
139
+ // ✅ Preserves property descriptors/getters (see objectAssign() implementation)
140
+ objectAssign(pageContext, pageContextUrlComputed)
141
+ ```
142
+ */
143
+ if ('urlPathname' in pageContext) {
144
+ (0, utils_js_1.assert)(typeof pageContext.urlPathname === 'string');
145
+ (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlPathname'));
146
+ (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'urlParsed'));
147
+ (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
148
+ }
149
+ else {
150
+ (0, utils_js_1.assert)(!('urlParsed' in pageContext));
151
+ (0, utils_js_1.assert)(!('url' in pageContext));
152
+ }
142
153
  }
143
- exports.assertPageContextUrlComputedProps = assertPageContextUrlComputedProps;
@@ -6,8 +6,8 @@ const analyzePageClientSide_js_1 = require("./analyzePageClientSide.js");
6
6
  function analyzeClientSide(pageConfig, pageFilesAll, pageId) {
7
7
  // V1 design
8
8
  if (pageConfig) {
9
- const isClientRouting = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
10
- const isClientSideRenderable = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'isClientSideRenderable', 'boolean')?.value ?? false;
9
+ const isClientRouting = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
10
+ const isClientSideRenderable = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'isClientSideRenderable', 'boolean')?.value ?? false;
11
11
  return { isClientSideRenderable, isClientRouting };
12
12
  }
13
13
  else {
@@ -32,6 +32,18 @@ function getPageContextExports(pageFiles, pageConfig) {
32
32
  });
33
33
  });
34
34
  // V1 design
35
+ const source = {};
36
+ const sources = {};
37
+ const addSrc = (src, configName) => {
38
+ source[configName] = src;
39
+ sources[configName] ?? (sources[configName] = []);
40
+ sources[configName].push(src);
41
+ };
42
+ const from = {
43
+ configsStandard: {},
44
+ configsCumulative: {},
45
+ configsComputed: {}
46
+ };
35
47
  if (pageConfig) {
36
48
  Object.entries(pageConfig.configValues).forEach(([configName, configValue]) => {
37
49
  const { value } = configValue;
@@ -46,6 +58,39 @@ function getPageContextExports(pageFiles, pageConfig) {
46
58
  configDefinedAt,
47
59
  configDefinedByFile: configValueFilePathToShowToUser
48
60
  });
61
+ if (configValue.type === 'standard') {
62
+ const src = {
63
+ type: 'configsStandard',
64
+ value: configValue.value,
65
+ definedAt: (0, getConfigDefinedAt_js_1.getDefinedAtString)(configValue.definedAtData, configName)
66
+ };
67
+ addSrc(src, configName);
68
+ from.configsStandard[configName] = src;
69
+ }
70
+ if (configValue.type === 'cumulative') {
71
+ const src = {
72
+ type: 'configsCumulative',
73
+ values: configValue.value.map((value, i) => {
74
+ const definedAtFile = configValue.definedAtData[i];
75
+ (0, utils_js_1.assert)(definedAtFile);
76
+ const definedAt = (0, getConfigDefinedAt_js_1.getDefinedAtString)(definedAtFile, configName);
77
+ return {
78
+ value,
79
+ definedAt
80
+ };
81
+ })
82
+ };
83
+ addSrc(src, configName);
84
+ from.configsCumulative[configName] = src;
85
+ }
86
+ if (configValue.type === 'computed') {
87
+ const src = {
88
+ type: 'configsComputed',
89
+ value: configValue.value
90
+ };
91
+ addSrc(src, configName);
92
+ from.configsComputed[configName] = src;
93
+ }
49
94
  // TODO/v1-release: remove
50
95
  const exportName = configName;
51
96
  exportsAll[exportName] = exportsAll[exportName] ?? [];
@@ -75,9 +120,12 @@ function getPageContextExports(pageFiles, pageConfig) {
75
120
  (0, utils_js_1.assert)(!('default' in exports));
76
121
  (0, utils_js_1.assert)(!('default' in exportsAll));
77
122
  const pageContextExports = {
123
+ from,
124
+ source,
125
+ sources,
126
+ // TODO/eventually: deprecate/remove every prop below
78
127
  config,
79
128
  configEntries,
80
- // TODO/v1-release: remove
81
129
  exports,
82
130
  exportsAll,
83
131
  pageExports
@@ -1,16 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseGlobResults = void 0;
4
+ // TODO/v1-release: remove old design code, and remove all assertions.
4
5
  const utils_js_1 = require("../utils.js");
5
6
  const assert_exports_old_design_js_1 = require("./assert_exports_old_design.js");
6
7
  const getPageFileObject_js_1 = require("./getPageFileObject.js");
7
8
  const fileTypes_js_1 = require("./fileTypes.js");
8
- const assertPageConfigsSerialized_js_1 = require("../page-configs/serialize/assertPageConfigsSerialized.js");
9
9
  const parsePageConfigs_js_1 = require("../page-configs/serialize/parsePageConfigs.js");
10
10
  function parseGlobResults(pageFilesExports) {
11
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'isGeneratedFile'));
12
- (0, utils_js_1.assert)(pageFilesExports.isGeneratedFile !== false, `vike was re-installed(/re-built). Restart your app.`);
13
- (0, utils_js_1.assert)(pageFilesExports.isGeneratedFile === true, `\`isGeneratedFile === ${pageFilesExports.isGeneratedFile}\``);
14
11
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesLazy', 'object'));
15
12
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesEager', 'object'));
16
13
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageFilesExportNamesLazy', 'object'));
@@ -21,8 +18,8 @@ function parseGlobResults(pageFilesExports) {
21
18
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageConfigsSerialized'));
22
19
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageFilesExports, 'pageConfigGlobalSerialized'));
23
20
  const { pageConfigsSerialized, pageConfigGlobalSerialized } = pageFilesExports;
24
- (0, assertPageConfigsSerialized_js_1.assertPageConfigsSerialized)(pageConfigsSerialized);
25
- (0, assertPageConfigsSerialized_js_1.assertPageConfigGlobalSerialized)(pageConfigGlobalSerialized);
21
+ assertPageConfigsSerialized(pageConfigsSerialized);
22
+ assertPageConfigGlobalSerialized(pageConfigGlobalSerialized);
26
23
  const { pageConfigs, pageConfigGlobal } = (0, parsePageConfigs_js_1.parsePageConfigs)(pageConfigsSerialized, pageConfigGlobalSerialized);
27
24
  const pageFilesMap = {};
28
25
  parseGlobResult(pageFilesExports.pageFilesLazy).forEach(({ filePath, pageFile, globValue }) => {
@@ -43,8 +40,6 @@ function parseGlobResults(pageFilesExports) {
43
40
  pageFile.loadExportNames = async () => {
44
41
  if (!('exportNames' in pageFile)) {
45
42
  const moduleExports = await loadModule();
46
- // Vite 2 seems to choke following assertion: https://github.com/vikejs/vike/issues/455
47
- (0, utils_js_1.assertUsage)('exportNames' in moduleExports, 'You seem to be using Vite 2 but the latest vike versions only work with Vite 3');
48
43
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(moduleExports, 'exportNames', 'string[]'), pageFile.filePath);
49
44
  pageFile.exportNames = moduleExports.exportNames;
50
45
  }
@@ -91,3 +86,15 @@ function parseGlobResult(globObject) {
91
86
  function assertLoadModule(globValue) {
92
87
  (0, utils_js_1.assert)((0, utils_js_1.isCallable)(globValue));
93
88
  }
89
+ function assertPageConfigsSerialized(pageConfigsSerialized) {
90
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(pageConfigsSerialized));
91
+ pageConfigsSerialized.forEach((pageConfigSerialized) => {
92
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(pageConfigSerialized));
93
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'pageId', 'string'));
94
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'routeFilesystem'));
95
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'configValuesSerialized'));
96
+ });
97
+ }
98
+ function assertPageConfigGlobalSerialized(pageConfigGlobalSerialized) {
99
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigGlobalSerialized, 'configValuesSerialized'));
100
+ }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isUserHookError = exports.executeHook = void 0;
3
+ exports.isUserHookError = exports.getPageContext = exports.executeHook = void 0;
4
4
  const assert_js_1 = require("../../utils/assert.js");
5
5
  const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
6
6
  const humanizeTime_js_1 = require("../../utils/humanizeTime.js");
7
7
  const isObject_js_1 = require("../../utils/isObject.js");
8
8
  const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/executeHook.ts', {
9
- userHookErrors: new WeakMap()
9
+ userHookErrors: new WeakMap(),
10
+ pageContext: null
10
11
  });
11
12
  function isUserHookError(err) {
12
13
  if (!(0, isObject_js_1.isObject)(err))
@@ -14,7 +15,7 @@ function isUserHookError(err) {
14
15
  return globalObject.userHookErrors.get(err) ?? false;
15
16
  }
16
17
  exports.isUserHookError = isUserHookError;
17
- function executeHook(hookFnCaller, hook) {
18
+ function executeHook(hookFnCaller, hook, pageContext) {
18
19
  const { hookName, hookFilePath, hookTimeout: { error: timeoutErr, warning: timeoutWarn } } = hook;
19
20
  let resolve;
20
21
  let reject;
@@ -45,6 +46,7 @@ function executeHook(hookFnCaller, hook) {
45
46
  }, timeoutErr);
46
47
  (async () => {
47
48
  try {
49
+ providePageContext(pageContext);
48
50
  const ret = await hookFnCaller();
49
51
  resolve(ret);
50
52
  }
@@ -61,3 +63,20 @@ exports.executeHook = executeHook;
61
63
  function isNotDisabled(timeout) {
62
64
  return !!timeout && timeout !== Infinity;
63
65
  }
66
+ /**
67
+ * Access `pageContext` object inside Vike hooks, in order to create universal hooks.
68
+ *
69
+ * https://vike.dev/getPageContext
70
+ */
71
+ function getPageContext() {
72
+ return globalObject.pageContext;
73
+ }
74
+ exports.getPageContext = getPageContext;
75
+ function providePageContext(pageContext) {
76
+ globalObject.pageContext = pageContext;
77
+ // Promise.resolve() is quicker than process.nextTick() and setImmediate()
78
+ // https://stackoverflow.com/questions/67949576/process-nexttick-before-promise-resolve-then
79
+ Promise.resolve().then(() => {
80
+ globalObject.pageContext = null;
81
+ });
82
+ }
@@ -31,8 +31,8 @@ function getHook(pageContext, hookName) {
31
31
  }
32
32
  exports.getHook = getHook;
33
33
  function getHookFromPageConfig(pageConfig, hookName) {
34
- const configValue = (0, getConfigValue_js_1.getConfigValue)(pageConfig, hookName);
35
- const hooksTimeout = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'hooksTimeout')?.value;
34
+ const configValue = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, hookName);
35
+ const hooksTimeout = (0, getConfigValue_js_1.getConfigValueRuntime)(pageConfig, 'hooksTimeout')?.value;
36
36
  if (!configValue)
37
37
  return null;
38
38
  const hookFn = configValue.value;
@@ -3,22 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getConfigValue = void 0;
6
+ exports.getConfigValueTyped = exports.getConfigValueRuntime = void 0;
7
7
  const utils_js_1 = require("../utils.js");
8
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
9
  const getConfigDefinedAt_js_1 = require("./getConfigDefinedAt.js");
10
- // prettier-ignore
11
- // biome-ignore format:
12
- function getConfigValue(pageConfig, configName, type) {
13
- const configValue = getConfigValueEntry(pageConfig, configName);
14
- if (configValue === null)
15
- return null;
10
+ function getConfigValueTyped(configValue, configName, type) {
11
+ /* [NULL_HANDLING] Do we really need this? This doesn't seem to make sense, let's eventually (re)move this.
12
+ // Enable users to suppress global config values by setting the local config value to null
13
+ if (configValue.value === null) return null
14
+ */
16
15
  const { value, definedAtData } = configValue;
17
16
  if (type)
18
17
  assertConfigValueType(value, type, configName, definedAtData);
19
18
  return configValue;
20
19
  }
21
- exports.getConfigValue = getConfigValue;
20
+ exports.getConfigValueTyped = getConfigValueTyped;
21
+ function getConfigValueRuntime(pageConfig, configName, type) {
22
+ const configValue = pageConfig.configValues[configName];
23
+ if (!configValue)
24
+ return null;
25
+ return getConfigValueTyped(configValue, configName, type);
26
+ }
27
+ exports.getConfigValueRuntime = getConfigValueRuntime;
22
28
  function assertConfigValueType(value, type, configName, definedAtData) {
23
29
  (0, utils_js_1.assert)(value !== null);
24
30
  const typeActual = typeof value;
@@ -32,12 +38,3 @@ function assertConfigValueType(value, type, configName, definedAtData) {
32
38
  const errMsg = `${configDefinedAt} has an invalid ${problem}: it should be a ${picocolors_1.default.cyan(type)} instead`;
33
39
  (0, utils_js_1.assertUsage)(false, errMsg);
34
40
  }
35
- function getConfigValueEntry(pageConfig, configName) {
36
- const configValue = pageConfig.configValues[configName];
37
- if (!configValue)
38
- return null;
39
- // Enable users to suppress global config values by setting the local config value to null
40
- if (configValue.value === null)
41
- return null;
42
- return configValue;
43
- }