vike 0.4.217 → 0.4.218-commit-ed9b3d4

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 (173) hide show
  1. package/dist/cjs/__internal/index.js +9 -8
  2. package/dist/cjs/node/api/build.js +21 -12
  3. package/dist/cjs/node/api/context.js +5 -1
  4. package/dist/cjs/node/api/index.js +17 -7
  5. package/dist/cjs/node/api/prepareViteApiCall.js +128 -26
  6. package/dist/cjs/node/api/utils.js +2 -0
  7. package/dist/cjs/node/cli/entry.js +19 -7
  8. package/dist/cjs/node/plugin/index.js +6 -5
  9. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +3 -4
  10. package/dist/cjs/node/plugin/plugins/baseUrls.js +20 -18
  11. package/dist/cjs/node/plugin/plugins/buildConfig.js +2 -2
  12. package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
  13. package/dist/cjs/node/plugin/plugins/commonConfig.js +6 -6
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +2 -3
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +22 -111
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +189 -16
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -1
  18. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -1
  19. package/dist/cjs/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
  20. package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +17 -7
  21. package/dist/cjs/node/prerender/isPrerenderEnabled.js +8 -0
  22. package/dist/cjs/node/prerender/runPrerender.js +22 -35
  23. package/dist/cjs/node/runtime/globalContext.js +76 -29
  24. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -2
  25. package/dist/cjs/node/runtime/index-common.js +0 -15
  26. package/dist/cjs/node/runtime/onLoad.js +17 -3
  27. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  28. package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +2 -2
  29. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  30. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
  31. package/dist/cjs/node/runtime/utils.js +1 -0
  32. package/dist/cjs/node/runtime-dev/index.js +17 -7
  33. package/dist/cjs/node/shared/resolveBase.js +2 -2
  34. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +3 -3
  35. package/dist/cjs/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +2 -3
  36. package/dist/cjs/shared/getPageFiles.js +3 -9
  37. package/dist/cjs/shared/hooks/getHook.js +3 -3
  38. package/dist/cjs/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +113 -81
  39. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +79 -54
  40. package/dist/cjs/shared/route/loadPageRoutes.js +3 -3
  41. package/dist/cjs/shared/utils.js +1 -0
  42. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  43. package/dist/cjs/utils/assert.js +4 -3
  44. package/dist/cjs/utils/debug.js +11 -6
  45. package/dist/cjs/utils/objectReplace.js +9 -0
  46. package/dist/esm/__internal/index.d.ts +3 -5
  47. package/dist/esm/__internal/index.js +4 -5
  48. package/dist/esm/client/client-routing-runtime/createPageContext.js +7 -1
  49. package/dist/esm/client/client-routing-runtime/entry.d.ts +1 -1
  50. package/dist/esm/client/client-routing-runtime/entry.js +0 -1
  51. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
  52. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
  53. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
  54. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
  55. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
  56. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  57. package/dist/esm/client/server-routing-runtime/entry.d.ts +1 -1
  58. package/dist/esm/client/server-routing-runtime/entry.js +0 -1
  59. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  60. package/dist/esm/client/server-routing-runtime/getPageContext.js +8 -2
  61. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  62. package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
  63. package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
  64. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  65. package/dist/esm/node/api/build.js +4 -5
  66. package/dist/esm/node/api/context.d.ts +3 -1
  67. package/dist/esm/node/api/context.js +6 -2
  68. package/dist/esm/node/api/prepareViteApiCall.d.ts +9 -3
  69. package/dist/esm/node/api/prepareViteApiCall.js +111 -22
  70. package/dist/esm/node/api/utils.d.ts +2 -0
  71. package/dist/esm/node/api/utils.js +2 -0
  72. package/dist/esm/node/cli/entry.js +2 -0
  73. package/dist/esm/node/cli/parseCli.d.ts +1 -1
  74. package/dist/esm/node/plugin/index.d.ts +1 -1
  75. package/dist/esm/node/plugin/index.js +6 -5
  76. package/dist/esm/node/plugin/plugins/autoFullBuild.js +3 -4
  77. package/dist/esm/node/plugin/plugins/baseUrls.d.ts +1 -2
  78. package/dist/esm/node/plugin/plugins/baseUrls.js +21 -19
  79. package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
  80. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.d.ts +1 -1
  81. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.d.ts +2 -2
  82. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
  83. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +7 -1
  84. package/dist/esm/node/plugin/plugins/commonConfig.js +2 -2
  85. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +1 -1
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +1 -1
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +2 -3
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +23 -112
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +99 -1
  91. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +189 -16
  92. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -1
  93. package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -1
  94. package/dist/esm/node/plugin/plugins/workaroundVite6HmrRegression.d.ts +3 -0
  95. package/dist/esm/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
  96. package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +1 -1
  97. package/dist/esm/node/prerender/isPrerenderEnabled.d.ts +3 -0
  98. package/dist/esm/node/prerender/isPrerenderEnabled.js +6 -0
  99. package/dist/esm/node/prerender/runPrerender.d.ts +1 -2
  100. package/dist/esm/node/prerender/runPrerender.js +4 -27
  101. package/dist/esm/node/runtime/globalContext.d.ts +6 -4
  102. package/dist/esm/node/runtime/globalContext.js +76 -29
  103. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  104. package/dist/esm/node/runtime/index-common.d.ts +0 -1
  105. package/dist/esm/node/runtime/index-common.js +0 -15
  106. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -0
  107. package/dist/esm/node/runtime/onLoad.js +16 -2
  108. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
  109. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +1 -1
  110. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
  111. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
  112. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
  113. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  114. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
  115. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
  116. package/dist/esm/node/runtime/utils.d.ts +1 -0
  117. package/dist/esm/node/runtime/utils.js +1 -0
  118. package/dist/esm/node/shared/resolveBase.js +2 -2
  119. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
  120. package/dist/esm/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +2 -3
  121. package/dist/esm/shared/getPageFiles.d.ts +2 -5
  122. package/dist/esm/shared/getPageFiles.js +1 -4
  123. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  124. package/dist/esm/shared/hooks/getHook.js +1 -1
  125. package/dist/esm/shared/page-configs/Config.d.ts +8 -2
  126. package/dist/esm/shared/page-configs/PageConfig.d.ts +7 -3
  127. package/dist/esm/shared/{getPageFiles/getExports.d.ts → page-configs/getPageConfigUserFriendly.d.ts} +23 -12
  128. package/dist/esm/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +112 -80
  129. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +28 -4
  130. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +79 -54
  131. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  132. package/dist/esm/shared/route/loadPageRoutes.js +1 -1
  133. package/dist/esm/shared/types.d.ts +1 -1
  134. package/dist/esm/shared/utils.d.ts +1 -0
  135. package/dist/esm/shared/utils.js +1 -0
  136. package/dist/esm/types/index.d.ts +1 -1
  137. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  138. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  139. package/dist/esm/utils/assert.js +4 -3
  140. package/dist/esm/utils/debug.d.ts +1 -1
  141. package/dist/esm/utils/debug.js +11 -6
  142. package/dist/esm/utils/objectReplace.d.ts +1 -0
  143. package/dist/esm/utils/objectReplace.js +6 -0
  144. package/dist/esm/utils/projectInfo.d.ts +1 -1
  145. package/package.json +3 -22
  146. package/__internal/loadImportBuild.js +0 -3
  147. package/__internal/setup.js +0 -3
  148. package/dist/cjs/node/plugin/plugins/commonConfig/pluginName.js +0 -4
  149. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -128
  150. package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +0 -25
  151. package/dist/cjs/node/runtime/page-files/getPageFilesExports.js +0 -22
  152. package/dist/cjs/node/runtime/page-files/setup.js +0 -5
  153. package/dist/esm/client/client-routing-runtime/pageFiles.d.ts +0 -1
  154. package/dist/esm/client/client-routing-runtime/pageFiles.js +0 -4
  155. package/dist/esm/client/server-routing-runtime/pageFiles.d.ts +0 -1
  156. package/dist/esm/client/server-routing-runtime/pageFiles.js +0 -4
  157. package/dist/esm/node/plugin/plugins/commonConfig/pluginName.d.ts +0 -1
  158. package/dist/esm/node/plugin/plugins/commonConfig/pluginName.js +0 -1
  159. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts +0 -104
  160. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -123
  161. package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.d.ts +0 -3
  162. package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +0 -18
  163. package/dist/esm/node/runtime/globalContext/loadImportBuild.js +0 -23
  164. package/dist/esm/node/runtime/page-files/getPageFilesExports.d.ts +0 -2
  165. package/dist/esm/node/runtime/page-files/getPageFilesExports.js +0 -20
  166. package/dist/esm/node/runtime/page-files/setup.d.ts +0 -1
  167. package/dist/esm/node/runtime/page-files/setup.js +0 -3
  168. package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
  169. package/dist/cjs/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
  170. package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
  171. package/dist/esm/shared/getPageFiles/{setPageFiles.d.ts → getPageFiles.d.ts} +1 -1
  172. /package/dist/esm/shared/page-configs/{getConfigValue.d.ts → getConfigValueRuntime.d.ts} +0 -0
  173. /package/dist/esm/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
