vike 0.4.230-commit-eea72b2 → 0.4.230-commit-f07cc20

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.
@@ -54,7 +54,11 @@ function assertExtensionsRequire(plusFiles) {
54
54
  Object.entries(require).forEach(([reqName, req]) => {
55
55
  const errBase = `${picocolors_1.default.bold(name)} requires ${picocolors_1.default.bold(reqName)}`;
56
56
  if (reqName === 'vike') {
57
- (0, utils_js_1.assertUsage)(isVersionRange(utils_js_1.PROJECT_VERSION, req.version), `${errBase} version ${picocolors_1.default.bold(req.version)}, but ${picocolors_1.default.bold(utils_js_1.PROJECT_VERSION)} is installed.`);
57
+ let errMsg = `${errBase} version ${picocolors_1.default.bold(req.version)}, but ${picocolors_1.default.bold(utils_js_1.PROJECT_VERSION)} is installed.`;
58
+ if (req.optional) {
59
+ errMsg += " Either update it, or remove it (it's an optional peer dependency).";
60
+ }
61
+ (0, utils_js_1.assertUsage)(isVersionRange(utils_js_1.PROJECT_VERSION, req.version), errMsg);
58
62
  return;
59
63
  }
60
64
  const extensionVersion = extensions[reqName];
@@ -708,6 +708,8 @@ function getConfigDefinitions(plusFilesRelevant, filter) {
708
708
  assertMetaUsage(meta, `Config ${picocolors_1.default.cyan('meta')} defined at ${plusFile.filePath.filePathToShowToUser}`);
709
709
  // Set configDef._userEffectDefinedAtFilePath
710
710
  Object.entries(meta).forEach(([configName, configDef]) => {
711
+ if ('isDefinedByPeerDependency' in configDef)
712
+ return;
711
713
  if (!configDef.effect)
712
714
  return;
713
715
  (0, utils_js_1.assert)(plusFile.isConfigFile);
@@ -717,6 +719,12 @@ function getConfigDefinitions(plusFilesRelevant, filter) {
717
719
  };
718
720
  });
719
721
  (0, utils_js_1.objectEntries)(meta).forEach(([configName, configDefinitionUserLand]) => {
722
+ if ('isDefinedByPeerDependency' in configDefinitionUserLand) {
723
+ configDefinitionUserLand = {
724
+ env: { client: false, server: false, config: false },
725
+ ...configDefinitionUserLand
726
+ };
727
+ }
720
728
  // User can override an existing config definition
721
729
  configDefinitions[configName] = {
722
730
  ...configDefinitions[configName],
@@ -739,6 +747,8 @@ function assertMetaUsage(metaVal, metaConfigDefinedAt) {
739
747
  (0, utils_js_1.assert)(metaConfigDefinedAt); // We expect internal effects to return a valid meta value
740
748
  (0, utils_js_1.assertUsage)(false, `${metaConfigDefinedAt} sets ${picocolors_1.default.cyan(`meta.${configName}`)} to a value with an invalid type ${picocolors_1.default.cyan(typeof def)}: it should be an object instead.`);
741
749
  }
750
+ if (def.isDefinedByPeerDependency)
751
+ return;
742
752
  // env
743
753
  let configEnv;
744
754
  {
@@ -849,6 +859,7 @@ function applyEffectMetaEnv(configModFromEffect, configValueSources, configDefEf
849
859
  }
850
860
  assertMetaUsage(configValue, configDefinedAt);
851
861
  (0, utils_js_1.objectEntries)(configValue).forEach(([configTargetName, configTargetDef]) => {
862
+ (0, utils_js_1.assert)(!('isDefinedByPeerDependency' in configTargetDef));
852
863
  {
853
864
  const keys = Object.keys(configTargetDef);
854
865
  (0, utils_js_1.assertUsage)(keys.includes('env'), notSupported);
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.230-commit-eea72b2';
5
+ exports.PROJECT_VERSION = '0.4.230-commit-f07cc20';
@@ -49,7 +49,11 @@ function assertExtensionsRequire(plusFiles) {
49
49
  Object.entries(require).forEach(([reqName, req]) => {
50
50
  const errBase = `${pc.bold(name)} requires ${pc.bold(reqName)}`;
51
51
  if (reqName === 'vike') {
52
- assertUsage(isVersionRange(PROJECT_VERSION, req.version), `${errBase} version ${pc.bold(req.version)}, but ${pc.bold(PROJECT_VERSION)} is installed.`);
52
+ let errMsg = `${errBase} version ${pc.bold(req.version)}, but ${pc.bold(PROJECT_VERSION)} is installed.`;
53
+ if (req.optional) {
54
+ errMsg += " Either update it, or remove it (it's an optional peer dependency).";
55
+ }
56
+ assertUsage(isVersionRange(PROJECT_VERSION, req.version), errMsg);
53
57
  return;
54
58
  }
55
59
  const extensionVersion = extensions[reqName];
@@ -1,6 +1,7 @@
1
1
  export { configDefinitionsBuiltIn };
2
2
  export type { ConfigDefinition };
3
3
  export type { ConfigDefinitions };
4
+ export type { ConfigDefinitionsInternal };
4
5
  export type { ConfigDefinitionInternal };
5
6
  export type { ConfigEffect };
6
7
  import type { ConfigEnvInternal, ConfigEnv, ConfigValueSources, DefinedAtFilePath } from '../../../../../../shared/page-configs/PageConfig.js';
@@ -10,7 +11,8 @@ import { type ConfigDefinedAt } from '../../../../../../shared/page-configs/getC
10
11
  *
11
12
  * https://vike.dev/meta
12
13
  */
13
- type ConfigDefinition = {
14
+ type ConfigDefinition = ConfigDefinition_ | ConfigDefinitionDefinedByPeerDependency;
15
+ type ConfigDefinition_ = {
14
16
  /** In what environment(s) the config value is loaded.
15
17
  *
16
18
  * https://vike.dev/meta
@@ -49,6 +51,12 @@ type ConfigDefinition = {
49
51
  }) => boolean);
50
52
  type?: string | string[];
51
53
  };
54
+ type ConfigDefinitionDefinedByPeerDependency = {
55
+ /**
56
+ * Omit the "unknown config" error without defining the config — useful for optional peer dependencies: for example, vike-server sets +stream.require which is defined by vike-{react,vue,solid} but some users don't use vike-{react,vue,solid}
57
+ */
58
+ isDefinedByPeerDependency: true;
59
+ };
52
60
  /**
53
61
  * Function called when the config value is defined.
54
62
  *
@@ -67,13 +75,15 @@ type ConfigEffect = (config: {
67
75
  configDefinedAt: ConfigDefinedAt;
68
76
  }) => Config | undefined;
69
77
  /** For Vike internal use */
70
- type ConfigDefinitionInternal = Omit<ConfigDefinition, 'env'> & {
78
+ type ConfigDefinitionInternal = Omit<ConfigDefinition_, 'env'> & {
71
79
  _computed?: (configValueSources: ConfigValueSources) => unknown;
72
80
  _valueIsFilePath?: true;
73
81
  _userEffectDefinedAtFilePath?: DefinedAtFilePath;
74
82
  env: ConfigEnvInternal;
75
83
  };
76
84
  type ConfigDefinitions = Record<string, // configName
85
+ ConfigDefinition>;
86
+ type ConfigDefinitionsInternal = Record<string, // configName
77
87
  ConfigDefinitionInternal>;
78
88
  type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn | ConfigNameGlobal, ConfigDefinitionInternal>;
79
89
  declare const configDefinitionsBuiltIn: ConfigDefinitionsBuiltIn;
@@ -7,20 +7,20 @@ import type { FilePathResolved } from '../../../../../../shared/page-configs/Fil
7
7
  import { type EsbuildCache } from './transpileAndExecuteFile.js';
8
8
  import type { PlusFileValue } from './getPlusFilesAll.js';
9
9
  import { PointerImport } from './resolvePointerImport.js';
10
- import type { ConfigDefinitions } from './configDefinitionsBuiltIn.js';
10
+ import type { ConfigDefinitionsInternal } from './configDefinitionsBuiltIn.js';
11
11
  type ConfigFile = {
12
12
  fileExports: Record<string, unknown>;
13
13
  filePath: FilePathResolved;
14
14
  extendsFilePaths: string[];
15
15
  };
16
- declare function loadPointerImport(pointerImport: PointerImportLoaded, userRootDir: string, configName: string, configDefinitions: ConfigDefinitions, esbuildCache: EsbuildCache): Promise<unknown>;
16
+ declare function loadPointerImport(pointerImport: PointerImportLoaded, userRootDir: string, configName: string, configDefinitions: ConfigDefinitionsInternal, esbuildCache: EsbuildCache): Promise<unknown>;
17
17
  type PointerImportLoaded = PointerImport & ({
18
18
  fileExportValueLoaded: true;
19
19
  fileExportValue: unknown;
20
20
  } | {
21
21
  fileExportValueLoaded: false;
22
22
  });
23
- declare function loadValueFile(interfaceValueFile: PlusFileValue, configDefinitions: ConfigDefinitions, userRootDir: string, esbuildCache: EsbuildCache): Promise<void>;
23
+ declare function loadValueFile(interfaceValueFile: PlusFileValue, configDefinitions: ConfigDefinitionsInternal, userRootDir: string, esbuildCache: EsbuildCache): Promise<void>;
24
24
  declare function loadConfigFile(configFilePath: FilePathResolved, userRootDir: string, visited: string[], isExtensionConfig: boolean, esbuildCache: EsbuildCache): Promise<{
25
25
  configFile: ConfigFile;
26
26
  extendsConfigs: ConfigFile[];
@@ -9,7 +9,7 @@ export { getVikeConfigFromCliOrEnv };
9
9
  export { isOverriden };
10
10
  export type { VikeConfigObject };
11
11
  import type { PageConfigGlobalBuildTime, ConfigValueSource, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
12
- import { type ConfigDefinitions, type ConfigDefinitionInternal } from './getVikeConfig/configDefinitionsBuiltIn.js';
12
+ import { type ConfigDefinitionsInternal, type ConfigDefinitionInternal } from './getVikeConfig/configDefinitionsBuiltIn.js';
13
13
  import type { ResolvedConfig, UserConfig } from 'vite';
14
14
  import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from '../../../../../shared/page-configs/getUserFriendlyConfigs.js';
15
15
  import { type PlusFile } from './getVikeConfig/getPlusFilesAll.js';
@@ -34,7 +34,7 @@ declare function getVikeConfigFromCliOrEnv(): {
34
34
  configFromCliOptions: import("../../../../cli/parseCli.js").CliOptions | null;
35
35
  configFromEnvVar: Record<string, unknown> | null;
36
36
  };
37
- declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
37
+ declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitionsInternal, configName: string): ConfigDefinitionInternal | null;
38
38
  declare function getConfVal(plusFile: PlusFile, configName: string): null | {
39
39
  value: unknown;
40
40
  valueIsLoaded: true;
@@ -703,6 +703,8 @@ function getConfigDefinitions(plusFilesRelevant, filter) {
703
703
  assertMetaUsage(meta, `Config ${pc.cyan('meta')} defined at ${plusFile.filePath.filePathToShowToUser}`);
704
704
  // Set configDef._userEffectDefinedAtFilePath
705
705
  Object.entries(meta).forEach(([configName, configDef]) => {
706
+ if ('isDefinedByPeerDependency' in configDef)
707
+ return;
706
708
  if (!configDef.effect)
707
709
  return;
708
710
  assert(plusFile.isConfigFile);
@@ -712,6 +714,12 @@ function getConfigDefinitions(plusFilesRelevant, filter) {
712
714
  };
713
715
  });
714
716
  objectEntries(meta).forEach(([configName, configDefinitionUserLand]) => {
717
+ if ('isDefinedByPeerDependency' in configDefinitionUserLand) {
718
+ configDefinitionUserLand = {
719
+ env: { client: false, server: false, config: false },
720
+ ...configDefinitionUserLand
721
+ };
722
+ }
715
723
  // User can override an existing config definition
716
724
  configDefinitions[configName] = {
717
725
  ...configDefinitions[configName],
@@ -734,6 +742,8 @@ function assertMetaUsage(metaVal, metaConfigDefinedAt) {
734
742
  assert(metaConfigDefinedAt); // We expect internal effects to return a valid meta value
735
743
  assertUsage(false, `${metaConfigDefinedAt} sets ${pc.cyan(`meta.${configName}`)} to a value with an invalid type ${pc.cyan(typeof def)}: it should be an object instead.`);
736
744
  }
745
+ if (def.isDefinedByPeerDependency)
746
+ return;
737
747
  // env
738
748
  let configEnv;
739
749
  {
@@ -844,6 +854,7 @@ function applyEffectMetaEnv(configModFromEffect, configValueSources, configDefEf
844
854
  }
845
855
  assertMetaUsage(configValue, configDefinedAt);
846
856
  objectEntries(configValue).forEach(([configTargetName, configTargetDef]) => {
857
+ assert(!('isDefinedByPeerDependency' in configTargetDef));
847
858
  {
848
859
  const keys = Object.keys(configTargetDef);
849
860
  assertUsage(keys.includes('env'), notSupported);
@@ -23,7 +23,7 @@ export type { DefinedAtFilePath };
23
23
  import type { ConfigValueSerialized } from './serialize/PageConfigSerialized.js';
24
24
  import type { LocationId } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js';
25
25
  import type { FilePath } from './FilePath.js';
26
- import type { ConfigDefinitions } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
26
+ import type { ConfigDefinitionsInternal } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
27
27
  import type { PlusFile } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js';
28
28
  import type { Operation } from '../../node/api/types.js';
29
29
  type PageConfigCommon = {
@@ -51,7 +51,7 @@ type PageConfigGlobalRuntime = {
51
51
  };
52
52
  /** Page config, build-time data structure */
53
53
  type PageConfigBuildTime = PageConfigCommon & {
54
- configDefinitions: ConfigDefinitions;
54
+ configDefinitions: ConfigDefinitionsInternal;
55
55
  plusFiles: PlusFile[];
56
56
  configValueSources: ConfigValueSources;
57
57
  configValuesComputed: ConfigValuesComputed;
@@ -59,7 +59,7 @@ type PageConfigBuildTime = PageConfigCommon & {
59
59
  /** Global config that applies to all pages, build-time data structure */
60
60
  type PageConfigGlobalBuildTime = {
61
61
  configValueSources: ConfigValueSources;
62
- configDefinitions: ConfigDefinitions;
62
+ configDefinitions: ConfigDefinitionsInternal;
63
63
  configValuesComputed?: undefined;
64
64
  };
65
65
  /** Same as PageConfigRuntime but also contains all lazily loaded config values such as config.Page */
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.230-commit-eea72b2";
1
+ export declare const PROJECT_VERSION: "0.4.230-commit-f07cc20";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.230-commit-eea72b2';
2
+ export const PROJECT_VERSION = '0.4.230-commit-f07cc20';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.230-commit-eea72b2",
3
+ "version": "0.4.230-commit-f07cc20",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {