vike 0.4.227-commit-c9cc081 → 0.4.227-commit-25aa0f8

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 (58) hide show
  1. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -5
  2. package/dist/cjs/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -5
  3. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +16 -6
  4. package/dist/cjs/node/plugin/plugins/commonConfig.js +2 -1
  5. package/dist/cjs/node/plugin/plugins/devConfig/index.js +6 -8
  6. package/dist/cjs/node/plugin/plugins/envVars.js +7 -9
  7. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +6 -14
  8. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +1 -2
  9. package/dist/cjs/node/plugin/plugins/fileEnv.js +13 -18
  10. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +6 -8
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -0
  12. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +2 -1
  13. package/dist/cjs/node/plugin/utils.js +1 -0
  14. package/dist/cjs/node/prerender/runPrerender.js +168 -150
  15. package/dist/cjs/node/prerender/utils.js +1 -1
  16. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +0 -23
  17. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +1 -1
  18. package/dist/cjs/shared/route/index.js +13 -11
  19. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  20. package/dist/cjs/utils/isScriptFile.js +4 -4
  21. package/dist/cjs/utils/parseUrl.js +4 -4
  22. package/dist/cjs/utils/preservePropertyGetters.js +30 -0
  23. package/dist/cjs/{node/plugin/shared → utils}/rollupSourceMap.js +4 -4
  24. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -5
  25. package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -4
  26. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +16 -6
  27. package/dist/esm/node/plugin/plugins/commonConfig.js +2 -1
  28. package/dist/esm/node/plugin/plugins/devConfig/index.js +6 -8
  29. package/dist/esm/node/plugin/plugins/envVars.js +8 -10
  30. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +7 -11
  31. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -3
  32. package/dist/esm/node/plugin/plugins/fileEnv.js +14 -19
  33. package/dist/esm/node/plugin/plugins/importUserCode/index.js +6 -8
  34. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -0
  35. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +2 -1
  36. package/dist/esm/node/plugin/utils.d.ts +1 -0
  37. package/dist/esm/node/plugin/utils.js +1 -0
  38. package/dist/esm/node/prerender/runPrerender.d.ts +2 -0
  39. package/dist/esm/node/prerender/runPrerender.js +171 -153
  40. package/dist/esm/node/prerender/utils.d.ts +1 -1
  41. package/dist/esm/node/prerender/utils.js +1 -1
  42. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +0 -182
  43. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +0 -23
  44. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +1 -1
  45. package/dist/esm/shared/route/index.d.ts +1 -1
  46. package/dist/esm/shared/route/index.js +13 -11
  47. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  48. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  49. package/dist/esm/utils/isScriptFile.js +4 -4
  50. package/dist/esm/utils/parseUrl.js +4 -4
  51. package/dist/esm/utils/preservePropertyGetters.d.ts +2 -0
  52. package/dist/esm/utils/preservePropertyGetters.js +28 -0
  53. package/dist/esm/{node/plugin/shared → utils}/rollupSourceMap.d.ts +4 -4
  54. package/dist/esm/{node/plugin/shared → utils}/rollupSourceMap.js +4 -4
  55. package/package.json +1 -1
  56. package/dist/cjs/node/plugin/shared/getResolvedConfig.js +0 -6
  57. package/dist/esm/node/plugin/shared/getResolvedConfig.d.ts +0 -2
  58. package/dist/esm/node/plugin/shared/getResolvedConfig.js +0 -3
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sourceMapRemove = sourceMapRemove;
4
- exports.sourceMapPassthrough = sourceMapPassthrough;
3
+ exports.rollupSourceMapRemove = rollupSourceMapRemove;
4
+ exports.rollupSourceMapPassthrough = rollupSourceMapPassthrough;
5
5
  // https://rollupjs.org/guide/en/#source-code-transformations
6
6
  /** Remove entire source mapping, to save KBs. */
