vike 0.4.212 → 0.4.214

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 (99) hide show
  1. package/RenderErrorPage.js +3 -3
  2. package/__internal/loadImportBuild.js +3 -0
  3. package/__internal/setup.js +3 -3
  4. package/__internal.js +3 -3
  5. package/abort.js +3 -3
  6. package/api.js +3 -0
  7. package/cli.js +3 -3
  8. package/client/router.js +3 -3
  9. package/client.js +3 -3
  10. package/dist/cjs/client/server-routing-runtime/utils.js +2 -2
  11. package/dist/cjs/node/api/APIOptions.js +2 -0
  12. package/dist/cjs/node/api/build.js +50 -0
  13. package/dist/cjs/node/api/dev.js +10 -0
  14. package/dist/cjs/node/api/enhanceViteConfig.js +52 -0
  15. package/dist/cjs/node/api/index.js +36 -0
  16. package/dist/cjs/node/api/prerender.js +10 -0
  17. package/dist/cjs/node/api/preview.js +10 -0
  18. package/dist/cjs/node/cli/entry.js +100 -0
  19. package/dist/cjs/node/cli/index.js +8 -7
  20. package/dist/cjs/node/cli/parseCli.js +61 -0
  21. package/dist/cjs/node/cli/utils.js +3 -1
  22. package/dist/cjs/node/plugin/index.js +3 -1
  23. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +5 -5
  24. package/dist/cjs/node/plugin/plugins/buildConfig.js +13 -10
  25. package/dist/cjs/node/plugin/plugins/commonConfig/pluginName.js +4 -0
  26. package/dist/cjs/node/plugin/plugins/commonConfig.js +13 -5
  27. package/dist/cjs/node/plugin/plugins/previewConfig.js +1 -1
  28. package/dist/cjs/node/plugin/plugins/vite6HmrRegressionWorkaround.js +35 -0
  29. package/dist/cjs/node/plugin/shared/getEnvVarObject.js +29 -0
  30. package/dist/cjs/node/plugin/utils.js +2 -2
  31. package/dist/cjs/node/prerender/index.js +9 -2
  32. package/dist/cjs/node/prerender/runPrerender.js +15 -9
  33. package/dist/cjs/node/runtime/globalContext.js +1 -1
  34. package/dist/cjs/node/runtime/utils.js +2 -1
  35. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  36. package/dist/cjs/utils/assertNodeEnv.js +1 -1
  37. package/dist/esm/client/client-routing-runtime/utils.js +2 -2
  38. package/dist/esm/client/server-routing-runtime/utils.js +2 -2
  39. package/dist/esm/node/api/APIOptions.d.ts +10 -0
  40. package/dist/esm/node/api/build.d.ts +6 -0
  41. package/dist/esm/node/api/build.js +25 -0
  42. package/dist/esm/node/api/dev.d.ts +3 -0
  43. package/dist/esm/node/api/dev.js +8 -0
  44. package/dist/esm/node/api/enhanceViteConfig.d.ts +6 -0
  45. package/dist/esm/node/api/enhanceViteConfig.js +27 -0
  46. package/dist/esm/node/api/index.d.ts +12 -0
  47. package/dist/esm/node/api/index.js +10 -0
  48. package/dist/esm/node/api/prerender.d.ts +3 -0
  49. package/dist/esm/node/api/prerender.js +8 -0
  50. package/dist/esm/node/api/preview.d.ts +3 -0
  51. package/dist/esm/node/api/preview.js +8 -0
  52. package/dist/esm/node/cli/entry.d.ts +1 -0
  53. package/dist/esm/node/cli/entry.js +72 -0
  54. package/dist/esm/node/cli/index.d.ts +1 -2
  55. package/dist/esm/node/cli/index.js +4 -6
  56. package/dist/esm/node/cli/parseCli.d.ts +4 -0
  57. package/dist/esm/node/cli/parseCli.js +56 -0
  58. package/dist/esm/node/cli/utils.d.ts +1 -0
  59. package/dist/esm/node/cli/utils.js +3 -1
  60. package/dist/esm/node/plugin/index.js +3 -1
  61. package/dist/esm/node/plugin/plugins/autoFullBuild.js +6 -6
  62. package/dist/esm/node/plugin/plugins/buildConfig.js +13 -10
  63. package/dist/esm/node/plugin/plugins/commonConfig/pluginName.d.ts +1 -0
  64. package/dist/esm/node/plugin/plugins/commonConfig/pluginName.js +1 -0
  65. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
  66. package/dist/esm/node/plugin/plugins/commonConfig.js +11 -3
  67. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  68. package/dist/esm/node/plugin/plugins/previewConfig.js +1 -1
  69. package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.d.ts +3 -0
  70. package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.js +33 -0
  71. package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +2 -0
  72. package/dist/esm/node/plugin/shared/getEnvVarObject.js +24 -0
  73. package/dist/esm/node/plugin/utils.js +2 -2
  74. package/dist/esm/node/prerender/index.d.ts +1 -1
  75. package/dist/esm/node/prerender/index.js +5 -1
  76. package/dist/esm/node/prerender/runPrerender.d.ts +7 -28
  77. package/dist/esm/node/prerender/runPrerender.js +15 -9
  78. package/dist/esm/node/runtime/globalContext.js +1 -1
  79. package/dist/esm/node/runtime/utils.js +2 -1
  80. package/dist/esm/shared/ConfigVike.d.ts +3 -9
  81. package/dist/esm/shared/page-configs/Config.d.ts +1 -1
  82. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  83. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  84. package/dist/esm/utils/assertNodeEnv.js +1 -1
  85. package/dist/esm/utils/projectInfo.d.ts +1 -1
  86. package/dist-cjs-fixup.mjs +41 -0
  87. package/getPageContext.js +3 -0
  88. package/modifyUrl.js +3 -0
  89. package/node/cli/bin.js +3 -0
  90. package/package.json +43 -19
  91. package/plugin.js +3 -3
  92. package/prerender.js +3 -3
  93. package/routing.js +3 -3
  94. package/server.js +3 -3
  95. package/types.js +3 -0
  96. package/dist/cjs/node/cli/bin.js +0 -49
  97. package/dist/esm/node/cli/bin.js +0 -44
  98. package/node/cli/bin-entry.js +0 -3
  99. /package/dist/esm/node/{cli/bin.d.ts → api/APIOptions.js} +0 -0
@@ -54,16 +54,19 @@ function buildConfig() {
54
54
  }
55
55
  }
56
56
  },
57
- config(config) {
58
- assertNodeEnv_build();
59
- isSsrBuild = viteIsSSR(config);
60
- return {
61
- build: {
62
- outDir: resolveOutDir(config),
63
- manifest: manifestTempFile,
64
- copyPublicDir: !isSsrBuild
65
- }
66
- };
57
+ config: {
58
+ order: 'post',
59
+ handler(config) {
60
+ assertNodeEnv_build();
61
+ isSsrBuild = viteIsSSR(config);
62
+ return {
63
+ build: {
64
+ outDir: resolveOutDir(config),
65
+ manifest: manifestTempFile,
66
+ copyPublicDir: !isSsrBuild
67
+ }
68
+ };
69
+ }
67
70
  },
68
71
  buildStart() {
69
72
  assertNodeEnv_build();
@@ -0,0 +1 @@
1
+ export declare const pluginName = "vike:commonConfig-1";
@@ -0,0 +1 @@
1
+ export const pluginName = 'vike:commonConfig-1';
@@ -1,3 +1,3 @@
1
1
  export { commonConfig };
2
- import type { Plugin } from 'vite';
2
+ import { type Plugin } from 'vite';
3
3
  declare function commonConfig(): Plugin[];
@@ -1,11 +1,13 @@
1
1
  export { commonConfig };
2
+ import { mergeConfig } from 'vite';
2
3
  import { assert, assertUsage, assertWarning, findPackageJson, isDocker } from '../utils.js';
3
4
  import { assertRollupInput } from './buildConfig.js';
4
5
  import { installRequireShim_setUserRootDir } from '@brillout/require-shim';
5
6
  import pc from '@brillout/picocolors';
6
7
  import path from 'path';
7
8
  import { assertResolveAlias } from './commonConfig/assertResolveAlias.js';
8
- const pluginName = 'vike:commonConfig-1';
9
+ import { pluginName } from './commonConfig/pluginName.js';
10
+ import { getEnvVarObject } from '../shared/getEnvVarObject.js';
9
11
  function commonConfig() {
10
12
  return [
11
13
  {
@@ -30,21 +32,27 @@ function commonConfig() {
30
32
  assertEsm(config.root);
31
33
  }
32
34
  },
33
- // Override Vite's default port without overriding the user
34
35
  config: {
35
36
  order: 'post',
36
37
  handler(configFromUser) {
37
- const configFromVike = { server: {}, preview: {} };
38
+ // Change default port
39
+ let configFromVike = { server: {}, preview: {} };
38
40
  setDefault('port', 3000, configFromUser, configFromVike);
41
+ // Set `--host` for Docker/Podman
39
42
  if (isDocker()) {
40
43
  setDefault('host', true, configFromUser, configFromVike);
41
44
  }
45
+ // VITE_CONFIG
46
+ const configFromEnvVar = getEnvVarObject('VITE_CONFIG');
47
+ if (configFromEnvVar)
48
+ configFromVike = mergeConfig(configFromEnvVar, configFromVike);
42
49
  return configFromVike;
43
50
  }
44
51
  }
45
52
  }
46
53
  ];
47
54
  }
55
+ // Override Vite's default value without overriding user settings
48
56
  function setDefault(setting, value, configFromUser, configFromVike) {
49
57
  if (configFromUser.server?.[setting] === undefined)
50
58
  configFromVike.server[setting] = value;
@@ -2,7 +2,7 @@
2
2
  // - Remove this file then revert this commit: https://github.com/vikejs/vike/commit/805a18974f13420a78fcc30fdd676696e405c3ca
3
3
  // Workaround to make client-side bundles include the CSS imports living in server-side-only code.
4
4
  // - This is needed for HTML-only pages, and React Server Components.
5
- // - We recommend using the debug flag to get an idea of how this plugin works: `$ DEBUG=vike:extractAssets pnpm exec vite build`. Then have a look at `dist/client/manifest.json` and see how `.page.server.js` entries have zero JavaScript but only CSS.
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
7
  export { extractAssetsPlugin };
8
8
  export { extractAssetsRE };
@@ -46,7 +46,7 @@ function previewConfig() {
46
46
  function assertDist() {
47
47
  let { outDirRoot, outDirClient, outDirServer } = getOutDirs(config);
48
48
  [outDirRoot, outDirClient, outDirServer].forEach((outDirAny) => {
49
- assertUsage(fs.existsSync(outDirAny), `Cannot run ${pc.cyan('$ vite preview')}: your app isn't built (the build directory ${pc.cyan(outDirAny)} is missing). Make sure to run ${pc.cyan('$ vite build')} before running ${pc.cyan('$ vite preview')}.`);
49
+ assertUsage(fs.existsSync(outDirAny), `Cannot run ${pc.cyan('$ vike preview')}: your app isn't built (the build directory ${pc.cyan(outDirAny)} is missing). Make sure to run ${pc.cyan('$ vike build')} before running ${pc.cyan('$ vike preview')}.`);
50
50
  });
51
51
  }
52
52
  function addStatic404Middleware(middlewares) {
@@ -0,0 +1,3 @@
1
+ export { vite6HmrRegressionWorkaround };
2
+ import type { Plugin } from 'vite';
3
+ declare function vite6HmrRegressionWorkaround(): Plugin;
@@ -0,0 +1,33 @@
1
+ export { vite6HmrRegressionWorkaround };
2
+ // https://vite.dev/guide/migration (will be 404 after vite@7 release) > search for `hmrReload()`
3
+ // https://v6.vite.dev/guide/migration (will exist after vite@7 release) > search for `hmrReload()`
4
+ // Workaround seems to work for docs page /banner (which is HTML-only)
5
+ // But doesn't seem to work for /examples/render-modes/ (see https://github.com/vikejs/vike/pull/2069 commit `renable HMR test for HTML-only`)
6
+ function vite6HmrRegressionWorkaround() {
7
+ return {
8
+ name: 'vike:vite6HmrRegressionWorkaround',
9
+ enforce: 'post',
10
+ hotUpdate: {
11
+ order: 'post',
12
+ handler({ modules, server, timestamp }) {
13
+ if (this.environment.name !== 'ssr')
14
+ return;
15
+ let hasSsrOnlyModules = false;
16
+ const invalidatedModules = new Set();
17
+ for (const mod of modules) {
18
+ if (mod.id == null)
19
+ continue;
20
+ const clientModule = server.environments.client.moduleGraph.getModuleById(mod.id);
21
+ if (clientModule != null)
22
+ continue;
23
+ this.environment.moduleGraph.invalidateModule(mod, invalidatedModules, timestamp, true);
24
+ hasSsrOnlyModules = true;
25
+ }
26
+ if (hasSsrOnlyModules) {
27
+ server.ws.send({ type: 'full-reload' });
28
+ return [];
29
+ }
30
+ }
31
+ }
32
+ };
33
+ }
@@ -0,0 +1,2 @@
1
+ export { getEnvVarObject };
2
+ declare function getEnvVarObject(envVarName: 'VITE_CONFIG'): null | Record<string, unknown>;
@@ -0,0 +1,24 @@
1
+ export { getEnvVarObject };
2
+ import pc from '@brillout/picocolors';
3
+ import { assertUsage, isObject } from '../utils.js';
4
+ import JSON5 from 'json5';
5
+ function getEnvVarObject(envVarName
6
+ /* Let's eventually implement this for Vike's config as well
7
+ | 'VIKE_CONFIG'
8
+ */
9
+ ) {
10
+ const valueStr = process.env[envVarName];
11
+ if (!valueStr)
12
+ return null;
13
+ let value;
14
+ try {
15
+ value = JSON5.parse(valueStr);
16
+ }
17
+ catch (err) {
18
+ console.error(err);
19
+ assertUsage(false, `Cannot parse ${envVarName} (see error above) because it's set to the following which isn't a valid JSON5 string: ${pc.bold(valueStr)}`);
20
+ }
21
+ assertUsage(value, `${envVarName} should define an object but it's ${pc.bold(String(value))} instead.`);
22
+ assertUsage(isObject(value), `${envVarName} should define an object but it's set to the following which isn't an object: ${pc.bold(valueStr)}`);
23
+ return value;
24
+ }
@@ -1,5 +1,5 @@
1
- // Utils needed by Vike's Vite plugin.
2
- // We assume all runtime entries will load this utils.ts file
1
+ // Utils needed by Vike's Vite plugin
2
+ // We call onLoad() here so that it's called even when only a subset of the plugin is loaded. (Making the assert() calls inside onLoad() a lot stronger.)
3
3
  import { onLoad } from './onLoad.js';
4
4
  onLoad();
5
5
  // We tolerate the fact that we load all of the runtime utils even though some of it isn't needed
@@ -1 +1 @@
1
- export { runPrerenderFromAPI as prerender } from './runPrerender.js';
1
+ export { prerender } from '../api/prerender.js';
@@ -1 +1,5 @@
1
- export { runPrerenderFromAPI as prerender } from './runPrerender.js';
1
+ // TODO/v1-release: remove this file
2
+ export { prerender } from '../api/prerender.js';
3
+ import { assertWarning } from '../../utils/assert.js';
4
+ import pc from '@brillout/picocolors';
5
+ assertWarning(false, `${pc.cyan("import { prerender } from 'vike/prerender'")} is deprecated in favor of ${pc.cyan("import { prerender } from 'vike/api'")}`, { onlyOnce: true });
@@ -1,36 +1,15 @@
1
1
  export { runPrerenderFromAPI };
2
- export { runPrerenderFromCLI };
3
- export { runPrerenderFromAutoFullBuild };
2
+ export { runPrerenderFromCLIPrerenderCommand };
3
+ export { runPrerenderFromAutoRun };
4
4
  export { runPrerender_forceExit };
5
5
  export type { PrerenderOptions };
6
6
  import '../runtime/page-files/setup.js';
7
7
  import type { InlineConfig } from 'vite';
8
- type PrerenderOptions = {
8
+ import type { APIOptions } from '../api/APIOptions.js';
9
+ type PrerenderOptions = APIOptions & {
9
10
  /** Initial `pageContext` values */
10
11
  pageContextInit?: Record<string, unknown>;
11
- /**
12
- * The Vite config.
13
- *
14
- * This is optional and, if omitted, then Vite will automatically load your `vite.config.js`.
15
- *
16
- * We recommend to either omit this option or set it to `prerender({ viteConfig: { root }})`: the `vite.config.js` file living at `root` will be loaded.
17
- *
18
- * Alternatively you can:
19
- * - Set `prerender({ viteConfig: { configFile: './path/to/vite.config.js' }})`.
20
- * - Not load any `vite.config.js` file and, instead, use `prerender({ viteConfig: { configFile: false, ...myViteConfig }})` to programmatically define the entire Vite config.
21
- *
22
- * You can also load a `vite.config.js` file while overriding parts of the Vite config.
23
- *
24
- * See https://vitejs.dev/guide/api-javascript.html#inlineconfig for more information.
25
- *
26
- * @default { root: process.cwd() }
27
- *
28
- */
29
- viteConfig?: InlineConfig;
30
- /**
31
- * @internal
32
- * Don't use without having talked to a vike maintainer.
33
- */
12
+ /** @experimental Don't use without having talked to a vike maintainer. */
34
13
  onPagePrerender?: Function;
35
14
  /** @deprecated Define `prerender({ viteConfig: { root }})` instead. */
36
15
  root?: string;
@@ -48,6 +27,6 @@ type PrerenderOptions = {
48
27
  base?: string;
49
28
  };
50
29
  declare function runPrerenderFromAPI(options?: PrerenderOptions): Promise<void>;
51
- declare function runPrerenderFromCLI(options: PrerenderOptions): Promise<void>;
52
- declare function runPrerenderFromAutoFullBuild(options: PrerenderOptions): Promise<void>;
30
+ declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
31
+ declare function runPrerenderFromAutoRun(viteConfig: InlineConfig, forceExit: boolean): Promise<void>;
53
32
  declare function runPrerender_forceExit(): void;
@@ -1,6 +1,6 @@
1
1
  export { runPrerenderFromAPI };
2
- export { runPrerenderFromCLI };
3
- export { runPrerenderFromAutoFullBuild };
2
+ export { runPrerenderFromCLIPrerenderCommand };
3
+ export { runPrerenderFromAutoRun };
4
4
  export { runPrerender_forceExit };
5
5
  import '../runtime/page-files/setup.js';
6
6
  import path from 'path';
@@ -28,32 +28,38 @@ import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVik
28
28
  import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
29
29
  import { executeHook, isUserHookError } from '../../shared/hooks/executeHook.js';
30
30
  import { getConfigValueBuildTime } from '../../shared/page-configs/getConfigValueBuildTime.js';
31
+ import { enhanceViteConfig } from '../api/enhanceViteConfig.js';
31
32
  async function runPrerenderFromAPI(options = {}) {
32
33
  await runPrerender(options, 'prerender()');
33
34
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
34
35
  // - We don't use logErrorHint() because we don't have control over what happens with the error. For example, if the user land purposely swallows the error then the hint shouldn't be logged. Also, it's best if the hint is shown to the user *after* the error, but we cannot do/guarentee that.
35
36
  }
36
- async function runPrerenderFromCLI(options) {
37
+ async function runPrerenderFromCLIPrerenderCommand() {
37
38
  try {
38
- await runPrerender(options, '$ vike prerender');
39
+ const { viteConfigEnhanced } = await enhanceViteConfig(undefined, 'prerender');
40
+ await runPrerender({ viteConfig: viteConfigEnhanced }, '$ vike prerender');
39
41
  }
40
42
  catch (err) {
41
43
  console.error(err);
44
+ // Error may come from user-land; we need to use logErrorHint()
42
45
  logErrorHint(err);
43
46
  process.exit(1);
44
47
  }
48
+ runPrerender_forceExit();
45
49
  }
46
- async function runPrerenderFromAutoFullBuild(options) {
50
+ async function runPrerenderFromAutoRun(viteConfig, forceExit) {
47
51
  try {
48
- await runPrerender(options, null);
52
+ await runPrerender({ viteConfig });
49
53
  }
50
54
  catch (err) {
51
55
  console.error(err);
52
56
  logErrorHint(err);
53
57
  process.exit(1);
54
58
  }
59
+ if (forceExit)
60
+ runPrerender_forceExit();
55
61
  }
56
- async function runPrerender(options, manuallyTriggered) {
62
+ async function runPrerender(options = {}, standaloneTrigger) {
57
63
  checkOutdatedOptions(options);
58
64
  setGlobalContext_isPrerendering();
59
65
  getHook_setIsPrerenderering();
@@ -70,8 +76,8 @@ async function runPrerender(options, manuallyTriggered) {
70
76
  const { root } = viteConfig;
71
77
  const prerenderConfig = configVike.prerender;
72
78
  if (!prerenderConfig) {
73
- assert(manuallyTriggered);
74
- assertWarning(prerenderConfig, `You're executing ${pc.cyan(manuallyTriggered)} but the config ${pc.cyan('prerender')} isn't set to true`, {
79
+ assert(standaloneTrigger);
80
+ assertWarning(prerenderConfig, `You're executing ${pc.cyan(standaloneTrigger)} but the config ${pc.cyan('prerender')} isn't set to true`, {
75
81
  onlyOnce: true
76
82
  });
77
83
  }
@@ -216,7 +216,7 @@ function assertBuildEntries(buildEntries, isPreRendering) {
216
216
  const errMsg = [
217
217
  `You are tyring to run`,
218
218
  isPreRendering ? 'pre-rendering' : 'the server for production',
219
- `but your app isn't built yet. Run ${pc.cyan('$ vite build')} before `,
219
+ `but your app isn't built yet. Run ${pc.cyan('$ vike build')} before `,
220
220
  isPreRendering ? 'pre-rendering.' : 'running the server.'
221
221
  ].join(' ');
222
222
  assertUsage(buildEntries, errMsg);
@@ -1,5 +1,6 @@
1
+ // Utils needed by Vike's server runtime
1
2
  import '../../utils/trackLogs.js';
2
- // We assume all runtime entries will load this utils.ts file
3
+ // We call onLoad() here so that it's called even when only a subset of the runtime is loaded. (Making the assert() calls inside onLoad() a lot stronger.)
3
4
  import { onLoad } from './onLoad.js';
4
5
  onLoad();
5
6
  export * from '../../utils/assert.js';
@@ -52,23 +52,17 @@ type ConfigVikeUserProvided = {
52
52
  */
53
53
  partial?: boolean;
54
54
  /**
55
- * Disable the automatic initiation of the pre-rendering process when running `$ vite build`.
55
+ * Disable the automatic initiation of the pre-rendering process when running `$ vike build`.
56
56
  *
57
57
  * Use this if you want to programmatically initiate the pre-rendering process instead.
58
58
  *
59
- * https://vike.dev/prerender-programmatic
59
+ * https://vike.dev/api#prerender
60
60
  *
61
61
  * @default false
62
62
  */
63
63
  disableAutoRun?: boolean;
64
64
  };
65
- /**
66
- * Disable the automatic chaining of build steps.
67
- *
68
- * https://vike.dev/disableAutoFullBuild
69
- *
70
- * @default false
71
- */
65
+ /** @deprecated See https://vike.dev/disableAutoFullBuild */
72
66
  disableAutoFullBuild?: boolean | 'prerender';
73
67
  /** The Base URL of your server.
74
68
  *
@@ -345,7 +345,7 @@ type ConfigBuiltIn = {
345
345
  */
346
346
  meta?: ConfigMeta | ImportString;
347
347
  /**
348
- * @experimental: DON'T USE: the API *will* have breaking changes upon any minor version release.
348
+ * @experimental DON'T USE: the API *will* have breaking changes upon any minor version release.
349
349
  *
350
350
  * Prefetch pages/links.
351
351
  *
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.212";
1
+ export declare const PROJECT_VERSION: "0.4.214";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.212';
2
+ export const PROJECT_VERSION = '0.4.214';
@@ -34,7 +34,7 @@ function assertNodeEnv_runtime(isViteDev) {
34
34
  return;
35
35
  const nodeEnvDesc = getNodeEnvDesc();
36
36
  // TODO: make it assertUsage() again once #1528 is implemented.
37
- const errMsg = `Running ${isViteDev ? pc.cyan('$ vite dev') : 'app in production'} while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`;
37
+ const errMsg = `Running ${isViteDev ? pc.cyan('$ vike dev') : 'app in production'} while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`;
38
38
  assertWarning(false, errMsg, { onlyOnce: true });
39
39
  }
40
40
  function assertNodeEnv_onVikePluginLoad() {
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.212";
3
+ projectVersion: "0.4.214";
4
4
  };
@@ -0,0 +1,41 @@
1
+ import fs from 'fs/promises'
2
+ import path from 'path'
3
+ const distCjs = 'dist/cjs'
4
+
5
+ main()
6
+
7
+ async function main() {
8
+ await generatePackageJson()
9
+ await shimImportMetaUrl()
10
+ }
11
+
12
+ async function generatePackageJson() {
13
+ await fs.writeFile(distCjs + '/package.json', '{ "type": "commonjs" }\n', 'utf8')
14
+ console.log(`✅ ${distCjs}/package.json generated`)
15
+ }
16
+
17
+ async function shimImportMetaUrl() {
18
+ const files = await getFiles(distCjs)
19
+ files.forEach(replaceImportMetaWithFilename)
20
+ console.log(`✅ ${distCjs}/ shimmed import.meta.url`)
21
+ }
22
+
23
+ async function replaceImportMetaWithFilename(filePath) {
24
+ const fileContent = await fs.readFile(filePath, 'utf8')
25
+ const modifiedContent = fileContent.replaceAll('import.meta.url', '`file://${__filename}`')
26
+ await fs.writeFile(filePath, modifiedContent, 'utf8')
27
+ }
28
+
29
+ async function getFiles(directoryPath) {
30
+ const files = []
31
+ for (const file of await fs.readdir(directoryPath)) {
32
+ const filePath = path.join(directoryPath, file)
33
+ const stats = await fs.stat(filePath)
34
+ if (stats.isDirectory()) {
35
+ files.push(...(await getFiles(filePath)))
36
+ } else if (stats.isFile() && filePath.endsWith('.js')) {
37
+ files.push(filePath)
38
+ }
39
+ }
40
+ return files
41
+ }
@@ -0,0 +1,3 @@
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/shared/getPageContext.js'
3
+ export { default } from './dist/esm/shared/getPageContext.js'
package/modifyUrl.js ADDED
@@ -0,0 +1,3 @@
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/shared/modifyUrl.js'
3
+ export { default } from './dist/esm/shared/modifyUrl.js'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../../dist/esm/node/cli/entry.js'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.212",
3
+ "version": "0.4.214",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -42,6 +42,12 @@
42
42
  "types": "./dist/esm/node/cli/index.d.ts",
43
43
  "default": "./dist/esm/node/cli/index.js"
44
44
  },
45
+ "./api": {
46
+ "require": "./dist/cjs/node/api/index.js",
47
+ "node": "./dist/esm/node/api/index.js",
48
+ "types": "./dist/esm/node/api/index.d.ts",
49
+ "default": "./dist/esm/node/api/index.js"
50
+ },
45
51
  "./prerender": {
46
52
  "require": "./dist/cjs/node/prerender/index.js",
47
53
  "node": "./dist/esm/node/prerender/index.js",
@@ -131,8 +137,10 @@
131
137
  "es-module-lexer": "^1.0.0",
132
138
  "esbuild": "^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0",
133
139
  "fast-glob": "^3.0.0",
140
+ "json5": "^2.0.0",
134
141
  "semver": "^7.0.0",
135
- "source-map-support": "^0.5.0"
142
+ "source-map-support": "^0.5.0",
143
+ "vite": ">=5.1.0"
136
144
  },
137
145
  "peerDependencies": {
138
146
  "react-streaming": ">=0.3.42",
@@ -141,20 +149,26 @@
141
149
  "peerDependenciesMeta": {
142
150
  "react-streaming": {
143
151
  "optional": true
152
+ },
153
+ "vite": {
154
+ "optional": true
144
155
  }
145
156
  },
146
157
  "engines": {
147
158
  "node": ">=18.0.0"
148
159
  },
149
160
  "license": "MIT",
150
- "description": "Flexible, lean, community-driven, dependable, fast Vite-based frontend framework.",
161
+ "description": "The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.",
151
162
  "keywords": [
163
+ "vite-plugin",
164
+ "ssr",
165
+ "vite",
152
166
  "react",
153
167
  "vue",
154
168
  "solid",
155
- "vite",
156
- "vite-plugin",
157
- "ssr"
169
+ "next",
170
+ "remix",
171
+ "vike"
158
172
  ],
159
173
  "typesVersions": {
160
174
  "*": {
@@ -176,6 +190,9 @@
176
190
  "cli": [
177
191
  "./dist/esm/node/cli/index.d.ts"
178
192
  ],
193
+ "api": [
194
+ "./dist/esm/node/api/index.d.ts"
195
+ ],
179
196
  "prerender": [
180
197
  "./dist/esm/node/prerender/index.d.ts"
181
198
  ],
@@ -206,21 +223,28 @@
206
223
  "types": "./dist/esm/node/runtime/index-deprecated.d.ts",
207
224
  "type": "module",
208
225
  "bin": {
209
- "vike": "./node/cli/bin-entry.js"
226
+ "vike": "./node/cli/bin.js"
210
227
  },
211
228
  "files": [
212
- "dist/",
213
- "cli.js",
214
- "client.js",
215
- "client/router.js",
216
- "plugin.js",
217
- "prerender.js",
218
- "routing.js",
219
- "abort.js",
220
- "RenderErrorPage.js",
221
- "server.js",
222
- "__internal.js",
223
- "__internal/setup.js"
229
+ "./node/cli/bin.js",
230
+ "./dist/",
231
+ "./abort.js",
232
+ "./api.js",
233
+ "./client.js",
234
+ "./client/router.js",
235
+ "./cli.js",
236
+ "./dist-cjs-fixup.mjs",
237
+ "./getPageContext.js",
238
+ "./__internal.js",
239
+ "./__internal/loadImportBuild.js",
240
+ "./__internal/setup.js",
241
+ "./modifyUrl.js",
242
+ "./plugin.js",
243
+ "./prerender.js",
244
+ "./RenderErrorPage.js",
245
+ "./routing.js",
246
+ "./server.js",
247
+ "./types.js"
224
248
  ],
225
249
  "devDependencies": {
226
250
  "@biomejs/biome": "^1.5.3",
package/plugin.js CHANGED
@@ -1,3 +1,3 @@
1
- // eslint doesn't seem to support `package.json#exports`.
2
- export * from './dist/esm/node/plugin/index.mjs'
3
- export { default } from './dist/esm/node/plugin/index.mjs'
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/node/plugin/index.js'
3
+ export { default } from './dist/esm/node/plugin/index.js'
package/prerender.js CHANGED
@@ -1,3 +1,3 @@
1
- // eslint doesn't seem to support `package.json#exports`.
2
- export * from './dist/esm/node/prerender/index.mjs'
3
- export { default } from './dist/esm/node/prerender/index.mjs'
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/node/prerender/index.js'
3
+ export { default } from './dist/esm/node/prerender/index.js'
package/routing.js CHANGED
@@ -1,3 +1,3 @@
1
- // eslint doesn't seem to support `package.json#exports`.
2
- export * from './dist/shared/route/routing.mjs'
3
- export { default } from './dist/shared/route/routing.mjs'
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/shared/route/routing.js'
3
+ export { default } from './dist/esm/shared/route/routing.js'
package/server.js CHANGED
@@ -1,3 +1,3 @@
1
- // eslint doesn't seem to support `package.json#exports`.
2
- export * from './dist/esm/node/runtime/index.mjs'
3
- export { default } from './dist/esm/node/runtime/index.mjs'
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/node/runtime/index.js'
3
+ export { default } from './dist/esm/node/runtime/index.js'
package/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // Some tools still need this as of January 2025
2
+ export * from './dist/esm/types/index.js'
3
+ export { default } from './dist/esm/types/index.js'