vike 0.4.218-commit-85af52a → 0.4.218-commit-ea8bb27

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 (57) hide show
  1. package/dist/cjs/__internal/index.js +2 -3
  2. package/dist/cjs/node/api/prepareViteApiCall.js +1 -2
  3. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  4. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
  5. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +26 -22
  6. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +111 -181
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -2
  9. package/dist/cjs/node/prerender/runPrerender.js +73 -32
  10. package/dist/cjs/node/prerender/utils.js +1 -0
  11. package/dist/cjs/node/runtime/globalContext.js +31 -5
  12. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
  13. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +9 -1
  14. package/dist/cjs/node/runtime/renderPage.js +21 -22
  15. package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -2
  16. package/dist/cjs/shared/getPageFiles/getPageFiles.js +6 -3
  17. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +2 -2
  18. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +4 -4
  19. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  20. package/dist/esm/__internal/index.js +2 -3
  21. package/dist/esm/client/client-routing-runtime/createPageContext.js +1 -4
  22. package/dist/esm/client/server-routing-runtime/getPageContext.js +1 -4
  23. package/dist/esm/node/api/prepareViteApiCall.js +1 -2
  24. package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
  25. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -4
  26. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
  27. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +6 -9
  28. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +25 -21
  29. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -6
  30. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +108 -178
  31. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
  32. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -2
  33. package/dist/esm/node/prerender/runPrerender.js +75 -34
  34. package/dist/esm/node/prerender/utils.d.ts +1 -0
  35. package/dist/esm/node/prerender/utils.js +1 -0
  36. package/dist/esm/node/runtime/globalContext.d.ts +17 -3
  37. package/dist/esm/node/runtime/globalContext.js +32 -6
  38. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +27 -42
  39. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
  40. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +1 -1
  41. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +9 -1
  42. package/dist/esm/node/runtime/renderPage.js +22 -23
  43. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
  44. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -1
  45. package/dist/esm/node/shared/assertRuntimeManifest.js +1 -3
  46. package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +2 -0
  47. package/dist/esm/shared/getPageFiles/getPageFiles.js +6 -3
  48. package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +9 -5
  49. package/dist/esm/shared/page-configs/Config.d.ts +13 -1
  50. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +7 -4
  51. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +2 -2
  52. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -6
  53. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +4 -4
  54. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  55. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  56. package/dist/esm/utils/projectInfo.d.ts +1 -1
  57. package/package.json +1 -1
@@ -4,12 +4,15 @@ export { setPageFilesAsync };
4
4
  import { assert, unique } from '../utils.js';
5
5
  import { parseGlobResults } from './parseGlobResults.js';
6
6
  import { getGlobalObject } from '../../utils/getGlobalObject.js';
7
+ import { getPageConfigUserFriendlyNew } from '../page-configs/getPageConfigUserFriendly.js';
7
8
  const globalObject = getGlobalObject('setPageFiles.ts', {});
8
9
  function setPageFiles(pageFilesExports) {
9
10
  const { pageFiles, pageConfigs, pageConfigGlobal } = parseGlobResults(pageFilesExports);
10
11
  globalObject.pageFilesAll = pageFiles;
11
12
  globalObject.pageConfigs = pageConfigs;
12
13
  globalObject.pageConfigGlobal = pageConfigGlobal;
14
+ // TODO/now: re-use this call, instead of calling it twice
15
+ globalObject.globalConfig = getPageConfigUserFriendlyNew(pageConfigGlobal);
13
16
  }
14
17
  function setPageFilesAsync(getPageFilesExports) {
15
18
  globalObject.pageFilesGetter = async () => {
@@ -30,10 +33,10 @@ async function getPageFilesAll(isClientSide, isProduction) {
30
33
  await globalObject.pageFilesGetter();
31
34
  }
32
35
  }
33
- const { pageFilesAll, pageConfigs, pageConfigGlobal } = globalObject;
34
- assert(pageFilesAll && pageConfigs && pageConfigGlobal);
36
+ const { pageFilesAll, pageConfigs, pageConfigGlobal, globalConfig } = globalObject;
37
+ assert(pageFilesAll && pageConfigs && pageConfigGlobal && globalConfig);
35
38
  const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
36
- return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal };
39
+ return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig };
37
40
  }
