vike 0.4.168 → 0.4.169

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 (178) hide show
  1. package/dist/cjs/node/plugin/plugins/buildConfig.js +10 -2
  2. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
  3. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +19 -16
  4. package/dist/cjs/node/plugin/plugins/distFileNames.js +7 -1
  5. package/dist/cjs/node/plugin/plugins/envVars.js +1 -5
  6. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  7. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +7 -7
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +14 -11
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +7 -1
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +11 -14
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +129 -0
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +8 -8
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +52 -12
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +81 -106
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +2 -2
  16. package/dist/cjs/node/plugin/shared/getFilePath.js +50 -49
  17. package/dist/cjs/node/plugin/utils.js +2 -2
  18. package/dist/cjs/node/prerender/runPrerender.js +6 -5
  19. package/dist/cjs/node/prerender/utils.js +2 -1
  20. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +1 -0
  21. package/dist/cjs/node/runtime/index-common.js +14 -3
  22. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -1
  23. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +25 -14
  24. package/dist/cjs/node/runtime/renderPage/log404/index.js +2 -2
  25. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +1 -1
  26. package/dist/cjs/node/runtime/utils.js +2 -1
  27. package/dist/cjs/node/shared/assertV1Design.js +1 -1
  28. package/dist/cjs/node/shared/getClientEntry.js +2 -2
  29. package/dist/cjs/node/shared/prependEntriesDir.js +1 -0
  30. package/dist/cjs/node/shared/utils.js +0 -1
  31. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +3 -3
  32. package/dist/cjs/shared/getPageFiles/getExports.js +8 -15
  33. package/dist/cjs/shared/getPageFiles.js +3 -6
  34. package/dist/cjs/shared/hooks/getHook.js +7 -6
  35. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +48 -0
  36. package/dist/cjs/shared/page-configs/{helpers/getConfigValue.js → getConfigValue.js} +6 -8
  37. package/dist/cjs/shared/page-configs/helpers.js +6 -11
  38. package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -1
  39. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +2 -1
  40. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesSerialized.js +11 -6
  41. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +4 -3
  42. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +3 -3
  43. package/dist/cjs/shared/route/index.js +2 -2
  44. package/dist/cjs/shared/route/loadPageRoutes.js +12 -10
  45. package/dist/cjs/shared/route/resolveRouteFunction.js +8 -9
  46. package/dist/cjs/shared/route/resolveRouteString.js +5 -16
  47. package/dist/cjs/shared/route/utils.js +0 -1
  48. package/dist/cjs/shared/utils.js +1 -0
  49. package/dist/cjs/utils/assertPathFilesystemAbsolute.js +39 -0
  50. package/dist/cjs/utils/createErrorWithCleanStackTrace.js +1 -7
  51. package/dist/cjs/utils/debug.js +2 -1
  52. package/dist/cjs/utils/findFile.js +2 -1
  53. package/dist/cjs/utils/hasProp.js +9 -5
  54. package/dist/cjs/utils/injectRollupInputs.js +2 -1
  55. package/dist/cjs/utils/isArray.js +8 -0
  56. package/dist/cjs/utils/isArrayOfStrings.js +8 -0
  57. package/dist/cjs/utils/isDev.js +12 -4
  58. package/dist/cjs/utils/isNpmPackage.js +1 -1
  59. package/dist/cjs/utils/isObjectOfStrings.js +8 -0
  60. package/dist/cjs/utils/projectInfo.js +1 -1
  61. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +3 -1
  62. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +2 -1
  63. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -0
  64. package/dist/esm/client/shared/getPageContextSerializedInHtml.d.ts +1 -0
  65. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +1 -0
  66. package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -7
  67. package/dist/esm/node/plugin/plugins/buildConfig.js +9 -1
  68. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
  69. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +20 -17
  70. package/dist/esm/node/plugin/plugins/distFileNames.js +8 -2
  71. package/dist/esm/node/plugin/plugins/envVars.js +2 -6
  72. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  73. package/dist/esm/node/plugin/plugins/importUserCode/index.js +9 -9
  74. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.d.ts +2 -2
  75. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +14 -11
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +4 -3
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +7 -1
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +2 -2
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +12 -15
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +12 -0
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +123 -0
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.d.ts +8 -8
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +7 -7
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +53 -13
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +81 -106
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
  87. package/dist/esm/node/plugin/shared/getFilePath.d.ts +11 -5
  88. package/dist/esm/node/plugin/shared/getFilePath.js +49 -48
  89. package/dist/esm/node/plugin/utils.d.ts +2 -2
  90. package/dist/esm/node/plugin/utils.js +2 -2
  91. package/dist/esm/node/prerender/runPrerender.js +6 -5
  92. package/dist/esm/node/prerender/utils.d.ts +2 -1
  93. package/dist/esm/node/prerender/utils.js +2 -1
  94. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +1 -0
  95. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -0
  96. package/dist/esm/node/runtime/index-common.d.ts +0 -4
  97. package/dist/esm/node/runtime/index-common.js +14 -3
  98. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -1
  99. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +4 -4
  100. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +27 -16
  101. package/dist/esm/node/runtime/renderPage/log404/index.js +2 -2
  102. package/dist/esm/node/runtime/renderPage/logErrorHint.js +2 -2
  103. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -7
  104. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +16 -16
  105. package/dist/esm/node/runtime/utils.d.ts +2 -1
  106. package/dist/esm/node/runtime/utils.js +2 -1
  107. package/dist/esm/node/shared/assertV1Design.js +1 -1
  108. package/dist/esm/node/shared/getClientEntry.js +1 -1
  109. package/dist/esm/node/shared/prependEntriesDir.js +1 -0
  110. package/dist/esm/node/shared/utils.d.ts +0 -1
  111. package/dist/esm/node/shared/utils.js +0 -1
  112. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
  113. package/dist/esm/shared/getPageFiles/getExports.d.ts +4 -5
  114. package/dist/esm/shared/getPageFiles/getExports.js +9 -16
  115. package/dist/esm/shared/getPageFiles.d.ts +1 -2
  116. package/dist/esm/shared/getPageFiles.js +1 -3
  117. package/dist/esm/shared/hooks/getHook.js +6 -5
  118. package/dist/esm/shared/page-configs/Config.d.ts +2 -2
  119. package/dist/esm/shared/page-configs/FilePath.d.ts +32 -22
  120. package/dist/esm/shared/page-configs/PageConfig.d.ts +27 -15
  121. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +11 -0
  122. package/dist/esm/shared/page-configs/getConfigDefinedAt.js +42 -0
  123. package/dist/esm/shared/page-configs/{helpers/getConfigValue.d.ts → getConfigValue.d.ts} +2 -2
  124. package/dist/esm/shared/page-configs/{helpers/getConfigValue.js → getConfigValue.js} +6 -8
  125. package/dist/esm/shared/page-configs/helpers.d.ts +3 -9
  126. package/dist/esm/shared/page-configs/helpers.js +6 -8
  127. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +7 -4
  128. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +2 -2
  129. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +2 -1
  130. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.js +12 -7
  131. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +5 -4
  132. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +3 -3
  133. package/dist/esm/shared/route/index.js +2 -2
  134. package/dist/esm/shared/route/loadPageRoutes.d.ts +3 -3
  135. package/dist/esm/shared/route/loadPageRoutes.js +10 -8
  136. package/dist/esm/shared/route/resolveRouteFunction.d.ts +1 -1
  137. package/dist/esm/shared/route/resolveRouteFunction.js +9 -10
  138. package/dist/esm/shared/route/resolveRouteString.d.ts +0 -2
  139. package/dist/esm/shared/route/resolveRouteString.js +5 -16
  140. package/dist/esm/shared/route/utils.d.ts +0 -1
  141. package/dist/esm/shared/route/utils.js +0 -1
  142. package/dist/esm/shared/utils.d.ts +1 -0
  143. package/dist/esm/shared/utils.js +1 -0
  144. package/dist/esm/utils/assertPathFilesystemAbsolute.d.ts +6 -0
  145. package/dist/esm/utils/assertPathFilesystemAbsolute.js +33 -0
  146. package/dist/esm/utils/createErrorWithCleanStackTrace.js +1 -7
  147. package/dist/esm/utils/debug.js +2 -1
  148. package/dist/esm/utils/findFile.js +2 -1
  149. package/dist/esm/utils/hasProp.d.ts +1 -0
  150. package/dist/esm/utils/hasProp.js +9 -5
  151. package/dist/esm/utils/injectRollupInputs.js +2 -1
  152. package/dist/esm/utils/isArray.d.ts +1 -0
  153. package/dist/esm/utils/isArray.js +4 -0
  154. package/dist/esm/utils/isArrayOfStrings.d.ts +2 -0
  155. package/dist/esm/utils/isArrayOfStrings.js +5 -0
  156. package/dist/esm/utils/isDev.d.ts +3 -0
  157. package/dist/esm/utils/isDev.js +11 -3
  158. package/dist/esm/utils/isNpmPackage.js +1 -1
  159. package/dist/esm/utils/isObjectOfStrings.d.ts +2 -0
  160. package/dist/esm/utils/isObjectOfStrings.js +5 -0
  161. package/dist/esm/utils/projectInfo.d.ts +2 -2
  162. package/dist/esm/utils/projectInfo.js +1 -1
  163. package/package.json +3 -2
  164. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +0 -136
  165. package/dist/cjs/shared/page-configs/helpers/getConfigDefinedAtString.js +0 -43
  166. package/dist/cjs/utils/assertPathIsFilesystemAbsolute.js +0 -21
  167. package/dist/cjs/utils/isStringRecord.js +0 -7
  168. package/dist/cjs/utils/mergeCumulativeValues.js +0 -21
  169. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.d.ts +0 -13
  170. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +0 -130
  171. package/dist/esm/shared/page-configs/helpers/getConfigDefinedAtString.d.ts +0 -7
  172. package/dist/esm/shared/page-configs/helpers/getConfigDefinedAtString.js +0 -37
  173. package/dist/esm/utils/assertPathIsFilesystemAbsolute.d.ts +0 -3
  174. package/dist/esm/utils/assertPathIsFilesystemAbsolute.js +0 -15
  175. package/dist/esm/utils/isStringRecord.d.ts +0 -1
  176. package/dist/esm/utils/isStringRecord.js +0 -3
  177. package/dist/esm/utils/mergeCumulativeValues.d.ts +0 -2
  178. package/dist/esm/utils/mergeCumulativeValues.js +0 -18
@@ -41,6 +41,7 @@ const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
41
41
  const getPageContextRequestUrl_js_1 = require("../../shared/getPageContextRequestUrl.js");
42
42
  const resolveRouteString_js_1 = require("../../shared/route/resolveRouteString.js");
43
43
  const helpers_js_1 = require("../../shared/page-configs/helpers.js");
44
+ const getConfigValue_js_1 = require("../../shared/page-configs/getConfigValue.js");
44
45
  const loadConfigValues_js_1 = require("../../shared/page-configs/loadConfigValues.js");
45
46
  const error_page_js_1 = require("../../shared/error-page.js");
46
47
  const addUrlComputedProps_js_1 = require("../../shared/addUrlComputedProps.js");
@@ -103,7 +104,7 @@ async function runPrerender(options, manuallyTriggered) {
103
104
  }
104
105
  const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
105
106
  const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
106
- (0, utils_js_1.assertPathIsFilesystemAbsolute)(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
107
+ (0, utils_js_1.assertPathFilesystemAbsolute)(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
107
108
  await (0, globalContext_js_1.initGlobalContext)(true, outDirRoot);
108
109
  const renderContext = await (0, renderPageAlreadyRouted_js_1.getRenderContext)();
109
110
  renderContext.pageFilesAll.forEach(assertExportNames);
@@ -141,9 +142,9 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
141
142
  // V1 design
142
143
  pageConfigs.forEach((pageConfig) => {
143
144
  const configName = 'prerender';
144
- const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, configName, 'boolean');
145
+ const configValue = (0, getConfigValue_js_1.getConfigValue)(pageConfig, configName, 'boolean');
145
146
  if (configValue?.value === false) {
146
- const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue);
147
+ const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue.definedAtData);
147
148
  (0, utils_js_1.assert)(configValueFilePathToShowToUser);
148
149
  doNotPrerenderList.push({
149
150
  pageId: pageConfig.pageId,
@@ -501,7 +502,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
501
502
  if (pageContext._pageConfigs.length > 0) {
502
503
  const pageConfig = pageContext._pageConfigs.find((p) => p.pageId === pageId);
503
504
  (0, utils_js_1.assert)(pageConfig);
504
- usesClientRouter = (0, helpers_js_1.getConfigValue)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
505
+ usesClientRouter = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
505
506
  }
506
507
  else {
507
508
  usesClientRouter = globalContext.pluginManifest.usesClientRouter;
@@ -637,7 +638,7 @@ async function write(urlOriginal, pageContext, fileExtension, fileContent, root,
637
638
  }
638
639
  }
639
640
  function normalizeOnPrerenderHookResult(prerenderResult, prerenderHookFile, hookName) {
640
- if (Array.isArray(prerenderResult)) {
641
+ if ((0, utils_js_1.isArray)(prerenderResult)) {
641
642
  return prerenderResult.map(normalize);
642
643
  }
643
644
  else {
@@ -29,4 +29,5 @@ __exportStar(require("../../utils/urlToFile.js"), exports);
29
29
  __exportStar(require("../../utils/isPlainObject.js"), exports);
30
30
  __exportStar(require("../../utils/assertNodeEnv.js"), exports);
31
31
  __exportStar(require("../../utils/pLimit.js"), exports);
32
- __exportStar(require("../../utils/assertPathIsFilesystemAbsolute.js"), exports);
32
+ __exportStar(require("../../utils/assertPathFilesystemAbsolute.js"), exports);
33
+ __exportStar(require("../../utils/isArray.js"), exports);
@@ -23,6 +23,7 @@ const PASS_TO_CLIENT = [
23
23
  */
24
24
  pageContextInitIsPassedToClient_js_1.pageContextInitIsPassedToClient,
25
25
  '_pageId',
26
+ 'routeParams',
26
27
  'data' // for data() hook
27
28
  ];
28
29
  const PASS_TO_CLIENT_ERROR_PAGE = ['pageProps', 'is404', isServerSideError_js_1.isServerSideError];
@@ -22,7 +22,18 @@ Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: functio
22
22
  // TODO/v1-release: remove
23
23
  var createPageRenderer_js_1 = require("../createPageRenderer.js");
24
24
  Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
25
- // Help Telefunc detect the user's stack
26
- globalThis._isVitePluginSsr = true;
27
- globalThis._isVike = true;
25
+ addEcosystemStamp();
28
26
  require("./page-files/setup.js");
27
+ // Used by:
28
+ // - Telefunc (to detect the user's stack https://github.com/brillout/telefunc/blob/8288310e88e06a42b710d39c39fb502364ca6d30/telefunc/utils/isVikeApp.ts#L4)
29
+ function addEcosystemStamp() {
30
+ const g = globalThis;
31
+ g._isVikeApp =
32
+ /* Don't set to true so that consumers do `!!globalThis._isVikeApp` instead of `globalThis._isVikeApp === true`.
33
+ true
34
+ */
35
+ // We use an object so that we can eventually, in the future, add helpful information as needed. (E.g. the Vike version, or global settings.)
36
+ {};
37
+ // We keep the old stamp for older Telefunc versions
38
+ g._isVitePluginSsr = true;
39
+ }
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCacheControl = void 0;
4
4
  const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
5
+ const getConfigValue_js_1 = require("../../../../shared/page-configs/getConfigValue.js");
5
6
  const defaultValue = 'no-store, max-age=0';
6
7
  function getCacheControl(pageId, pageConfigs) {
7
8
  // TODO/v1-release: remove
8
9
  if (pageConfigs.length === 0)
9
10
  return defaultValue;
10
11
  const pageConfig = (0, helpers_js_1.getPageConfig)(pageId, pageConfigs);
11
- const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, 'cacheControl', 'string');
12
+ const configValue = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'cacheControl', 'string');
12
13
  const value = configValue?.value;
13
14
  if (value)
14
15
  return value;
@@ -12,21 +12,36 @@ const globalContext_js_1 = require("../globalContext.js");
12
12
  const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
13
13
  async function loadUserFilesServerSide(pageContext) {
14
14
  const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
15
- const [{ config, configEntries, exports, exportsAll, pageExports, pageFilesLoaded, pageConfigLoaded }] = await Promise.all([
15
+ const [{ pageFilesLoaded, pageConfigLoaded, ...pageContextExports }] = await Promise.all([
16
16
  loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
17
17
  (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
18
18
  ]);
19
19
  const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext._pageId);
20
+ const isV1Design = !!pageConfig;
21
+ const passToClient = [];
22
+ const errMsg = ' should be an array of strings.';
23
+ if (!isV1Design) {
24
+ pageContextExports.exportsAll.passToClient?.forEach((e) => {
25
+ (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(e, 'exportValue', 'string[]'), `${e.exportSource}${errMsg}`);
26
+ passToClient.push(...e.exportValue);
27
+ });
28
+ }
29
+ else {
30
+ pageContextExports.configEntries.passToClient?.forEach((e) => {
31
+ const { configValue } = e;
32
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue));
33
+ const vals = configValue.flat(1);
34
+ // TODO: improve error message by using (upcoming) new data structure instead of configEntries
35
+ (0, utils_js_1.assertUsage)((0, utils_js_1.isArrayOfStrings)(vals), `${e.configDefinedAt}${errMsg}`);
36
+ passToClient.push(...vals);
37
+ });
38
+ }
20
39
  const pageContextAddendum = {};
21
40
  (0, utils_js_1.objectAssign)(pageContextAddendum, {
22
- config,
23
- configEntries,
24
- exports,
25
- exportsAll,
26
- pageExports,
27
- Page: exports.Page,
41
+ ...pageContextExports,
42
+ Page: pageContextExports.exports.Page,
28
43
  _isHtmlOnly: isHtmlOnly,
29
- _passToClient: (0, getPageFiles_js_1.getExportUnion)(exportsAll, 'passToClient'),
44
+ _passToClient: passToClient,
30
45
  _pageFilePathsLoaded: pageFilesLoaded.map((p) => p.filePath)
31
46
  });
32
47
  (0, utils_js_1.objectAssign)(pageContextAddendum, {
@@ -87,13 +102,9 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
87
102
  const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageFilesAll, pageId);
88
103
  const pageConfigLoaded = !pageConfig ? null : await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, isDev);
89
104
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
90
- const { config, configEntries, exports, exportsAll, pageExports } = (0, getPageFiles_js_1.getExports)(pageFilesServerSide, pageConfigLoaded);
105
+ const pageContextExports = (0, getPageFiles_js_1.getPageContextExports)(pageFilesServerSide, pageConfigLoaded);
91
106
  return {
92
- config,
93
- configEntries,
94
- exports,
95
- exportsAll,
96
- pageExports,
107
+ ...pageContextExports,
97
108
  pageFilesLoaded: pageFilesServerSide,
98
109
  pageConfigLoaded
99
110
  };
@@ -42,8 +42,8 @@ function getRoutesInfo(pageRoutes) {
42
42
  routeDefinedBy = pageRoute.routeFilesystemDefinedBy;
43
43
  }
44
44
  else {
45
- (0, utils_js_1.assert)(pageRoute.routeDefinedAt);
46
- routeDefinedBy = pageRoute.routeDefinedAt;
45
+ (0, utils_js_1.assert)(pageRoute.routeDefinedAtString);
46
+ routeDefinedBy = pageRoute.routeDefinedAtString;
47
47
  }
48
48
  if (pageRoute.routeType === 'STRING') {
49
49
  routeStr = pageRoute.routeString;
@@ -83,7 +83,7 @@ function isCjsEsmError(error) {
83
83
  }
84
84
  exports.isCjsEsmError = isCjsEsmError;
85
85
  function normalizeRes(res) {
86
- let packageNames = Array.isArray(res) ? res : [res];
86
+ let packageNames = (0, utils_js_1.isArray)(res) ? res : [res];
87
87
  packageNames = (0, utils_js_1.unique)(packageNames.filter(utils_js_1.isNotNullish).filter((packageName) => packageName !== '@brillout/import'));
88
88
  if (packageNames.length === 0)
89
89
  return false;
@@ -31,6 +31,7 @@ __exportStar(require("../../utils/parseUrl-extras.js"), exports);
31
31
  __exportStar(require("../../utils/slice.js"), exports);
32
32
  __exportStar(require("../../utils/sorter.js"), exports);
33
33
  __exportStar(require("../../utils/projectInfo.js"), exports);
34
+ __exportStar(require("../../utils/isArray.js"), exports);
34
35
  __exportStar(require("../../utils/isObject.js"), exports);
35
36
  __exportStar(require("../../utils/objectAssign.js"), exports);
36
37
  __exportStar(require("../../utils/PromiseType.js"), exports);
@@ -54,7 +55,6 @@ __exportStar(require("../../utils/isNotNullish.js"), exports);
54
55
  __exportStar(require("../../utils/isScriptFile.js"), exports);
55
56
  __exportStar(require("../../utils/removeFileExtention.js"), exports);
56
57
  __exportStar(require("../../utils/objectKeys.js"), exports);
57
- __exportStar(require("../../utils/isStringRecord.js"), exports);
58
58
  __exportStar(require("../../utils/getFileExtension.js"), exports);
59
59
  __exportStar(require("../../utils/assertIsNotProductionRuntime.js"), exports);
60
60
  __exportStar(require("../../utils/virtual-files.js"), exports);
@@ -67,3 +67,4 @@ __exportStar(require("../../utils/getTerminWidth.js"), exports);
67
67
  __exportStar(require("../../utils/truncateString.js"), exports);
68
68
  __exportStar(require("../../utils/formatHintLog.js"), exports);
69
69
  __exportStar(require("../../utils/joinEnglish.js"), exports);
70
+ __exportStar(require("../../utils/isArrayOfStrings.js"), exports);
@@ -12,7 +12,7 @@ function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
12
12
  const indent = '- ';
13
13
  const filesV1 = (0, utils_js_1.unique)(pageConfigs
14
14
  .map((p) => Object.values(p.configValues)
15
- .map(helpers_js_1.getConfigValueFilePathToShowToUser)
15
+ .map((c) => (0, helpers_js_1.getConfigValueFilePathToShowToUser)(c.definedAtData))
16
16
  .filter(utils_js_1.isNotNullish)
17
17
  .map((filePathToShowToUser) => indent + filePathToShowToUser))
18
18
  .flat(2));
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getClientEntry = void 0;
4
- const helpers_js_1 = require("../../shared/page-configs/helpers.js");
4
+ const getConfigValue_js_1 = require("../../shared/page-configs/getConfigValue.js");
5
5
  function getClientEntry(pageConfig) {
6
6
  const configName = 'client';
7
- const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, configName, 'string');
7
+ const configValue = (0, getConfigValue_js_1.getConfigValue)(pageConfig, configName, 'string');
8
8
  if (!configValue)
9
9
  return null;
10
10
  return configValue.value;
@@ -7,6 +7,7 @@ function prependEntriesDir(entryName) {
7
7
  entryName = entryName.slice(1);
8
8
  }
9
9
  (0, utils_js_1.assert)(!entryName.startsWith('/'));
10
+ (0, utils_js_1.assert)(entryName);
10
11
  entryName = `entries/${entryName}`;
11
12
  return entryName;
12
13
  }
@@ -22,7 +22,6 @@ __exportStar(require("../../utils/isPlainObject.js"), exports);
22
22
  __exportStar(require("../../utils/projectInfo.js"), exports);
23
23
  __exportStar(require("../../utils/checkType.js"), exports);
24
24
  __exportStar(require("../../utils/hasProp.js"), exports);
25
- __exportStar(require("../../utils/isStringRecord.js"), exports);
26
25
  __exportStar(require("../../utils/objectAssign.js"), exports);
27
26
  __exportStar(require("../../utils/checkType.js"), exports);
28
27
  __exportStar(require("../../utils/hasProp.js"), exports);
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.analyzeClientSide = void 0;
4
- const helpers_js_1 = require("../page-configs/helpers.js");
4
+ const getConfigValue_js_1 = require("../page-configs/getConfigValue.js");
5
5
  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, helpers_js_1.getConfigValue)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
10
- const isClientSideRenderable = (0, helpers_js_1.getConfigValue)(pageConfig, 'isClientSideRenderable', 'boolean')?.value ?? false;
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;
11
11
  return { isClientSideRenderable, isClientRouting };
12
12
  }
13
13
  else {
@@ -3,13 +3,14 @@ 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.getExports = exports.getExportUnion = void 0;
6
+ exports.getPageContextExports = void 0;
7
7
  const isScriptFile_js_1 = require("../../utils/isScriptFile.js");
8
8
  const utils_js_1 = require("../utils.js");
9
9
  const assert_exports_old_design_js_1 = require("./assert_exports_old_design.js");
10
+ const getConfigDefinedAt_js_1 = require("../page-configs/getConfigDefinedAt.js");
10
11
  const helpers_js_1 = require("../page-configs/helpers.js");
11
12
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
- function getExports(pageFiles, pageConfig) {
13
+ function getPageContextExports(pageFiles, pageConfig) {
13
14
  const configEntries = {};
14
15
  const config = {};
15
16
  const exportsAll = {};
@@ -34,8 +35,8 @@ function getExports(pageFiles, pageConfig) {
34
35
  if (pageConfig) {
35
36
  Object.entries(pageConfig.configValues).forEach(([configName, configValue]) => {
36
37
  const { value } = configValue;
37
- const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue);
38
- const configDefinedAt = (0, helpers_js_1.getConfigDefinedAtString)('Config', configName, configValue);
38
+ const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue.definedAtData);
39
+ const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAtOptional)('Config', configName, configValue.definedAtData);
39
40
  config[configName] = config[configName] ?? value;
40
41
  configEntries[configName] = configEntries[configName] ?? [];
41
42
  // Currently each configName has only one entry. Adding an entry for each overriden config value isn't implemented yet. (This is an isomorphic file and it isn't clear whether this can/should be implemented on the client-side. We should load a minimum amount of code on the client-side.)
@@ -73,7 +74,7 @@ function getExports(pageFiles, pageConfig) {
73
74
  });
74
75
  (0, utils_js_1.assert)(!('default' in exports));
75
76
  (0, utils_js_1.assert)(!('default' in exportsAll));
76
- return {
77
+ const pageContextExports = {
77
78
  config,
78
79
  configEntries,
79
80
  // TODO/v1-release: remove
@@ -81,8 +82,9 @@ function getExports(pageFiles, pageConfig) {
81
82
  exportsAll,
82
83
  pageExports
83
84
  };
85
+ return pageContextExports;
84
86
  }
85
- exports.getExports = getExports;
87
+ exports.getPageContextExports = getPageContextExports;
86
88
  function getExportValues(pageFile) {
87
89
  const { filePath, fileExports } = pageFile;
88
90
  (0, utils_js_1.assert)(fileExports); // assume pageFile.loadFile() was called
@@ -132,12 +134,3 @@ function createObjectWithDeprecationWarning() {
132
134
  }
133
135
  });
134
136
  }
135
- function getExportUnion(exportsAll, propName) {
136
- return (exportsAll[propName]
137
- ?.map((e) => {
138
- (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(e, 'exportValue', 'string[]'), `${e.exportSource} should be an array of strings.`);
139
- return e.exportValue;
140
- })
141
- .flat() ?? []);
142
- }
143
- exports.getExportUnion = getExportUnion;
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExports = exports.getPageFilesServerSide = exports.getPageFilesClientSide = exports.setPageFilesAsync = exports.setPageFiles = exports.getPageFilesAll = exports.getExportUnion = void 0;
4
- // Utils
5
- var getExports_js_1 = require("./getPageFiles/getExports.js");
6
- Object.defineProperty(exports, "getExportUnion", { enumerable: true, get: function () { return getExports_js_1.getExportUnion; } });
3
+ exports.getPageContextExports = exports.getPageFilesServerSide = exports.getPageFilesClientSide = exports.setPageFilesAsync = exports.setPageFiles = exports.getPageFilesAll = void 0;
7
4
  var setPageFiles_js_1 = require("./getPageFiles/setPageFiles.js");
8
5
  Object.defineProperty(exports, "getPageFilesAll", { enumerable: true, get: function () { return setPageFiles_js_1.getPageFilesAll; } });
9
6
  var setPageFiles_js_2 = require("./getPageFiles/setPageFiles.js");
@@ -14,5 +11,5 @@ var getAllPageIdFiles_js_1 = require("./getPageFiles/getAllPageIdFiles.js");
14
11
  Object.defineProperty(exports, "getPageFilesClientSide", { enumerable: true, get: function () { return getAllPageIdFiles_js_1.getPageFilesClientSide; } });
15
12
  var getAllPageIdFiles_js_2 = require("./getPageFiles/getAllPageIdFiles.js");
16
13
  Object.defineProperty(exports, "getPageFilesServerSide", { enumerable: true, get: function () { return getAllPageIdFiles_js_2.getPageFilesServerSide; } });
17
- var getExports_js_2 = require("./getPageFiles/getExports.js");
18
- Object.defineProperty(exports, "getExports", { enumerable: true, get: function () { return getExports_js_2.getExports; } });
14
+ var getExports_js_1 = require("./getPageFiles/getExports.js");
15
+ Object.defineProperty(exports, "getPageContextExports", { enumerable: true, get: function () { return getExports_js_1.getPageContextExports; } });
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getHookTimeoutDefault = exports.setIsPrerenderering = exports.assertHook = exports.getHookFromPageConfigGlobal = exports.getHookFromPageConfig = exports.getHook = void 0;
7
7
  const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
8
8
  const helpers_js_1 = require("../page-configs/helpers.js");
9
+ const getConfigValue_js_1 = require("../page-configs/getConfigValue.js");
9
10
  const utils_js_1 = require("../utils.js");
10
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
12
  const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('getHook.ts', {
@@ -30,15 +31,15 @@ function getHook(pageContext, hookName) {
30
31
  }
31
32
  exports.getHook = getHook;
32
33
  function getHookFromPageConfig(pageConfig, hookName) {
33
- const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, hookName);
34
- const hooksTimeout = (0, helpers_js_1.getConfigValue)(pageConfig, 'hooksTimeout')?.value;
34
+ const configValue = (0, getConfigValue_js_1.getConfigValue)(pageConfig, hookName);
35
+ const hooksTimeout = (0, getConfigValue_js_1.getConfigValue)(pageConfig, 'hooksTimeout')?.value;
35
36
  if (!configValue)
36
37
  return null;
37
38
  const hookFn = configValue.value;
38
39
  if (!hookFn)
39
40
  return null;
40
- const hookFilePath = (0, helpers_js_1.getHookFilePathToShowToUser)(configValue);
41
- // hook isn't a computed nor a cumulative config => definedAt should always be defined
41
+ const hookFilePath = (0, helpers_js_1.getHookFilePathToShowToUser)(configValue.definedAtData);
42
+ // hook isn't a computed nor a cumulative config => hookFilePath should always be defined
42
43
  (0, utils_js_1.assert)(hookFilePath);
43
44
  assertHookFn(hookFn, { hookName, hookFilePath });
44
45
  const hookTimeout = getHookTimeout(hooksTimeout, hookName);
@@ -52,8 +53,8 @@ function getHookFromPageConfigGlobal(pageConfigGlobal, hookName) {
52
53
  const hookFn = configValue.value;
53
54
  if (!hookFn)
54
55
  return null;
55
- const hookFilePath = (0, helpers_js_1.getHookFilePathToShowToUser)(configValue);
56
- // hook isn't a computed nor a cumulative config => definedAt should always be defined
56
+ const hookFilePath = (0, helpers_js_1.getHookFilePathToShowToUser)(configValue.definedAtData);
57
+ // hook isn't a computed nor a cumulative config => hookFilePath should always be defined
57
58
  (0, utils_js_1.assert)(hookFilePath);
58
59
  assertHookFn(hookFn, { hookName, hookFilePath });
59
60
  // We could use the global value of configooksTimeout but it requires some non-trivial refactoring
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getDefinedAtString = exports.getConfigDefinedAtOptional = exports.getConfigDefinedAt = void 0;
7
+ const utils_js_1 = require("../utils.js");
8
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
+ const getExportPath_js_1 = require("./getExportPath.js");
10
+ function getConfigDefinedAt(sentenceBegin, configName, definedAtData) {
11
+ return `${begin(sentenceBegin, configName)} at ${getDefinedAtString(definedAtData, configName)}`;
12
+ }
13
+ exports.getConfigDefinedAt = getConfigDefinedAt;
14
+ function getConfigDefinedAtOptional(sentenceBegin, configName, definedAtData) {
15
+ if (!definedAtData) {
16
+ return `${begin(sentenceBegin, configName)} internally`;
17
+ }
18
+ else {
19
+ return `${begin(sentenceBegin, configName)} at ${getDefinedAtString(definedAtData, configName)}`;
20
+ }
21
+ }
22
+ exports.getConfigDefinedAtOptional = getConfigDefinedAtOptional;
23
+ function begin(sentenceBegin, configName) {
24
+ return `${sentenceBegin} ${picocolors_1.default.cyan(configName)} defined`;
25
+ }
26
+ function getDefinedAtString(definedAtData, configName) {
27
+ let files;
28
+ if ((0, utils_js_1.isArray)(definedAtData)) {
29
+ files = definedAtData;
30
+ }
31
+ else {
32
+ files = [definedAtData];
33
+ }
34
+ (0, utils_js_1.assert)(files.length >= 1);
35
+ const definedAtString = files
36
+ .map((source) => {
37
+ const { filePathToShowToUser, fileExportPathToShowToUser } = source;
38
+ let s = filePathToShowToUser;
39
+ const exportPath = (0, getExportPath_js_1.getExportPath)(fileExportPathToShowToUser, configName);
40
+ if (exportPath) {
41
+ s = `${s} > ${picocolors_1.default.cyan(exportPath)}`;
42
+ }
43
+ return s;
44
+ })
45
+ .join(' / ');
46
+ return definedAtString;
47
+ }
48
+ exports.getDefinedAtString = getDefinedAtString;
@@ -4,22 +4,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getConfigValue = void 0;
7
- const utils_js_1 = require("../../utils.js");
7
+ const utils_js_1 = require("../utils.js");
8
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
- const getConfigDefinedAtString_js_1 = require("./getConfigDefinedAtString.js");
9
+ const getConfigDefinedAt_js_1 = require("./getConfigDefinedAt.js");
10
10
  // prettier-ignore
11
11
  // biome-ignore format:
12
12
  function getConfigValue(pageConfig, configName, type) {
13
13
  const configValue = getConfigValueEntry(pageConfig, configName);
14
14
  if (configValue === null)
15
15
  return null;
16
- const { value, definedAt } = configValue;
16
+ const { value, definedAtData } = configValue;
17
17
  if (type)
18
- assertConfigValueType(value, type, configName, definedAt);
18
+ assertConfigValueType(value, type, configName, definedAtData);
19
19
  return configValue;
20
20
  }
21
21
  exports.getConfigValue = getConfigValue;
22
- function assertConfigValueType(value, type, configName, definedAt) {
22
+ function assertConfigValueType(value, type, configName, definedAtData) {
23
23
  (0, utils_js_1.assert)(value !== null);
24
24
  const typeActual = typeof value;
25
25
  if (typeActual === type)
@@ -28,9 +28,7 @@ function assertConfigValueType(value, type, configName, definedAt) {
28
28
  const problem = valuePrintable !== null
29
29
  ? `value ${picocolors_1.default.cyan(valuePrintable)}`
30
30
  : `type ${picocolors_1.default.cyan(typeActual)}`;
31
- const configDefinedAt = (0, getConfigDefinedAtString_js_1.getConfigDefinedAtString)('Config', configName, {
32
- definedAt
33
- });
31
+ const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAtOptional)('Config', configName, definedAtData);
34
32
  const errMsg = `${configDefinedAt} has an invalid ${problem}: it should be a ${picocolors_1.default.cyan(type)} instead`;
35
33
  (0, utils_js_1.assertUsage)(false, errMsg);
36
34
  }
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getConfigValue = exports.getDefinedAtString = exports.getConfigDefinedAtString = exports.getHookFilePathToShowToUser = exports.getConfigValueFilePathToShowToUser = exports.getPageConfig = void 0;
4
- var getConfigDefinedAtString_js_1 = require("./helpers/getConfigDefinedAtString.js");
5
- Object.defineProperty(exports, "getConfigDefinedAtString", { enumerable: true, get: function () { return getConfigDefinedAtString_js_1.getConfigDefinedAtString; } });
6
- Object.defineProperty(exports, "getDefinedAtString", { enumerable: true, get: function () { return getConfigDefinedAtString_js_1.getDefinedAtString; } });
7
- var getConfigValue_js_1 = require("./helpers/getConfigValue.js");
8
- Object.defineProperty(exports, "getConfigValue", { enumerable: true, get: function () { return getConfigValue_js_1.getConfigValue; } });
3
+ exports.getHookFilePathToShowToUser = exports.getConfigValueFilePathToShowToUser = exports.getPageConfig = void 0;
9
4
  const utils_js_1 = require("../utils.js");
10
5
  function getPageConfig(pageId, pageConfigs) {
11
6
  const pageConfig = pageConfigs.find((p) => p.pageId === pageId);
@@ -14,19 +9,19 @@ function getPageConfig(pageId, pageConfigs) {
14
9
  return pageConfig;
15
10
  }
16
11
  exports.getPageConfig = getPageConfig;
17
- function getConfigValueFilePathToShowToUser({ definedAt }) {
12
+ function getConfigValueFilePathToShowToUser(definedAtData) {
18
13
  // A unique file path only exists if the config value isn't cumulative nor computed:
19
14
  // - cumulative config values have multiple file paths
20
15
  // - computed values don't have any file path
21
- if ('isComputed' in definedAt || 'files' in definedAt)
16
+ if (!definedAtData || (0, utils_js_1.isArray)(definedAtData))
22
17
  return null;
23
- const { filePathToShowToUser } = definedAt;
18
+ const { filePathToShowToUser } = definedAtData;
24
19
  (0, utils_js_1.assert)(filePathToShowToUser);
25
20
  return filePathToShowToUser;
26
21
  }
27
22
  exports.getConfigValueFilePathToShowToUser = getConfigValueFilePathToShowToUser;
28
- function getHookFilePathToShowToUser({ definedAt }) {
29
- const filePathToShowToUser = getConfigValueFilePathToShowToUser({ definedAt });
23
+ function getHookFilePathToShowToUser(definedAtData) {
24
+ const filePathToShowToUser = getConfigValueFilePathToShowToUser(definedAtData);
30
25
  (0, utils_js_1.assert)(filePathToShowToUser);
31
26
  return filePathToShowToUser;
32
27
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertPageConfigGlobalSerialized = exports.assertPageConfigsSerialized = void 0;
4
4
  const utils_js_1 = require("../../utils.js");
5
5
  function assertPageConfigsSerialized(pageConfigsSerialized) {
6
- (0, utils_js_1.assert)(Array.isArray(pageConfigsSerialized));
6
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(pageConfigsSerialized));
7
7
  pageConfigsSerialized.forEach((pageConfigSerialized) => {
8
8
  (0, utils_js_1.assert)((0, utils_js_1.isObject)(pageConfigSerialized));
9
9
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageConfigSerialized, 'pageId', 'string'));
@@ -53,8 +53,9 @@ function parseConfigValuesImported(configValuesImported) {
53
53
  (0, utils_js_1.assert)(val);
54
54
  const { value, importPath, exportName } = val;
55
55
  configValues[configName] = {
56
+ type: 'classic',
56
57
  value,
57
- definedAt: {
58
+ definedAtData: {
58
59
  // importPath cannot be relative to the current file, since the current file is a virtual file
59
60
  filePathToShowToUser: importPath,
60
61
  fileExportPathToShowToUser: [configName, 'default'].includes(exportName)
@@ -6,13 +6,18 @@ const parse_1 = require("@brillout/json-serializer/parse");
6
6
  function parseConfigValuesSerialized(configValuesSerialized) {
7
7
  const configValues = {};
8
8
  Object.entries(configValuesSerialized).forEach(([configName, configValueSeriliazed]) => {
9
- const { valueSerialized, definedAt } = configValueSeriliazed;
10
- (0, utils_js_1.assert)(valueSerialized);
11
9
  (0, utils_js_1.assert)(!configValues[configName]);
12
- configValues[configName] = {
13
- value: (0, parse_1.parse)(valueSerialized),
14
- definedAt
15
- };
10
+ const { valueSerialized, ...common } = configValueSeriliazed;
11
+ const value = (0, parse_1.parse)(valueSerialized);
12
+ let configValue;
13
+ if (common.type === 'cumulative') {
14
+ (0, utils_js_1.assert)((0, utils_js_1.isArray)(value));
15
+ configValue = { value, ...common };
16
+ }
17
+ else {
18
+ configValue = { value, ...common };
19
+ }
20
+ configValues[configName] = configValue;
16
21
  });
17
22
  return configValues;
18
23
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parsePageConfigs = void 0;
4
4
  const parseConfigValuesImported_js_1 = require("./parseConfigValuesImported.js");
5
5
  const utils_js_1 = require("../../utils.js");
6
- const helpers_js_1 = require("../helpers.js");
6
+ const getConfigDefinedAt_js_1 = require("../getConfigDefinedAt.js");
7
7
  const parseConfigValuesSerialized_js_1 = require("./parseConfigValuesSerialized.js");
8
8
  function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
9
9
  const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
@@ -41,9 +41,10 @@ function assertRouteConfigValue(configValues) {
41
41
  const configValue = configValues[configName];
42
42
  if (!configValue)
43
43
  return;
44
- const { value } = configValue;
44
+ const { value, definedAtData } = configValue;
45
45
  const configValueType = typeof value;
46
- const configDefinedAt = (0, helpers_js_1.getConfigDefinedAtString)('Config', configName, configValue);
46
+ (0, utils_js_1.assert)(definedAtData);
47
+ const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, definedAtData);
47
48
  (0, utils_js_1.assertUsage)(configValueType === 'string' || (0, utils_js_1.isCallable)(value), `${configDefinedAt} has an invalid type '${configValueType}': it should be a string or a function instead, see https://vike.dev/route`);
48
49
  /* We don't use assertRouteString() in order to avoid unnecessarily bloating the client-side bundle when using Server Routing:
49
50
  * - When using Server Routing, this file is loaded => loading assertRouteString() would bloat the client bundle.
@@ -14,7 +14,7 @@ function serializeConfigValue(lines, configName, configValueSerialized) {
14
14
  lines.push(`${whitespace}['${configName}']: {`);
15
15
  whitespace += ' ';
16
16
  Object.entries(configValueSerialized).forEach(([key, val]) => {
17
- const valSerialized = key === 'definedAt' ? JSON.stringify(val) : val;
17
+ const valSerialized = key === 'valueSerialized' ? val : JSON.stringify(val);
18
18
  lines.push(`${whitespace} ${key}: ${valSerialized},`);
19
19
  });
20
20
  whitespace = whitespace.slice(2);
@@ -24,9 +24,9 @@ exports.serializeConfigValue = serializeConfigValue;
24
24
  function serializeConfigValueImported(configValueSource, configName, whitespace, varCounterContainer, importStatements) {
25
25
  (0, utils_js_1.assert)(!configValueSource.valueIsFilePath);
26
26
  (0, utils_js_1.assert)(whitespace.replaceAll(' ', '').length === 0);
27
- const { valueIsImportedAtRuntime, valueIsDefinedByValueFile, definedAt } = configValueSource;
27
+ const { valueIsImportedAtRuntime, valueIsDefinedByValueFile, definedAtFilePath } = configValueSource;
28
28
  (0, utils_js_1.assert)(valueIsImportedAtRuntime);
29
- const { filePathAbsoluteVite, fileExportName } = definedAt;
29
+ const { filePathAbsoluteVite, fileExportName } = definedAtFilePath;
30
30
  if (valueIsDefinedByValueFile)
31
31
  (0, utils_js_1.assert)(fileExportName === undefined);
32
32
  const { importName, importStatement } = (0, generateEagerImport_js_1.generateEagerImport)(filePathAbsoluteVite, varCounterContainer.varCounter++, fileExportName);
@@ -74,8 +74,8 @@ async function route(pageContextForRoute) {
74
74
  }
75
75
  // Route Function defined in `.page.route.js`
76
76
  if (pageRoute.routeType === 'FUNCTION') {
77
- const { routeFunction, routeDefinedAt } = pageRoute;
78
- const match = await (0, resolveRouteFunction_js_1.resolveRouteFunction)(routeFunction, pageContext, routeDefinedAt);
77
+ const { routeFunction, routeDefinedAtString } = pageRoute;
78
+ const match = await (0, resolveRouteFunction_js_1.resolveRouteFunction)(routeFunction, pageContext, routeDefinedAtString);
79
79
  if (match) {
80
80
  const { routeParams, precedence } = match;
81
81
  routeMatches.push({ pageId, precedence, routeParams, routeType });