vike 0.4.143-commit-fa295e1 → 0.4.144-commit-e40e9b1

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 (84) hide show
  1. package/dist/cjs/node/plugin/plugins/buildConfig.js +1 -1
  2. package/dist/cjs/node/plugin/plugins/config/index.js +1 -1
  3. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +3 -5
  4. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +17 -8
  5. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -2
  6. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +69 -87
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +7 -42
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +24 -26
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +6 -8
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +18 -0
  12. package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
  13. package/dist/cjs/node/plugin/utils.js +1 -1
  14. package/dist/cjs/node/prerender/runPrerender.js +4 -4
  15. package/dist/cjs/node/runtime/renderPage.js +1 -1
  16. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  17. package/dist/cjs/shared/getPageFiles/getExports.js +4 -4
  18. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +3 -3
  19. package/dist/cjs/shared/page-configs/getExportPath.js +7 -8
  20. package/dist/cjs/shared/page-configs/loadConfigValues.js +1 -1
  21. package/dist/cjs/shared/page-configs/serialize/PageConfigSerialized.js +2 -0
  22. package/dist/cjs/shared/{getPageFiles → page-configs/serialize}/assertPageConfigs.js +1 -1
  23. package/dist/cjs/shared/page-configs/{parseConfigValuesImported.js → serialize/parseConfigValuesImported.js} +13 -10
  24. package/dist/cjs/shared/{getPageFiles/parsePageConfigsSerialized.js → page-configs/serialize/parsePageConfigs.js} +6 -6
  25. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +58 -0
  26. package/dist/cjs/shared/page-configs/utils.js +11 -12
  27. package/dist/cjs/shared/route/loadPageRoutes.js +1 -1
  28. package/dist/cjs/utils/getOutDirs.js +25 -18
  29. package/dist/cjs/utils/getValuePrintable.js +1 -1
  30. package/dist/cjs/utils/projectInfo.js +1 -1
  31. package/dist/cjs/utils/warnIfErrorIsNotObject.js +1 -1
  32. package/dist/esm/client/client-routing-runtime/useClientRouter.js +1 -1
  33. package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
  34. package/dist/esm/node/plugin/plugins/config/index.js +2 -2
  35. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +4 -6
  36. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +18 -9
  37. package/dist/esm/node/plugin/plugins/importUserCode/index.js +3 -3
  38. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
  39. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
  40. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  41. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +69 -87
  42. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +1 -6
  43. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +6 -38
  44. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +1 -1
  45. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +21 -23
  46. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.d.ts +3 -3
  47. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +6 -8
  48. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +7 -0
  49. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +15 -0
  50. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -2
  51. package/dist/esm/node/plugin/utils.js +1 -1
  52. package/dist/esm/node/prerender/runPrerender.js +5 -5
  53. package/dist/esm/node/runtime/renderPage.js +1 -1
  54. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  55. package/dist/esm/shared/getPageFiles/getExports.js +4 -4
  56. package/dist/esm/shared/getPageFiles/parseGlobResults.js +3 -3
  57. package/dist/esm/shared/page-configs/PageConfig.d.ts +25 -62
  58. package/dist/esm/shared/page-configs/getExportPath.d.ts +1 -1
  59. package/dist/esm/shared/page-configs/getExportPath.js +7 -8
  60. package/dist/esm/shared/page-configs/loadConfigValues.js +1 -1
  61. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +32 -0
  62. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.js +1 -0
  63. package/dist/esm/shared/{getPageFiles → page-configs/serialize}/assertPageConfigs.d.ts +1 -1
  64. package/dist/esm/shared/{getPageFiles → page-configs/serialize}/assertPageConfigs.js +1 -1
  65. package/dist/esm/shared/page-configs/{parseConfigValuesImported.d.ts → serialize/parseConfigValuesImported.d.ts} +2 -1
  66. package/dist/esm/shared/page-configs/{parseConfigValuesImported.js → serialize/parseConfigValuesImported.js} +13 -10
  67. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +7 -0
  68. package/dist/esm/shared/{getPageFiles/parsePageConfigsSerialized.js → page-configs/serialize/parsePageConfigs.js} +5 -5
  69. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +8 -0
  70. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +52 -0
  71. package/dist/esm/shared/page-configs/utils.d.ts +3 -3
  72. package/dist/esm/shared/page-configs/utils.js +11 -12
  73. package/dist/esm/shared/route/loadPageRoutes.js +1 -1
  74. package/dist/esm/utils/getOutDirs.d.ts +0 -2
  75. package/dist/esm/utils/getOutDirs.js +24 -17
  76. package/dist/esm/utils/getValuePrintable.js +1 -1
  77. package/dist/esm/utils/projectInfo.d.ts +1 -1
  78. package/dist/esm/utils/projectInfo.js +1 -1
  79. package/dist/esm/utils/warnIfErrorIsNotObject.js +1 -1
  80. package/package.json +1 -1
  81. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -13
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.d.ts +0 -3
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -10
  84. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.d.ts +0 -6
@@ -1,6 +1,6 @@
1
1
  export { parseConfigValuesImported };
2
- import { assert, assertUsage } from '../utils.js';
3
- import { assertExportsOfValueFile } from './assertExports.js';
2
+ import { assert, assertUsage } from '../../utils.js';
3
+ import { assertExportsOfValueFile } from '../assertExports.js';
4
4
  import pc from '@brillout/picocolors';
5
5
  function parseConfigValuesImported(configValuesImported) {
6
6
  const configValues = {};
@@ -8,10 +8,13 @@ function parseConfigValuesImported(configValuesImported) {
8
8
  configValues[configName] = {
9
9
  value,
10
10
  definedAt: {
11
- source: {
12
- // importPath is always relative the user's root directory (it cannot be relative to the current file since the current file is a virtual file)
11
+ file: {
12
+ // importPath cannot be relative to the current file, since the current file is a virtual file
13
13
  filePathToShowToUser: importPath,
14
- fileExportPath: [exportName]
14
+ fileExportPath: [configName, 'default'].includes(exportName)
15
+ ? []
16
+ : // Side-effect config
17
+ [exportName]
15
18
  }
16
19
  }
17
20
  };
@@ -19,11 +22,11 @@ function parseConfigValuesImported(configValuesImported) {
19
22
  };
20
23
  configValuesImported.forEach((configValueLoaded) => {
21
24
  if (configValueLoaded.isValueFile) {
22
- const { importFileExports, importPath, configName } = configValueLoaded;
25
+ const { exportValues, importPath, configName } = configValueLoaded;
23
26
  if (configName !== 'client') {
24
- assertExportsOfValueFile(importFileExports, importPath, configName);
27
+ assertExportsOfValueFile(exportValues, importPath, configName);
25
28
  }
26
- Object.entries(importFileExports).forEach(([exportName, exportValue]) => {
29
+ Object.entries(exportValues).forEach(([exportName, exportValue]) => {
27
30
  const isSideExport = exportName !== 'default'; // .md files may have "side-exports" such as `export { frontmatter }`
28
31
  const configName = isSideExport ? exportName : configValueLoaded.configName;
29
32
  if (isSideExport && configName in configValues) {
@@ -35,8 +38,8 @@ function parseConfigValuesImported(configValuesImported) {
35
38
  });
36
39
  }
37
40
  else {
38
- const { configName, importPath, importFileExportValue, exportName } = configValueLoaded;
39
- addConfigValue(configName, importFileExportValue, importPath, exportName);
41
+ const { configName, importPath, exportValue, exportName } = configValueLoaded;
42
+ addConfigValue(configName, exportValue, importPath, exportName);
40
43
  }
41
44
  });
42
45
  return configValues;
@@ -0,0 +1,7 @@
1
+ export { parsePageConfigs };
2
+ import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../PageConfig.js';
3
+ import type { PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from './PageConfigSerialized.js';
4
+ declare function parsePageConfigs(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
5
+ pageConfigs: PageConfigRuntime[];
6
+ pageConfigGlobal: PageConfigGlobalRuntime;
7
+ };
@@ -1,9 +1,9 @@
1
- export { parsePageConfigsSerialized };
1
+ export { parsePageConfigs };
2
2
  import { parse } from '@brillout/json-serializer/parse';
3
- import { parseConfigValuesImported } from '../page-configs/parseConfigValuesImported.js';
4
- import { assert, assertUsage, isCallable } from '../utils.js';
5
- import { getConfigDefinedAtString } from '../page-configs/utils.js';
6
- function parsePageConfigsSerialized(pageConfigsSerialized, pageConfigGlobalSerialized) {
3
+ import { parseConfigValuesImported } from './parseConfigValuesImported.js';
4
+ import { assert, assertUsage, isCallable } from '../../utils.js';
5
+ import { getConfigDefinedAtString } from '../utils.js';
6
+ function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
7
7
  const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
8
8
  const configValues = {};
9
9
  {
@@ -0,0 +1,8 @@
1
+ export { serializeConfigValue };
2
+ export { serializeConfigValueImported };
3
+ import { ConfigValueSource } from '../PageConfig.js';
4
+ import { ConfigValueSerialized } from './PageConfigSerialized.js';
5
+ declare function serializeConfigValue(lines: string[], configName: string, configValueSerialized: ConfigValueSerialized): void;
6
+ declare function serializeConfigValueImported(configValueSource: ConfigValueSource, configName: string, whitespace: string, varCounterContainer: {
7
+ varCounter: number;
8
+ }, importStatements: string[]): string[];
@@ -0,0 +1,52 @@
1
+ export { serializeConfigValue };
2
+ export { serializeConfigValueImported };
3
+ // This file is never loaded on the client-side but we save it under the vike/shared/ directory in order to collocate it with:
4
+ // - vike/shared/page-configs/serialize/parsePageConfigs.ts
5
+ // - vike/shared/page-configs/serialize/parseConfigValuesImported.ts
6
+ // Both parsePageConfigs() parseConfigValuesImported() and are loaded on the client-side and server-side
7
+ import { assertIsNotProductionRuntime } from '../../../utils/assertIsNotProductionRuntime.js';
8
+ assertIsNotProductionRuntime();
9
+ import path from 'path';
10
+ import { assert, assertPosixPath } from '../../utils.js';
11
+ import { generateEagerImport } from '../../../node/plugin/plugins/importUserCode/generateEagerImport.js';
12
+ function serializeConfigValue(lines, configName, configValueSerialized) {
13
+ let whitespace = ' ';
14
+ lines.push(`${whitespace}['${configName}']: {`);
15
+ whitespace += ' ';
16
+ Object.entries(configValueSerialized).forEach(([key, val]) => {
17
+ const valSerialized = key === 'definedAt' ? JSON.stringify(val) : val;
18
+ lines.push(`${whitespace} ${key}: ${valSerialized},`);
19
+ });
20
+ whitespace = whitespace.slice(2);
21
+ lines.push(`${whitespace}},`);
22
+ }
23
+ function serializeConfigValueImported(configValueSource, configName, whitespace, varCounterContainer, importStatements) {
24
+ assert(!configValueSource.valueIsFilePath);
25
+ assert(whitespace.replaceAll(' ', '').length === 0);
26
+ const { valueIsImportedAtRuntime, definedAtInfo } = configValueSource;
27
+ assert(valueIsImportedAtRuntime);
28
+ const { filePathRelativeToUserRootDir, importPathAbsolute, exportName } = definedAtInfo;
29
+ const importPath = filePathRelativeToUserRootDir ?? importPathAbsolute;
30
+ assertPosixPath(importPath);
31
+ const fileName = path.posix.basename(importPath);
32
+ const isValueFile = fileName.startsWith('+');
33
+ if (isValueFile)
34
+ assert(exportName === undefined);
35
+ const { importName, importStatement } = generateEagerImport(importPath, varCounterContainer.varCounter++, exportName);
36
+ importStatements.push(importStatement);
37
+ const lines = [];
38
+ lines.push(` {`);
39
+ lines.push(` configName: '${configName}',`);
40
+ lines.push(` importPath: '${importPath}',`);
41
+ lines.push(` isValueFile: ${JSON.stringify(isValueFile)},`);
42
+ if (isValueFile) {
43
+ lines.push(` exportValues: ${importName},`);
44
+ }
45
+ else {
46
+ lines.push(` exportValue: ${importName},`);
47
+ assert(exportName);
48
+ lines.push(` exportName: ${JSON.stringify(exportName)},`);
49
+ }
50
+ lines.push(` },`);
51
+ return lines;
52
+ }
@@ -18,15 +18,15 @@ declare function getConfigValue(pageConfig: PageConfigCommon, configName: Config
18
18
  value: unknown;
19
19
  };
20
20
  declare function getPageConfig(pageId: string, pageConfigs: PageConfigRuntime[]): PageConfigRuntime;
21
- type ConfigDefinedAtUppercase<ConfigName extends string> = `Config ${ConfigName} defined ${string}`;
22
- type ConfigDefinedAtLowercase<ConfigName extends string> = `config ${ConfigName} defined ${string}`;
21
+ type ConfigDefinedAtUppercase<ConfigName extends string> = `Config ${ConfigName} defined ${'internally' | `at ${string}`}`;
22
+ type ConfigDefinedAtLowercase<ConfigName extends string> = `config ${ConfigName} defined ${'internally' | `at ${string}`}`;
23
23
  declare function getConfigDefinedAtString<ConfigName extends string>(configName: ConfigName, { definedAt }: {
24
24
  definedAt: DefinedAt;
25
25
  }, sentenceBegin: true, append?: 'effect'): ConfigDefinedAtUppercase<ConfigName>;
26
26
  declare function getConfigDefinedAtString<ConfigName extends string>(configName: ConfigName, { definedAt }: {
27
27
  definedAt: DefinedAt;
28
28
  }, sentenceBegin: false, append?: 'effect'): ConfigDefinedAtLowercase<ConfigName>;
29
- declare function getDefinedAtString(configValue: ConfigValue): string;
29
+ declare function getDefinedAtString(configValue: ConfigValue, configName: string): string;
30
30
  declare function getConfigValueFilePathToShowToUser({ definedAt }: {
31
31
  definedAt: DefinedAt;
32
32
  }): null | string;
@@ -43,26 +43,26 @@ function getPageConfig(pageId, pageConfigs) {
43
43
  return pageConfig;
44
44
  }
45
45
  function getConfigDefinedAtString(configName, { definedAt }, sentenceBegin) {
46
- const configDefinedAt = `${sentenceBegin ? `Config` : `config`} ${pc.cyan(configName)} defined ${getSourceString(definedAt)}`;
46
+ const configDefinedAt = `${sentenceBegin ? `Config` : `config`} ${pc.cyan(configName)} defined ${getSourceString(definedAt, configName)}`;
47
47
  return configDefinedAt;
48
48
  }
49
- function getSourceString(definedAt) {
49
+ function getSourceString(definedAt, configName) {
50
50
  if (definedAt.isComputed) {
51
51
  return 'internally';
52
52
  }
53
- let sources;
53
+ let files;
54
54
  if (definedAt.isCumulative) {
55
- sources = definedAt.sources;
55
+ files = definedAt.files;
56
56
  }
57
57
  else {
58
- sources = [definedAt.source];
58
+ files = [definedAt.file];
59
59
  }
60
- assert(sources.length >= 1);
61
- const sourceString = sources
60
+ assert(files.length >= 1);
61
+ const sourceString = files
62
62
  .map((source) => {
63
63
  const { filePathToShowToUser, fileExportPath } = source;
64
64
  let s = filePathToShowToUser;
65
- const exportPath = getExportPath(fileExportPath);
65
+ const exportPath = getExportPath(fileExportPath, configName);
66
66
  if (exportPath) {
67
67
  s = `${s} > ${pc.cyan(exportPath)}`;
68
68
  }
@@ -74,8 +74,8 @@ function getSourceString(definedAt) {
74
74
  .join(' / ');
75
75
  return `at ${sourceString}`;
76
76
  }
77
- function getDefinedAtString(configValue) {
78
- let sourceString = getSourceString(configValue.definedAt);
77
+ function getDefinedAtString(configValue, configName) {
78
+ let sourceString = getSourceString(configValue.definedAt, configName);
79
79
  if (sourceString.startsWith('at '))
80
80
  sourceString = sourceString.slice('at '.length);
81
81
  return sourceString;
@@ -86,8 +86,7 @@ function getConfigValueFilePathToShowToUser({ definedAt }) {
86
86
  // - computed values don't have any file path
87
87
  if (definedAt.isComputed || definedAt.isCumulative)
88
88
  return null;
89
- const { source } = definedAt;
90
- const { filePathToShowToUser } = source;
89
+ const { filePathToShowToUser } = definedAt.file;
91
90
  assert(filePathToShowToUser);
92
91
  return filePathToShowToUser;
93
92
  }
@@ -31,7 +31,7 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
31
31
  const configValue = getConfigValue(pageConfig, configName);
32
32
  if (configValue) {
33
33
  const route = configValue.value;
34
- const definedAt = getDefinedAtString(configValue);
34
+ const definedAt = getDefinedAtString(configValue, configName);
35
35
  if (typeof route === 'string') {
36
36
  pageRoute = {
37
37
  pageId,
@@ -1,5 +1,4 @@
1
1
  export { getOutDirs };
2
- export { getOutDirs_prerender };
3
2
  export { resolveOutDir };
4
3
  import type { UserConfig, ResolvedConfig } from 'vite';
5
4
  type OutDirs = {
@@ -11,6 +10,5 @@ type OutDirs = {
11
10
  outDirServer: string;
12
11
  };
13
12
  declare function getOutDirs(config: ResolvedConfig): OutDirs;
14
- declare function getOutDirs_prerender(config: ResolvedConfig): OutDirs;
15
13
  /** Appends `client/` or `server/` to `config.build.outDir` */
16
14
  declare function resolveOutDir(config: UserConfig): string;
@@ -1,5 +1,4 @@
1
1
  export { getOutDirs };
2
- export { getOutDirs_prerender };
3
2
  export { resolveOutDir };
4
3
  import { viteIsSSR } from './viteIsSSR.js';
5
4
  import { assert, assertUsage } from './assert.js';
@@ -7,21 +6,24 @@ import { pathJoin } from './path-shim.js';
7
6
  import { assertPosixPath, toPosixPath } from './filesystemPathHandling.js';
8
7
  import pc from '@brillout/picocolors';
9
8
  function getOutDirs(config) {
10
- const outDir = getOutDirFromResolvedConfig(config);
11
- assertOutDirResolved(outDir, config);
12
- assert(outDir.endsWith('/server') || outDir.endsWith('/client'));
13
- assert('/client'.length === '/server'.length);
14
- const outDirRoot = outDir.slice(0, -1 * '/client'.length);
15
- return getOutDirsAll(outDirRoot, config.root);
16
- }
17
- function getOutDirs_prerender(config) {
18
- const outDirRoot = getOutDirFromResolvedConfig(config);
19
- assert(isOutDirRoot(outDirRoot));
9
+ let outDirRoot;
10
+ {
11
+ const outDir = getOutDirFromViteResolvedConfig(config);
12
+ if (isOutDirRoot(outDir)) {
13
+ outDirRoot = outDir;
14
+ }
15
+ else {
16
+ assertOutDirResolved(outDir, config);
17
+ assert(outDir.endsWith('/server') || outDir.endsWith('/client'));
18
+ assert('/client'.length === '/server'.length);
19
+ outDirRoot = outDir.slice(0, -1 * '/client'.length);
20
+ }
21
+ }
20
22
  return getOutDirsAll(outDirRoot, config.root);
21
23
  }
22
24
  /** Appends `client/` or `server/` to `config.build.outDir` */
23
25
  function resolveOutDir(config) {
24
- const outDir = getOutDirFromUserConfig(config) || 'dist';
26
+ const outDir = getOutDirFromViteUserConfig(config) || 'dist';
25
27
  // outDir may already be resolved when using Telefunc + vike (because both Telefunc and vike use this logic)
26
28
  if (!isOutDirRoot(outDir)) {
27
29
  assertOutDirResolved(outDir, config);
@@ -39,6 +41,7 @@ function resolveOutDir(config) {
39
41
  }
40
42
  function determineOutDirs(outDirRoot) {
41
43
  assertPosixPath(outDirRoot);
44
+ assert(!outDirRoot.endsWith('/'));
42
45
  assert(isOutDirRoot(outDirRoot));
43
46
  const outDirClient = pathJoin(outDirRoot, 'client');
44
47
  const outDirServer = pathJoin(outDirRoot, 'server');
@@ -89,18 +92,22 @@ function assertOutDirResolved(outDir, config) {
89
92
  assertUsage(outDir.endsWith('/client'), wrongUsage);
90
93
  }
91
94
  }
92
- function getOutDirFromUserConfig(config) {
95
+ function getOutDirFromViteUserConfig(config) {
93
96
  let outDir = config.build?.outDir;
94
97
  if (outDir === undefined)
95
98
  return undefined;
96
- // I believe Vite normalizes config.build.outDir only if config is ResolvedConfig
97
- outDir = toPosixPath(outDir);
99
+ outDir = normalize(outDir);
98
100
  return outDir;
99
101
  }
100
- function getOutDirFromResolvedConfig(config) {
102
+ function getOutDirFromViteResolvedConfig(config) {
101
103
  let outDir = config.build.outDir;
102
- // Vite seems to be buggy and doesn't always normalize config.build.outDir
104
+ assert(outDir);
105
+ outDir = normalize(outDir);
106
+ return outDir;
107
+ }
108
+ function normalize(outDir) {
103
109
  outDir = toPosixPath(outDir);
110
+ outDir = outDir.replace(/\/+$/, ''); // remove trailing slashes
104
111
  return outDir;
105
112
  }
106
113
  function outDirIsAbsolutePath(outDir) {
@@ -1,7 +1,7 @@
1
1
  export function getValuePrintable(value) {
2
2
  if ([null, undefined].includes(value))
3
3
  return String(value);
4
- if (['undefined', 'boolean', 'number', 'string'].includes(typeof value))
4
+ if (['boolean', 'number', 'string'].includes(typeof value))
5
5
  return JSON.stringify(value);
6
6
  return null;
7
7
  }
@@ -5,7 +5,7 @@ type ProjectVersion = typeof projectInfo.projectVersion;
5
5
  type ProjectTag = `[${PackageName}]` | `[${PackageName}@${ProjectVersion}]`;
6
6
  declare const projectInfo: {
7
7
  projectName: "Vike";
8
- projectVersion: "0.4.143-commit-fa295e1";
8
+ projectVersion: "0.4.144-commit-e40e9b1";
9
9
  npmPackageName: "vike";
10
10
  githubRepository: "https://github.com/vikejs/vike";
11
11
  };
@@ -1,6 +1,6 @@
1
1
  export { projectInfo };
2
2
  import { onProjectInfo } from './assertSingleInstance.js';
3
- const PROJECT_VERSION = '0.4.143-commit-fa295e1';
3
+ const PROJECT_VERSION = '0.4.144-commit-e40e9b1';
4
4
  const projectInfo = {
5
5
  projectName: 'Vike',
6
6
  projectVersion: PROJECT_VERSION,
@@ -7,7 +7,7 @@ assertIsNotBrowser();
7
7
  // It would be cleaner to:
8
8
  // - Call assertUsageErrorIsObject() right after calling the user's hook
9
9
  // - Attach the original error: assertUsageError.originalErrorValue = err
10
- // - Show the original error in vike's error handling
10
+ // - Show the original error in Vike's error handling
11
11
  // - Use assertErrorIsObject() throughout Vike's source code
12
12
  function warnIfErrorIsNotObject(err) {
13
13
  if (!isObject(err)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.143-commit-fa295e1",
3
+ "version": "0.4.144-commit-e40e9b1",
4
4
  "scripts": {
5
5
  "dev": "tsc --watch",
6
6
  "build": "rimraf dist/ && pnpm run build:esm && pnpm run build:cjs",
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isConfigEnvMatch = void 0;
4
- function isConfigEnvMatch(configEnv, isForClientSide, isClientRouting) {
5
- if (configEnv === '_routing-eager' || configEnv === 'config-only')
6
- return false;
7
- if (configEnv === (isForClientSide ? 'server-only' : 'client-only'))
8
- return false;
9
- if (configEnv === '_routing-lazy' && isForClientSide && !isClientRouting)
10
- return false;
11
- return true;
12
- }
13
- exports.isConfigEnvMatch = isConfigEnvMatch;
@@ -1,3 +0,0 @@
1
- export { isConfigEnvMatch };
2
- import type { ConfigEnvInternal } from '../../../../../shared/page-configs/PageConfig.js';
3
- declare function isConfigEnvMatch(configEnv: ConfigEnvInternal, isForClientSide: boolean, isClientRouting: boolean): boolean;
@@ -1,10 +0,0 @@
1
- export { isConfigEnvMatch };
2
- function isConfigEnvMatch(configEnv, isForClientSide, isClientRouting) {
3
- if (configEnv === '_routing-eager' || configEnv === 'config-only')
4
- return false;
5
- if (configEnv === (isForClientSide ? 'server-only' : 'client-only'))
6
- return false;
7
- if (configEnv === '_routing-lazy' && isForClientSide && !isClientRouting)
8
- return false;
9
- return true;
10
- }
@@ -1,6 +0,0 @@
1
- export { parsePageConfigsSerialized };
2
- import type { PageConfigRuntime, PageConfigGlobalRuntime, PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from '../page-configs/PageConfig.js';
3
- declare function parsePageConfigsSerialized(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
4
- pageConfigs: PageConfigRuntime[];
5
- pageConfigGlobal: PageConfigGlobalRuntime;
6
- };