38
41
  function getAllPageIds(allPageFiles, pageConfigs) {
39
42
  const fileIds = allPageFiles.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
@@ -1,11 +1,15 @@
1
1
  export type { PageContextConfig };
2
+ export type { ConfigResolved };
2
3
  import type { VikePackages } from '../../VikeNamespace.js';
3
- import type { ConfigBuiltIn, ImportString } from '../Config.js';
4
+ import type { ConfigBuiltIn, ConfigBuiltInResolved, ImportString } from '../Config.js';
4
5
  import type { Combine, IsNotEmpty, XOR5 } from './helpers.js';
5
- type WithoutImportString<T> = {
6
- [K in keyof T]: Exclude<T[K], ImportString>;
7
- };
8
- type PageContextConfig = ConfigBuiltIn & Vike.ConfigResolved & WithoutImportString<Omit<Vike.Config, keyof Vike.ConfigResolved>> & (ConfigVikePackagesNotEmptyXor extends true ? ConfigVikePackagesIntersection : ConfigVikePackagesCombined);
6
+ type PageContextConfig = ConfigResolved & (ConfigVikePackagesNotEmptyXor extends true ? ConfigVikePackagesIntersection : ConfigVikePackagesCombined);
7
+ type ConfigUnresolved = WithoutImportString<ConfigBuiltIn & Vike.Config>;
8
+ type ConfigResolvedOnly = ConfigBuiltInResolved & Vike.ConfigResolved;
9
+ type ConfigResolved = ConfigResolvedOnly & Omit<ConfigUnresolved, keyof ConfigResolvedOnly>;
9
10
  type ConfigVikePackagesIntersection = VikePackages.ConfigVikeReact & VikePackages.ConfigVikeVue & VikePackages.ConfigVikeSolid & VikePackages.ConfigVikeSvelte & VikePackages.ConfigVikeAngular;
10
11
  type ConfigVikePackagesCombined = Combine<VikePackages.ConfigVikeReact, Combine<VikePackages.ConfigVikeVue, Combine<VikePackages.ConfigVikeSolid, Combine<VikePackages.ConfigVikeSvelte, VikePackages.ConfigVikeAngular>>>>;
11
12
  type ConfigVikePackagesNotEmptyXor = XOR5<IsNotEmpty<VikePackages.ConfigVikeReact>, IsNotEmpty<VikePackages.ConfigVikeVue>, IsNotEmpty<VikePackages.ConfigVikeSolid>, IsNotEmpty<VikePackages.ConfigVikeSvelte>, IsNotEmpty<VikePackages.ConfigVikeAngular>>;
13
+ type WithoutImportString<T> = {
14
+ [K in keyof T]: Exclude<T[K], ImportString>;
15
+ };
@@ -1,6 +1,8 @@
1
1
  export type { Config };
2
2
  export type { ConfigBuiltIn };
3
+ export type { ConfigBuiltInResolved };
3
4
  export type { ConfigNameBuiltIn };
5
+ export type { ConfigNameGlobal };
4
6
  export type { ConfigMeta };
5
7
  export type { HookName };
6
8
  export type { HookNamePage };
@@ -44,7 +46,8 @@ type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
44
46
  type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
45
47
  type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart';
46
48
  type HookNameOldDesign = 'render' | 'prerender';
47
- type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
49
+ type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
50
+ type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
48
51
  type Config = ConfigBuiltIn & Vike.Config & (VikePackages.ConfigVikeReact | VikePackages.ConfigVikeVue | VikePackages.ConfigVikeSolid | VikePackages.ConfigVikeSvelte | VikePackages.ConfigVikeAngular);
49
52
  /** Hook for fetching data.
50
53
  *
@@ -350,6 +353,11 @@ type ConfigBuiltIn = {
350
353
  * https://vite.dev/config/
351
354
  */
352
355
  vite?: InlineConfig;
356
+ /** Permanent redirections (HTTP status code 301)
357
+ *
358
+ * https://vike.dev/redirects
359
+ */
360
+ redirects?: Record<string, string>;
353
361
  /**
354
362
  * @experimental DON'T USE: the API *will* have breaking changes upon any minor version release.
355
363
  *
@@ -396,5 +404,9 @@ type ConfigBuiltIn = {
396
404
  */
397
405
  keepScrollPosition?: KeepScrollPosition;
398
406
  };
407
+ type ConfigBuiltInResolved = {
408
+ passToClient?: string[][];
409
+ redirects?: Record<string, string>[];
410
+ };
399
411
  type ConfigMeta = Record<string, ConfigDefinition>;
400
412
  type ImportString = `import:${string}`;
@@ -1,5 +1,6 @@
1
1
  export { getPageConfigUserFriendly };
2
2
  export { getPageConfigUserFriendlyNew };
3
+ export type { ConfigUserFriendly };
3
4
  export type { PageConfigUserFriendly };
4
5
  export type { Source };
5
6
  export type { Sources };
@@ -10,6 +11,7 @@ import type { FileType } from '../getPageFiles/fileTypes.js';
10
11
  import type { PageFile } from '../getPageFiles/getPageFileObject.js';
11
12
  import type { ConfigValues, PageConfigRuntimeLoaded } from './PageConfig.js';
12
13
  import { type ConfigDefinedAtOptional } from './getConfigDefinedAt.js';