@@ -1,14 +1,14 @@
1
- export { getPageContextExports };
2
- import { isScriptFile, isTemplateFile } from '../../utils/isScriptFile.js';
3
- import { assert, isObject, assertWarning, assertUsage, makeLast, isBrowser } from '../utils.js';
4
- import { assertDefaultExports, forbiddenDefaultExports } from './assert_exports_old_design.js';
5
- import { getConfigDefinedAtOptional, getDefinedAtString } from '../page-configs/getConfigDefinedAt.js';
6
- import { getConfigValueFilePathToShowToUser } from '../page-configs/helpers.js';
1
+ export { getPageConfigUserFriendly };
2
+ export { getPageConfigUserFriendlyNew };
3
+ import { assertDefaultExports, forbiddenDefaultExports } from '../getPageFiles/assert_exports_old_design.js';
4
+ import { getConfigDefinedAtOptional, getDefinedAtString } from './getConfigDefinedAt.js';
5
+ import { getConfigValueFilePathToShowToUser } from './helpers.js';
6
+ import { assert, isObject, assertWarning, assertUsage, makeLast, isBrowser, isScriptFile, isTemplateFile } from '../utils.js';
7
7
  import pc from '@brillout/picocolors';
8
- function getPageContextExports(pageFiles, pageConfig) {
9
- const configEntries = {};
8
+ function getPageConfigUserFriendly(pageFiles, pageConfig) {
10
9
  const config = {};
11
- const exportsAll = {};
10
+ const configEntries = {}; // TODO/v1-release: remove
11
+ const exportsAll = {}; // TODO/v1-release: remove
12
12
  // V0.4 design
13
13
  // TODO/v1-release: remove
14
14
  pageFiles.forEach((pageFile) => {
@@ -26,78 +26,26 @@ function getPageContextExports(pageFiles, pageConfig) {
26
26
  });
27
27
  });
28
28
  });
29
- // V1 design
30
- const source = {};
31
- const sources = {};
32
- const addSrc = (src, configName) => {
33
- source[configName] = src;
34
- sources[configName] ?? (sources[configName] = []);
35
- sources[configName].push(src);
36
- };
37
- const from = {
38
- configsStandard: {},
39
- configsCumulative: {},
40
- configsComputed: {}
41
- };
29
+ let source;
30
+ let sources;
31
+ let from;
42
32
  if (pageConfig) {
43
- Object.entries(pageConfig.configValues).forEach(([configName, configValue]) => {
44
- const { value } = configValue;
45
- const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue.definedAtData);
46
- const configDefinedAt = getConfigDefinedAtOptional('Config', configName, configValue.definedAtData);
47
- config[configName] = config[configName] ?? value;
48
- configEntries[configName] = configEntries[configName] ?? [];
49
- // 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.)
50
- assert(configEntries[configName].length === 0);
51
- configEntries[configName].push({
52
- configValue: value,
53
- configDefinedAt,
54
- configDefinedByFile: configValueFilePathToShowToUser
55
- });
56
- if (configValue.type === 'standard') {
57
- const src = {
58
- type: 'configsStandard',
59
- value: configValue.value,
60
- definedAt: getDefinedAtString(configValue.definedAtData, configName)
61
- };
62
- addSrc(src, configName);
63
- from.configsStandard[configName] = src;
64
- }
65
- if (configValue.type === 'cumulative') {
66
- const src = {
67
- type: 'configsCumulative',
68
- values: configValue.value.map((value, i) => {
69
- const definedAtFile = configValue.definedAtData[i];
70
- assert(definedAtFile);
71
- const definedAt = getDefinedAtString(definedAtFile, configName);
72
- return {
73
- value,
74
- definedAt
75
- };
76
- })
77
- };
78
- addSrc(src, configName);
79
- from.configsCumulative[configName] = src;
80
- }
81
- if (configValue.type === 'computed') {
82
- const src = {
83
- type: 'configsComputed',
84
- value: configValue.value
85
- };
86
- addSrc(src, configName);
87
- from.configsComputed[configName] = src;
88
- }
89
- // TODO/v1-release: remove
90
- const exportName = configName;
91
- exportsAll[exportName] = exportsAll[exportName] ?? [];
92
- exportsAll[exportName].push({
93
- exportValue: value,
94
- exportSource: configDefinedAt,
95
- filePath: configValueFilePathToShowToUser,
96
- _filePath: configValueFilePathToShowToUser,
97
- _fileType: null,
98
- _isFromDefaultExport: null
99
- });
100
- });
33
+ const res = getPageConfigUserFriendlyNew(pageConfig);
34
+ source = res.source;
35
+ sources = res.sources;
36
+ from = res.from;
37
+ Object.assign(config, res.config);
38
+ Object.assign(configEntries, res.configEntries);
39
+ Object.assign(exportsAll, res.exportsAll);
40
+ }
41
+ else {
42
+ source = {};
43
+ sources = {};
44
+ from = {
45
+ configsStandard: {},
46
+ configsCumulative: {},
47
+ configsComputed: {}
48
+ };
101
49
  }
102
50
  const pageExports = createObjectWithDeprecationWarning();
103
51
  const exports = {};
@@ -127,6 +75,90 @@ function getPageContextExports(pageFiles, pageConfig) {
127
75
  };
128
76
  return pageContextExports;
129
77
  }
78
+ // V1 design
79
+ function getPageConfigUserFriendlyNew(pageConfig) {
80
+ const config = {};
81
+ const configEntries = {}; // TODO/v1-release: remove
82
+ const exportsAll = {}; // TODO/v1-release: remove
83
+ const source = {};
84
+ const sources = {};
85
+ const from = {
86
+ configsStandard: {},
87
+ configsCumulative: {},
88
+ configsComputed: {}
89
+ };
90
+ const addSrc = (src, configName) => {
91
+ source[configName] = src;
92
+ sources[configName] ?? (sources[configName] = []);
93
+ sources[configName].push(src);
94
+ };
95
+ Object.entries(pageConfig.configValues).forEach(([configName, configValue]) => {
96
+ const { value } = configValue;
97
+ const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue.definedAtData);
98
+ const configDefinedAt = getConfigDefinedAtOptional('Config', configName, configValue.definedAtData);
99
+ config[configName] = config[configName] ?? value;
100
+ configEntries[configName] = configEntries[configName] ?? [];
101
+ // 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.)
102
+ assert(configEntries[configName].length === 0);
103
+ configEntries[configName].push({
104
+ configValue: value,
105
+ configDefinedAt,
106
+ configDefinedByFile: configValueFilePathToShowToUser
107
+ });
108
+ if (configValue.type === 'standard') {
109
+ const src = {
110
+ type: 'configsStandard',
111
+ value: configValue.value,
112
+ definedAt: getDefinedAtString(configValue.definedAtData, configName)
113
+ };
114
+ addSrc(src, configName);
115
+ from.configsStandard[configName] = src;
116
+ }
117
+ if (configValue.type === 'cumulative') {
118
+ const src = {
119
+ type: 'configsCumulative',
120
+ values: configValue.value.map((value, i) => {
121
+ const definedAtFile = configValue.definedAtData[i];
122
+ assert(definedAtFile);
123
+ const definedAt = getDefinedAtString(definedAtFile, configName);
124
+ return {
125
+ value,
126
+ definedAt
127
+ };
128
+ })
129
+ };
130
+ addSrc(src, configName);
131
+ from.configsCumulative[configName] = src;
132
+ }
133
+ if (configValue.type === 'computed') {
134
+ const src = {
135
+ type: 'configsComputed',
136
+ value: configValue.value
137
+ };
138
+ addSrc(src, configName);
139
+ from.configsComputed[configName] = src;
140
+ }
141
+ // TODO/v1-release: remove
142
+ const exportName = configName;
143
+ exportsAll[exportName] = exportsAll[exportName] ?? [];
144
+ exportsAll[exportName].push({
145
+ exportValue: value,
146
+ exportSource: configDefinedAt,
147
+ filePath: configValueFilePathToShowToUser,
148
+ _filePath: configValueFilePathToShowToUser,
149
+ _fileType: null,
150
+ _isFromDefaultExport: null
151
+ });
152
+ });
153
+ return {
154
+ config,
155
+ configEntries,
156
+ exportsAll,
157
+ source,
158
+ sources,
159
+ from
160
+ };
161
+ }
130
162
  function getExportValues(pageFile) {
131
163
  const { filePath, fileExports } = pageFile;
132
164
  assert(fileExports); // assume pageFile.loadFile() was called
@@ -1,7 +1,31 @@
1
1
  export { serializeConfigValues };
2
- import type { ConfigEnvInternal, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../PageConfig.js';
3
- declare function serializeConfigValues(pageConfig: PageConfigBuildTime | (PageConfigGlobalBuildTime & {
4
- configValuesComputed?: undefined;
5
- }), importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }: {
2
+ export { getConfigValuesBase };
3
+ import type { ConfigEnvInternal, ConfigValueSource, DefinedAtFile, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../PageConfig.js';
4
+ declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }: {
6
5
  isEager: boolean;
7
6
  }, tabspace: string): string[];
7
+ declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }?: {
8
+ isEager?: boolean;
9
+ }): ConfigValuesBase;
10
+ type ConfigValuesBase = ({
11
+ configValueBase: {
12
+ type: 'computed';
13
+ definedAtData: null;
14
+ };
15
+ value: unknown;
16
+ configName: string;
17
+ } | {
18
+ configValueBase: {
19
+ type: 'standard';
20
+ definedAtData: DefinedAtFile;
21
+ };
22
+ sourceRelevant: ConfigValueSource;
23
+ configName: string;
24
+ } | {
25
+ configValueBase: {
26
+ type: 'cumulative';
27
+ definedAtData: DefinedAtFile[];
28
+ };
29
+ sourcesRelevant: ConfigValueSource[];
30
+ configName: string;
31
+ })[];
@@ -1,4 +1,5 @@
1
1
  export { serializeConfigValues };
2
+ export { getConfigValuesBase };
2
3
  import { assertIsNotProductionRuntime } from '../../../utils/assertSetup.js';
3
4
  import { assert, assertUsage, getPropAccessNotation } from '../../../node/plugin/utils.js';
4
5
  import { addImportStatement } from '../../../node/plugin/plugins/importUserCode/addImportStatement.js';
@@ -15,74 +16,42 @@ assertIsNotProductionRuntime();
15
16
  function serializeConfigValues(pageConfig, importStatements, isEnvMatch, { isEager }, tabspace) {
16
17
  const lines = [];
17
18
  tabspace += ' ';
18
- Object.entries(pageConfig.configValuesComputed ?? {}).forEach(([configName, configValuesComputed]) => {
19
- if (!isEnvMatch(configValuesComputed.configEnv))
20
- return;
21
- // Is there a use case for overriding computed values? If yes, then configValeSources has higher precedence
22
- if (pageConfig.configValueSources[configName])
23
- return;
24
- const valueData = serializeWithJson(configValuesComputed.value, configName, null, importStatements);
25
- const configValueBase = {
26
- type: 'computed',
27
- definedAtData: null
28
- };
29
- serializeConfigValue(configValueBase, valueData, configName, lines, tabspace);
30
- });
31
- Object.entries(pageConfig.configValueSources).forEach(([configName, sources]) => {
32
- const configDef = pageConfig.configDefinitions[configName];
33
- assert(configDef);
34
- if (isEager !== !!configDef.eager)
35
- return;
36
- if (!configDef.cumulative) {
37
- const configValueSource = sources[0];
38
- assert(configValueSource);
39
- assert(sources.slice(1).every((s) => s.isOverriden === true));
40
- if (!isEnvMatch(configValueSource.configEnv))
41
- return;
42
- const { valueData, definedAtFile } = serializeConfigValueSource(configValueSource, configName, importStatements);
43
- const configValueBase = {
44
- type: 'standard',
45
- definedAtData: definedAtFile
46
- };
19
+ getConfigValuesBase(pageConfig, isEnvMatch, { isEager }).forEach((entry) => {
20
+ if (entry.configValueBase.type === 'computed') {
21
+ assert('value' in entry); // Help TS
22
+ const { configValueBase, value, configName } = entry;
23
+ const valueData = getValueSerializedWithJson(value, configName, configValueBase.definedAtData, importStatements);
47
24
  serializeConfigValue(configValueBase, valueData, configName, lines, tabspace);
48
25
  }
49
- else {
26
+ if (entry.configValueBase.type === 'standard') {
27
+ assert('sourceRelevant' in entry); // Help TS
28
+ const { configValueBase, sourceRelevant, configName } = entry;
29
+ const valueData = getValueSerializedFromSource(sourceRelevant, configName, importStatements);
30
+ serializeConfigValue(configValueBase, valueData, configName, lines, tabspace);
31
+ }
32
+ if (entry.configValueBase.type === 'cumulative') {
33
+ assert('sourcesRelevant' in entry); // Help TS
34
+ const { configValueBase, sourcesRelevant, configName } = entry;
50
35
  const valueDataList = [];
51
- const definedAtData = [];
52
- sources
53
- .filter((s) => !s.isOverriden)
54
- .forEach((configValueSource) => {
55
- if (!isEnvMatch(configValueSource.configEnv))
56
- return;
57
- const { valueData, definedAtFile } = serializeConfigValueSource(configValueSource, configName, importStatements);
36
+ sourcesRelevant.forEach((source) => {
37
+ const valueData = getValueSerializedFromSource(source, configName, importStatements);
58
38
  valueDataList.push(valueData);
59
- definedAtData.push(definedAtFile);
60
39
  });
61
- if (valueDataList.length === 0)
62
- return;
63
- const configValueBase = {
64
- type: 'cumulative',
65
- definedAtData
66
- };
67
40
  serializeConfigValue(configValueBase, valueDataList, configName, lines, tabspace);
68
41
  }
69
42
  });
70
43
  return lines;
71
44
  }
72
- function serializeConfigValueSource(configValueSource, configName, importStatements) {
45
+ function getValueSerializedFromSource(configValueSource, configName, importStatements) {
73
46
  assert(configValueSource.isOverriden === false);
74
47
  let valueData;
75
48
  if ('value' in configValueSource) {
76
- valueData = serializeWithJson(configValueSource.value, configName, configValueSource.definedAtFilePath, importStatements);
49
+ valueData = getValueSerializedWithJson(configValueSource.value, configName, configValueSource.definedAtFilePath, importStatements);
77
50
  }
78
51
  else {
79
- valueData = serializeWithImport(configValueSource, importStatements);
52
+ valueData = getValueSerializedWithImport(configValueSource, importStatements);
80
53
  }
81
- const definedAtFile = {
82
- filePathToShowToUser: configValueSource.definedAtFilePath.filePathToShowToUser,
83
- fileExportPathToShowToUser: configValueSource.definedAtFilePath.fileExportPathToShowToUser
84
- };
85
- return { valueData, definedAtFile };
54
+ return valueData;
86
55
  }
87
56
  function serializeConfigValue(configValueBase, valueData, configName, lines, tabspace) {
88
57
  lineAdd(`[${JSON.stringify(configName)}]: {`);
@@ -126,7 +95,7 @@ function serializeConfigValue(configValueBase, valueData, configName, lines, tab
126
95
  tabspace = tabspace.slice(2);
127
96
  }
128
97
  }
129
- function serializeWithImport(configValueSource, importStatements) {
98
+ function getValueSerializedWithImport(configValueSource, importStatements) {
130
99
  assert(!configValueSource.valueIsFilePath);
131
100
  const { valueIsImportedAtRuntime, valueIsDefinedByPlusFile, definedAtFilePath } = configValueSource;
132
101
  assert(valueIsImportedAtRuntime);
@@ -139,7 +108,7 @@ function serializeWithImport(configValueSource, importStatements) {
139
108
  valueAsJsCode: importName
140
109
  };
141
110
  }
142
- function serializeWithJson(value, configName, definedAtData, importStatements) {
111
+ function getValueSerializedWithJson(value, configName, definedAtData, importStatements) {
143
112
  const valueAsJsCode = valueToJson(value, configName, definedAtData, importStatements);
144
113
  return {
145
114
  type: 'js-serialized',
@@ -196,3 +165,59 @@ function logJsonSerializeError(err, configName, definedAtData) {
196
165
  assert(configValueFilePathToShowToUser);
197
166
  assertUsage(false, `${pc.cyan(configName)} defined by ${configValueFilePathToShowToUser} must be defined over a so-called "pointer import", see https://vike.dev/config#pointer-imports`);
198
167
  }
168
+ function getConfigValuesBase(pageConfig, isEnvMatch, { isEager } = {}) {
169
+ const fromComputed = Object.entries(pageConfig.configValuesComputed ?? {}).map(([configName, valueInfo]) => {
170
+ if (!isEnvMatch(valueInfo.configEnv))
171
+ return 'SKIP';
172
+ // Is there a use case for overriding computed values? If yes, then configValeSources has higher precedence
173
+ if (pageConfig.configValueSources[configName])
174
+ return 'SKIP';
175
+ const configValueBase = {
176
+ type: 'computed',
177
+ definedAtData: null
178
+ };
179
+ return { configValueBase, value: valueInfo.value, configName };
180
+ });
181
+ const fromSources = Object.entries(pageConfig.configValueSources).map(([configName, sources]) => {
182
+ const configDef = pageConfig.configDefinitions[configName];
183
+ assert(configDef);
184
+ if (isEager !== undefined && isEager !== !!configDef.eager)
185
+ return 'SKIP';
186
+ if (!configDef.cumulative) {
187
+ const source = sources[0];
188
+ assert(source);
189
+ assert(sources.slice(1).every((s) => s.isOverriden === true));
190
+ if (!isEnvMatch(source.configEnv))
191
+ return 'SKIP';
192
+ const definedAtFile = getDefinedAtFileSource(source);
193
+ const configValueBase = {
194
+ type: 'standard',
195
+ definedAtData: definedAtFile
196
+ };
197
+ return { configValueBase, sourceRelevant: source, configName };
198
+ }
199
+ else {
200
+ const sourcesRelevant = sources.filter((source) => !source.isOverriden && isEnvMatch(source.configEnv));
201
+ if (sourcesRelevant.length === 0)
202
+ return 'SKIP';
203
+ const definedAtData = [];
204
+ sourcesRelevant.forEach((source) => {
205
+ const definedAtFile = getDefinedAtFileSource(source);
206
+ definedAtData.push(definedAtFile);
207
+ });
208
+ const configValueBase = {
209
+ type: 'cumulative',
210
+ definedAtData
211
+ };
212
+ return { configValueBase, sourcesRelevant, configName };
213
+ }
214
+ });
215
+ return [...fromComputed, ...fromSources].filter((r) => r !== 'SKIP');
216
+ }
217
+ function getDefinedAtFileSource(source) {
218
+ const definedAtFile = {
219
+ filePathToShowToUser: source.definedAtFilePath.filePathToShowToUser,
220
+ fileExportPathToShowToUser: source.definedAtFilePath.fileExportPathToShowToUser
221
+ };
222
+ return definedAtFile;
223
+ }
@@ -1,7 +1,7 @@
1
1
  export { executeGuardHook };
2
- import type { PageContextExports, PageFile } from '../getPageFiles.js';
2
+ import type { PageConfigUserFriendly, PageFile } from '../getPageFiles.js';
3
3
  import type { PageConfigRuntime } from '../page-configs/PageConfig.js';
4
- declare function executeGuardHook<T extends PageContextExports & {
4
+ declare function executeGuardHook<T extends PageConfigUserFriendly & {
5
5
  pageId: string;
6
6
  _pageFilesAll: PageFile[];
7
7
  _pageConfigs: PageConfigRuntime[];
@@ -3,7 +3,7 @@ import { isErrorPageId } from '../error-page.js';
3
3
  import { assert, assertUsage, hasProp, slice } from './utils.js';
4
4
  import { deduceRouteStringFromFilesystemPath } from './deduceRouteStringFromFilesystemPath.js';
5
5
  import { isCallable } from '../utils.js';
6
- import { getConfigValueRuntime } from '../page-configs/getConfigValue.js';
6
+ import { getConfigValueRuntime } from '../page-configs/getConfigValueRuntime.js';
7
7
  import { getDefinedAtString } from '../page-configs/getConfigDefinedAt.js';
8
8
  import { warnDeprecatedAllowKey } from './resolveRouteFunction.js';
9
9
  import { getHookFromPageConfigGlobal, getHookTimeoutDefault } from '../hooks/getHook.js';
@@ -8,7 +8,7 @@ export { PageContextBuiltInServer_deprecated as PageContextBuiltInServer };
8
8
  export { PageContextBuiltInClientWithClientRouting_deprecated as PageContextBuiltInClientWithClientRouting };
9
9
  export { PageContextBuiltInClientWithServerRouting_deprecated as PageContextBuiltInClientWithServerRouting };
10
10
  import type { PageContextUrlInternal, PageContextUrlClient, PageContextUrlServer } from './getPageContextUrlComputed.js';
11
- import type { ConfigEntries, ExportsAll, From, Source, Sources } from './getPageFiles/getExports.js';
11
+ import type { ConfigEntries, ExportsAll, From, Source, Sources } from './page-configs/getPageConfigUserFriendly.js';
12
12
  import type { Config } from './page-configs/Config.js';
13
13
  import type { PageContextConfig } from './page-configs/Config/PageContextConfig.js';
14
14
  import type { AbortStatusCode } from './route/abort.js';
@@ -22,3 +22,4 @@ export * from '../utils/escapeRegex.js';
22
22
  export * from '../utils/isArray.js';
23
23
  export * from '../utils/changeEnumerable.js';
24
24
  export * from '../utils/objectDefineProperty.js';
25
+ export * from '../utils/isScriptFile.js';
@@ -26,3 +26,4 @@ export * from '../utils/escapeRegex.js';
26
26
  export * from '../utils/isArray.js';
27
27
  export * from '../utils/changeEnumerable.js';
28
28
  export * from '../utils/objectDefineProperty.js';
29
+ export * from '../utils/isScriptFile.js';
@@ -10,7 +10,7 @@ export type { PageContextBuiltInClientWithServerRouting } from '../shared/types.
10
10
  export type { Config, ConfigMeta as Meta, ImportString, DataAsync, DataSync, GuardAsync, GuardSync, OnBeforePrerenderStartAsync, OnBeforePrerenderStartSync, OnBeforeRenderAsync, OnBeforeRenderSync, OnBeforeRouteAsync, OnBeforeRouteSync, OnHydrationEndAsync, OnHydrationEndSync, OnPageTransitionEndAsync, OnPageTransitionEndSync, OnPageTransitionStartAsync, OnPageTransitionStartSync, OnPrerenderStartAsync, OnPrerenderStartSync, OnRenderClientAsync, OnRenderClientSync, OnRenderHtmlAsync, OnRenderHtmlSync, RouteAsync, RouteSync, KeepScrollPosition } from '../shared/page-configs/Config.js';
11
11
  export type { ConfigEnv } from '../shared/page-configs/PageConfig.js';
12
12
  export type { ConfigDefinition, ConfigEffect } from '../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
13
- export type { ConfigEntries } from '../shared/getPageFiles/getExports.js';
13
+ export type { ConfigEntries } from '../shared/page-configs/getPageConfigUserFriendly.js';
14
14
  export type { UrlPublic as Url } from '../utils/parseUrl.js';
15
15
  export type { InjectFilterEntry } from '../node/runtime/html/injectAssets/getHtmlTags.js';
16
16
  export { defineConfig } from './defineConfig.js';
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.217";
1
+ export declare const PROJECT_VERSION: "0.4.218-commit-ed9b3d4";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.217';
2
+ export const PROJECT_VERSION = '0.4.218-commit-ed9b3d4';
@@ -30,6 +30,7 @@ const globalObject = getGlobalObject('utils/assert.ts', {
30
30
  assertSingleInstance_onAssertModuleLoad();
31
31
  const projectTag = `[vike]`;
32
32
  const projectTagWithVersion = `[vike@${projectInfo.projectVersion}]`;
33
+ const bugTag = 'Bug';
33
34
  const numberOfStackTraceLinesToRemove = 2;
34
35
  function assert(condition, debugInfo) {
35
36
  if (condition)
@@ -49,7 +50,7 @@ function assert(condition, debugInfo) {
49
50
  .filter(Boolean)
50
51
  .join(' ');
51
52
  errMsg = addWhitespace(errMsg);
52
- errMsg = addPrefixAssertType(errMsg, 'Bug');
53
+ errMsg = addPrefixAssertType(errMsg, bugTag);
53
54
  errMsg = addPrefixProjctName(errMsg, true);
54
55
  const internalError = createErrorWithCleanStackTrace(errMsg, numberOfStackTraceLinesToRemove);
55
56
  globalObject.onBeforeLog?.();
@@ -160,7 +161,7 @@ function getAssertErrMsg(thing) {
160
161
  const showVikeVersion = tag === projectTagWithVersion;
161
162
  const errStackPrefix = `Error: ${tag}`;
162
163
  if (errStack?.startsWith(errStackPrefix)) {
163
- if (globalObject.showStackTraceList.has(thing)) {
164
+ if (globalObject.showStackTraceList.has(thing) || isBug(thing)) {
164
165
  const assertMsg = errStack.slice(errStackPrefix.length);
165
166
  return { assertMsg, showVikeVersion };
166
167
  }
@@ -179,7 +180,7 @@ function overwriteAssertProductionLogger(logger) {
179
180
  globalObject.logger = logger;
180
181
  }
181
182
  function isBug(err) {
182
- return !String(err).includes('[Bug]');
183
+ return String(err).includes(`[${bugTag}]`);
183
184
  }
184
185
  function setAlwaysShowStackTrace() {
185
186
  globalObject.alwaysShowStackTrace = true;
@@ -1,7 +1,7 @@
1
1
  export { createDebugger };
2
2
  export { isDebugActivated };
3
3
  export type { Debug };
4
- declare const flags: readonly ["vike:error", "vike:extractAssets", "vike:extractExportNames", "vike:glob", "vike:log", "vike:optimizeDeps", "vike:outDir", "vike:pageFiles", "vike:pointer-imports", "vike:routing", "vike:setup", "vike:stream", "vike:virtual-files", "vike:esbuild-resolve"];
4
+ declare const flags: readonly ["vike:error", "vike:extractAssets", "vike:extractExportNames", "vike:glob", "vike:globalContext", "vike:log", "vike:optimizeDeps", "vike:outDir", "vike:pageFiles", "vike:pointer-imports", "vike:routing", "vike:setup", "vike:stream", "vike:virtual-files", "vike:esbuild-resolve"];
5
5
  type Flag = (typeof flags)[number];
6
6
  type Debug = ReturnType<typeof createDebugger>;
7
7
  type Options = {
@@ -16,6 +16,7 @@ const flags = [
16
16
  'vike:extractAssets',
17
17
  'vike:extractExportNames',
18
18
  'vike:glob',
19
+ 'vike:globalContext',
19
20
  'vike:log',
20
21
  'vike:optimizeDeps',
21
22
  'vike:outDir',
@@ -28,7 +29,7 @@ const flags = [
28
29
  'vike:esbuild-resolve'
29
30
  ];
30
31
  const flagRegex = /\bvike:[a-zA-Z-]+/g;
31
- assertDEBUG();
32
+ assertFlagsActivated();
32
33
  function createDebugger(flag, optionsGlobal) {
33
34
  checkType(flag);
34
35
  assert(flags.includes(flag));
@@ -71,8 +72,8 @@ function debug_(flag, options, ...msgs) {
71
72
  function isDebugActivated(flag) {
72
73
  checkType(flag);
73
74
  assert(flags.includes(flag));
74
- const DEBUG = getDEBUG();
75
- const isActivated = DEBUG?.includes(flag) ?? false;
75
+ const flagsActivated = getFlagsActivated();
76
+ const isActivated = flagsActivated.includes(flag);
76
77
  return isActivated;
77
78
  }
78
79
  function formatMsg(info, options, padding, position) {
@@ -135,13 +136,17 @@ function replaceFunctionSerializer(_key, value) {
135
136
  }
136
137
  return value;
137
138
  }
138
- function assertDEBUG() {
139
- const DEBUG = getDEBUG() ?? '';
140
- const flagsActivated = DEBUG.match(flagRegex) ?? [];
139
+ function assertFlagsActivated() {
140
+ const flagsActivated = getFlagsActivated();
141
141
  flagsActivated.forEach((flag) => {
142
142
  assertUsage(flags.includes(flag), `Unknown DEBUG flag ${pc.cyan(flag)}. Valid flags:\n${flags.map((f) => ` ${pc.cyan(f)}`).join('\n')}`);
143
143
  });
144
144
  }
145
+ function getFlagsActivated() {
146
+ const DEBUG = getDEBUG() ?? '';
147
+ const flagsActivated = DEBUG.match(flagRegex) ?? [];
148
+ return flagsActivated;
149
+ }
145
150
  function getDEBUG() {
146
151
  let DEBUG;
147
152
  // - `process` can be undefined in edge workers
@@ -0,0 +1 @@
1
+ export declare function objectReplace(obj: object, objNew: object, except?: string[]): void;
@@ -0,0 +1,6 @@
1
+ export function objectReplace(obj, objNew, except) {
2
+ Object.keys(obj)
3
+ .filter((key) => !except?.includes(key))
4
+ .forEach((key) => delete obj[key]);
5
+ Object.assign(obj, objNew);
6
+ }
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.217";
3
+ projectVersion: "0.4.218-commit-ed9b3d4";
4
4
  };