7
- function sourceMapRemove(code) {
7
+ function rollupSourceMapRemove(code) {
8
8
  return {
9
9
  code,
10
10
  map: { mappings: '' }
11
11
  };
12
12
  }
13
13
  /** Don't provide any source map, pass through current source map instead. */
14
- function sourceMapPassthrough(code) {
14
+ function rollupSourceMapPassthrough(code) {
15
15
  return {
16
16
  code,
17
17
  map: null
@@ -1,4 +1,3 @@
1
- import { getResolvedConfig } from '../../shared/getResolvedConfig.js';
2
1
  export { pluginAutoFullBuild };
3
2
  export { isPrerenderForceExit };
4
3
  import { build } from 'vite';
@@ -16,7 +15,7 @@ import { isViteClientBuild, isViteServerBuild_onlySsrEnv } from '../../shared/is
16
15
  assertIsSingleModuleInstance('build/pluginAutoFullBuild.ts');
17
16
  let forceExit = false;
18
17
  function pluginAutoFullBuild() {
19
- let vite5Config;
18
+ let config;
20
19
  let vikeConfig;
21
20
  return [
22
21
  {
@@ -25,7 +24,7 @@ function pluginAutoFullBuild() {
25
24
  enforce: 'pre',
26
25
  async configResolved(config_) {
27
26
  vikeConfig = await getVikeConfig(config_);
28
- vite5Config = config_;
27
+ config = config_;
29
28
  abortViteBuildSsr(vikeConfig);
30
29
  },
31
30
  writeBundle: {
@@ -34,7 +33,6 @@ function pluginAutoFullBuild() {
34
33
  order: 'pre',
35
34
  */
36
35
  async handler(options, bundle) {
37
- const config = getResolvedConfig(this.environment?.config, vite5Config);
38
36
  await handleAssetsManifest(config, this.environment, options, bundle);
39
37
  await triggerFullBuild(config, vikeConfig, this.environment, bundle);
40
38
  }
@@ -48,7 +46,6 @@ function pluginAutoFullBuild() {
48
46
  sequential: true,
49
47
  order: 'post',
50
48
  handler() {
51
- const config = getResolvedConfig(this.environment?.config, vite5Config);
52
49
  onSetupBuild();
53
50
  handleAssetsManifest_assertUsageCssTarget(config);
54
51
  if (forceExit &&
@@ -7,20 +7,18 @@
7
7
  * Reproduction: https://github.com/brillout/vite-plugin-ssr-server-import-syntax
8
8
  */
9
9
  // TODO/refactor: prefix all other plugins with `plugin` as well?
10
- import { getResolvedConfig } from '../../shared/getResolvedConfig.js';
11
10
  export { pluginDistPackageJsonFile };
12
11
  import { rollupIsEsm } from '../../shared/rollupIsEsm.js';
13
12
  import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
14
13
  function pluginDistPackageJsonFile() {
15
- let vite5Config;
14
+ let config;
16
15
  return {
17
16
  name: 'vike:build:pluginDistPackageJsonFile',
18
17
  apply: 'build',
19
18
  configResolved(config_) {
20
- vite5Config = config_;
19
+ config = config_;
21
20
  },
22
21
  generateBundle(options, bundle) {
23
- const config = getResolvedConfig(this.environment?.config, vite5Config);
24
22
  if (!isViteServerBuild(config))
25
23
  return;
26
24
  const isEsm = rollupIsEsm(options);
@@ -1,4 +1,3 @@
1
- import { getResolvedConfig } from '../../shared/getResolvedConfig.js';
2
1
  export { pluginModuleBanner };
3
2
  import MagicString from 'magic-string';
4
3
  import { assert } from '../../utils.js';
@@ -8,24 +7,34 @@ import { isViteServerBuild, isViteServerBuild_safe } from '../../shared/isViteSe
8
7
  // But, anyways, we want to prepend the banner at the beginning of each module, not at the beginning of each file (I believe that's what Rollup's banner feature does).
9
8
  const vikeModuleBannerPlaceholder = 'vikeModuleBannerPlaceholder';
10
9
  function pluginModuleBanner() {
11
- let vite5Config;
10
+ let config;
11
+ let disabled = false;
12
12
  return {
13
13
  name: 'vike:pluginModuleBanner',
14
14
  enforce: 'post',
15
15
  apply: 'build',
16
16
  configResolved(config_) {
17
- vite5Config = config_;
17
+ config = config_;
18
+ if (config.build.minify && config.build.minify !== 'esbuild') {
19
+ // Doesn't work upon `config.build.minify === 'terser'`
20
+ // https://github.com/vikejs/vike/issues/2315
21
+ disabled = true;
22
+ }
18
23
  },
19
24
  generateBundle: {
20
25
  order: 'post',
21
26
  handler(_options, bundle) {
22
- const config = getResolvedConfig(this.environment?.config, vite5Config);
27
+ if (disabled)
28
+ return;
23
29
  for (const module of Object.values(bundle)) {
24
30
  if (module.type === 'chunk') {
25
31
  if (isViteServerBuild(config)) {
26
32
  const codeOld = module.code;
27
33
  const codeNew = codeOld.replace(/vikeModuleBannerPlaceholder\("([^"]*)"\);/g, '/* $1 [vike:pluginModuleBanner] */');
28
- assert(!codeNew.includes(vikeModuleBannerPlaceholder));
34
+ if (codeNew.includes(vikeModuleBannerPlaceholder)) {
35
+ console.log('codeNew', codeNew);
36
+ assert(false);
37
+ }
29
38
  module.code = codeNew;
30
39
  }
31
40
  else {
@@ -38,7 +47,8 @@ function pluginModuleBanner() {
38
47
  transform: {
39
48
  order: 'post',
40
49
  handler(code, id, options) {
41
- const config = getResolvedConfig(this.environment?.config, vite5Config);
50
+ if (disabled)
51
+ return;
42
52
  if (!isViteServerBuild_safe(config, options))
43
53
  return;
44
54
  if (id.startsWith('\0'))
@@ -33,7 +33,8 @@ function commonConfig(vikeVitePluginOptions) {
33
33
  isPrerenderingEnabled,
34
34
  isPrerenderingEnabledForAllPages,
35
35
  output: null,
36
- pageContexts: null
36
+ pageContexts: null,
37
+ pageContexts404: null
37
38
  });
38
39
  assert(prerenderContext.isPrerenderingEnabled === isPrerenderingEnabled);
39
40
  assert(prerenderContext.isPrerenderingEnabledForAllPages === isPrerenderingEnabledForAllPages);
@@ -1,4 +1,3 @@
1
- import { getResolvedConfig } from '../../shared/getResolvedConfig.js';
2
1
  export { devConfig };
3
2
  export { logDockerHint };
4
3
  import { determineOptimizeDeps } from './determineOptimizeDeps.js';
@@ -13,7 +12,7 @@ if (isErrorDebug()) {
13
12
  Error.stackTraceLimit = Infinity;
14
13
  }
15
14
  function devConfig() {
16
- let vite5Config;
15
+ let config;
17
16
  return [
18
17
  {
19
18
  name: 'vike:devConfig',
@@ -58,14 +57,14 @@ function devConfig() {
58
57
  };
59
58
  },
60
59
  async configResolved(config_) {
61
- vite5Config = config_;
62
- await determineOptimizeDeps(vite5Config);
63
- await determineFsAllowList(vite5Config);
60
+ config = config_;
61
+ await determineOptimizeDeps(config);
62
+ await determineFsAllowList(config);
64
63
  if (!isErrorDebug()) {
65
64
  await installHttpRequestAsyncStore();
66
- improveViteLogs(vite5Config);
65
+ improveViteLogs(config);
67
66
  }
68
- logDockerHint(vite5Config.server.host);
67
+ logDockerHint(config.server.host);
69
68
  }
70
69
  },
71
70
  {
@@ -76,7 +75,6 @@ function devConfig() {
76
75
  configureServer: {
77
76
  order: 'post',
78
77
  handler(server) {
79
- const config = getResolvedConfig(server?.config, vite5Config);
80
78
  const hasHonoViteDevServer = !!config.plugins.find((p) => p.name === '@hono/vite-dev-server');
81
79
  if (config.server.middlewareMode || hasHonoViteDevServer)
82
80
  return;
@@ -1,34 +1,32 @@
1
- import MagicString from 'magic-string';
2
1
  export { envVarsPlugin };
2
+ import MagicString from 'magic-string';
3
3
  import { loadEnv } from 'vite';
4
4
  import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, isArray, lowerFirst } from '../utils.js';
5
5
  import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
6
6
  import { normalizeId } from '../shared/normalizeId.js';
7
7
  import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
8
- import { getResolvedConfig } from '../shared/getResolvedConfig.js';
9
8
  // TODO/enventually: (after we implemented vike.config.js)
10
9
  // - Make import.meta.env work inside +config.js
11
10
  // - For it to work, we'll probably need the user to define the settings (e.g. `envDir`) for loadEnv() inside vike.config.js instead of vite.config.js
12
11
  // - Or stop using Vite's `mode` implemention and have Vike implement its own `mode` feature? (So that the only dependencies are `$ vike build --mode staging` and `$ MODE=staging vike build`.)
13
12
  const PUBLIC_ENV_PREFIX = 'PUBLIC_ENV__';
14
- const PUBLIC_ENV_WHITELIST = [
13
+ const PUBLIC_ENV_ALLOWLIST = [
15
14
  // https://github.com/vikejs/vike/issues/1724
16
15
  'STORYBOOK'
17
16
  ];
18
17
  function envVarsPlugin() {
19
18
  let envsAll;
20
- let vite5Config;
19
+ let config;
21
20
  return {
22
21
  name: 'vike:envVars',
23
22
  enforce: 'post',
24
23
  configResolved(config_) {
25
- vite5Config = config_;
26
- vite5Config.command;
27
- envsAll = loadEnv(vite5Config.mode, vite5Config.envDir || vite5Config.root, '');
28
- vite5Config.plugins.sort(lowerFirst((plugin) => (plugin.name === 'vite:define' ? 1 : 0)));
24
+ config = config_;
25
+ config.command;
26
+ envsAll = loadEnv(config.mode, config.envDir || config.root, '');
27
+ config.plugins.sort(lowerFirst((plugin) => (plugin.name === 'vite:define' ? 1 : 0)));
29
28
  },
30
29
  transform(code, id, options) {
31
- const config = getResolvedConfig(this.environment?.config, vite5Config);
32
30
  id = normalizeId(id);
33
31
  assertPosixPath(id);
34
32
  if (id.includes('/node_modules/'))
@@ -52,7 +50,7 @@ function envVarsPlugin() {
52
50
  const envStatementRegExStr = escapeRegex(envStatement) + '\\b';
53
51
  // Security check
54
52
  {
55
- const isPrivate = !envName.startsWith(PUBLIC_ENV_PREFIX) && !PUBLIC_ENV_WHITELIST.includes(envName);
53
+ const isPrivate = !envName.startsWith(PUBLIC_ENV_PREFIX) && !PUBLIC_ENV_ALLOWLIST.includes(envName);
56
54
  if (isPrivate && isClientSide) {
57
55
  if (!new RegExp(envStatementRegExStr).test(code))
58
56
  return;
@@ -4,15 +4,13 @@
4
4
  // - This is needed for HTML-only pages, and React Server Components.
5
5
  // - We recommend using the debug flag to get an idea of how this plugin works: `$ DEBUG=vike:extractAssets pnpm exec vike build`. Then have a look at `dist/client/manifest.json` and see how `.page.server.js` entries have zero JavaScript but only CSS.
6
6
  // - This appraoch supports import path aliases `vite.config.js#resolve.alias` https://vitejs.dev/config/#resolve-alias
7
- import { getResolvedConfig } from '../shared/getResolvedConfig.js';
8
7
  export { extractAssetsPlugin };
9
8
  export { extractAssetsRE };
10
- import { assert, assertPosixPath, styleFileRE, createDebugger, isScriptFile, assertUsage } from '../utils.js';
9
+ import { assert, assertPosixPath, styleFileRE, createDebugger, isScriptFile, assertUsage, rollupSourceMapRemove } from '../utils.js';
11
10
  import { resolveVirtualFileId, isVirtualFileId, getVirtualFileId } from '../../shared/virtual-files.js';
12
11
  import { extractAssetsAddQuery } from '../../shared/extractAssetsQuery.js';
13
12
  import { isAsset } from '../shared/isAsset.js';
14
13
  import { getImportStatements } from '../shared/parseEsModule.js';
15
- import { sourceMapRemove } from '../shared/rollupSourceMap.js';
16
14
  import pc from '@brillout/picocolors';
17
15
  import { handleAssetsManifest_isFixEnabled } from './build/handleAssetsManifest.js';
18
16
  import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
@@ -25,7 +23,7 @@ const urlRE = /(\?|&)url(?:&|$)/;
25
23
  const EMPTY_MODULE_ID = 'virtual:vike:empty-module';
26
24
  const debug = createDebugger('vike:extractAssets');
27
25
  function extractAssetsPlugin() {
28
- let vite5Config;
26
+ let config;
29
27
  let vikeConfig;
30
28
  let isFixEnabled;
31
29
  return [
@@ -36,7 +34,6 @@ function extractAssetsPlugin() {
36
34
  apply: 'build',
37
35
  enforce: 'post',
38
36
  async transform(src, id, options) {
39
- const config = getResolvedConfig(this.environment?.config, vite5Config);
40
37
  id = normalizeId(id);
41
38
  if (!extractAssetsRE.test(id)) {
42
39
  return;
@@ -53,7 +50,7 @@ function extractAssetsPlugin() {
53
50
  const moduleNames = getImportedModules(importStatements);
54
51
  const code = moduleNames.map((moduleName) => `import '${moduleName}';`).join('\n');
55
52
  debugTransformResult(id, code, importStatements);
56
- return sourceMapRemove(code);
53
+ return rollupSourceMapRemove(code);
57
54
  }
58
55
  },
59
56
  // This plugin appends `?extractAssets` to module IDs
@@ -65,7 +62,6 @@ function extractAssetsPlugin() {
65
62
  // - Vite's `vite:resolve` plugin; https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/resolve.ts#L105
66
63
  enforce: 'pre',
67
64
  async resolveId(source, importer, options) {
68
- const config = getResolvedConfig(this.environment?.config, vite5Config);
69
65
  if (isViteServerBuild_safe(config, options)) {
70
66
  // When building for the server, there should never be a `?extractAssets` query
71
67
  assert(!extractAssetsRE.test(source));
@@ -141,12 +137,12 @@ function extractAssetsPlugin() {
141
137
  {
142
138
  name: 'vike:extractAssets-4',
143
139
  async configResolved(config_) {
144
- vite5Config = config_;
145
- vikeConfig = await getVikeConfig(vite5Config);
146
- isFixEnabled = handleAssetsManifest_isFixEnabled(vite5Config);
140
+ config = config_;
141
+ vikeConfig = await getVikeConfig(config);
142
+ isFixEnabled = handleAssetsManifest_isFixEnabled(config);
147
143
  if (!isFixEnabled) {
148
144
  // https://github.com/vikejs/vike/issues/1060
149
- assertUsage(!vite5Config.plugins.find((p) => p.name === 'vite-tsconfig-paths'), 'vite-tsconfig-paths not supported, remove it and use vite.config.js#resolve.alias instead');
145
+ assertUsage(!config.plugins.find((p) => p.name === 'vite-tsconfig-paths'), 'vite-tsconfig-paths not supported, remove it and use vite.config.js#resolve.alias instead');
150
146
  }
151
147
  }
152
148
  }
@@ -1,9 +1,8 @@
1
1
  export { extractExportNamesPlugin };
2
2
  export { isUsingClientRouter };
3
3
  export { extractExportNamesRE };
4
- import { assert, getFileExtension, createDebugger, getGlobalObject, assertUsage } from '../utils.js';
4
+ import { assert, getFileExtension, createDebugger, getGlobalObject, assertUsage, rollupSourceMapRemove } from '../utils.js';
5
5
  import { getExportNames } from '../shared/parseEsModule.js';
6
- import { sourceMapRemove } from '../shared/rollupSourceMap.js';
7
6
  import { normalizeId } from '../shared/normalizeId.js';
8
7
  import { isViteServerBuild_options } from '../shared/isViteServerBuild.js';
9
8
  const extractExportNamesRE = /(\?|&)extractExportNames(?:&|$)/;
@@ -39,7 +38,7 @@ async function getExtractExportNamesCode(src, isClientSide, isProduction, id) {
39
38
  globalObject.usesClientRouter = true;
40
39
  }
41
40
  const code = getCode(exportNames, wildcardReExports, isClientSide, isProduction, id);
42
- return sourceMapRemove(code);
41
+ return rollupSourceMapRemove(code);
43
42
  }
44
43
  function getCode(exportNames, wildcardReExports, isClientSide, isProduction, id) {
45
44
  let code = '';
@@ -1,27 +1,24 @@
1
- import { getResolvedConfig } from '../shared/getResolvedConfig.js';
2
1
  export { fileEnv };
3
- import { assert, assertUsage, assertWarning, capitalizeFirstLetter, joinEnglish } from '../utils.js';
2
+ import { assert, assertUsage, assertWarning, capitalizeFirstLetter, joinEnglish, rollupSourceMapRemove } from '../utils.js';
4
3
  import { extractAssetsRE } from './extractAssetsPlugin.js';
5
4
  import { extractExportNamesRE } from './extractExportNamesPlugin.js';
6
5
  import pc from '@brillout/picocolors';
7
6
  import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
8
- import { sourceMapRemove } from '../shared/rollupSourceMap.js';
9
7
  import { getExportNames } from '../shared/parseEsModule.js';
10
8
  import { normalizeId } from '../shared/normalizeId.js';
11
9
  import { isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
12
10
  function fileEnv() {
13
- let vite5Config;
11
+ let config;
14
12
  let viteDevServer;
15
13
  return {
16
14
  name: 'vike:fileEnv',
17
15
  load(id, options) {
18
- const config = getResolvedConfig(this.environment?.config, vite5Config);
19
16
  // In build, we use generateBundle() instead of the load() hook. Using load() works for dynamic imports in dev thanks to Vite's lazy transpiling, but it doesn't work in build because Rollup transpiles any dynamically imported module even if it's never actually imported.
20
17
  if (!viteDevServer)
21
18
  return;
22
19
  if (!isV1Design(config))
23
20
  return;
24
- if (skip(config, id))
21
+ if (skip(id))
25
22
  return;
26
23
  // For `.vue` files: https://github.com/vikejs/vike/issues/1912#issuecomment-2394981475
27
24
  if (id.endsWith('?direct'))
@@ -31,36 +28,34 @@ function fileEnv() {
31
28
  const importers = Array.from(moduleInfo.importers)
32
29
  .map((m) => m.id)
33
30
  .filter((id) => id !== null);
34
- assertFileEnv(config, id, !!options?.ssr, importers,
31
+ assertFileEnv(id, !!options?.ssr, importers,
35
32
  // In dev, we only show a warning because we don't want to disrupt when the user plays with settings such as [ssr](https://vike.dev/ssr).
36
33
  true);
37
34
  },
38
35
  // In production, we have to use transform() to replace modules with a runtime error because generateBundle() doesn't work for dynamic imports. In production, dynamic imports can only be verified at runtime.
39
36
  async transform(code, id, options) {
40
- const config = getResolvedConfig(this.environment?.config, vite5Config);
41
37
  id = normalizeId(id);
42
38
  // In dev, only using load() is enough as it also works for dynamic imports (see sibling comment).
43
39
  if (viteDevServer)
44
40
  return;
45
- if (skip(config, id))
41
+ if (skip(id))
46
42
  return;
47
43
  const isServerSide = !!options?.ssr;
48
44
  if (!isWrongEnv(id, isServerSide))
49
45
  return;
50
46
  const { importers } = this.getModuleInfo(id);
51
47
  // Throwing a verbose error doesn't waste client-side KBs as dynamic imports are code splitted.
52
- const errMsg = getErrorMessage(config, id, isServerSide, importers, false, true);
48
+ const errMsg = getErrorMessage(id, isServerSide, importers, false, true);
53
49
  // We have to inject empty exports to avoid Rollup complaining about missing exports, see https://gist.github.com/brillout/5ea45776e65bd65100a52ecd7bfda3ff
54
50
  const { exportNames } = await getExportNames(code);
55
- return sourceMapRemove([
51
+ return rollupSourceMapRemove([
56
52
  `throw new Error(${JSON.stringify(errMsg)});`,
57
53
  ...exportNames.map((name) => name === 'default' ? 'export default undefined;' : `export const ${name} = undefined;`)
58
54
  ].join('\n'));
59
55
  },
60
56
  generateBundle() {
61
- const config = getResolvedConfig(this.environment?.config, vite5Config);
62
57
  Array.from(this.getModuleIds())
63
- .filter((id) => !skip(config, id))
58
+ .filter((id) => !skip(id))
64
59
  .forEach((moduleId) => {
65
60
  const mod = this.getModuleInfo(moduleId);
66
61
  const { importers } = mod;
@@ -71,20 +66,20 @@ function fileEnv() {
71
66
  */
72
67
  return;
73
68
  }
74
- assertFileEnv(config, moduleId, !!config.build.ssr, importers, false);
69
+ assertFileEnv(moduleId, !!config.build.ssr, importers, false);
75
70
  });
76
71
  },
77
72
  configResolved(config_) {
78
- vite5Config = config_;
73
+ config = config_;
79
74
  },
80
75
  configureServer(viteDevServer_) {
81
76
  viteDevServer = viteDevServer_;
82
77
  }
83
78
  };
84
- function assertFileEnv(config, moduleId, isServerSide, importers, onlyWarn) {
79
+ function assertFileEnv(moduleId, isServerSide, importers, onlyWarn) {
85
80
  if (!isWrongEnv(moduleId, isServerSide))
86
81
  return;
87
- const errMsg = getErrorMessage(config, moduleId, isServerSide, importers, onlyWarn, false);
82
+ const errMsg = getErrorMessage(moduleId, isServerSide, importers, onlyWarn, false);
88
83
  if (onlyWarn) {
89
84
  assertWarning(false, errMsg, { onlyOnce: true });
90
85
  }
@@ -92,7 +87,7 @@ function fileEnv() {
92
87
  assertUsage(false, errMsg);
93
88
  }
94
89
  }
95
- function getErrorMessage(config, moduleId, isServerSide, importers, onlyWarn, noColor) {
90
+ function getErrorMessage(moduleId, isServerSide, importers, onlyWarn, noColor) {
96
91
  const modulePath = getModulePath(moduleId);
97
92
  const envActual = isServerSide ? 'server' : 'client';
98
93
  const envExpect = isServerSide ? 'client' : 'server';
@@ -117,7 +112,7 @@ function fileEnv() {
117
112
  const suffixWrong = getSuffix(isServerSide ? 'client' : 'server');
118
113
  return modulePath.includes(suffixWrong);
119
114
  }
120
- function skip(config, id) {
115
+ function skip(id) {
121
116
  // TODO/v1-release: remove
122
117
  if (extractAssetsRE.test(id) || extractExportNamesRE.test(id))
123
118
  return true;
@@ -1,4 +1,3 @@
1
- import { getResolvedConfig } from '../../shared/getResolvedConfig.js';
2
1
  export { importUserCode };
3
2
  import { normalizePath } from 'vite';
4
3
  import { getVirtualFilePageConfigValuesAll } from './v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js';
@@ -14,16 +13,16 @@ import { getModuleFilePathAbsolute } from '../../shared/getFilePath.js';
14
13
  import { updateUserFiles } from '../../../runtime/globalContext.js';
15
14
  import { isPlusFile } from './v1-design/getVikeConfig/crawlPlusFiles.js';
16
15
  function importUserCode() {
17
- let vite5Config;
16
+ let config;
18
17
  let vikeConfig;
19
18
  return {
20
19
  name: 'vike:importUserCode',
21
20
  async configResolved(config_) {
22
21
  vikeConfig = await getVikeConfig(config_);
23
- vite5Config = config_;
22
+ config = config_;
24
23
  // TODO/v1-release: remove
25
- if (!isV1Design(vite5Config))
26
- vite5Config.experimental.importGlobRestoreExtension = true;
24
+ if (!isV1Design(config))
25
+ config.experimental.importGlobRestoreExtension = true;
27
26
  },
28
27
  resolveId(id) {
29
28
  if (isVirtualFileId(id)) {
@@ -32,7 +31,7 @@ function importUserCode() {
32
31
  },
33
32
  async handleHotUpdate(ctx) {
34
33
  try {
35
- return await handleHotUpdate(ctx, vite5Config);
34
+ return await handleHotUpdate(ctx, config);
36
35
  }
37
36
  catch (err) {
38
37
  // Vite swallows errors thrown by handleHotUpdate()
@@ -41,7 +40,6 @@ function importUserCode() {
41
40
  }
42
41
  },
43
42
  async load(id, options) {
44
- const config = getResolvedConfig(this.environment?.config, vite5Config);
45
43
  if (!isVirtualFileId(id))
46
44
  return undefined;
47
45
  id = getVirtualFileId(id);
@@ -57,7 +55,7 @@ function importUserCode() {
57
55
  }
58
56
  },
59
57
  configureServer(server) {
60
- handleFileAddRemove(server, vite5Config);
58
+ handleFileAddRemove(server, config);
61
59
  }
62
60
  };
63
61
  }
@@ -568,6 +568,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
568
568
  // Defined over pointer import
569
569
  assert(confVal.valueIsLoaded);
570
570
  const pointerImport = resolvePointerImport(confVal.value, plusFile.filePath, userRootDir, configName);
571
+ console.log('pointerImport', pointerImport);
571
572
  const configDefinedAt = getConfigDefinedAt('Config', configName, definedAtFilePath_);
572
573
  assertUsage(pointerImport, `${configDefinedAt} should be an import`);
573
574
  valueFilePath = pointerImport.fileExportPath.filePathAbsoluteVite;
@@ -3,7 +3,6 @@ import { assert, assertPosixPath, toPosixPath, pathJoin, assertIsNpmPackageImpor
3
3
  import { createRequire } from 'module';
4
4
  // @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
5
5
  const importMetaUrl = import.meta.url;
6
- const require_ = createRequire(importMetaUrl);
7
6
  assertIsNotProductionRuntime();
8
7
  async function resolveClientEntriesDev(clientEntry, viteDevServer) {
9
8
  let root = viteDevServer.config.root;
@@ -26,6 +25,7 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
26
25
  }
27
26
  else {
28
27
  if (clientEntry.startsWith('@@vike/')) {
28
+ const require_ = createRequire(importMetaUrl);
29
29
  assert(clientEntry.endsWith('.js'));
30
30
  try {
31
31
  // For Vitest (which doesn't resolve vike to its dist but to its source files)
@@ -39,6 +39,7 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
39
39
  }
40
40
  }
41
41
  else {
42
+ const require_ = createRequire(root);
42
43
  assertIsNpmPackageImport(clientEntry);
43
44
  filePath = require_.resolve(clientEntry);
44
45
  }
@@ -23,3 +23,4 @@ export * from '../../utils/PROJECT_VERSION.js';
23
23
  export * from '../../utils/isEqualStringList.js';
24
24
  export * from '../../utils/isDocker.js';
25
25
  export * from '../../utils/isVitest.js';
26
+ export * from '../../utils/rollupSourceMap.js';
@@ -29,3 +29,4 @@ export * from '../../utils/PROJECT_VERSION.js';
29
29
  export * from '../../utils/isEqualStringList.js';
30
30
  export * from '../../utils/isDocker.js';
31
31
  export * from '../../utils/isVitest.js';
32
+ export * from '../../utils/rollupSourceMap.js';
@@ -14,6 +14,7 @@ type ProvidedByHook = null | {
14
14
  type PageContextPrerendered = {
15
15
  urlOriginal: string;
16
16
  _providedByHook?: ProvidedByHook;
17
+ pageId: string;
17
18
  };
18
19
  type Output<PageContext = PageContextPrerendered> = {
19
20
  filePath: string;
@@ -53,4 +54,5 @@ declare function runPrerender_forceExit(): void;
53
54
  type PrerenderContextPublic = {
54
55
  output: Output<PageContextServer>;
55
56
  pageContexts: PageContextServer[];
57
+ pageContexts404: PageContextServer;
56
58
  };