14
+ import type { ConfigResolved } from './Config/PageContextConfig.js';
13
15
  type ExportsAll = Record<string, {
14
16
  exportValue: unknown;
15
17
  exportSource: string;
@@ -72,13 +74,14 @@ type SourceConfigsComputed = {
72
74
  value: unknown;
73
75
  };
74
76
  declare function getPageConfigUserFriendly(pageFiles: PageFile[], pageConfig: PageConfigRuntimeLoaded | null): PageConfigUserFriendly;
75
- declare function getPageConfigUserFriendlyNew(pageConfig: {
76
- configValues: ConfigValues;
77
- }): {
78
- config: Record<string, unknown>;
77
+ type ConfigUserFriendly = {
78
+ config: ConfigResolved;
79
79
  configEntries: ConfigEntries;
80
80
  exportsAll: ExportsAll;
81
81
  source: Source;
82
82
  sources: Sources;
83
83
  from: From;
84
84
  };
85
+ declare function getPageConfigUserFriendlyNew(pageConfig: {
86
+ configValues: ConfigValues;
87
+ }): ConfigUserFriendly;
@@ -78,8 +78,8 @@ function getPageConfigUserFriendly(pageFiles, pageConfig) {
78
78
  // V1 design
79
79
  function getPageConfigUserFriendlyNew(pageConfig) {
80
80
  const config = {};
81
- const configEntries = {}; // TODO/v1-release: remove
82
- const exportsAll = {}; // TODO/v1-release: remove
81
+ const configEntries = {};
82
+ const exportsAll = {};
83
83
  const source = {};
84
84
  const sources = {};
85
85
  const from = {
@@ -1,12 +1,8 @@
1
1
  export { serializeConfigValues };
2
2
  export { getConfigValuesBase };
3
3
  import type { ConfigEnvInternal, ConfigValueSource, DefinedAtFile, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../PageConfig.js';
4
- declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }: {
5
- isEager: boolean;
6
- }, tabspace: string): string[];
7
- declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }?: {
8
- isEager?: boolean;
9
- }): ConfigValuesBase;
4
+ declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, tabspace: string, isEager: boolean | null): string[];
5
+ declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, isEager: boolean | null): ConfigValuesBase;
10
6
  type ConfigValuesBase = ({
11
7
  configValueBase: {
12
8
  type: 'computed';
@@ -13,10 +13,10 @@ const REPLACE_ME_AFTER = '__VIKE__REPLACE_ME_AFTER__';
13
13
  // - vike/shared/page-configs/serialize/parsePageConfigs.ts
14
14
  // - parsePageConfigs() is loaded on both the client- and server-side.
15
15
  assertIsNotProductionRuntime();
16
- function serializeConfigValues(pageConfig, importStatements, isEnvMatch, { isEager }, tabspace) {
16
+ function serializeConfigValues(pageConfig, importStatements, isEnvMatch, tabspace, isEager) {
17
17
  const lines = [];
18
18
  tabspace += ' ';
19
- getConfigValuesBase(pageConfig, isEnvMatch, { isEager }).forEach((entry) => {
19
+ getConfigValuesBase(pageConfig, isEnvMatch, isEager).forEach((entry) => {
20
20
  if (entry.configValueBase.type === 'computed') {
21
21
  assert('value' in entry); // Help TS
22
22
  const { configValueBase, value, configName } = entry;
@@ -165,7 +165,7 @@ function logJsonSerializeError(err, configName, definedAtData) {
165
165
  assert(configValueFilePathToShowToUser);
166
166
  assertUsage(false, `${pc.cyan(configName)} defined by ${configValueFilePathToShowToUser} must be defined over a so-called "pointer import", see https://vike.dev/config#pointer-imports`);
167
167
  }
168
- function getConfigValuesBase(pageConfig, isEnvMatch, { isEager } = {}) {
168
+ function getConfigValuesBase(pageConfig, isEnvMatch, isEager) {
169
169
  const fromComputed = Object.entries(pageConfig.configValuesComputed ?? {}).map(([configName, valueInfo]) => {
170
170
  if (!isEnvMatch(valueInfo.configEnv))
171
171
  return 'SKIP';
@@ -181,7 +181,7 @@ function getConfigValuesBase(pageConfig, isEnvMatch, { isEager } = {}) {
181
181
  const fromSources = Object.entries(pageConfig.configValueSources).map(([configName, sources]) => {
182
182
  const configDef = pageConfig.configDefinitions[configName];
183
183
  assert(configDef);
184
- if (isEager !== undefined && isEager !== !!configDef.eager)
184
+ if (isEager !== null && isEager !== !!configDef.eager)
185
185
  return 'SKIP';
186
186
  if (!configDef.cumulative) {
187
187
  const source = sources[0];
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.218-commit-85af52a";
1
+ export declare const PROJECT_VERSION: "0.4.218-commit-ea8bb27";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.218-commit-85af52a';
2
+ export const PROJECT_VERSION = '0.4.218-commit-ea8bb27';
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.218-commit-85af52a";
3
+ projectVersion: "0.4.218-commit-ea8bb27";
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.218-commit-85af52a",
3
+ "version": "0.4.218-commit-ea8bb27",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {