vike 0.4.161 → 0.4.162-commit-49fe40c

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 (159) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/node/plugin/index.js +0 -2
  3. package/dist/cjs/node/plugin/plugins/buildConfig.js +20 -20
  4. package/dist/cjs/node/plugin/plugins/config/index.js +2 -7
  5. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -8
  6. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -18
  7. package/dist/cjs/node/plugin/plugins/devConfig/index.js +2 -4
  8. package/dist/cjs/node/plugin/plugins/envVars.js +6 -2
  9. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +10 -22
  10. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  11. package/dist/cjs/node/plugin/plugins/importBuild/getVikeManifest.js +1 -21
  12. package/dist/cjs/node/plugin/plugins/importBuild/index.js +1 -1
  13. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +29 -95
  14. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +8 -8
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +1 -9
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +1 -1
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +4 -4
  19. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +1 -1
  20. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +35 -36
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +109 -104
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -33
  23. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +0 -14
  24. package/dist/cjs/node/plugin/shared/rollupSourceMap.js +20 -0
  25. package/dist/cjs/node/plugin/utils.js +0 -1
  26. package/dist/cjs/node/prerender/runPrerender.js +3 -2
  27. package/dist/cjs/node/prerender/utils.js +1 -1
  28. package/dist/cjs/node/runtime/globalContext.js +8 -19
  29. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +1 -0
  30. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  31. package/dist/cjs/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +2 -8
  32. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -7
  33. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  34. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +23 -28
  35. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -23
  36. package/dist/cjs/node/runtime/utils.js +1 -2
  37. package/dist/cjs/node/shared/assertPluginManifest.js +1 -4
  38. package/dist/cjs/node/shared/assertV1Design.js +26 -0
  39. package/dist/cjs/node/shared/{getClientEntryFilePath.js → getClientEntry.js} +3 -3
  40. package/dist/cjs/node/shared/prependEntriesDir.js +13 -0
  41. package/dist/cjs/node/shared/utils.js +2 -0
  42. package/dist/cjs/node/shared/virtual-files/virtualFileImportUserCode.js +1 -0
  43. package/dist/cjs/shared/hooks/getHook.js +1 -1
  44. package/dist/cjs/shared/page-configs/helpers/getConfigValue.js +1 -0
  45. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +1 -1
  46. package/dist/cjs/shared/route/abort.js +1 -0
  47. package/dist/cjs/shared/route/resolvePrecedence.js +1 -0
  48. package/dist/cjs/utils/{nodeEnv.js → assertNodeEnv.js} +3 -0
  49. package/dist/cjs/utils/formatHintLog.js +1 -0
  50. package/dist/cjs/utils/hasProp.js +1 -0
  51. package/dist/cjs/utils/isScriptFile.js +15 -4
  52. package/dist/cjs/utils/projectInfo.js +1 -1
  53. package/dist/esm/__internal/index.js +1 -1
  54. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +20 -14
  55. package/dist/esm/client/shared/getPageContextProxyForUser.js +19 -2
  56. package/dist/esm/client/shared/loadUserFilesClientSide.js +1 -0
  57. package/dist/esm/node/plugin/index.js +0 -2
  58. package/dist/esm/node/plugin/plugins/buildConfig.js +19 -19
  59. package/dist/esm/node/plugin/plugins/config/index.js +2 -7
  60. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.d.ts +1 -2
  61. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -8
  62. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +1 -2
  63. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -19
  64. package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -4
  65. package/dist/esm/node/plugin/plugins/envVars.js +6 -2
  66. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +11 -23
  67. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  68. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.d.ts +1 -2
  69. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.js +2 -19
  70. package/dist/esm/node/plugin/plugins/importBuild/index.js +1 -1
  71. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +31 -97
  72. package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -8
  73. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +1 -9
  74. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
  75. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +3 -3
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +1 -1
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +1 -1
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +4 -4
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +1 -1
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.d.ts +1 -13
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +35 -36
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +1 -1
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +111 -106
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -3
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -33
  86. package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -15
  87. package/dist/esm/node/plugin/shared/rollupSourceMap.d.ts +14 -0
  88. package/dist/esm/node/plugin/shared/rollupSourceMap.js +17 -0
  89. package/dist/esm/node/plugin/utils.d.ts +0 -1
  90. package/dist/esm/node/plugin/utils.js +0 -1
  91. package/dist/esm/node/prerender/runPrerender.d.ts +3 -3
  92. package/dist/esm/node/prerender/runPrerender.js +4 -3
  93. package/dist/esm/node/prerender/utils.d.ts +1 -1
  94. package/dist/esm/node/prerender/utils.js +1 -1
  95. package/dist/esm/node/runtime/globalContext.d.ts +3 -10
  96. package/dist/esm/node/runtime/globalContext.js +7 -18
  97. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -0
  98. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  99. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +2 -8
  100. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.d.ts +1 -1
  101. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -7
  102. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +1 -1
  103. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  104. package/dist/esm/node/runtime/renderPage/getPageAssets.js +24 -29
  105. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -24
  106. package/dist/esm/node/runtime/utils.d.ts +1 -2
  107. package/dist/esm/node/runtime/utils.js +1 -2
  108. package/dist/esm/node/shared/ViteManifest.d.ts +1 -0
  109. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
  110. package/dist/esm/node/shared/assertPluginManifest.js +2 -5
  111. package/dist/esm/node/shared/assertV1Design.d.ts +4 -0
  112. package/dist/esm/node/shared/assertV1Design.js +23 -0
  113. package/dist/esm/node/shared/getClientEntry.d.ts +3 -0
  114. package/dist/esm/node/shared/{getClientEntryFilePath.js → getClientEntry.js} +2 -2
  115. package/dist/esm/node/shared/prependEntriesDir.d.ts +2 -0
  116. package/dist/esm/node/shared/prependEntriesDir.js +10 -0
  117. package/dist/esm/node/shared/utils.d.ts +2 -0
  118. package/dist/esm/node/shared/utils.js +2 -0
  119. package/dist/esm/node/shared/virtual-files/virtualFileImportUserCode.js +1 -0
  120. package/dist/esm/shared/ConfigVike.d.ts +0 -27
  121. package/dist/esm/shared/hooks/getHook.js +2 -2
  122. package/dist/esm/shared/page-configs/Config.d.ts +5 -0
  123. package/dist/esm/shared/page-configs/PageConfig.d.ts +2 -4
  124. package/dist/esm/shared/page-configs/helpers/getConfigValue.js +1 -0
  125. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +1 -1
  126. package/dist/esm/shared/route/abort.js +1 -0
  127. package/dist/esm/shared/route/resolvePrecedence.js +1 -0
  128. package/dist/esm/utils/{nodeEnv.js → assertNodeEnv.js} +3 -0
  129. package/dist/esm/utils/debug.d.ts +1 -1
  130. package/dist/esm/utils/formatHintLog.js +1 -0
  131. package/dist/esm/utils/hasProp.js +1 -0
  132. package/dist/esm/utils/isScriptFile.d.ts +3 -1
  133. package/dist/esm/utils/isScriptFile.js +14 -3
  134. package/dist/esm/utils/projectInfo.d.ts +2 -2
  135. package/dist/esm/utils/projectInfo.js +1 -1
  136. package/package.json +4 -3
  137. package/dist/cjs/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -27
  138. package/dist/cjs/node/plugin/plugins/config/resolveExtensions.js +0 -107
  139. package/dist/cjs/node/plugin/plugins/config/stemUtils.js +0 -85
  140. package/dist/cjs/node/plugin/plugins/extensionsAssets.js +0 -101
  141. package/dist/cjs/node/plugin/shared/removeSourceMap.js +0 -12
  142. package/dist/cjs/utils/getDependencyPackageJson.js +0 -91
  143. package/dist/cjs/utils/isStemPackageName.js +0 -14
  144. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.d.ts +0 -3
  145. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -24
  146. package/dist/esm/node/plugin/plugins/config/resolveExtensions.d.ts +0 -4
  147. package/dist/esm/node/plugin/plugins/config/resolveExtensions.js +0 -101
  148. package/dist/esm/node/plugin/plugins/config/stemUtils.d.ts +0 -8
  149. package/dist/esm/node/plugin/plugins/config/stemUtils.js +0 -79
  150. package/dist/esm/node/plugin/plugins/extensionsAssets.d.ts +0 -3
  151. package/dist/esm/node/plugin/plugins/extensionsAssets.js +0 -95
  152. package/dist/esm/node/plugin/shared/removeSourceMap.d.ts +0 -7
  153. package/dist/esm/node/plugin/shared/removeSourceMap.js +0 -9
  154. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +0 -3
  155. package/dist/esm/utils/getDependencyPackageJson.d.ts +0 -6
  156. package/dist/esm/utils/getDependencyPackageJson.js +0 -85
  157. package/dist/esm/utils/isStemPackageName.d.ts +0 -1
  158. package/dist/esm/utils/isStemPackageName.js +0 -10
  159. /package/dist/esm/utils/{nodeEnv.d.ts → assertNodeEnv.d.ts} +0 -0
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getClientEntryFilePath = void 0;
3
+ exports.getClientEntry = void 0;
4
4
  const helpers_js_1 = require("../../shared/page-configs/helpers.js");
5
- function getClientEntryFilePath(pageConfig) {
5
+ function getClientEntry(pageConfig) {
6
6
  const configName = 'client';
7
7
  const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, configName, 'string');
8
8
  if (!configValue)
9
9
  return null;
10
10
  return configValue.value;
11
11
  }
12
- exports.getClientEntryFilePath = getClientEntryFilePath;
12
+ exports.getClientEntry = getClientEntry;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prependEntriesDir = void 0;
4
+ const utils_js_1 = require("./utils.js");
5
+ function prependEntriesDir(entryName) {
6
+ if (entryName.startsWith('/')) {
7
+ entryName = entryName.slice(1);
8
+ }
9
+ (0, utils_js_1.assert)(!entryName.startsWith('/'));
10
+ entryName = `entries/${entryName}`;
11
+ return entryName;
12
+ }
13
+ exports.prependEntriesDir = prependEntriesDir;
@@ -31,3 +31,5 @@ __exportStar(require("../../utils/parseUrl-extras.js"), exports);
31
31
  __exportStar(require("../../utils/isObject.js"), exports);
32
32
  __exportStar(require("../../utils/virtual-files.js"), exports);
33
33
  __exportStar(require("../../utils/assertIsNotBrowser.js"), exports);
34
+ __exportStar(require("../../utils/isNotNullish.js"), exports);
35
+ __exportStar(require("../../utils/unique.js"), exports);
@@ -15,6 +15,7 @@ function isVirtualFileIdImportUserCode(id) {
15
15
  return false;
16
16
  (0, utils_js_1.assert)(
17
17
  // prettier-ignore
18
+ // biome-ignore format:
18
19
  [
19
20
  virtualFileIdImportUserCodeServer,
20
21
  virtualFileIdImportUserCodeClientCR,
@@ -56,7 +56,7 @@ function getHookFromPageConfigGlobal(pageConfigGlobal, hookName) {
56
56
  // hook isn't a computed nor a cumulative config => definedAt should always be defined
57
57
  (0, utils_js_1.assert)(hookFilePath);
58
58
  assertHookFn(hookFn, { hookName, hookFilePath });
59
- // We could use the global value of config.hooksTimeout but it requires some non-trivial refactoring
59
+ // We could use the global value of configooksTimeout but it requires some non-trivial refactoring
60
60
  const hookTimeout = getHookTimeoutDefault(hookName);
61
61
  return { hookFn, hookName, hookFilePath, hookTimeout };
62
62
  }
@@ -8,6 +8,7 @@ const utils_js_1 = require("../../utils.js");
8
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
9
  const getConfigDefinedAtString_js_1 = require("./getConfigDefinedAtString.js");
10
10
  // prettier-ignore
11
+ // biome-ignore format:
11
12
  function getConfigValue(pageConfig, configName, type) {
12
13
  const configValue = getConfigValueEntry(pageConfig, configName);
13
14
  if (configValue === null)
@@ -78,7 +78,7 @@ function assertIsNotNull(configValue, configName, importPath) {
78
78
  * - for cumulative values in the future: we don't need this for now because, currently, cumulative values are never imported.
79
79
  assertUsage(
80
80
  configValue !== null,
81
- `Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.h.js file instead of ${importPath}`
81
+ `Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.js file instead of ${importPath}`
82
82
  )
83
83
  */
84
84
  }
@@ -164,6 +164,7 @@ function assertNoInfiniteLoop(pageContextsFromRewrite) {
164
164
  function assertNoInfiniteAbortLoop(rewriteCount, redirectCount) {
165
165
  const abortCalls = [
166
166
  // prettier-ignore
167
+ // biome-ignore format:
167
168
  rewriteCount > 0 && picocolors_1.default.cyan("throw render('/some-url')"),
168
169
  redirectCount > 0 && picocolors_1.default.cyan("throw redirect('/some-url')")
169
170
  ]
@@ -9,6 +9,7 @@ const resolveRouteString_js_2 = require("./resolveRouteString.js");
9
9
  // See https://vike.dev/route-function#precedence
10
10
  function resolvePrecendence(routeMatches) {
11
11
  // prettier-ignore
12
+ // biome-ignore format:
12
13
  routeMatches
13
14
  .sort(sortMatches)
14
15
  .sort((0, utils_js_2.makeFirst)((routeMatch) => routeMatch.routeType === 'FUNCTION' && !!routeMatch.precedence && routeMatch.precedence < 0))
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ // Utils to manage process.env.NODE_ENV and, most notably, to assert correct usage, which is crucial:
3
+ // - https://github.com/vikejs/vike/issues/1469#issuecomment-1919518096
4
+ // - https://github.com/vitejs/vite/blob/76f30ae23b92f9af910ec02d98e2baaefa12141f/packages/vite/src/node/config.ts#L567
2
5
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
7
  };
@@ -9,6 +9,7 @@ function formatHintLog(msg) {
9
9
  const sep = '─'.repeat(msgLength);
10
10
  return [
11
11
  // prettier-ignore
12
+ // biome-ignore format:
12
13
  `┌─${sep}─┐`,
13
14
  `│ ${msg} │`,
14
15
  `└─${sep}─┘`
@@ -6,6 +6,7 @@ exports.hasProp = void 0;
6
6
  const isCallable_js_1 = require("./isCallable.js");
7
7
  const isObject_js_1 = require("./isObject.js");
8
8
  // prettier-ignore
9
+ // biome-ignore format:
9
10
  function hasProp(obj, prop, type = 'unknown') {
10
11
  if (!(0, isObject_js_1.isObject)(obj))
11
12
  return false;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scriptFileExtensionList = exports.scriptFileExtensions = exports.isTemplateFile = exports.isScriptFile = void 0;
3
+ exports.scriptFileExtensionList = exports.scriptFileExtensions = exports.isTemplateFile = exports.isJavaScriptFile = exports.isScriptFile = void 0;
4
4
  const assert_js_1 = require("./assert.js");
5
5
  // We can't use a RegExp:
6
6
  // - Needs to work with Micromatch: https://github.com/micromatch/micromatch because:
@@ -12,6 +12,7 @@ const assert_js_1 = require("./assert.js");
12
12
  // - We cannot implement a blacklist with a glob pattern.
13
13
  // - A post `import.meta.glob()` blacklist filtering doesn't work because Vite would still process the files (e.g. including them in the bundle).
14
14
  // prettier-ignore
15
+ // biome-ignore format:
15
16
  const extJavaScript = [
16
17
  'js',
17
18
  'ts',
@@ -19,6 +20,10 @@ const extJavaScript = [
19
20
  'cts',
20
21
  'mjs',
21
22
  'mts',
23
+ ];
24
+ // prettier-ignore
25
+ // biome-ignore format:
26
+ const extJsx = [
22
27
  'jsx',
23
28
  'tsx',
24
29
  'cjsx',
@@ -27,6 +32,7 @@ const extJavaScript = [
27
32
  'mtsx',
28
33
  ];
29
34
  // prettier-ignore
35
+ // biome-ignore format:
30
36
  const extTemplates = [
31
37
  'vue',
32
38
  'svelte',
@@ -34,19 +40,24 @@ const extTemplates = [
34
40
  'md',
35
41
  'mdx'
36
42
  ];
37
- const scriptFileExtensionList = [...extJavaScript, ...extTemplates];
43
+ const scriptFileExtensionList = [...extJavaScript, ...extJsx, ...extTemplates];
38
44
  exports.scriptFileExtensionList = scriptFileExtensionList;
39
45
  const scriptFileExtensions = '(' + scriptFileExtensionList.join('|') + ')';
40
46
  exports.scriptFileExtensions = scriptFileExtensions;
41
47
  function isScriptFile(filePath) {
42
48
  const yes = scriptFileExtensionList.some((ext) => filePath.endsWith('.' + ext));
43
- (0, assert_js_1.assert)(!isJavaScriptFile(filePath) || yes);
49
+ if (isJavaScriptFile(filePath))
50
+ (0, assert_js_1.assert)(yes);
44
51
  return yes;
45
52
  }
46
53
  exports.isScriptFile = isScriptFile;
47
54
  function isJavaScriptFile(filePath) {
48
- return /\.(c|m)?(j|t)sx?$/.test(filePath);
55
+ const yes1 = /\.(c|m)?(j|t)s$/.test(filePath);
56
+ const yes2 = extJavaScript.some((ext) => filePath.endsWith('.' + ext));
57
+ (0, assert_js_1.assert)(yes1 === yes2);
58
+ return yes1;
49
59
  }
60
+ exports.isJavaScriptFile = isJavaScriptFile;
50
61
  function isTemplateFile(filePath) {
51
62
  return extTemplates.some((ext) => filePath.endsWith('.' + ext));
52
63
  }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = exports.projectInfo = void 0;
4
4
  const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
5
- const PROJECT_VERSION = '0.4.161';
5
+ const PROJECT_VERSION = '0.4.162-commit-49fe40c';
6
6
  exports.PROJECT_VERSION = PROJECT_VERSION;
7
7
  const projectInfo = {
8
8
  projectName: 'Vike',
@@ -2,7 +2,7 @@
2
2
  export { route, getPagesAndRoutes };
3
3
  import { route as routeInternal } from '../shared/route/index.js';
4
4
  import { getGlobalContext, initGlobalContext } from '../node/runtime/globalContext.js';
5
- import { setNodeEnvToProduction } from '../utils/nodeEnv.js';
5
+ import { setNodeEnvToProduction } from '../utils/assertNodeEnv.js';
6
6
  import { assert } from '../utils/assert.js';
7
7
  import { getRenderContext } from '../node/runtime/renderPage/renderPageAlreadyRouted.js';
8
8
  /**
@@ -308,35 +308,41 @@ async function renderPageClientSide(renderArgs) {
308
308
  }
309
309
  }
310
310
  };
311
- // We use globalObject.renderPromise in order to ensure that there is never two concurrent onRenderClient() calls
312
- if (globalObject.renderPromise) {
311
+ // We use globalObject.onRenderClientPromise in order to ensure that there is never two concurrent onRenderClient() calls
312
+ if (globalObject.onRenderClientPromise) {
313
313
  // Make sure that the previous render has finished
314
- await globalObject.renderPromise;
315
- assert(globalObject.renderPromise === undefined);
314
+ await globalObject.onRenderClientPromise;
315
+ assert(globalObject.onRenderClientPromise === undefined);
316
316
  if (isRenderOutdated())
317
317
  return;
318
318
  }
319
319
  changeUrl(urlOriginal, overwriteLastHistoryEntry);
320
320
  globalObject.previousPageContext = pageContext;
321
- assert(globalObject.renderPromise === undefined);
322
- globalObject.renderPromise = (async () => {
321
+ assert(globalObject.onRenderClientPromise === undefined);
322
+ globalObject.onRenderClientPromise = (async () => {
323
+ let onRenderClientError;
323
324
  try {
324
325
  await executeOnRenderClientHook(pageContext, true);
325
326
  }
326
327
  catch (err) {
327
- await onError(err);
328
- return;
328
+ onRenderClientError = err;
329
329
  }
330
- addLinkPrefetchHandlers(pageContext);
331
- globalObject.renderPromise = undefined;
330
+ globalObject.onRenderClientPromise = undefined;
331
+ return onRenderClientError;
332
332
  })();
333
- await globalObject.renderPromise;
334
- assert(globalObject.renderPromise === undefined);
333
+ const onRenderClientError = await globalObject.onRenderClientPromise;
334
+ assert(globalObject.onRenderClientPromise === undefined);
335
+ if (onRenderClientError) {
336
+ await onError(onRenderClientError);
337
+ if (!isErrorPage)
338
+ return;
339
+ }
335
340
  /* We don't abort in order to ensure that onHydrationEnd() is called: we abort only after onHydrationEnd() is called.
336
341
  if (isRenderOutdated(true)) return
337
342
  */
343
+ addLinkPrefetchHandlers(pageContext);
338
344
  // onHydrationEnd()
339
- if (isHydrationRender) {
345
+ if (isHydrationRender && !onRenderClientError) {
340
346
  assertHook(pageContext, 'onHydrationEnd');
341
347
  const hook = getHook(pageContext, 'onHydrationEnd');
342
348
  if (hook) {
@@ -353,7 +359,7 @@ async function renderPageClientSide(renderArgs) {
353
359
  return;
354
360
  }
355
361
  }
356
- // We abort *after* onHydrationEnd() is called
362
+ // We purposely abort *after* onHydrationEnd() is called (see comment above).
357
363
  if (isRenderOutdated(true))
358
364
  return;
359
365
  // onPageTransitionEnd()
@@ -1,5 +1,5 @@
1
1
  export { getPageContextProxyForUser };
2
- import { assert, assertUsage, getGlobalObject } from '../server-routing-runtime/utils.js';
2
+ import { assert, assertUsage, assertWarning, getGlobalObject } from '../server-routing-runtime/utils.js';
3
3
  import { notSerializable } from '../../shared/notSerializable.js';
4
4
  const globalObject = getGlobalObject('getPageContextProxyForUser.ts', {});
5
5
  /**
@@ -30,6 +30,10 @@ function assertIsDefined(pageContext, prop) {
30
30
  return;
31
31
  if (isExpected(prop))
32
32
  return;
33
+ // - If no pageContext was fetchd from the server, then adding props to passToClient is useless.
34
+ // - Showing a warning, even though no pageContext was fetched from the server, is actually erroneous as the client runtime cannot deduce the passToClient list.
35
+ if (!pageContext._hasPageContextFromServer)
36
+ return;
33
37
  const propName = JSON.stringify(prop);
34
38
  /* This handling would be the clearest but, unfortunately, it's fundamentally problematic:
35
39
  * - It would force the pageContext value consumer to be synchronized with the pageContext value provider. For example, if vike-react wants to conditionally do something dependening on wehther some optional pageContext value was provided by some optional vike-react-* integration package.
@@ -37,7 +41,7 @@ function assertIsDefined(pageContext, prop) {
37
41
  const errMsg = `pageContext[${propName}] is \`undefined\` on the client-side. If it's defined on the server-side then add ${propName} to passToClient (https://vike.dev/passToClient), otherwise make sure your client-side hooks always define it (e.g. set it to \`null\` instead of \`undefined\`).`
38
42
  assertUsage(false, errMsg)
39
43
  */
40
- if (pageContext._hasPageContextFromServer && !pageContext._hasPageContextFromClient) {
44
+ if (!pageContext._hasPageContextFromClient) {
41
45
  // We can safely assume that the property is missing in passToClient, because the server-side defines all passToClient properties even if they have an undefined value:
42
46
  // ```
43
47
  // <script id="vike_pageContext" type="application/json">{"_pageId":"/pages/admin","user":"!undefined","pageProps":"!undefined","title":"!undefined","abortReason":"!undefined","_urlRewrite":null}</script>
@@ -47,6 +51,19 @@ function assertIsDefined(pageContext, prop) {
47
51
  }
48
52
  else {
49
53
  // Do nothing, not even a warning, because we don't know whether the user expects that the pageContext value can be undefined. (E.g. a pageContext value that is defined by an optional hook.)
54
+ // TODO/next-major-release make it an assertUsage()
55
+ assertWarning(false, [
56
+ `pageContext[${propName}] isn't defined on the client-side:`,
57
+ `1. if it's defined by the server-side then add ${propName} to passToClient (https://vike.dev/passToClient), or`,
58
+ `2. if it's expected that it may not be defined:`,
59
+ ' ```js',
60
+ ' // ❌ Replace code like this:',
61
+ ` const val = pageContext[${propName}] ?? someDefaultValue`,
62
+ ' // ✅ With that:',
63
+ ` const val = ${propName} in pageContext ? pageContext[${propName}] : someDefaultValue`,
64
+ ' ```',
65
+ `See stack track below to find where pageContext[${propName}] is being accessed.`
66
+ ].join('\n'), { showStackTrace: true, onlyOnce: false });
50
67
  }
51
68
  }
52
69
  const IGNORE_LIST = [
@@ -12,6 +12,7 @@ async function loadUserFilesClientSide(pageId, pageFilesAll, pageConfigs) {
12
12
  const isDev = import.meta.env.DEV;
13
13
  try {
14
14
  // prettier-ignore
15
+ // biome-ignore format:
15
16
  const result = await Promise.all([
16
17
  pageConfig && loadConfigValues(pageConfig, isDev),
17
18
  ...pageFilesClientSide.map((p) => p.loadFile?.()),
@@ -19,7 +19,6 @@ import { suppressRollupWarning } from './plugins/suppressRollupWarning.js';
19
19
  import { setGlobalContext } from './plugins/setGlobalContext.js';
20
20
  import { importBuild } from './plugins/importBuild/index.js';
21
21
  import { commonConfig } from './plugins/commonConfig.js';
22
- import { extensionsAssets } from './plugins/extensionsAssets.js';
23
22
  import { baseUrls } from './plugins/baseUrls.js';
24
23
  import { envVarsPlugin } from './plugins/envVars.js';
25
24
  import pc from '@brillout/picocolors';
@@ -44,7 +43,6 @@ function plugin(vikeConfig) {
44
43
  suppressRollupWarning(),
45
44
  setGlobalContext(),
46
45
  ...importBuild(),
47
- extensionsAssets(),
48
46
  baseUrls(vikeConfig),
49
47
  envVarsPlugin(),
50
48
  fileEnv()
@@ -2,7 +2,7 @@ export { buildConfig };
2
2
  export { assertRollupInput };
3
3
  export { analyzeClientEntries };
4
4
  export { manifestTempFile };
5
- import { assert, resolveOutDir, viteIsSSR, getFilePathAbsolute, addOnBeforeLogHook, removeFileExtention, unique, assertPosixPath, assertUsage, injectRollupInputs, normalizeRollupInput, assertNodeEnvIsNotDev, getOutDirs } from '../utils.js';
5
+ import { assert, resolveOutDir, viteIsSSR, getFilePathAbsolute, addOnBeforeLogHook, removeFileExtention, unique, assertPosixPath, assertUsage, injectRollupInputs, normalizeRollupInput, assertNodeEnvIsNotDev, getOutDirs, isNpmPackageImport } from '../utils.js';
6
6
  import { getVikeConfig, isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
7
7
  import { getConfigValue } from '../../../shared/page-configs/helpers.js';
8
8
  import { findPageFiles } from '../shared/findPageFiles.js';
@@ -10,11 +10,12 @@ import { getConfigVike } from '../../shared/getConfigVike.js';
10
10
  import { getVirtualFileIdPageConfigValuesAll } from '../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
11
11
  import { extractAssetsAddQuery } from '../../shared/extractAssetsQuery.js';
12
12
  import { createRequire } from 'module';
13
- import { getClientEntryFilePath } from '../../shared/getClientEntryFilePath.js';
13
+ import { getClientEntry } from '../../shared/getClientEntry.js';
14
14
  import fs from 'fs/promises';
15
15
  import path from 'path';
16
16
  import { fixServerAssets, fixServerAssets_isEnabled } from './buildConfig/fixServerAssets.js';
17
17
  import { set_constant_ASSETS_MAP } from './importBuild/index.js';
18
+ import { prependEntriesDir } from '../../shared/prependEntriesDir.js';
18
19
  // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
19
20
  const importMetaUrl = import.meta.url;
20
21
  const require_ = createRequire(importMetaUrl);
@@ -132,7 +133,7 @@ function analyzeClientEntries(pageConfigs, config) {
132
133
  let hasClientRouting = false;
133
134
  let hasServerRouting = false;
134
135
  let clientEntries = {};
135
- let clientFilePaths = [];
136
+ let clientEntryList = [];
136
137
  pageConfigs.forEach((pageConfig) => {
137
138
  const configValue = getConfigValue(pageConfig, 'clientRouting', 'boolean');
138
139
  if (configValue?.value) {
@@ -147,15 +148,15 @@ function analyzeClientEntries(pageConfigs, config) {
147
148
  clientEntries[entryName] = entryTarget;
148
149
  }
149
150
  {
150
- const clientFilePath = getClientEntryFilePath(pageConfig);
151
- if (clientFilePath) {
152
- clientFilePaths.push(clientFilePath);
151
+ const clientEntry = getClientEntry(pageConfig);
152
+ if (clientEntry) {
153
+ clientEntryList.push(clientEntry);
153
154
  }
154
155
  }
155
156
  });
156
- clientFilePaths = unique(clientFilePaths);
157
- clientFilePaths.forEach((pageFile) => {
158
- const { entryName, entryTarget } = getEntryFromFilePath(pageFile, config);
157
+ clientEntryList = unique(clientEntryList);
158
+ clientEntryList.forEach((clientEntry) => {
159
+ const { entryName, entryTarget } = getEntryFromClientEntry(clientEntry, config);
159
160
  clientEntries[entryName] = entryTarget;
160
161
  });
161
162
  return { hasClientRouting, hasServerRouting, clientEntries };
@@ -177,12 +178,18 @@ async function getPageFileEntries(config, includeAssetsImportedByServer) {
177
178
  assert(includeAssetsImportedByServer);
178
179
  addExtractAssetsQuery = true;
179
180
  }
180
- const { entryName, entryTarget } = getEntryFromFilePath(pageFile, config, addExtractAssetsQuery);
181
+ const { entryName, entryTarget } = getEntryFromClientEntry(pageFile, config, addExtractAssetsQuery);
181
182
  pageFileEntries[entryName] = entryTarget;
182
183
  });
183
184
  return pageFileEntries;
184
185
  }
185
- function getEntryFromFilePath(filePath, config, addExtractAssetsQuery) {
186
+ function getEntryFromClientEntry(clientEntry, config, addExtractAssetsQuery) {
187
+ if (isNpmPackageImport(clientEntry)) {
188
+ const entryTarget = clientEntry;
189
+ const entryName = prependEntriesDir(clientEntry);
190
+ return { entryName, entryTarget };
191
+ }
192
+ const filePath = clientEntry;
186
193
  assertPosixPath(filePath);
187
194
  assert(filePath.startsWith('/'));
188
195
  let entryTarget = getFilePathAbsolute(filePath, config);
@@ -202,14 +209,6 @@ function getEntryFromPageConfig(pageConfig, isForClientSide) {
202
209
  entryName = prependEntriesDir(entryName);
203
210
  return { entryName, entryTarget };
204
211
  }
205
- function prependEntriesDir(entryName) {
206
- if (entryName.startsWith('/')) {
207
- entryName = entryName.slice(1);
208
- }
209
- assert(!entryName.startsWith('/'));
210
- entryName = `entries/${entryName}`;
211
- return entryName;
212
- }
213
212
  function resolve(filePath) {
214
213
  assert(filePath.startsWith('dist/'));
215
214
  // [RELATIVE_PATH_FROM_DIST] Current directory: node_modules/vike/dist/esm/node/plugin/plugins/
@@ -229,6 +228,7 @@ function addLogHook() {
229
228
  });
230
229
  // Exhaustive list extracted from writeLine() calls at https://github.com/vitejs/vite/blob/193d55c7b9cbfec5b79ebfca276d4a721e7de14d/packages/vite/src/node/plugins/reporter.ts
231
230
  // prettier-ignore
231
+ // biome-ignore format:
232
232
  const viteTransientLogs = [
233
233
  'transforming (',
234
234
  'rendering chunks (',
@@ -1,9 +1,7 @@
1
1
  export { resolveVikeConfig };
2
2
  import { assertVikeConfig } from './assertVikeConfig.js';
3
3
  import { isDev2 } from '../../utils.js';
4
- import { findConfigVikeFromStemPackages } from './findConfigVikeFromStemPackages.js';
5
4
  import { pickFirst } from './pickFirst.js';
6
- import { resolveExtensions } from './resolveExtensions.js';
7
5
  import { resolveBase } from './resolveBase.js';
8
6
  import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
9
7
  import pc from '@brillout/picocolors';
@@ -21,10 +19,8 @@ function resolveVikeConfig(vikeConfig) {
21
19
  async function getConfigVikPromise(vikeConfig, config) {
22
20
  const fromPluginOptions = (vikeConfig ?? {});
23
21
  const fromViteConfig = (config.vike ?? {});
24
- const fromStemPackages = await findConfigVikeFromStemPackages(config.root);
25
- const configs = [fromPluginOptions, ...fromStemPackages, fromViteConfig];
26
- const extensions = resolveExtensions(configs, config);
27
- const { globalVikeConfig: fromPlusConfigFile } = await getVikeConfig(config, isDev2(config), false, extensions);
22
+ const configs = [fromPluginOptions, fromViteConfig];
23
+ const { globalVikeConfig: fromPlusConfigFile } = await getVikeConfig(config, isDev2(config), false);
28
24
  configs.push(fromPlusConfigFile);
29
25
  assertVikeConfig(fromPlusConfigFile, ({ prop, errMsg }) => {
30
26
  // TODO: add config file path ?
@@ -36,7 +32,6 @@ async function getConfigVikPromise(vikeConfig, config) {
36
32
  const { baseServer, baseAssets } = resolveBase(configs, config);
37
33
  const configVike = {
38
34
  disableAutoFullBuild: pickFirst(configs.map((c) => c.disableAutoFullBuild)) ?? null,
39
- extensions,
40
35
  prerender: resolvePrerenderOptions(configs),
41
36
  includeAssetsImportedByServer: pickFirst(configs.map((c) => c.includeAssetsImportedByServer)) ?? true,
42
37
  baseServer,
@@ -1,4 +1,3 @@
1
1
  export { determineFsAllowList };
2
2
  import type { ResolvedConfig } from 'vite';
3
- import type { ConfigVikeResolved } from '../../../../shared/ConfigVike.js';
4
- declare function determineFsAllowList(config: ResolvedConfig, configVike: ConfigVikeResolved): Promise<void>;
3
+ declare function determineFsAllowList(config: ResolvedConfig): Promise<void>;
@@ -1,7 +1,6 @@
1
1
  export { determineFsAllowList };
2
2
  import { searchForWorkspaceRoot } from 'vite';
3
3
  import path from 'path';
4
- import fs from 'fs';
5
4
  import { assert } from '../../utils.js';
6
5
  import { createRequire } from 'module';
7
6
  import { dirname } from 'path';
@@ -10,7 +9,7 @@ import { fileURLToPath } from 'url';
10
9
  const importMetaUrl = import.meta.url;
11
10
  const require_ = createRequire(importMetaUrl);
12
11
  const __dirname_ = dirname(fileURLToPath(importMetaUrl));
13
- async function determineFsAllowList(config, configVike) {
12
+ async function determineFsAllowList(config) {
14
13
  const fsAllow = config.server.fs.allow;
15
14
  // fsAllow should already contain searchForWorkspaceRoot()
16
15
  assert(fsAllow.length >= 1);
@@ -27,10 +26,4 @@ async function determineFsAllowList(config, configVike) {
27
26
  require_.resolve(`${vikeRoot}/dist/esm/node/plugin/plugins/devConfig/index.js`);
28
27
  fsAllow.push(vikeRoot);
29
28
  }
30
- // Add Vike extensions, e.g. node_modules/stem-react/
31
- configVike.extensions.forEach(({ npmPackageRootDir }) => {
32
- const npmPackageRootDirReal = fs.realpathSync(npmPackageRootDir);
33
- fsAllow.push(npmPackageRootDir);
34
- fsAllow.push(npmPackageRootDirReal);
35
- });
36
29
  }
@@ -1,4 +1,3 @@
1
1
  export { determineOptimizeDeps };
2
2
  import type { ResolvedConfig } from 'vite';
3
- import { ConfigVikeResolved } from '../../../../shared/ConfigVike.js';
4
- declare function determineOptimizeDeps(config: ResolvedConfig, configVike: ConfigVikeResolved, isDev: true): Promise<void>;
3
+ declare function determineOptimizeDeps(config: ResolvedConfig, isDev: true): Promise<void>;
@@ -1,11 +1,11 @@
1
1
  export { determineOptimizeDeps };
2
2
  import { findPageFiles } from '../../shared/findPageFiles.js';
3
- import { assert, getFilePathAbsolute, isNotNullish, isNpmPackageImport, unique } from '../../utils.js';
3
+ import { assert, getFilePathAbsolute, isNpmPackageImport, unique } from '../../utils.js';
4
4
  import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
5
5
  import { getConfigValueSourcesNotOverriden } from '../../shared/getConfigValueSourcesNotOverriden.js';
6
6
  import { analyzeClientEntries } from '../buildConfig.js';
7
7
  import { virtualFileIdImportUserCodeClientCR, virtualFileIdImportUserCodeClientSR } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
8
- async function determineOptimizeDeps(config, configVike, isDev) {
8
+ async function determineOptimizeDeps(config, isDev) {
9
9
  const { pageConfigs } = await getVikeConfig(config, isDev);
10
10
  const { entries, include } = await getPageDeps(config, pageConfigs, isDev);
11
11
  {
@@ -16,7 +16,6 @@ async function determineOptimizeDeps(config, configVike, isDev) {
16
16
  const entriesVirtualFiles = getVirtualFiles(config, pageConfigs);
17
17
  entries.push(...entriesVirtualFiles);
18
18
  }
19
- include.push(...getExtensionsDeps(configVike));
20
19
  /* Other Vite plugins may populate optimizeDeps, e.g. Cypress: https://github.com/vikejs/vike/issues/386
21
20
  assert(config.optimizeDeps.entries === undefined)
22
21
  */
@@ -88,22 +87,6 @@ function getVirtualFiles(config, pageConfigs) {
88
87
  entriesVirtualFiles.push(virtualFileIdImportUserCodeClientSR);
89
88
  return entriesVirtualFiles;
90
89
  }
91
- function getExtensionsDeps(configVike) {
92
- return [
93
- /* Doesn't work since `pageConfigsSrcDir` is a directory. We could make it work by using find-glob.
94
- ...configVike.extensions
95
- .map(({ pageConfigsSrcDir }) => pageConfigsSrcDir)
96
- .flat()
97
- .filter(isNotNullish),
98
- //*/
99
- ...configVike.extensions
100
- .map(({ pageConfigsDistFiles }) => pageConfigsDistFiles)
101
- .flat()
102
- .filter(isNotNullish)
103
- .filter(({ importPath }) => !importPath.endsWith('.css'))
104
- .map(({ importPath }) => importPath)
105
- ];
106
- }
107
90
  function normalizeEntries(entries) {
108
91
  if (Array.isArray(entries))
109
92
  return entries;
@@ -1,7 +1,6 @@
1
1
  export { devConfig };
2
2
  import { determineOptimizeDeps } from './determineOptimizeDeps.js';
3
3
  import { determineFsAllowList } from './determineFsAllowList.js';
4
- import { getConfigVike } from '../../../shared/getConfigVike.js';
5
4
  import { addSsrMiddleware } from '../../shared/addSsrMiddleware.js';
6
5
  import { markEnvAsViteDev } from '../../utils.js';
7
6
  import { improveViteLogs } from '../../shared/loggerVite.js';
@@ -55,9 +54,8 @@ function devConfig() {
55
54
  },
56
55
  async configResolved(config_) {
57
56
  config = config_;
58
- const configVike = await getConfigVike(config);
59
- await determineOptimizeDeps(config, configVike, isDev);
60
- await determineFsAllowList(config, configVike);
57
+ await determineOptimizeDeps(config, isDev);
58
+ await determineFsAllowList(config);
61
59
  if (!isErrorDebug()) {
62
60
  await installHttpRequestAsyncStore();
63
61
  improveViteLogs(config);
@@ -3,6 +3,7 @@ export { envVarsPlugin };
3
3
  export { applyEnvVar };
4
4
  import { loadEnv } from 'vite';
5
5
  import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, getFilePathRelativeToUserRootDir, lowerFirst } from '../utils.js';
6
+ import { sourceMapPassthrough } from '../shared/rollupSourceMap.js';
6
7
  function envVarsPlugin() {
7
8
  let envsAll;
8
9
  let config;
@@ -62,8 +63,11 @@ function envVarsPlugin() {
62
63
  // Apply
63
64
  code = applyEnvVar(envName, envVal, code);
64
65
  });
65
- // No need for low-resolution source map since line numbers didn't change. (Does Vite do high-resolution column numbers source mapping?)
66
- return code;
66
+ // Line numbers didn't change.
67
+ // - We only break the column number of a couple of lines, wich is acceptable.
68
+ // - Anyways, I'm not even sure Vite supports high-resolution column number source mapping.
69
+ const ret = sourceMapPassthrough(code);
70
+ return ret;
67
71
  }
68
72
  };
69
73
  }