vike 0.4.161 → 0.4.162

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 (157) 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/shared/loadUserFilesClientSide.js +1 -0
  55. package/dist/esm/node/plugin/index.js +0 -2
  56. package/dist/esm/node/plugin/plugins/buildConfig.js +19 -19
  57. package/dist/esm/node/plugin/plugins/config/index.js +2 -7
  58. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.d.ts +1 -2
  59. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -8
  60. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +1 -2
  61. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -19
  62. package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -4
  63. package/dist/esm/node/plugin/plugins/envVars.js +6 -2
  64. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +11 -23
  65. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  66. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.d.ts +1 -2
  67. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.js +2 -19
  68. package/dist/esm/node/plugin/plugins/importBuild/index.js +1 -1
  69. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +31 -97
  70. package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -8
  71. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +1 -9
  72. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
  73. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +3 -3
  74. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +1 -1
  75. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +1 -1
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +4 -4
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +1 -1
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.d.ts +1 -13
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +35 -36
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +1 -1
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +111 -106
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -3
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -33
  84. package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -15
  85. package/dist/esm/node/plugin/shared/rollupSourceMap.d.ts +14 -0
  86. package/dist/esm/node/plugin/shared/rollupSourceMap.js +17 -0
  87. package/dist/esm/node/plugin/utils.d.ts +0 -1
  88. package/dist/esm/node/plugin/utils.js +0 -1
  89. package/dist/esm/node/prerender/runPrerender.d.ts +3 -3
  90. package/dist/esm/node/prerender/runPrerender.js +4 -3
  91. package/dist/esm/node/prerender/utils.d.ts +1 -1
  92. package/dist/esm/node/prerender/utils.js +1 -1
  93. package/dist/esm/node/runtime/globalContext.d.ts +3 -10
  94. package/dist/esm/node/runtime/globalContext.js +7 -18
  95. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -0
  96. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  97. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +2 -8
  98. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.d.ts +1 -1
  99. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -7
  100. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +1 -1
  101. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  102. package/dist/esm/node/runtime/renderPage/getPageAssets.js +24 -29
  103. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -24
  104. package/dist/esm/node/runtime/utils.d.ts +1 -2
  105. package/dist/esm/node/runtime/utils.js +1 -2
  106. package/dist/esm/node/shared/ViteManifest.d.ts +1 -0
  107. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
  108. package/dist/esm/node/shared/assertPluginManifest.js +2 -5
  109. package/dist/esm/node/shared/assertV1Design.d.ts +4 -0
  110. package/dist/esm/node/shared/assertV1Design.js +23 -0
  111. package/dist/esm/node/shared/getClientEntry.d.ts +3 -0
  112. package/dist/esm/node/shared/{getClientEntryFilePath.js → getClientEntry.js} +2 -2
  113. package/dist/esm/node/shared/prependEntriesDir.d.ts +2 -0
  114. package/dist/esm/node/shared/prependEntriesDir.js +10 -0
  115. package/dist/esm/node/shared/utils.d.ts +2 -0
  116. package/dist/esm/node/shared/utils.js +2 -0
  117. package/dist/esm/node/shared/virtual-files/virtualFileImportUserCode.js +1 -0
  118. package/dist/esm/shared/ConfigVike.d.ts +0 -27
  119. package/dist/esm/shared/hooks/getHook.js +2 -2
  120. package/dist/esm/shared/page-configs/Config.d.ts +5 -0
  121. package/dist/esm/shared/page-configs/PageConfig.d.ts +2 -4
  122. package/dist/esm/shared/page-configs/helpers/getConfigValue.js +1 -0
  123. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +1 -1
  124. package/dist/esm/shared/route/abort.js +1 -0
  125. package/dist/esm/shared/route/resolvePrecedence.js +1 -0
  126. package/dist/esm/utils/{nodeEnv.js → assertNodeEnv.js} +3 -0
  127. package/dist/esm/utils/debug.d.ts +1 -1
  128. package/dist/esm/utils/formatHintLog.js +1 -0
  129. package/dist/esm/utils/hasProp.js +1 -0
  130. package/dist/esm/utils/isScriptFile.d.ts +3 -1
  131. package/dist/esm/utils/isScriptFile.js +14 -3
  132. package/dist/esm/utils/projectInfo.d.ts +2 -2
  133. package/dist/esm/utils/projectInfo.js +1 -1
  134. package/package.json +4 -3
  135. package/dist/cjs/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -27
  136. package/dist/cjs/node/plugin/plugins/config/resolveExtensions.js +0 -107
  137. package/dist/cjs/node/plugin/plugins/config/stemUtils.js +0 -85
  138. package/dist/cjs/node/plugin/plugins/extensionsAssets.js +0 -101
  139. package/dist/cjs/node/plugin/shared/removeSourceMap.js +0 -12
  140. package/dist/cjs/utils/getDependencyPackageJson.js +0 -91
  141. package/dist/cjs/utils/isStemPackageName.js +0 -14
  142. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.d.ts +0 -3
  143. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -24
  144. package/dist/esm/node/plugin/plugins/config/resolveExtensions.d.ts +0 -4
  145. package/dist/esm/node/plugin/plugins/config/resolveExtensions.js +0 -101
  146. package/dist/esm/node/plugin/plugins/config/stemUtils.d.ts +0 -8
  147. package/dist/esm/node/plugin/plugins/config/stemUtils.js +0 -79
  148. package/dist/esm/node/plugin/plugins/extensionsAssets.d.ts +0 -3
  149. package/dist/esm/node/plugin/plugins/extensionsAssets.js +0 -95
  150. package/dist/esm/node/plugin/shared/removeSourceMap.d.ts +0 -7
  151. package/dist/esm/node/plugin/shared/removeSourceMap.js +0 -9
  152. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +0 -3
  153. package/dist/esm/utils/getDependencyPackageJson.d.ts +0 -6
  154. package/dist/esm/utils/getDependencyPackageJson.js +0 -85
  155. package/dist/esm/utils/isStemPackageName.d.ts +0 -1
  156. package/dist/esm/utils/isStemPackageName.js +0 -10
  157. /package/dist/esm/utils/{nodeEnv.d.ts → assertNodeEnv.d.ts} +0 -0
@@ -7,65 +7,58 @@ import fs from 'fs';
7
7
  import path from 'path';
8
8
  import pc from '@brillout/picocolors';
9
9
  import { import_ } from '@brillout/import';
10
- import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, unique, assertWarning, isObject, toPosixPath } from '../../../../utils.js';
11
- import { isImportData, transformFileImports } from './transformFileImports.js';
10
+ import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, assertWarning, isObject, toPosixPath, assertUsage, isJavaScriptFile, createDebugger } from '../../../../utils.js';
11
+ import { transformFileImports } from './transformFileImports.js';
12
12
  import { vikeConfigDependencies } from '../getVikeConfig.js';
13
13
  import 'source-map-support/register.js';
14
- import { getConfigFileExport } from '../getConfigFileExport.js';
15
14
  assertIsNotProductionRuntime();
16
- async function transpileAndExecuteFile(filePath, transformImports, userRootDir, doNotTranspile = false) {
17
- if (doNotTranspile) {
18
- assert(!transformImports);
19
- const fileExports = await executeFile(filePath.filePathAbsoluteFilesystem, filePath);
20
- if (isHeaderFile(filePath.filePathAbsoluteFilesystem)) {
21
- const filePathToShowToUser2 = getFilePathToShowToUser2(filePath);
22
- assertWarning(false, `${filePathToShowToUser2} is a JavaScript header file (.h.js), but JavaScript header files don't apply to the config files of extensions`, { onlyOnce: true });
23
- }
15
+ const debug = createDebugger('vike:pointer-imports');
16
+ async function transpileAndExecuteFile(filePath, userRootDir, isConfigFile) {
17
+ const { filePathAbsoluteFilesystem } = filePath;
18
+ const fileExtension = getFileExtension(filePathAbsoluteFilesystem);
19
+ const filePathToShowToUser2 = getFilePathToShowToUser2(filePath);
20
+ assertUsage(isJavaScriptFile(filePathAbsoluteFilesystem), `${filePathToShowToUser2} has file extension .${fileExtension} but a config file can only be a JavaScript/TypeScript file`);
21
+ const isHeader = isHeaderFile(filePathAbsoluteFilesystem);
22
+ if (isHeader) {
23
+ assertWarning(false, `${pc.cyan('.h.js')} files are deprecated: simply renaming ${filePathToShowToUser2} to ${removeHeaderFileExtension(filePathToShowToUser2)} is usually enough, although you may occasionally need to use ${pc.cyan("with { type: 'pointer' }")} as explained at https://vike.dev/config#pointer-imports`, { onlyOnce: true });
24
+ }
25
+ if (isConfigFile === 'is-extension-config' && !isHeader && fileExtension.endsWith('js')) {
26
+ // This doesn't track dependencies => we should never use this for user land configs
27
+ const fileExports = await executeFile(filePathAbsoluteFilesystem, filePath);
24
28
  return { fileExports };
25
29
  }
26
30
  else {
27
- const { code, fileImportsTransformed } = await transpileFile(filePath, transformImports, userRootDir);
28
- const fileExports = await executeTranspiledFile(filePath, code, fileImportsTransformed);
31
+ const transformImports = isConfigFile && (isHeader ? 'all' : true);
32
+ const code = await transpileFile(filePath, transformImports, userRootDir);
33
+ const fileExports = await executeTranspiledFile(filePath, code);
29
34
  return { fileExports };
30
35
  }
31
36
  }
32
37
  async function transpileFile(filePath, transformImports, userRootDir) {
33
- const { filePathAbsoluteFilesystem } = filePath;
34
38
  const filePathToShowToUser2 = getFilePathToShowToUser2(filePath);
39
+ const { filePathAbsoluteFilesystem } = filePath;
35
40
  assertPosixPath(filePathAbsoluteFilesystem);
36
41
  vikeConfigDependencies.add(filePathAbsoluteFilesystem);
37
- let code = await transpileWithEsbuild(filePath, userRootDir, transformImports);
38
- let fileImportsTransformed = null;
42
+ if (debug.isEnabled)
43
+ debug('transpile', filePathToShowToUser2);
44
+ let { code, pointerImports } = await transpileWithEsbuild(filePath, userRootDir, transformImports);
45
+ if (debug.isEnabled)
46
+ debug(`code, post esbuild (${filePathToShowToUser2})`, code);
47
+ let isImportTransformed = false;
39
48
  if (transformImports) {
40
- const res = transformFileImports_(code, filePath);
41
- if (res) {
42
- code = res.code;
43
- fileImportsTransformed = res.fileImportsTransformed;
49
+ const codeMod = transformFileImports(code, filePathToShowToUser2, pointerImports);
50
+ if (codeMod) {
51
+ code = codeMod;
52
+ isImportTransformed = true;
53
+ if (debug.isEnabled)
54
+ debug(`code, post transformImports() (${filePathToShowToUser2})`, code);
44
55
  }
45
56
  }
46
- else {
47
- if (isHeaderFile(filePathAbsoluteFilesystem)) {
48
- assertWarning(false, `${filePathToShowToUser2} is a JavaScript header file (.h.js), but JavaScript header files only apply to +config.h.js, see https://vike.dev/header-file`, { onlyOnce: true });
49
- }
57
+ if (!isImportTransformed) {
58
+ if (debug.isEnabled)
59
+ debug(`code, no transformImports() (${filePathToShowToUser2})`);
50
60
  }
51
- return { code, fileImportsTransformed };
52
- }
53
- function transformFileImports_(codeOriginal, filePath) {
54
- const { filePathAbsoluteFilesystem } = filePath;
55
- const filePathToShowToUser2 = getFilePathToShowToUser2(filePath);
56
- // Replace import statements with import strings
57
- const res = transformFileImports(codeOriginal, filePathToShowToUser2);
58
- if (res.noTransformation) {
59
- return null;
60
- }
61
- const { code, fileImportsTransformed } = res;
62
- if (!isHeaderFile(filePathAbsoluteFilesystem)) {
63
- const filePathCorrect = appendHeaderFileExtension(filePathToShowToUser2);
64
- assertWarning(false, `Rename ${filePathToShowToUser2} to ${filePathCorrect}, see https://vike.dev/header-file`, {
65
- onlyOnce: true
66
- });
67
- }
68
- return { code, fileImportsTransformed };
61
+ return code;
69
62
  }
70
63
  async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
71
64
  const entryFilePath = filePath.filePathAbsoluteFilesystem;
@@ -88,14 +81,63 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
88
81
  // Esbuild still sometimes removes unused imports because of TypeScript: https://github.com/evanw/esbuild/issues/3034
89
82
  treeShaking: false,
90
83
  minify: false,
91
- metafile: !transformImports,
92
- // We cannot bundle imports that are meant to be transformed
93
- bundle: !transformImports
84
+ metafile: transformImports !== 'all',
85
+ bundle: transformImports !== 'all'
94
86
  };
95
- // Track dependencies
96
- if (!transformImports) {
87
+ let pointerImports;
88
+ if (transformImports === 'all') {
89
+ pointerImports = 'all';
97
90
  options.packages = 'external';
91
+ }
92
+ else {
93
+ const pointerImports_ = (pointerImports = {});
98
94
  options.plugins = [
95
+ // Determine what import should be externalized (and then transformed to a pointer/fake import)
96
+ {
97
+ name: 'vike:externalize-heuristic',
98
+ setup(build) {
99
+ // https://github.com/evanw/esbuild/issues/3095#issuecomment-1546916366
100
+ const useEsbuildResolver = 'useEsbuildResolver';
101
+ // https://github.com/brillout/esbuild-playground
102
+ build.onResolve({ filter: /.*/ }, async (args) => {
103
+ if (args.kind !== 'import-statement')
104
+ return;
105
+ if (args.pluginData?.[useEsbuildResolver])
106
+ return;
107
+ const isImportAbsolute = !args.path.startsWith('.');
108
+ const { path, ...opts } = args;
109
+ opts.pluginData = { [useEsbuildResolver]: true };
110
+ const resolved = await build.resolve(path, opts);
111
+ // vike-{react,vue,solid} follow the convention that their config export resolves to a file named +config.js
112
+ // - This is temporary, see comment below.
113
+ const isVikeExtensionConfigImport = resolved.path.endsWith('+config.js');
114
+ const isPointerImport =
115
+ // .jsx, .vue, .svg, ... => obviously not config code
116
+ !isJavaScriptFile(resolved.path) ||
117
+ // Import of a Vike extension config => make it a pointer import because we want to show nice error messages (that can display whether a configas been set by the user or by a Vike extension).
118
+ // - We should have Node.js directly load vike-{react,vue,solid} while enforcing Vike extensions to set 'name' in their +config.js file.
119
+ // - vike@0.4.162 already started soft-requiring Vike extensions to set the name config
120
+ isVikeExtensionConfigImport ||
121
+ // Cannot be resolved by esbuild => take a leap of faith and make it a pointer import.
122
+ // - For example if esbuild cannot resolve a path alias while Vite can.
123
+ // - When tsconfig.js#compilerOptions.paths is set, then esbuild is able to resolve the path alias.
124
+ resolved.errors.length > 0;
125
+ pointerImports_[args.path] = isPointerImport;
126
+ const isExternal = isPointerImport ||
127
+ // npm package imports that aren't pointer imports (e.g. Vite plugin import)
128
+ isImportAbsolute;
129
+ if (debug.isEnabled)
130
+ debug('onResolved()', { args, resolved, isPointerImport, isExternal });
131
+ if (isExternal) {
132
+ return { external: true, path: args.path };
133
+ }
134
+ else {
135
+ return resolved;
136
+ }
137
+ });
138
+ }
139
+ },
140
+ // Track dependencies
99
141
  {
100
142
  name: 'vike:dependency-tracker',
101
143
  setup(b) {
@@ -128,7 +170,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
128
170
  throw err;
129
171
  }
130
172
  // Track dependencies
131
- if (!transformImports) {
173
+ if (transformImports !== 'all') {
132
174
  assert(result.metafile);
133
175
  Object.keys(result.metafile.inputs).forEach((filePathRelative) => {
134
176
  filePathRelative = toPosixPath(filePathRelative);
@@ -139,10 +181,10 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
139
181
  }
140
182
  const code = result.outputFiles[0].text;
141
183
  assert(typeof code === 'string');
142
- return code;
184
+ return { code, pointerImports };
143
185
  }
144
- async function executeTranspiledFile(filePath, code, fileImportsTransformed) {
145
- const { filePathAbsoluteFilesystem, filePathRelativeToUserRootDir } = filePath;
186
+ async function executeTranspiledFile(filePath, code) {
187
+ const { filePathAbsoluteFilesystem } = filePath;
146
188
  // Alternative to using a temporary file: https://github.com/vitejs/vite/pull/13269
147
189
  // - But seems to break source maps, so I don't think it's worth it
148
190
  const filePathTmp = getFilePathTmp(filePathAbsoluteFilesystem);
@@ -155,11 +197,6 @@ async function executeTranspiledFile(filePath, code, fileImportsTransformed) {
155
197
  finally {
156
198
  clean();
157
199
  }
158
- if (fileImportsTransformed) {
159
- assert(filePathRelativeToUserRootDir !== undefined);
160
- const filePathToShowToUser2 = getFilePathToShowToUser2(filePath);
161
- assertImportsAreReExported(fileImportsTransformed, fileExports, filePathToShowToUser2);
162
- }
163
200
  return fileExports;
164
201
  }
165
202
  async function executeFile(filePathToExecuteAbsoluteFilesystem, filePathSourceFile) {
@@ -222,59 +259,27 @@ function isTmpFile(filePath) {
222
259
  const fileName = path.posix.basename(filePath);
223
260
  return fileName.startsWith(tmpPrefix);
224
261
  }
225
- function assertImportsAreReExported(fileImportsTransformed, fileExports, filePathToShowToUser2) {
226
- const fileExport = getConfigFileExport(fileExports, filePathToShowToUser2);
227
- const exportedStrings = getExportedStrings(fileExport);
228
- Object.values(exportedStrings).forEach((exportVal) => {
229
- if (typeof exportVal !== 'string')
230
- return;
231
- if (!isImportData(exportVal))
232
- return;
233
- const importString = exportVal;
234
- fileImportsTransformed.forEach((fileImport) => {
235
- if (fileImport.importString === importString) {
236
- fileImport.isReExported = true;
237
- }
238
- });
239
- });
240
- const fileImportsTransformedUnused = fileImportsTransformed.filter((fi) => !fi.isReExported);
241
- if (fileImportsTransformedUnused.length === 0)
242
- return;
243
- const importStatements = unique(fileImportsTransformedUnused.map((fi) => fi.importStatementCode));
244
- const importNamesUnused = fileImportsTransformedUnused.map((fi) => pc.cyan(fi.importLocalName)).join(', ');
245
- const singular = fileImportsTransformedUnused.length === 1;
246
- assertWarning(fileImportsTransformedUnused.length === 0, [
247
- `${filePathToShowToUser2} imports the following:`,
248
- ...importStatements.map((s) => pc.cyan(` ${s}`)),
249
- `But the import${singular ? '' : 's'} ${importNamesUnused} ${singular ? "isn't" : "aren't"} re-exported at ${pc.cyan('export default { ... }')} and therefore ${singular ? 'has' : 'have'} no effect, see explanation at https://vike.dev/header-file`
250
- ].join('\n'), { onlyOnce: true });
251
- }
252
- function getExportedStrings(obj) {
253
- const exportedStrings = [];
254
- Object.values(obj).forEach((val) => {
255
- if (typeof val === 'string') {
256
- exportedStrings.push(val);
257
- }
258
- else if (Array.isArray(val)) {
259
- val.forEach((v) => {
260
- if (typeof v === 'string') {
261
- exportedStrings.push(v);
262
- }
263
- });
264
- }
265
- });
266
- return exportedStrings;
267
- }
268
262
  function isHeaderFile(filePath) {
269
263
  assertPosixPath(filePath);
270
- const basenameParts = path.posix.basename(filePath).split('.');
271
- return basenameParts.includes('h');
264
+ const fileExtensions = getFileExtensions(filePath);
265
+ return fileExtensions.includes('h');
272
266
  }
273
- function appendHeaderFileExtension(filePath) {
274
- const basenameParts = path.posix.basename(filePath).split('.');
275
- basenameParts.splice(-1, 0, 'h');
276
- const basenameCorrect = basenameParts.join('.');
277
- return path.posix.join(path.posix.dirname(filePath), basenameCorrect);
267
+ function getFileExtensions(filePath) {
268
+ const fileExtensions = path.posix.basename(filePath).split('.').slice(1);
269
+ return fileExtensions;
270
+ }
271
+ function getFileExtension(filePath) {
272
+ const fileExtensions = path.posix.basename(filePath).split('.').slice(1);
273
+ return fileExtensions.pop();
274
+ }
275
+ function removeHeaderFileExtension(filePath) {
276
+ assertPosixPath(filePath);
277
+ const fileName = path.posix.basename(filePath);
278
+ const fileNameParts = fileName.split('.');
279
+ const fileNamePartsMod = fileNameParts.filter((p) => p !== 'h');
280
+ assert(fileNamePartsMod.length < fileNameParts.length);
281
+ const fileNameMod = fileNamePartsMod.join('.');
282
+ return path.posix.join(path.posix.dirname(filePath), fileNameMod);
278
283
  }
279
284
  // Needed for the npm package 'source-map-support'. The Error.prepareStackTrace() hook of 'source-map-support' needs to be called before the file containing the source map is removed. The clean() call above removes the transpiled file from disk but it contains the inline source map.
280
285
  function triggerPrepareStackTrace(err) {
@@ -3,9 +3,9 @@ export { reloadVikeConfig };
3
3
  export { vikeConfigDependencies };
4
4
  export { isVikeConfigFile };
5
5
  export { isV1Design };
6
+ export type { VikeConfig };
6
7
  export type { InterfaceValueFile };
7
8
  import type { PageConfigGlobalBuildTime, PageConfigBuildTime, FilePathResolved } from '../../../../../shared/page-configs/PageConfig.js';
8
- import type { ExtensionResolved } from '../../../../../shared/ConfigVike.js';
9
9
  import { type LocationId } from './getVikeConfig/filesystemRouting.js';
10
10
  import type { ResolvedConfig } from 'vite';
11
11
  type InterfaceFileCommons = {
@@ -27,7 +27,7 @@ type VikeConfig = {
27
27
  globalVikeConfig: Record<string, unknown>;
28
28
  };
29
29
  declare const vikeConfigDependencies: Set<string>;
30
- declare function reloadVikeConfig(userRootDir: string, outDirRoot: string, extensions: ExtensionResolved[]): void;
31
- declare function getVikeConfig(config: ResolvedConfig, isDev: boolean, tolerateInvalidConfig?: boolean, extensions?: ExtensionResolved[]): Promise<VikeConfig>;
30
+ declare function reloadVikeConfig(userRootDir: string, outDirRoot: string): void;
31
+ declare function getVikeConfig(config: ResolvedConfig, isDev: boolean, tolerateInvalidConfig?: boolean): Promise<VikeConfig>;
32
32
  declare function isV1Design(config: ResolvedConfig, isDev: boolean): Promise<boolean>;
33
33
  declare function isVikeConfigFile(filePath: string): boolean;
@@ -14,7 +14,6 @@ import { logConfigError, logConfigErrorRecover } from '../../../shared/loggerNot
14
14
  import { removeSuperfluousViteLog_enable, removeSuperfluousViteLog_disable } from '../../../shared/loggerVite/removeSuperfluousViteLog.js';
15
15
  import pc from '@brillout/picocolors';
16
16
  import { getConfigDefinedAtString } from '../../../../../shared/page-configs/helpers.js';
17
- import { getConfigVike } from '../../../../shared/getConfigVike.js';
18
17
  import { assertConfigValueIsSerializable } from './getConfigValuesSerialized.js';
19
18
  import { crawlPlusFiles } from './getVikeConfig/crawlPlusFiles.js';
20
19
  import { getConfigFileExport } from './getConfigFileExport.js';
@@ -26,10 +25,10 @@ let devServerIsCorrupt = false;
26
25
  let wasConfigInvalid = null;
27
26
  let vikeConfigPromise = null;
28
27
  const vikeConfigDependencies = new Set();
29
- function reloadVikeConfig(userRootDir, outDirRoot, extensions) {
28
+ function reloadVikeConfig(userRootDir, outDirRoot) {
30
29
  vikeConfigDependencies.clear();
31
30
  clearFilesEnvMap();
32
- vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, true, extensions, true);
31
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, true, true);
33
32
  handleReloadSideEffects();
34
33
  }
35
34
  async function handleReloadSideEffects() {
@@ -63,20 +62,22 @@ async function handleReloadSideEffects() {
63
62
  }
64
63
  }
65
64
  }
66
- async function getVikeConfig(config, isDev, tolerateInvalidConfig = false, extensions) {
65
+ async function getVikeConfig(config, isDev, tolerateInvalidConfig = false) {
67
66
  const { outDirRoot } = getOutDirs(config);
68
67
  const userRootDir = config.root;
69
68
  if (!vikeConfigPromise) {
70
- vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions ?? (await getConfigVike(config)).extensions, tolerateInvalidConfig);
69
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, tolerateInvalidConfig);
71
70
  }
72
71
  return await vikeConfigPromise;
73
72
  }
74
73
  async function isV1Design(config, isDev) {
75
- const isV1Design = (await getVikeConfig(config, isDev)).pageConfigs.length > 0;
74
+ const vikeConfig = await getVikeConfig(config, isDev);
75
+ const { pageConfigs } = vikeConfig;
76
+ const isV1Design = pageConfigs.length > 0;
76
77
  return isV1Design;
77
78
  }
78
- async function loadInterfaceFiles(userRootDir, outDirRoot, isDev, extensions) {
79
- const plusFiles = await findPlusFiles(userRootDir, outDirRoot, isDev, extensions);
79
+ async function loadInterfaceFiles(userRootDir, outDirRoot, isDev) {
80
+ const plusFiles = await findPlusFiles(userRootDir, outDirRoot, isDev);
80
81
  const configFiles = [];
81
82
  const valueFiles = [];
82
83
  plusFiles.forEach((f) => {
@@ -102,14 +103,14 @@ async function loadInterfaceFiles(userRootDir, outDirRoot, isDev, extensions) {
102
103
  extendsConfigs.forEach((extendsConfig) => {
103
104
  /* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
104
105
  ```js
105
- // /pages/admin/+config.h.js
106
+ // /pages/admin/+config.js
106
107
 
107
108
  import vikeVue from 'vike-vue/config'
108
109
  // Should only apply to /pages/admin/**
109
110
  export default { extends: [vikeVue] }
110
111
  ```
111
112
  ```js
112
- // /pages/marketing/+config.h.js
113
+ // /pages/marketing/+config.js
113
114
 
114
115
  import vikeReact from 'vike-react/config'
115
116
  // Should only apply to /pages/marketing/**
@@ -117,6 +118,28 @@ async function loadInterfaceFiles(userRootDir, outDirRoot, isDev, extensions) {
117
118
  ```
118
119
  */
119
120
  const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true, locationId);
121
+ {
122
+ const alreadyMigrated = [
123
+ 'vike-react',
124
+ 'vike-react-query',
125
+ 'vike-react-zustand',
126
+ 'vike-vue',
127
+ 'vike-pinia',
128
+ 'vike-solid'
129
+ ];
130
+ const extensionName = extendsConfig.filePath.importPathAbsolute.split('/')[0];
131
+ const warnMsg = alreadyMigrated.includes(extensionName)
132
+ ? `You're using a deprecated version of the Vike extension ${extensionName}, update ${extensionName} to its latest version.`
133
+ : `The config of the Vike extension ${extensionName} should set a ${pc.cyan('name')} value`;
134
+ const isNameDefined = interfaceFile.fileExportsByConfigName.name?.configValue;
135
+ if (alreadyMigrated) {
136
+ // Eventually always make it a assertUsage()
137
+ assertWarning(isNameDefined, warnMsg, { onlyOnce: true });
138
+ }
139
+ else {
140
+ assertUsage(isNameDefined, warnMsg);
141
+ }
142
+ }
120
143
  interfaceFilesByLocationId[locationId].push(interfaceFile);
121
144
  });
122
145
  }),
@@ -184,12 +207,12 @@ function assertAllConfigsAreKnown(interfaceFilesByLocationId) {
184
207
  });
185
208
  });
186
209
  }
187
- async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions, tolerateInvalidConfig) {
210
+ async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, tolerateInvalidConfig) {
188
211
  let hasError = false;
189
212
  let ret;
190
213
  let err;
191
214
  try {
192
- ret = await loadVikeConfig(userRootDir, outDirRoot, isDev, extensions);
215
+ ret = await loadVikeConfig(userRootDir, outDirRoot, isDev);
193
216
  }
194
217
  catch (err_) {
195
218
  hasError = true;
@@ -225,8 +248,8 @@ async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev,
225
248
  }
226
249
  }
227
250
  }
228
- async function loadVikeConfig(userRootDir, outDirRoot, isDev, extensions) {
229
- const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir, outDirRoot, isDev, extensions);
251
+ async function loadVikeConfig(userRootDir, outDirRoot, isDev) {
252
+ const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir, outDirRoot, isDev);
230
253
  const importedFilesLoaded = {};
231
254
  const { globalVikeConfig, pageConfigGlobal } = await getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importedFilesLoaded);
232
255
  const pageConfigs = await Promise.all(objectEntries(interfaceFilesByLocationId)
@@ -401,7 +424,7 @@ async function resolveConfigValueSources(configName, configDef, interfaceFilesRe
401
424
  // Make this value:
402
425
  // /pages/some-page/+{configName}.js > `export default`
403
426
  // override that value:
404
- // /pages/some-page/+config.h.js > `export default { someConfig }`
427
+ // /pages/some-page/+config.js > `export default { someConfig }`
405
428
  const interfaceFileWinner = interfaceValueFile ?? interfaceConfigFile;
406
429
  if (interfaceFileWinner) {
407
430
  const interfaceFilesOverriden = [...interfaceValueFiles, ...interfaceConfigFiles].filter((f) => f !== interfaceFileWinner);
@@ -709,26 +732,9 @@ function getComputed(configValueSources, configDefinitions) {
709
732
  });
710
733
  return configValuesComputed;
711
734
  }
712
- async function findPlusFiles(userRootDir, outDirRoot, isDev, extensions) {
735
+ async function findPlusFiles(userRootDir, outDirRoot, isDev) {
713
736
  const files = await crawlPlusFiles(userRootDir, outDirRoot, isDev);
714
737
  const plusFiles = files.map(({ filePathRelativeToUserRootDir }) => resolveFilePathRelativeToUserRootDir(filePathRelativeToUserRootDir, userRootDir));
715
- // TODO/v1-release: remove
716
- extensions.forEach((extension) => {
717
- extension.pageConfigsDistFiles?.forEach((pageConfigDistFile) => {
718
- if (!pageConfigDistFile.importPath.includes('+'))
719
- return;
720
- assert(pageConfigDistFile.importPath.includes('+'));
721
- assert(path.posix.basename(pageConfigDistFile.importPath).startsWith('+'));
722
- const { importPath, filePath } = pageConfigDistFile;
723
- plusFiles.push({
724
- filePathRelativeToUserRootDir: null,
725
- filePathAbsoluteVite: importPath,
726
- filePathAbsoluteFilesystem: filePath,
727
- filePathToShowToUser: importPath,
728
- importPathAbsolute: importPath
729
- });
730
- });
731
- });
732
738
  return plusFiles;
733
739
  }
734
740
  function getConfigName(filePath) {
@@ -1,5 +1,5 @@
1
1
  export { setGlobalContext };
2
- import { setGlobalContext_viteDevServer, setGlobalContext_vitePreviewServer, setGlobalContext_viteConfig } from '../../runtime/globalContext.js';
2
+ import { setGlobalContext_viteDevServer } from '../../runtime/globalContext.js';
3
3
  function setGlobalContext() {
4
4
  return {
5
5
  name: 'vike:setGlobalContext',
@@ -9,20 +9,6 @@ function setGlobalContext() {
9
9
  handler(viteDevServer) {
10
10
  setGlobalContext_viteDevServer(viteDevServer);
11
11
  }
12
- },
13
- configurePreviewServer: {
14
- order: 'pre',
15
- handler(vitePreviewServer) {
16
- setGlobalContext_vitePreviewServer(
17
- // Type cast won't be necessary after https://github.com/vitejs/vite/pull/14119 is released in Vite 5
18
- vitePreviewServer);
19
- }
20
- },
21
- configResolved: {
22
- order: 'pre',
23
- handler(config) {
24
- setGlobalContext_viteConfig(config);
25
- }
26
12
  }
27
13
  };
28
14
  }
@@ -0,0 +1,14 @@
1
+ export { sourceMapRemove };
2
+ export { sourceMapPassthrough };
3
+ /** Remove entire source mapping, to save KBs. */
4
+ declare function sourceMapRemove(code: string): {
5
+ code: string;
6
+ map: {
7
+ mappings: '';
8
+ };
9
+ };
10
+ /** Don't provide any source map, pass through current source map instead. */
11
+ declare function sourceMapPassthrough(code: string): {
12
+ code: string;
13
+ map: null;
14
+ };
@@ -0,0 +1,17 @@
1
+ export { sourceMapRemove };
2
+ export { sourceMapPassthrough };
3
+ // https://rollupjs.org/guide/en/#source-code-transformations
4
+ /** Remove entire source mapping, to save KBs. */
5
+ function sourceMapRemove(code) {
6
+ return {
7
+ code,
8
+ map: { mappings: '' }
9
+ };
10
+ }
11
+ /** Don't provide any source map, pass through current source map instead. */
12
+ function sourceMapPassthrough(code) {
13
+ return {
14
+ code,
15
+ map: null
16
+ };
17
+ }
@@ -1,7 +1,6 @@
1
1
  export * from '../runtime/utils.js';
2
2
  export * from '../../utils/viteIsSSR.js';
3
3
  export * from '../../utils/getFilePathAbsolute.js';
4
- export * from '../../utils/getDependencyPackageJson.js';
5
4
  export * from '../../utils/requireResolve.js';
6
5
  export * from '../../utils/arrayIncludes.js';
7
6
  export * from '../../utils/isDev.js';
@@ -7,7 +7,6 @@ export * from '../runtime/utils.js';
7
7
  // Utils only needed by `plugin/*`
8
8
  export * from '../../utils/viteIsSSR.js';
9
9
  export * from '../../utils/getFilePathAbsolute.js';
10
- export * from '../../utils/getDependencyPackageJson.js';
11
10
  export * from '../../utils/requireResolve.js';
12
11
  export * from '../../utils/arrayIncludes.js';
13
12
  export * from '../../utils/isDev.js';
@@ -36,11 +36,11 @@ type PrerenderOptions = {
36
36
  root?: string;
37
37
  /** @deprecated Define `prerender({ viteConfig: { configFile }})` instead. */
38
38
  configFile?: string;
39
- /** @deprecated Define `partial` in vite.config.js instead, see https://vike.dev/prerender-config */
39
+ /** @deprecated Define `partial` in vite.config.js instead, see https://vike.dev/prerender */
40
40
  partial?: boolean;
41
- /** @deprecated Define `noExtraDir` in vite.config.js instead, see https://vike.dev/prerender-config */
41
+ /** @deprecated Define `noExtraDir` in vite.config.js instead, see https://vike.dev/prerender */
42
42
  noExtraDir?: boolean;
43
- /** @deprecated Define `parallel` in vite.config.js instead, see https://vike.dev/prerender-config */
43
+ /** @deprecated Define `parallel` in vite.config.js instead, see https://vike.dev/prerender */
44
44
  parallel?: number;
45
45
  /** @deprecated */
46
46
  outDir?: string;
@@ -10,7 +10,7 @@ import { pLimit } from '../../utils/pLimit.js';
10
10
  import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
11
11
  import pc from '@brillout/picocolors';
12
12
  import { cpus } from 'os';
13
- import { getGlobalContext, initGlobalContext } from '../runtime/globalContext.js';
13
+ import { getGlobalContext, initGlobalContext, setGlobalContext_prerender } from '../runtime/globalContext.js';
14
14
  import { resolveConfig } from 'vite';
15
15
  import { getConfigVike } from '../shared/getConfigVike.js';
16
16
  import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
@@ -62,6 +62,7 @@ async function runPrerender(options, manuallyTriggered) {
62
62
  handleNodeEnv();
63
63
  await disableReactStreaming();
64
64
  const viteConfig = await resolveConfig(options.viteConfig || {}, 'vike pre-rendering', 'production');
65
+ setGlobalContext_prerender(viteConfig);
65
66
  assertLoadedConfig(viteConfig, options);
66
67
  const configVike = await getConfigVike(viteConfig);
67
68
  const { outDirClient, outDirRoot } = getOutDirs(viteConfig);
@@ -529,7 +530,7 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, renderCon
529
530
  .filter((pageId) => !isErrorPage(pageId, renderContext.pageConfigs))
530
531
  .forEach((pageId) => {
531
532
  const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
532
- assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender-config#partial) to suppress this warning.`, { onlyOnce: true });
533
+ assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
533
534
  });
534
535
  }
535
536
  async function prerender404(prerenderedPageContexts, renderContext, prerenderContext, onComplete) {
@@ -645,7 +646,7 @@ function checkOutdatedOptions(options) {
645
646
  assertUsage(options.root === undefined, 'Option `prerender({ root })` deprecated: set `prerender({ viteConfig: { root }})` instead.', { showStackTrace: true });
646
647
  assertUsage(options.configFile === undefined, 'Option `prerender({ configFile })` deprecated: set `prerender({ viteConfig: { configFile }})` instead.', { showStackTrace: true });
647
648
  ['noExtraDir', 'partial', 'parallel'].forEach((prop) => {
648
- assertUsage(options[prop] === undefined, `[prerender()] Option ${pc.cyan(prop)} is deprecated. Define ${pc.cyan(prop)} in vite.config.js instead. See https://vike.dev/prerender-config`, { showStackTrace: true });
649
+ assertUsage(options[prop] === undefined, `[prerender()] Option ${pc.cyan(prop)} is deprecated. Define ${pc.cyan(prop)} in vite.config.js instead. See https://vike.dev/prerender`, { showStackTrace: true });
649
650
  });
650
651
  ['base', 'outDir'].forEach((prop) => {
651
652
  assertWarning(options[prop] === undefined, `[prerender()] Option ${pc.cyan(prop)} is outdated and has no effect (vike now automatically determines ${pc.cyan(prop)})`, {
@@ -10,4 +10,4 @@ export * from '../../utils/filesystemPathHandling.js';
10
10
  export * from '../../utils/urlToFile.js';
11
11
  export * from '../../shared/hooks/executeHook.js';
12
12
  export * from '../../utils/isPlainObject.js';
13
- export * from '../../utils/nodeEnv.js';
13
+ export * from '../../utils/assertNodeEnv.js';
@@ -12,4 +12,4 @@ export * from '../../utils/filesystemPathHandling.js';
12
12
  export * from '../../utils/urlToFile.js';
13
13
  export * from '../../shared/hooks/executeHook.js';
14
14
  export * from '../../utils/isPlainObject.js';
15
- export * from '../../utils/nodeEnv.js';
15
+ export * from '../../utils/assertNodeEnv.js';