vike 0.4.224 → 0.4.225-commit-2b7971f

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 (163) hide show
  1. package/dist/cjs/client/shared/getPageContextProxyForUser.js +3 -66
  2. package/dist/cjs/node/api/build.js +1 -1
  3. package/dist/cjs/node/api/context.js +4 -4
  4. package/dist/cjs/node/api/dev.js +1 -1
  5. package/dist/cjs/node/api/prepareViteApiCall.js +25 -14
  6. package/dist/cjs/node/api/prerender.js +1 -1
  7. package/dist/cjs/node/api/preview.js +1 -1
  8. package/dist/cjs/node/cli/context.js +5 -4
  9. package/dist/cjs/node/cli/entry.js +3 -3
  10. package/dist/cjs/node/cli/parseCli.js +43 -15
  11. package/dist/cjs/node/cli/utils.js +1 -1
  12. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
  13. package/dist/cjs/node/plugin/plugins/commonConfig.js +16 -11
  14. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
  15. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +139 -84
  20. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  21. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
  22. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  23. package/dist/cjs/node/plugin/shared/getEnvVarObject.js +9 -8
  24. package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +1 -1
  25. package/dist/cjs/node/prerender/context.js +1 -1
  26. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +33 -18
  27. package/dist/cjs/node/prerender/runPrerender.js +12 -18
  28. package/dist/cjs/node/prerender/utils.js +1 -1
  29. package/dist/cjs/node/runtime/globalContext.js +9 -5
  30. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
  31. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +67 -14
  32. package/dist/cjs/node/runtime/html/stream.js +7 -0
  33. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +14 -5
  34. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -4
  35. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +6 -1
  36. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
  37. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
  38. package/dist/cjs/node/runtime/renderPage.js +19 -38
  39. package/dist/cjs/node/runtime/utils.js +0 -1
  40. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +10 -8
  41. package/dist/cjs/node/shared/assertV1Design.js +2 -1
  42. package/dist/cjs/node/shared/utils.js +0 -1
  43. package/dist/cjs/shared/NOT_SERIALIZABLE.js +5 -0
  44. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +19 -2
  45. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +8 -5
  46. package/dist/cjs/shared/page-configs/helpers.js +1 -1
  47. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -5
  48. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -5
  49. package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
  50. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  51. package/dist/cjs/utils/assert.js +12 -5
  52. package/dist/cjs/utils/assertSingleInstance.js +11 -17
  53. package/dist/cjs/utils/debug.js +2 -1
  54. package/dist/cjs/utils/getRandomId.js +1 -1
  55. package/dist/cjs/utils/normalizeHeaders.js +1 -1
  56. package/dist/cjs/utils/objectAssign.js +7 -2
  57. package/dist/cjs/utils/parseUrl-extras.js +1 -0
  58. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +3 -1
  59. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
  60. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +1 -1
  61. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +6 -3
  62. package/dist/esm/client/server-routing-runtime/getPageContext.js +6 -3
  63. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +1 -11
  64. package/dist/esm/client/shared/getPageContextProxyForUser.js +4 -67
  65. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  66. package/dist/esm/node/api/build.js +1 -1
  67. package/dist/esm/node/api/context.d.ts +8 -2
  68. package/dist/esm/node/api/context.js +4 -4
  69. package/dist/esm/node/api/dev.js +1 -1
  70. package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -2
  71. package/dist/esm/node/api/prepareViteApiCall.js +25 -14
  72. package/dist/esm/node/api/prerender.js +1 -1
  73. package/dist/esm/node/api/preview.js +1 -1
  74. package/dist/esm/node/api/types.d.ts +7 -0
  75. package/dist/esm/node/cli/context.d.ts +4 -2
  76. package/dist/esm/node/cli/context.js +5 -4
  77. package/dist/esm/node/cli/entry.js +4 -4
  78. package/dist/esm/node/cli/parseCli.d.ts +3 -0
  79. package/dist/esm/node/cli/parseCli.js +44 -16
  80. package/dist/esm/node/cli/utils.d.ts +1 -1
  81. package/dist/esm/node/cli/utils.js +1 -1
  82. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +2 -2
  83. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
  84. package/dist/esm/node/plugin/plugins/commonConfig.js +16 -11
  85. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
  86. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  87. package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +3 -1
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +5 -2
  91. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
  92. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -2
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +141 -85
  94. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  95. package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
  96. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  97. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  98. package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +3 -1
  99. package/dist/esm/node/plugin/shared/getEnvVarObject.js +9 -8
  100. package/dist/esm/node/plugin/shared/loggerNotProd/log.js +2 -2
  101. package/dist/esm/node/prerender/context.js +1 -1
  102. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +2 -1
  103. package/dist/esm/node/prerender/resolvePrerenderConfig.js +34 -19
  104. package/dist/esm/node/prerender/runPrerender.js +13 -19
  105. package/dist/esm/node/prerender/utils.d.ts +1 -1
  106. package/dist/esm/node/prerender/utils.js +1 -1
  107. package/dist/esm/node/runtime/globalContext.d.ts +1 -1
  108. package/dist/esm/node/runtime/globalContext.js +10 -6
  109. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
  110. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -0
  111. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +69 -15
  112. package/dist/esm/node/runtime/html/stream.js +7 -0
  113. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -3
  114. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +3 -1
  115. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +15 -6
  116. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +3 -1
  117. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -4
  118. package/dist/esm/node/runtime/renderPage/logErrorHint.js +6 -1
  119. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
  120. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +32 -6
  121. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
  122. package/dist/esm/node/runtime/renderPage.js +21 -40
  123. package/dist/esm/node/runtime/utils.d.ts +0 -1
  124. package/dist/esm/node/runtime/utils.js +0 -1
  125. package/dist/esm/node/runtime-dev/createDevMiddleware.js +10 -8
  126. package/dist/esm/node/shared/assertV1Design.js +2 -1
  127. package/dist/esm/node/shared/utils.d.ts +0 -1
  128. package/dist/esm/node/shared/utils.js +0 -1
  129. package/dist/esm/shared/NOT_SERIALIZABLE.d.ts +1 -0
  130. package/dist/esm/shared/NOT_SERIALIZABLE.js +2 -0
  131. package/dist/esm/shared/page-configs/Config.d.ts +23 -3
  132. package/dist/esm/shared/page-configs/PageConfig.d.ts +17 -6
  133. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +5 -3
  134. package/dist/esm/shared/page-configs/getConfigDefinedAt.js +20 -3
  135. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +8 -5
  136. package/dist/esm/shared/page-configs/helpers.js +1 -1
  137. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +1 -1
  138. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -5
  139. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +3 -3
  140. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -5
  141. package/dist/esm/shared/route/abort.d.ts +2 -2
  142. package/dist/esm/shared/route/loadPageRoutes.js +2 -2
  143. package/dist/esm/shared/types.d.ts +39 -3
  144. package/dist/esm/types/index.d.ts +2 -0
  145. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  146. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  147. package/dist/esm/utils/assert.d.ts +2 -1
  148. package/dist/esm/utils/assert.js +12 -5
  149. package/dist/esm/utils/assertSingleInstance.js +11 -17
  150. package/dist/esm/utils/debug.js +2 -1
  151. package/dist/esm/utils/getRandomId.d.ts +1 -1
  152. package/dist/esm/utils/getRandomId.js +1 -1
  153. package/dist/esm/utils/normalizeHeaders.js +1 -1
  154. package/dist/esm/utils/objectAssign.d.ts +1 -1
  155. package/dist/esm/utils/objectAssign.js +7 -2
  156. package/dist/esm/utils/parseUrl-extras.js +1 -0
  157. package/package.json +6 -3
  158. package/dist/cjs/shared/notSerializable.js +0 -5
  159. package/dist/cjs/utils/projectInfo.js +0 -8
  160. package/dist/esm/shared/notSerializable.d.ts +0 -1
  161. package/dist/esm/shared/notSerializable.js +0 -2
  162. package/dist/esm/utils/projectInfo.d.ts +0 -4
  163. package/dist/esm/utils/projectInfo.js +0 -5
@@ -2,6 +2,7 @@ export { renderPageAlreadyRouted };
2
2
  export { prerenderPage };
3
3
  export { prerender404Page };
4
4
  export { getPageContextInitEnhanced };
5
+ export { createPageContext };
5
6
  export type { PageContextAfterRender };
6
7
  export type { PageContextInitEnhanced };
7
8
  import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
@@ -32,6 +33,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
32
33
  documentHtml: string;
33
34
  pageContextSerialized: null;
34
35
  pageContext: {
36
+ _isPageContextObject: boolean;
37
+ isClientSide: boolean;
38
+ isPrerendering: boolean;
39
+ } & Record<string, unknown> & {
35
40
  urlOriginal: string;
36
41
  headersOriginal?: unknown;
37
42
  headers?: unknown;
@@ -62,7 +67,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
62
67
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
63
68
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
64
69
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
65
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
70
+ config: import("../../../types/index.js").ConfigResolved;
66
71
  } & ({
67
72
  isProduction: false;
68
73
  isPrerendering: false;
@@ -118,6 +123,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
118
123
  documentHtml: string;
119
124
  pageContextSerialized: string;
120
125
  pageContext: {
126
+ _isPageContextObject: boolean;
127
+ isClientSide: boolean;
128
+ isPrerendering: boolean;
129
+ } & Record<string, unknown> & {
121
130
  urlOriginal: string;
122
131
  headersOriginal?: unknown;
123
132
  headers?: unknown;
@@ -148,7 +157,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
148
157
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
149
158
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
150
159
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
151
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
160
+ config: import("../../../types/index.js").ConfigResolved;
152
161
  } & ({
153
162
  isProduction: false;
154
163
  isPrerendering: false;
@@ -205,6 +214,10 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
205
214
  documentHtml: string;
206
215
  pageContextSerialized: null;
207
216
  pageContext: {
217
+ _isPageContextObject: boolean;
218
+ isClientSide: boolean;
219
+ isPrerendering: boolean;
220
+ } & Record<string, unknown> & {
208
221
  urlOriginal: string;
209
222
  headersOriginal?: unknown;
210
223
  headers?: unknown;
@@ -235,7 +248,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
235
248
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
236
249
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
237
250
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
238
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
251
+ config: import("../../../types/index.js").ConfigResolved;
239
252
  } & ({
240
253
  isProduction: false;
241
254
  isPrerendering: false;
@@ -291,6 +304,10 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
291
304
  documentHtml: string;
292
305
  pageContextSerialized: string;
293
306
  pageContext: {
307
+ _isPageContextObject: boolean;
308
+ isClientSide: boolean;
309
+ isPrerendering: boolean;
310
+ } & Record<string, unknown> & {
294
311
  urlOriginal: string;
295
312
  headersOriginal?: unknown;
296
313
  headers?: unknown;
@@ -321,7 +338,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
321
338
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
322
339
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
323
340
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
324
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
341
+ config: import("../../../types/index.js").ConfigResolved;
325
342
  } & ({
326
343
  isProduction: false;
327
344
  isPrerendering: false;
@@ -379,13 +396,17 @@ declare function getPageContextInitEnhanced(pageContextInit: {
379
396
  urlOriginal: string;
380
397
  headersOriginal?: unknown;
381
398
  headers?: unknown;
382
- }, globalContext: GlobalContextInternal, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
399
+ }, globalContext: GlobalContextInternal, isPrerendering: boolean, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
383
400
  ssr?: {
384
401
  urlRewrite: null | string;
385
402
  urlHandler: null | ((url: string) => string);
386
403
  isClientSideNavigation: boolean;
387
404
  };
388
405
  }): Promise<{
406
+ _isPageContextObject: boolean;
407
+ isClientSide: boolean;
408
+ isPrerendering: boolean;
409
+ } & Record<string, unknown> & {
389
410
  urlOriginal: string;
390
411
  headersOriginal?: unknown;
391
412
  headers?: unknown;
@@ -416,7 +437,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
416
437
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
417
438
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
418
439
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
419
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
440
+ config: import("../../../types/index.js").ConfigResolved;
420
441
  } & ({
421
442
  isProduction: false;
422
443
  isPrerendering: false;
@@ -450,3 +471,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
450
471
  } & {
451
472
  headers: Record<string, string> | null;
452
473
  }>;
474
+ declare function createPageContext(pageContextInit: Record<string, unknown>, isPrerendering: boolean): {
475
+ _isPageContextObject: boolean;
476
+ isClientSide: boolean;
477
+ isPrerendering: boolean;
478
+ } & Record<string, unknown>;
@@ -2,6 +2,7 @@ export { renderPageAlreadyRouted };
2
2
  export { prerenderPage };
3
3
  export { prerender404Page };
4
4
  export { getPageContextInitEnhanced };
5
+ export { createPageContext };
5
6
  import { getErrorPageId } from '../../../shared/error-page.js';
6
7
  import { getHtmlString } from '../html/renderHtml.js';
7
8
  import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
@@ -84,7 +85,11 @@ async function prerender404Page(pageContextInit_, globalContext) {
84
85
  if (!errorPageId) {
85
86
  return null;
86
87
  }
87
- const pageContext = {
88
+ // A URL is required for `viteDevServer.transformIndexHtml(url,html)`
89
+ const pageContextInit = { urlOriginal: '/fake-404-url' };
90
+ objectAssign(pageContextInit, pageContextInit_);
91
+ const pageContext = await getPageContextInitEnhanced(pageContextInit, globalContext, true);
92
+ objectAssign(pageContext, {
88
93
  pageId: errorPageId,
89
94
  _httpRequestId: null,
90
95
  _urlRewrite: null,
@@ -93,25 +98,17 @@ async function prerender404Page(pageContextInit_, globalContext) {
93
98
  // `prerender404Page()` is about generating `dist/client/404.html` for static hosts; there is no Client Routing.
94
99
  _usesClientRouter: false,
95
100
  _debugRouteMatches: []
96
- };
97
- const pageContextInit = {
98
- urlOriginal: '/fake-404-url' // A URL is needed for `applyViteHtmlTransform`
99
- };
100
- objectAssign(pageContextInit, pageContextInit_);
101
- {
102
- const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
103
- objectAssign(pageContext, pageContextInitEnhanced);
104
- }
101
+ });
105
102
  objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
106
103
  return prerenderPage(pageContext);
107
104
  }
108
- async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
105
+ async function getPageContextInitEnhanced(pageContextInit, globalContext, isPrerendering, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
109
106
  urlRewrite: null,
110
107
  urlHandler: null,
111
108
  isClientSideNavigation: false
112
109
  } } = {}) {
113
110
  assert(pageContextInit.urlOriginal);
114
- const pageContextInitEnhanced = {};
111
+ const pageContextInitEnhanced = createPageContext(pageContextInit, isPrerendering);
115
112
  objectAssign(pageContextInitEnhanced, pageContextInit);
116
113
  objectAssign(pageContextInitEnhanced, {
117
114
  _objectCreatedByVike: true,
@@ -158,3 +155,12 @@ async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr:
158
155
  }
159
156
  return pageContextInitEnhanced;
160
157
  }
158
+ function createPageContext(pageContextInit, isPrerendering) {
159
+ const pageContext = {
160
+ _isPageContextObject: true,
161
+ isClientSide: false,
162
+ isPrerendering
163
+ };
164
+ objectAssign(pageContext, pageContextInit);
165
+ return pageContext;
166
+ }
@@ -1,8 +1,8 @@
1
1
  export { renderPage };
2
2
  export { renderPage_addAsyncHookwrapper };
3
- import { getPageContextInitEnhanced, renderPageAlreadyRouted } from './renderPage/renderPageAlreadyRouted.js';
3
+ import { getPageContextInitEnhanced, renderPageAlreadyRouted, createPageContext } from './renderPage/renderPageAlreadyRouted.js';
4
4
  import { route } from '../../shared/route/index.js';
5
- import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, createUrlFromComponents, isUri, getUrlPretty } from './utils.js';
5
+ import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty } from './utils.js';
6
6
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
7
7
  import { getGlobalContextInternal, initGlobalContext_renderPage } from './globalContext.js';
8
8
  import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
@@ -103,15 +103,9 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
103
103
  // https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
104
104
  0);
105
105
  let pageContextNominalPageSuccess;
106
- let pageContextNominalPageInit = {};
107
- {
108
- const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
109
- objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
110
- }
111
- {
112
- const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextNominalPageInit._urlRewrite, httpRequestId);
113
- objectAssign(pageContextNominalPageInit, pageContextInitEnhanced);
114
- }
106
+ const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
107
+ const pageContextNominalPageInit = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextFromAllRewrites._urlRewrite, httpRequestId);
108
+ objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
115
109
  let errNominalPage;
116
110
  {
117
111
  try {
@@ -242,7 +236,7 @@ function prettyUrl(url) {
242
236
  return pc.bold(decodeURI(url));
243
237
  }
244
238
  function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
245
- const pageContextWithError = createPageContext(pageContextInit);
239
+ const pageContextWithError = createPageContext(pageContextInit, false);
246
240
  const httpResponse = createHttpResponseError(pageContext);
247
241
  objectAssign(pageContextWithError, {
248
242
  httpResponse,
@@ -250,13 +244,6 @@ function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
250
244
  });
251
245
  return pageContextWithError;
252
246
  }
253
- function createPageContext(pageContextInit) {
254
- const pageContext = {
255
- _isPageContextObject: true
256
- };
257
- Object.assign(pageContext, pageContextInit);
258
- return pageContext;
259
- }
260
247
  async function renderPageNominal(pageContext) {
261
248
  objectAssign(pageContext, { errorWhileRendering: null });
262
249
  // Route
@@ -281,10 +268,8 @@ async function renderPageNominal(pageContext) {
281
268
  return pageContextAfterRender;
282
269
  }
283
270
  async function getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
284
- const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
271
+ const pageContext = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
285
272
  assert(errNominalPage);
286
- const pageContext = {};
287
- objectAssign(pageContext, pageContextInitEnhanced);
288
273
  objectAssign(pageContext, {
289
274
  is404: false,
290
275
  errorWhileRendering: errNominalPage,
@@ -298,7 +283,7 @@ async function getPageContextErrorPageInit(pageContextInit, globalContext, errNo
298
283
  }
299
284
  async function getPageContextInitEnhancedSSR(pageContextInit, globalContext, urlRewrite, httpRequestId) {
300
285
  const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
301
- const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, {
286
+ const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, false, {
302
287
  ssr: {
303
288
  urlRewrite,
304
289
  urlHandler: _urlHandler,
@@ -341,8 +326,8 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
341
326
  if (!urlNormalized)
342
327
  return null;
343
328
  logRuntimeInfo?.(`URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
344
- const httpResponse = createHttpResponseRedirect({ url: urlNormalized, statusCode: 301 }, pageContextInit.urlOriginal);
345
- const pageContextHttpResponse = createPageContext(pageContextInit);
329
+ const httpResponse = createHttpResponseRedirect({ url: urlNormalized, statusCode: 301 }, pageContextInit);
330
+ const pageContextHttpResponse = createPageContext(pageContextInit, false);
346
331
  objectAssign(pageContextHttpResponse, { httpResponse });
347
332
  return pageContextHttpResponse;
348
333
  }
@@ -383,15 +368,17 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
383
368
  assert(urlTarget !== pageContextInit.urlOriginal);
384
369
  }
385
370
  logRuntimeInfo?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
386
- const httpResponse = createHttpResponseRedirect({ url: urlTarget, statusCode: 301 }, urlWithoutBase);
387
- const pageContextHttpResponse = createPageContext(pageContextInit);
371
+ const httpResponse = createHttpResponseRedirect({ url: urlTarget, statusCode: 301 }, pageContextInit);
372
+ const pageContextHttpResponse = createPageContext(pageContextInit, false);
388
373
  objectAssign(pageContextHttpResponse, { httpResponse });
389
374
  return pageContextHttpResponse;
390
375
  }
391
376
  function normalize(url) {
392
377
  return url || '/';
393
378
  }
394
- async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
379
+ async function handleAbortError(errAbort, pageContextsFromRewrite,
380
+ // The original `pageContextInit` object passed to `renderPage(pageContextInit)`
381
+ pageContextInit,
395
382
  // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
396
383
  pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
397
384
  logAbortErrorHandled(errAbort, globalContext.isProduction, pageContextNominalPageInit);
@@ -403,10 +390,10 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
403
390
  const abortCall = pageContextAbort._abortCall;
404
391
  assert(abortCall);
405
392
  assertUsage(errorPageId, `You called ${pc.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
406
- const pageContext = createPageContext({});
393
+ const pageContext = createPageContext({}, false);
407
394
  objectAssign(pageContext, { pageId: errorPageId });
408
395
  objectAssign(pageContext, pageContextAbort);
409
- objectAssign(pageContext, pageContextErrorPageInit);
396
+ objectAssign(pageContext, pageContextErrorPageInit, true);
410
397
  objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
411
398
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
412
399
  pageContextSerialized = serializePageContextClientSide(pageContext);
@@ -427,15 +414,9 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
427
414
  return { pageContextReturn };
428
415
  }
429
416
  if (pageContextAbort._urlRedirect) {
430
- const pageContextReturn = createPageContext(pageContextInit);
417
+ const pageContextReturn = createPageContext(pageContextInit, false);
431
418
  objectAssign(pageContextReturn, pageContextAbort);
432
- const httpResponse = createHttpResponseRedirect(pageContextAbort._urlRedirect, (() => {
433
- const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
434
- const urlLogical = createUrlFromComponents(null, pathname, searchOriginal,
435
- // The server-side doesn't have access to the hash
436
- null);
437
- return urlLogical;
438
- })());
419
+ const httpResponse = createHttpResponseRedirect(pageContextAbort._urlRedirect, pageContextInit);
439
420
  objectAssign(pageContextReturn, { httpResponse });
440
421
  return { pageContextReturn };
441
422
  }
@@ -448,7 +429,7 @@ async function checkBaseUrl(pageContextInit, globalContext) {
448
429
  const { isBaseMissing } = parseUrl(urlOriginal, baseServer);
449
430
  if (!isBaseMissing)
450
431
  return;
451
- const pageContext = createPageContext(pageContextInit);
432
+ const pageContext = createPageContext(pageContextInit, false);
452
433
  const httpResponse = createHttpResponseBaseIsMissing(urlOriginal, baseServer);
453
434
  objectAssign(pageContext, {
454
435
  httpResponse,
@@ -461,7 +442,7 @@ function renderInvalidRequest(pageContextInit) {
461
442
  const urlPathnameWithBase = parseUrl(pageContextInit.urlOriginal, '/').pathname;
462
443
  assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal);
463
444
  if (urlPathnameWithBase.endsWith('/favicon.ico')) {
464
- const pageContext = createPageContext(pageContextInit);
445
+ const pageContext = createPageContext(pageContextInit, false);
465
446
  const httpResponse = createHttpResponseFavicon404();
466
447
  objectAssign(pageContext, { httpResponse });
467
448
  checkType(pageContext);
@@ -11,7 +11,6 @@ export * from '../../utils/parseUrl.js';
11
11
  export * from '../../utils/parseUrl-extras.js';
12
12
  export * from '../../utils/slice.js';
13
13
  export * from '../../utils/sorter.js';
14
- export * from '../../utils/projectInfo.js';
15
14
  export * from '../../utils/isArray.js';
16
15
  export * from '../../utils/isObject.js';
17
16
  export * from '../../utils/objectAssign.js';
@@ -15,7 +15,6 @@ export * from '../../utils/parseUrl.js';
15
15
  export * from '../../utils/parseUrl-extras.js';
16
16
  export * from '../../utils/slice.js';
17
17
  export * from '../../utils/sorter.js';
18
- export * from '../../utils/projectInfo.js';
19
18
  export * from '../../utils/isArray.js';
20
19
  export * from '../../utils/isObject.js';
21
20
  export * from '../../utils/objectAssign.js';
@@ -9,16 +9,18 @@ import { setGlobalContext_isProduction } from '../runtime/globalContext.js';
9
9
  */
10
10
  async function createDevMiddleware(options = {}) {
11
11
  setGlobalContext_isProduction(false);
12
- const viteConfigFromOptions = {
13
- ...options.viteConfig,
14
- server: {
15
- ...options.viteConfig?.server,
16
- middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
12
+ const optionsMod = {
13
+ ...options,
14
+ viteConfig: {
15
+ ...options.viteConfig,
16
+ root: options.root ?? options.viteConfig?.root,
17
+ server: {
18
+ ...options.viteConfig?.server,
19
+ middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
20
+ }
17
21
  }
18
22
  };
19
- if (options.root)
20
- viteConfigFromOptions.root = options.root;
21
- const { viteConfigEnhanced } = await prepareViteApiCall(viteConfigFromOptions, 'dev');
23
+ const { viteConfigEnhanced } = await prepareViteApiCall(optionsMod, 'dev');
22
24
  const server = await createServer(viteConfigEnhanced);
23
25
  const devMiddleware = server.middlewares;
24
26
  return { devMiddleware, viteServer: server, viteConfig: server.config };
@@ -10,7 +10,8 @@ function assertV1Design(pageConfigs, pageFilesAll) {
10
10
  assert(pageConfigs.length > 0);
11
11
  const filesV1 = unique(pageConfigs
12
12
  .map((p) => Object.values(p.configValueSources).map((sources) => sources
13
- .map((c) => c.definedAtFilePath.filePathAbsoluteUserRootDir)
13
+ .map((c) => c.definedAt)
14
+ .map((definedAt) => (definedAt.definedBy ? null : definedAt.filePathAbsoluteUserRootDir))
14
15
  .filter(isNotNullish)
15
16
  .map((filePathToShowToUser) => indent + filePathToShowToUser)))
16
17
  .flat(2));
@@ -1,7 +1,6 @@
1
1
  export * from '../../utils/assert.js';
2
2
  export * from '../../utils/getFileExtension.js';
3
3
  export * from '../../utils/isPlainObject.js';
4
- export * from '../../utils/projectInfo.js';
5
4
  export * from '../../utils/checkType.js';
6
5
  export * from '../../utils/hasProp.js';
7
6
  export * from '../../utils/objectAssign.js';
@@ -3,7 +3,6 @@ assertIsNotBrowser();
3
3
  export * from '../../utils/assert.js';
4
4
  export * from '../../utils/getFileExtension.js';
5
5
  export * from '../../utils/isPlainObject.js';
6
- export * from '../../utils/projectInfo.js';
7
6
  export * from '../../utils/checkType.js';
8
7
  export * from '../../utils/hasProp.js';
9
8
  export * from '../../utils/objectAssign.js';
@@ -0,0 +1 @@
1
+ export declare const NOT_SERIALIZABLE = "__VIKE__NOT_SERIALIZABLE__";
@@ -0,0 +1,2 @@
1
+ // TODO: move to ../node/runtime/html/NOT_SERIALIZABLE.ts once code is distributed as ESM
2
+ export const NOT_SERIALIZABLE = '__VIKE__NOT_SERIALIZABLE__';
@@ -297,13 +297,17 @@ type ConfigBuiltIn = {
297
297
  */
298
298
  disableAutoRun?: boolean;
299
299
  /**
300
- * Set prerender settings without enabling pre-rendering.
300
+ * Whether to enable pre-rendering.
301
301
  *
302
- * https://vike.dev/prerender#value
302
+ * Setting `enable: null` enables you to set prerender settings without enabling pre-rendering by default.
303
+ *
304
+ * This is useful, for example, if you want pre-rendering to stay opt-in instead of opt-out while setting pre-render settings globally.
305
+ *
306
+ * https://vike.dev/prerender#enable
303
307
  *
304
308
  * @default true
305
309
  */
306
- value?: boolean | null;
310
+ enable?: boolean | null;
307
311
  };
308
312
  /**
309
313
  * Install Vike extensions.
@@ -471,6 +475,22 @@ type ConfigBuiltIn = {
471
475
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
472
476
  */
473
477
  cacheControl?: string;
478
+ /**
479
+ * Make development/preview server available over LAN and public addresses.
480
+ *
481
+ * Default: `false` (or `true` if running inside Docker/Podman).
482
+ *
483
+ * https://vike.dev/host
484
+ */
485
+ host?: boolean | string;
486
+ /**
487
+ * Change port of development/preview server.
488
+ *
489
+ * @default 3000
490
+ *
491
+ * https://vike.dev/port
492
+ */
493
+ port?: number;
474
494
  /** Where scripts are injected in the HTML.
475
495
  *
476
496
  * https://vike.dev/injectScriptsAt
@@ -17,12 +17,15 @@ export type { ConfigValueSources };
17
17
  export type { ConfigValuesComputed };
18
18
  export type { DefinedAtData };
19
19
  export type { DefinedAtFile };
20
+ export type { DefinedAt };
21
+ export type { DefinedBy };
20
22
  export type { DefinedAtFilePath };
21
23
  import type { ConfigValueSerialized } from './serialize/PageConfigSerialized.js';
22
24
  import type { LocationId } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js';
23
25
  import type { FilePath } from './FilePath.js';
24
26
  import type { ConfigDefinitions } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
25
27
  import type { PlusFile } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js';
28
+ import type { Operation } from '../../node/api/types.js';
26
29
  type PageConfigCommon = {
27
30
  pageId: string;
28
31
  } & PageConfigRoute;
@@ -33,7 +36,7 @@ type PageConfigRoute = {
33
36
  isErrorPage?: undefined;
34
37
  routeFilesystem: {
35
38
  routeString: string;
36
- definedBy: string;
39
+ definedAtLocation: string;
37
40
  };
38
41
  };
39
42
  /** Page config, runtime data structure */
@@ -89,12 +92,12 @@ type ConfigValueSources = Record<string, // configName
89
92
  ConfigValueSource[]>;
90
93
  type ConfigValueSource = {
91
94
  configEnv: ConfigEnvInternal;
92
- definedAtFilePath: DefinedAtFilePath;
95
+ definedAt: DefinedAtFilePath | DefinedBy;
93
96
  plusFile: PlusFile | null;
94
97
  locationId: LocationId;
95
98
  /** Wether the config value is loaded at runtime, for example config.Page or config.onBeforeRender */
96
99
  valueIsLoadedWithImport: boolean;
97
- /** Whether the config value is a file path, for example config.client */
100
+ /** Whether the config value is a file path, this is currently only true for +client */
98
101
  valueIsFilePath?: true;
99
102
  /** Whether the config value is defined by a +{configName}.js file */
100
103
  valueIsDefinedByPlusValueFile: boolean;
@@ -119,13 +122,13 @@ type ConfigValue = ConfigValueStandard | ConfigValueCumulative | ConfigValueComp
119
122
  type ConfigValueStandard = {
120
123
  type: 'standard';
121
124
  value: unknown;
122
- definedAtData: DefinedAtFile;
125
+ definedAtData: DefinedAt;
123
126
  };
124
127
  /** Defined by multiple sources (thus multiple file paths). */
125
128
  type ConfigValueCumulative = {
126
129
  type: 'cumulative';
127
130
  value: unknown[];
128
- definedAtData: DefinedAtFile[];
131
+ definedAtData: DefinedAt[];
129
132
  };
130
133
  /** Defined internally by Vike (currently, Vike doesn't support computed configs created by users). */
131
134
  type ConfigValueComputed = {
@@ -133,8 +136,16 @@ type ConfigValueComputed = {
133
136
  value: unknown;
134
137
  definedAtData: null;
135
138
  };
136
- type DefinedAtData = DefinedAtFile | DefinedAtFile[] | null;
139
+ type DefinedAtData = DefinedAt | DefinedAt[] | null;
140
+ type DefinedAt = DefinedAtFile | DefinedBy;
141
+ type DefinedBy = {
142
+ definedBy: 'cli' | 'env';
143
+ } | {
144
+ definedBy: 'api';
145
+ operation: Operation;
146
+ };
137
147
  type DefinedAtFile = {
138
148
  filePathToShowToUser: string;
139
149
  fileExportPathToShowToUser: null | string[];
150
+ definedBy?: undefined;
140
151
  };
@@ -1,11 +1,13 @@
1
1
  export { getConfigDefinedAt };
2
2
  export { getConfigDefinedAtOptional };
3
3
  export { getDefinedAtString };
4
+ export { getDefinedByString };
4
5
  export type { ConfigDefinedAt };
5
6
  export type { ConfigDefinedAtOptional };
6
- import type { DefinedAtData, DefinedAtFile } from './PageConfig.js';
7
+ import type { DefinedAtData, DefinedBy } from './PageConfig.js';
7
8
  type ConfigDefinedAtOptional = ConfigDefinedAt | `Config ${string} defined internally`;
8
9
  type ConfigDefinedAt = `Config ${string} defined at ${string}`;
9
- declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: DefinedAtFile | DefinedAtFile[]): `${SentenceBegin} ${ConfigName} defined at ${string}`;
10
+ declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: NonNullable<DefinedAtData>): `${SentenceBegin} ${ConfigName} defined at ${string}`;
10
11
  declare function getConfigDefinedAtOptional<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: DefinedAtData): `${SentenceBegin} ${ConfigName} defined ${'internally' | `at ${string}`}`;
11
- declare function getDefinedAtString(definedAtData: DefinedAtFile | DefinedAtFile[], configName: string): string;
12
+ declare function getDefinedAtString(definedAtData: NonNullable<DefinedAtData>, configName: string): string;
13
+ declare function getDefinedByString(definedAt: DefinedBy, configName: string): `API call dev({ vikeConfig: { ${string} } })` | `API call build({ vikeConfig: { ${string} } })` | `API call preview({ vikeConfig: { ${string} } })` | `API call prerender({ vikeConfig: { ${string} } })` | `CLI option --${string}` | `environment variable VIKE_CONFIG="{${string}}"`;
@@ -1,7 +1,8 @@
1
1
  export { getConfigDefinedAt };
2
2
  export { getConfigDefinedAtOptional };
3
3
  export { getDefinedAtString };
4
- import { assert, isArray } from '../utils.js';
4
+ export { getDefinedByString };
5
+ import { assert, checkType, isArray } from '../utils.js';
5
6
  import pc from '@brillout/picocolors';
6
7
  import { getExportPath } from './getExportPath.js';
7
8
  function getConfigDefinedAt(sentenceBegin, configName, definedAtData) {
@@ -28,8 +29,10 @@ function getDefinedAtString(definedAtData, configName) {
28
29
  }
29
30
  assert(files.length >= 1);
30
31
  const definedAtString = files
31
- .map((source) => {
32
- const { filePathToShowToUser, fileExportPathToShowToUser } = source;
32
+ .map((definedAt) => {
33
+ if (definedAt.definedBy)
34
+ return getDefinedByString(definedAt, configName);
35
+ const { filePathToShowToUser, fileExportPathToShowToUser } = definedAt;
33
36
  let s = filePathToShowToUser;
34
37
  const exportPath = getExportPath(fileExportPathToShowToUser, configName);
35
38
  if (exportPath) {
@@ -40,3 +43,17 @@ function getDefinedAtString(definedAtData, configName) {
40
43
  .join(' / ');
41
44
  return definedAtString;
42
45
  }
46
+ function getDefinedByString(definedAt, configName) {
47
+ if (definedAt.definedBy === 'api') {
48
+ return `API call ${pc.cyan(`${definedAt.operation}({ vikeConfig: { ${configName} } })`)}`;
49
+ }
50
+ const { definedBy } = definedAt;
51
+ if (definedBy === 'cli') {
52
+ return `CLI option ${pc.cyan(`--${configName}`)}`;
53
+ }
54
+ if (definedBy === 'env') {
55
+ return `environment variable ${pc.cyan(`VIKE_CONFIG="{${configName}}"`)}`;
56
+ }
57
+ checkType(definedBy);
58
+ assert(false);
59
+ }
@@ -31,7 +31,7 @@ function getConfigValue(pageConfig, configName) {
31
31
  return {
32
32
  type: 'standard',
33
33
  value: configValueSource.value,
34
- definedAtData: getDefinedAtFile(configValueSource)
34
+ definedAtData: getDefinedAt(configValueSource)
35
35
  };
36
36
  }
37
37
  else {
@@ -51,13 +51,16 @@ function mergeCumulative(configValueSources) {
51
51
  assert(configValueSource.configEnv.config === true);
52
52
  assert(configValueSource.valueIsLoaded);
53
53
  value.push(configValueSource.value);
54
- definedAtData.push(getDefinedAtFile(configValueSource));
54
+ definedAtData.push(getDefinedAt(configValueSource));
55
55
  });
56
56
  return { value, definedAtData };
57
57
  }
58
- function getDefinedAtFile(configValueSource) {
58
+ function getDefinedAt(configValueSource) {
59
+ const { definedAt } = configValueSource;
60
+ if (definedAt.definedBy)
61
+ return definedAt;
59
62
  return {
60
- filePathToShowToUser: configValueSource.definedAtFilePath.filePathToShowToUser,
61
- fileExportPathToShowToUser: configValueSource.definedAtFilePath.fileExportPathToShowToUser
63
+ filePathToShowToUser: definedAt.filePathToShowToUser,
64
+ fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
62
65
  };
63
66
  }
@@ -12,7 +12,7 @@ function getConfigValueFilePathToShowToUser(definedAtData) {
12
12
  // A unique file path only exists if the config value isn't cumulative nor computed:
13
13
  // - cumulative config values have multiple file paths
14
14
  // - computed values don't have any file path
15
- if (!definedAtData || isArray(definedAtData))
15
+ if (!definedAtData || isArray(definedAtData) || definedAtData.definedBy)
16
16
  return null;
17
17
  const { filePathToShowToUser } = definedAtData;
18
18
  assert(filePathToShowToUser);
@@ -3,8 +3,8 @@ export { parseConfigValuesSerialized };
3
3
  import type { ConfigValues, PageConfigRuntime, PageConfigGlobalRuntime } from '../PageConfig.js';
4
4
  import type { PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from './PageConfigSerialized.js';
5
5
  import type { ConfigValueSerialized } from './PageConfigSerialized.js';
6
- declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;
7
6
  declare function parsePageConfigs(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
8
7
  pageConfigs: PageConfigRuntime[];
9
8
  pageConfigGlobal: PageConfigGlobalRuntime;
10
9
  };
10
+ declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;