vike 0.4.218-commit-01a099d → 0.4.218-commit-ed9b3d4

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 (42) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/node/api/build.js +1 -1
  3. package/dist/cjs/node/api/context.js +5 -1
  4. package/dist/cjs/node/api/prepareViteApiCall.js +23 -4
  5. package/dist/cjs/node/cli/entry.js +2 -0
  6. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +1 -1
  7. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +2 -2
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +1 -0
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -3
  10. package/dist/cjs/node/prerender/runPrerender.js +1 -23
  11. package/dist/cjs/node/runtime/globalContext.js +36 -12
  12. package/dist/cjs/node/runtime/utils.js +1 -0
  13. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  14. package/dist/cjs/utils/debug.js +11 -6
  15. package/dist/cjs/utils/objectReplace.js +9 -0
  16. package/dist/esm/__internal/index.d.ts +1 -1
  17. package/dist/esm/__internal/index.js +1 -1
  18. package/dist/esm/node/api/build.js +1 -1
  19. package/dist/esm/node/api/context.d.ts +3 -1
  20. package/dist/esm/node/api/context.js +6 -2
  21. package/dist/esm/node/api/prepareViteApiCall.js +26 -7
  22. package/dist/esm/node/cli/entry.js +2 -0
  23. package/dist/esm/node/plugin/plugins/autoFullBuild.js +1 -1
  24. package/dist/esm/node/plugin/plugins/buildEntry/index.js +2 -2
  25. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +1 -1
  26. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +1 -0
  27. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -3
  28. package/dist/esm/node/prerender/runPrerender.d.ts +1 -1
  29. package/dist/esm/node/prerender/runPrerender.js +1 -23
  30. package/dist/esm/node/runtime/globalContext.d.ts +4 -2
  31. package/dist/esm/node/runtime/globalContext.js +37 -13
  32. package/dist/esm/node/runtime/utils.d.ts +1 -0
  33. package/dist/esm/node/runtime/utils.js +1 -0
  34. package/dist/esm/shared/page-configs/Config.d.ts +7 -1
  35. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  36. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  37. package/dist/esm/utils/debug.d.ts +1 -1
  38. package/dist/esm/utils/debug.js +11 -6
  39. package/dist/esm/utils/objectReplace.d.ts +1 -0
  40. package/dist/esm/utils/objectReplace.js +6 -0
  41. package/dist/esm/utils/projectInfo.d.ts +1 -1
  42. package/package.json +2 -2
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setBuildEntry = void 0;
3
+ exports.setGlobalContext_buildEntry = void 0;
4
4
  exports.route = route;
5
5
  exports.getPagesAndRoutes = getPagesAndRoutes;
6
6
  exports.getMiddlewares = getMiddlewares;
7
7
  // Internals needed by Vike
8
8
  var globalContext_js_1 = require("../node/runtime/globalContext.js");
9
- Object.defineProperty(exports, "setBuildEntry", { enumerable: true, get: function () { return globalContext_js_1.setBuildEntry; } });
9
+ Object.defineProperty(exports, "setGlobalContext_buildEntry", { enumerable: true, get: function () { return globalContext_js_1.setGlobalContext_buildEntry; } });
10
10
  const index_js_1 = require("../shared/route/index.js");
11
11
  const getPageFiles_js_1 = require("../shared/getPageFiles/getPageFiles.js");
12
12
  const globalContext_js_2 = require("../node/runtime/globalContext.js");
@@ -51,7 +51,7 @@ async function build(options = {}) {
51
51
  // Pre-render
52
52
  if ((0, isPrerenderEnabled_js_1.isPrerenderEnabled)(vikeConfigGlobal)) {
53
53
  const { runPrerenderFromAutoRun } = await Promise.resolve().then(() => __importStar(require('../prerender/runPrerender.js')));
54
- await runPrerenderFromAutoRun(viteConfigEnhanced, true);
54
+ await runPrerenderFromAutoRun(viteConfigEnhanced);
55
55
  }
56
56
  return {
57
57
  /* We don't return `viteConfig` because `viteConfigEnhanced` is `InlineConfig` not `ResolvedConfig`
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isVikeCliOrApi = isVikeCliOrApi;
4
3
  exports.setOperation = setOperation;
4
+ exports.clearOperation = clearOperation;
5
+ exports.isVikeCliOrApi = isVikeCliOrApi;
5
6
  const utils_js_1 = require("./utils.js");
6
7
  const globalObject = (0, utils_js_1.getGlobalObject)('context.ts', {
7
8
  apiOperation: undefined
@@ -18,3 +19,6 @@ function setOperation(operation) {
18
19
  (0, utils_js_1.assert)(!globalObject.apiOperation);
19
20
  globalObject.apiOperation = operation;
20
21
  }
22
+ function clearOperation() {
23
+ globalObject.apiOperation = undefined;
24
+ }
@@ -47,20 +47,39 @@ const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/g
47
47
  const path_1 = __importDefault(require("path"));
48
48
  const utils_js_1 = require("./utils.js");
49
49
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
50
+ const globalContext_js_1 = require("../runtime/globalContext.js");
50
51
  const globalObject = (0, utils_js_1.getGlobalObject)('prepareViteApiCall.ts', {});
51
52
  async function prepareViteApiCall(viteConfig, operation) {
53
+ clear();
52
54
  (0, context_js_1.setOperation)(operation);
53
55
  return enhanceViteConfig(viteConfig, operation);
54
56
  }
57
+ // For subsequent API calls, e.g. calling prerender() after build()
58
+ function clear() {
59
+ (0, context_js_1.clearOperation)();
60
+ (0, globalContext_js_1.clearGlobalContext)();
61
+ }
55
62
  async function enhanceViteConfig(viteConfig, operation) {
56
- const { root, vikeVitePluginOptions, viteConfigEnhanced } = await getInfoFromVite(viteConfig, operation);
57
- await assertViteRoot2(root, viteConfigEnhanced, operation);
58
- const { vikeConfigGlobal } = await (0, getVikeConfig_js_1.getVikeConfig2)(root, operation === 'dev', vikeVitePluginOptions);
63
+ const viteInfo = await getInfoFromVite(viteConfig, operation);
64
+ await assertViteRoot2(viteInfo.root, viteInfo.viteConfigEnhanced, operation);
65
+ const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig2)(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
66
+ const viteConfigEnhanced = addViteSettingsSetByUser(viteInfo.viteConfigEnhanced, vikeConfig);
59
67
  return {
60
68
  viteConfigEnhanced,
61
- vikeConfigGlobal
69
+ vikeConfigGlobal: vikeConfig.vikeConfigGlobal
62
70
  };
63
71
  }
72
+ function addViteSettingsSetByUser(viteConfigEnhanced, vikeConfig) {
73
+ const { global } = vikeConfig.vikeConfigNew;
74
+ const viteConfigs = global.from.configsCumulative.vite;
75
+ if (!viteConfigs)
76
+ return viteConfigEnhanced;
77
+ viteConfigs.values.forEach((v) => {
78
+ (0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(v.value), `${v.definedAt} should be an object`);
79
+ viteConfigEnhanced = (0, vite_1.mergeConfig)(v.value, viteConfigEnhanced ?? {});
80
+ });
81
+ return viteConfigEnhanced;
82
+ }
64
83
  async function getViteRoot(operation) {
65
84
  if (!globalObject.root)
66
85
  await getInfoFromVite(undefined, operation);
@@ -87,6 +87,8 @@ async function cmdBuild() {
87
87
  console.error(err);
88
88
  process.exit(1);
89
89
  }
90
+ // See comments at runPrerender_forceExit()
91
+ process.exit(0);
90
92
  }
91
93
  async function cmdPreview() {
92
94
  try {
@@ -97,7 +97,7 @@ async function triggerFullBuild(config, vikeConfigGlobal, bundle) {
97
97
  process.exit(1);
98
98
  }
99
99
  if ((0, isPrerenderEnabled_js_1.isPrerenderEnabled)(vikeConfigGlobal)) {
100
- await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline, false);
100
+ await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline);
101
101
  forceExit = true;
102
102
  }
103
103
  }
@@ -43,13 +43,13 @@ function getServerProductionEntryCode(config, vikeConfigGlobal) {
43
43
  const vikeManifest = (0, getVikeManifest_js_1.getVikeManifest)(vikeConfigGlobal, config);
44
44
  // Let's eventually simplify and move everything to a single virtual module
45
45
  const importerCode = [
46
- ` import { setBuildEntry } from '${importPath}';`,
46
+ ` import { setGlobalContext_buildEntry } from '${importPath}';`,
47
47
  ` import * as pageFiles from '${virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer}';`,
48
48
  ` {`,
49
49
  // We first set the values to a variable because of a Rollup bug, and this workaround doesn't work: https://github.com/vikejs/vike/commit/d5f3a4f7aae5a8bc44192e6cbb2bcb9007be188d
50
50
  ` const assetsManifest = ${ASSETS_MAP};`,
51
51
  ` const pluginManifest = ${JSON.stringify(vikeManifest, null, 2)};`,
52
- ' setBuildEntry({',
52
+ ' setGlobalContext_buildEntry({',
53
53
  ` pageFiles,`,
54
54
  ` assetsManifest,`,
55
55
  ` pluginManifest,`,
@@ -146,6 +146,7 @@ const configDefinitionsBuiltInGlobal = {
146
146
  eager: true
147
147
  },
148
148
  prerender: { env: { config: true } },
149
+ vite: { env: { config: true }, cumulative: true },
149
150
  disableAutoFullBuild: { env: { config: true } },
150
151
  includeAssetsImportedByServer: { env: { config: true } },
151
152
  baseAssets: { env: { config: true } },
@@ -458,16 +458,14 @@ async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importe
458
458
  const configValueSource = sources[0];
459
459
  if (!configValueSource)
460
460
  return;
461
+ pageConfigGlobal.configValueSources[configName] = sources;
461
462
  if (configName === 'onBeforeRoute' || configName === 'onPrerenderStart') {
462
463
  (0, utils_js_1.assert)(!('value' in configValueSource));
463
- pageConfigGlobal.configValueSources[configName] = [configValueSource];
464
464
  }
465
465
  else {
466
466
  (0, utils_js_1.assert)('value' in configValueSource);
467
467
  if (configName === 'prerender' && typeof configValueSource.value === 'boolean')
468
468
  return;
469
- const { filePathToShowToUser } = configValueSource.definedAtFilePath;
470
- (0, utils_js_1.assertWarning)(false, `Being able to define config ${picocolors_1.default.cyan(configName)} in ${filePathToShowToUser} is experimental and will likely be removed. Define the config ${picocolors_1.default.cyan(configName)} in Vike's Vite plugin options instead.`, { onlyOnce: true });
471
469
  pageConfigGlobalValues[configName] = configValueSource.value;
472
470
  }
473
471
  }));
@@ -83,7 +83,7 @@ async function runPrerenderFromCLIPrerenderCommand() {
83
83
  }
84
84
  runPrerender_forceExit();
85
85
  }
86
- async function runPrerenderFromAutoRun(viteConfig, forceExit) {
86
+ async function runPrerenderFromAutoRun(viteConfig) {
87
87
  try {
88
88
  await runPrerender({ viteConfig });
89
89
  }
@@ -92,8 +92,6 @@ async function runPrerenderFromAutoRun(viteConfig, forceExit) {
92
92
  (0, logErrorHint_js_1.logErrorHint)(err);
93
93
  process.exit(1);
94
94
  }
95
- if (forceExit)
96
- runPrerender_forceExit();
97
95
  }
98
96
  async function runPrerender(options = {}, standaloneTrigger) {
99
97
  checkOutdatedOptions(options);
@@ -106,7 +104,6 @@ async function runPrerender(options = {}, standaloneTrigger) {
106
104
  }
107
105
  await disableReactStreaming();
108
106
  const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
109
- assertLoadedConfig(viteConfig, options);
110
107
  const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
111
108
  const { outDirClient } = (0, utils_js_1.getOutDirs)(viteConfig);
112
109
  const { root } = viteConfig;
@@ -709,25 +706,6 @@ async function disableReactStreaming() {
709
706
  const { disable } = mod;
710
707
  disable();
711
708
  }
712
- function assertLoadedConfig(viteConfig, options) {
713
- if (viteConfig.plugins.some((p) => p.name.startsWith('vike'))) {
714
- return;
715
- }
716
- const { configFile } = viteConfig;
717
- if (configFile) {
718
- (0, utils_js_1.assertUsage)(false, `${configFile} doesn't install the vike plugin`);
719
- }
720
- else {
721
- if (!options.viteConfig) {
722
- (0, utils_js_1.assertUsage)(false, `[prerender()] No vite.config.js file found at ${process.cwd()}. Use the option ${picocolors_1.default.cyan('prerender({ viteConfig })')}.`, { showStackTrace: true });
723
- }
724
- else {
725
- (0, utils_js_1.assertUsage)(false, `[prerender()] The Vite config ${picocolors_1.default.cyan('prerender({ viteConfig })')} is missing the vike plugin.`, {
726
- showStackTrace: true
727
- });
728
- }
729
- }
730
- }
731
709
  function isSameUrl(url1, url2) {
732
710
  return normalizeUrl(url1) === normalizeUrl(url2);
733
711
  }
@@ -17,7 +17,8 @@ exports.setGlobalContext_viteConfig = setGlobalContext_viteConfig;
17
17
  exports.setGlobalContext_vikeConfig = setGlobalContext_vikeConfig;
18
18
  exports.setGlobalContext_isViteDev = setGlobalContext_isViteDev;
19
19
  exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
20
- exports.setBuildEntry = setBuildEntry;
20
+ exports.setGlobalContext_buildEntry = setGlobalContext_buildEntry;
21
+ exports.clearGlobalContext = clearGlobalContext;
21
22
  const utils_js_1 = require("./utils.js");
22
23
  const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
23
24
  const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
@@ -26,16 +27,14 @@ const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
26
27
  const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
27
28
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
28
29
  const resolveBase_js_1 = require("../shared/resolveBase.js");
29
- const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', (() => {
30
- const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
31
- return {
32
- viteDevServerPromise,
33
- viteDevServerPromiseResolve
34
- };
35
- })());
30
+ const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
31
+ const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', getInitialGlobalContext());
36
32
  initDevEntry();
37
33
  function getGlobalContext() {
38
- (0, utils_js_1.assert)(globalObject.globalContext);
34
+ if (!globalObject.globalContext) {
35
+ debug('getGlobalContext()', new Error().stack);
36
+ (0, utils_js_1.assert)(false);
37
+ }
39
38
  return globalObject.globalContext;
40
39
  }
41
40
  /** @experimental https://vike.dev/getGlobalContext */
@@ -114,9 +113,11 @@ function getViteConfig() {
114
113
  return globalObject.viteConfig ?? null;
115
114
  }
116
115
  async function initGlobalContext_renderPage() {
116
+ debug('initGlobalContext_renderPage()');
117
117
  await initGlobalContext(!globalObject.isViteDev);
118
118
  }
119
119
  async function initGlobalContext_runPrerender() {
120
+ debug('initGlobalContext_runPrerender()');
120
121
  if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
121
122
  return;
122
123
  globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
@@ -130,6 +131,7 @@ async function initGlobalContext_runPrerender() {
130
131
  await initGlobalContext(true);
131
132
  }
132
133
  async function initGlobalContext_getGlobalContextAsync(isProduction) {
134
+ debug('initGlobalContext_getGlobalContextAsync()');
133
135
  if (!isProduction) {
134
136
  const waitFor = 20;
135
137
  const timeout = setTimeout(() => {
@@ -241,18 +243,28 @@ function eagerlyLoadUserFiles() {
241
243
  getPageFilesExports();
242
244
  }
243
245
  async function getBuildEntry(outDir) {
246
+ debug('getBuildEntry()');
244
247
  if (!globalObject.buildEntry) {
248
+ debug('importServerProductionEntry()');
245
249
  await (0, runtime_1.importServerProductionEntry)({ outDir });
250
+ if (!globalObject.buildEntry) {
251
+ debug('globalObject.buildEntryPrevious');
252
+ // Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
253
+ globalObject.buildEntry = globalObject.buildEntryPrevious;
254
+ }
246
255
  (0, utils_js_1.assert)(globalObject.buildEntry);
247
256
  }
248
- return globalObject.buildEntry;
249
- }
250
- function setBuildEntry(buildEntry) {
257
+ const { buildEntry } = globalObject;
251
258
  (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
252
259
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
253
260
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
254
261
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pluginManifest', 'object'));
262
+ return buildEntry;
263
+ }
264
+ function setGlobalContext_buildEntry(buildEntry) {
265
+ debug('setGlobalContext_buildEntry()');
255
266
  globalObject.buildEntry = buildEntry;
267
+ globalObject.buildEntryPrevious = buildEntry;
256
268
  }
257
269
  function initDevEntry() {
258
270
  (0, getPageFiles_js_1.setPageFilesAsync)(getPageFilesExports);
@@ -273,3 +285,15 @@ async function getPageFilesExports() {
273
285
  (0, utils_js_1.assert)((0, utils_js_1.isObject)(moduleExports));
274
286
  return moduleExports;
275
287
  }
288
+ function clearGlobalContext() {
289
+ debug('clearGlobalContext()');
290
+ (0, utils_js_1.objectReplace)(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
291
+ }
292
+ function getInitialGlobalContext() {
293
+ debug('getInitialGlobalContext()');
294
+ const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
295
+ return {
296
+ viteDevServerPromise,
297
+ viteDevServerPromiseResolve
298
+ };
299
+ }
@@ -35,6 +35,7 @@ __exportStar(require("../../utils/projectInfo.js"), exports);
35
35
  __exportStar(require("../../utils/isArray.js"), exports);
36
36
  __exportStar(require("../../utils/isObject.js"), exports);
37
37
  __exportStar(require("../../utils/objectAssign.js"), exports);
38
+ __exportStar(require("../../utils/objectReplace.js"), exports);
38
39
  __exportStar(require("../../utils/PromiseType.js"), exports);
39
40
  __exportStar(require("../../utils/compareString.js"), exports);
40
41
  __exportStar(require("../../utils/isObjectWithKeys.js"), exports);
@@ -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.218-commit-01a099d';
5
+ exports.PROJECT_VERSION = '0.4.218-commit-ed9b3d4';
@@ -21,6 +21,7 @@ const flags = [
21
21
  'vike:extractAssets',
22
22
  'vike:extractExportNames',
23
23
  'vike:glob',
24
+ 'vike:globalContext',
24
25
  'vike:log',
25
26
  'vike:optimizeDeps',
26
27
  'vike:outDir',
@@ -33,7 +34,7 @@ const flags = [
33
34
  'vike:esbuild-resolve'
34
35
  ];
35
36
  const flagRegex = /\bvike:[a-zA-Z-]+/g;
36
- assertDEBUG();
37
+ assertFlagsActivated();
37
38
  function createDebugger(flag, optionsGlobal) {
38
39
  (0, checkType_js_1.checkType)(flag);
39
40
  (0, assert_js_1.assert)(flags.includes(flag));
@@ -76,8 +77,8 @@ function debug_(flag, options, ...msgs) {
76
77
  function isDebugActivated(flag) {
77
78
  (0, checkType_js_1.checkType)(flag);
78
79
  (0, assert_js_1.assert)(flags.includes(flag));
79
- const DEBUG = getDEBUG();
80
- const isActivated = DEBUG?.includes(flag) ?? false;
80
+ const flagsActivated = getFlagsActivated();
81
+ const isActivated = flagsActivated.includes(flag);
81
82
  return isActivated;
82
83
  }
83
84
  function formatMsg(info, options, padding, position) {
@@ -140,13 +141,17 @@ function replaceFunctionSerializer(_key, value) {
140
141
  }
141
142
  return value;
142
143
  }
143
- function assertDEBUG() {
144
- const DEBUG = getDEBUG() ?? '';
145
- const flagsActivated = DEBUG.match(flagRegex) ?? [];
144
+ function assertFlagsActivated() {
145
+ const flagsActivated = getFlagsActivated();
146
146
  flagsActivated.forEach((flag) => {
147
147
  (0, assert_js_1.assertUsage)(flags.includes(flag), `Unknown DEBUG flag ${picocolors_1.default.cyan(flag)}. Valid flags:\n${flags.map((f) => ` ${picocolors_1.default.cyan(f)}`).join('\n')}`);
148
148
  });
149
149
  }
150
+ function getFlagsActivated() {
151
+ const DEBUG = getDEBUG() ?? '';
152
+ const flagsActivated = DEBUG.match(flagRegex) ?? [];
153
+ return flagsActivated;
154
+ }
150
155
  function getDEBUG() {
151
156
  let DEBUG;
152
157
  // - `process` can be undefined in edge workers
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectReplace = objectReplace;
4
+ function objectReplace(obj, objNew, except) {
5
+ Object.keys(obj)
6
+ .filter((key) => !except?.includes(key))
7
+ .forEach((key) => delete obj[key]);
8
+ Object.assign(obj, objNew);
9
+ }
@@ -1,4 +1,4 @@
1
- export { setBuildEntry } from '../node/runtime/globalContext.js';
1
+ export { setGlobalContext_buildEntry } from '../node/runtime/globalContext.js';
2
2
  export { route, getPagesAndRoutes };
3
3
  export type { PageRoutes, PageFile, PageConfigRuntime as PageConfig };
4
4
  export { getMiddlewares };
@@ -1,5 +1,5 @@
1
1
  // Internals needed by Vike
2
- export { setBuildEntry } from '../node/runtime/globalContext.js';
2
+ export { setGlobalContext_buildEntry } from '../node/runtime/globalContext.js';
3
3
  // Internals needed by vite-plugin-vercel
4
4
  export { route, getPagesAndRoutes };
5
5
  // Internals needed by experimental implementation of vike-telefunc
@@ -16,7 +16,7 @@ async function build(options = {}) {
16
16
  // Pre-render
17
17
  if (isPrerenderEnabled(vikeConfigGlobal)) {
18
18
  const { runPrerenderFromAutoRun } = await import('../prerender/runPrerender.js');
19
- await runPrerenderFromAutoRun(viteConfigEnhanced, true);
19
+ await runPrerenderFromAutoRun(viteConfigEnhanced);
20
20
  }
21
21
  return {
22
22
  /* We don't return `viteConfig` because `viteConfigEnhanced` is `InlineConfig` not `ResolvedConfig`
@@ -1,5 +1,7 @@
1
+ export { setOperation };
2
+ export { clearOperation };
1
3
  export { isVikeCliOrApi };
2
- export { setOperation as setOperation };
3
4
  import type { Operation } from './types.js';
4
5
  declare function isVikeCliOrApi(): boolean;
5
6
  declare function setOperation(operation: Operation): void;
7
+ declare function clearOperation(): void;
@@ -1,6 +1,7 @@
1
- export { isVikeCliOrApi };
2
1
  // export { getOperation }
3
- export { setOperation as setOperation };
2
+ export { setOperation };
3
+ export { clearOperation };
4
+ export { isVikeCliOrApi };
4
5
  import { assert, getGlobalObject } from './utils.js';
5
6
  const globalObject = getGlobalObject('context.ts', {
6
7
  apiOperation: undefined
@@ -17,3 +18,6 @@ function setOperation(operation) {
17
18
  assert(!globalObject.apiOperation);
18
19
  globalObject.apiOperation = operation;
19
20
  }
21
+ function clearOperation() {
22
+ globalObject.apiOperation = undefined;
23
+ }
@@ -3,26 +3,45 @@ export { getViteRoot };
3
3
  export { assertViteRoot };
4
4
  export { normalizeViteRoot };
5
5
  // TODO: enable Vike extensions to add Vite plugins
6
- import { loadConfigFromFile, resolveConfig } from 'vite';
7
- import { setOperation } from './context.js';
6
+ import { loadConfigFromFile, mergeConfig, resolveConfig } from 'vite';
7
+ import { clearOperation, setOperation } from './context.js';
8
8
  import { getVikeConfig2 } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
9
9
  import path from 'path';
10
- import { assert, assertUsage, getGlobalObject, toPosixPath } from './utils.js';
10
+ import { assert, assertUsage, getGlobalObject, isObject, toPosixPath } from './utils.js';
11
11
  import pc from '@brillout/picocolors';
12
+ import { clearGlobalContext } from '../runtime/globalContext.js';
12
13
  const globalObject = getGlobalObject('prepareViteApiCall.ts', {});
13
14
  async function prepareViteApiCall(viteConfig, operation) {
15
+ clear();
14
16
  setOperation(operation);
15
17
  return enhanceViteConfig(viteConfig, operation);
16
18
  }
19
+ // For subsequent API calls, e.g. calling prerender() after build()
20
+ function clear() {
21
+ clearOperation();
22
+ clearGlobalContext();
23
+ }
17
24
  async function enhanceViteConfig(viteConfig, operation) {
18
- const { root, vikeVitePluginOptions, viteConfigEnhanced } = await getInfoFromVite(viteConfig, operation);
19
- await assertViteRoot2(root, viteConfigEnhanced, operation);
20
- const { vikeConfigGlobal } = await getVikeConfig2(root, operation === 'dev', vikeVitePluginOptions);
25
+ const viteInfo = await getInfoFromVite(viteConfig, operation);
26
+ await assertViteRoot2(viteInfo.root, viteInfo.viteConfigEnhanced, operation);
27
+ const vikeConfig = await getVikeConfig2(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
28
+ const viteConfigEnhanced = addViteSettingsSetByUser(viteInfo.viteConfigEnhanced, vikeConfig);
21
29
  return {
22
30
  viteConfigEnhanced,
23
- vikeConfigGlobal
31
+ vikeConfigGlobal: vikeConfig.vikeConfigGlobal
24
32
  };
25
33
  }
34
+ function addViteSettingsSetByUser(viteConfigEnhanced, vikeConfig) {
35
+ const { global } = vikeConfig.vikeConfigNew;
36
+ const viteConfigs = global.from.configsCumulative.vite;
37
+ if (!viteConfigs)
38
+ return viteConfigEnhanced;
39
+ viteConfigs.values.forEach((v) => {
40
+ assertUsage(isObject(v.value), `${v.definedAt} should be an object`);
41
+ viteConfigEnhanced = mergeConfig(v.value, viteConfigEnhanced ?? {});
42
+ });
43
+ return viteConfigEnhanced;
44
+ }
26
45
  async function getViteRoot(operation) {
27
46
  if (!globalObject.root)
28
47
  await getInfoFromVite(undefined, operation);
@@ -49,6 +49,8 @@ async function cmdBuild() {
49
49
  console.error(err);
50
50
  process.exit(1);
51
51
  }
52
+ // See comments at runPrerender_forceExit()
53
+ process.exit(0);
52
54
  }
53
55
  async function cmdPreview() {
54
56
  try {
@@ -92,7 +92,7 @@ async function triggerFullBuild(config, vikeConfigGlobal, bundle) {
92
92
  process.exit(1);
93
93
  }
94
94
  if (isPrerenderEnabled(vikeConfigGlobal)) {
95
- await runPrerenderFromAutoRun(configInline, false);
95
+ await runPrerenderFromAutoRun(configInline);
96
96
  forceExit = true;
97
97
  }
98
98
  }
@@ -38,13 +38,13 @@ function getServerProductionEntryCode(config, vikeConfigGlobal) {
38
38
  const vikeManifest = getVikeManifest(vikeConfigGlobal, config);
39
39
  // Let's eventually simplify and move everything to a single virtual module
40
40
  const importerCode = [
41
- ` import { setBuildEntry } from '${importPath}';`,
41
+ ` import { setGlobalContext_buildEntry } from '${importPath}';`,
42
42
  ` import * as pageFiles from '${virtualFileIdImportUserCodeServer}';`,
43
43
  ` {`,
44
44
  // We first set the values to a variable because of a Rollup bug, and this workaround doesn't work: https://github.com/vikejs/vike/commit/d5f3a4f7aae5a8bc44192e6cbb2bcb9007be188d
45
45
  ` const assetsManifest = ${ASSETS_MAP};`,
46
46
  ` const pluginManifest = ${JSON.stringify(vikeManifest, null, 2)};`,
47
- ' setBuildEntry({',
47
+ ' setGlobalContext_buildEntry({',
48
48
  ` pageFiles,`,
49
49
  ` assetsManifest,`,
50
50
  ` pluginManifest,`,
@@ -76,5 +76,5 @@ type ConfigDefinitions = Record<string, // configName
76
76
  ConfigDefinitionInternal>;
77
77
  type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn, ConfigDefinitionInternal>;
78
78
  declare const configDefinitionsBuiltIn: ConfigDefinitionsBuiltIn;
79
- type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization';
79
+ type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
80
80
  declare const configDefinitionsBuiltInGlobal: Record<ConfigNameGlobal, ConfigDefinitionInternal>;
@@ -144,6 +144,7 @@ const configDefinitionsBuiltInGlobal = {
144
144
  eager: true
145
145
  },
146
146
  prerender: { env: { config: true } },
147
+ vite: { env: { config: true }, cumulative: true },
147
148
  disableAutoFullBuild: { env: { config: true } },
148
149
  includeAssetsImportedByServer: { env: { config: true } },
149
150
  baseAssets: { env: { config: true } },
@@ -452,16 +452,14 @@ async function getGlobalConfigs(interfaceFilesByLocationId, userRootDir, importe
452
452
  const configValueSource = sources[0];
453
453
  if (!configValueSource)
454
454
  return;
455
+ pageConfigGlobal.configValueSources[configName] = sources;
455
456
  if (configName === 'onBeforeRoute' || configName === 'onPrerenderStart') {
456
457
  assert(!('value' in configValueSource));
457
- pageConfigGlobal.configValueSources[configName] = [configValueSource];
458
458
  }
459
459
  else {
460
460
  assert('value' in configValueSource);
461
461
  if (configName === 'prerender' && typeof configValueSource.value === 'boolean')
462
462
  return;
463
- const { filePathToShowToUser } = configValueSource.definedAtFilePath;
464
- assertWarning(false, `Being able to define config ${pc.cyan(configName)} in ${filePathToShowToUser} is experimental and will likely be removed. Define the config ${pc.cyan(configName)} in Vike's Vite plugin options instead.`, { onlyOnce: true });
465
463
  pageConfigGlobalValues[configName] = configValueSource.value;
466
464
  }
467
465
  }));
@@ -29,5 +29,5 @@ declare function runPrerenderFromAPI(options?: PrerenderOptions): Promise<{
29
29
  viteConfig: ResolvedConfig;
30
30
  }>;
31
31
  declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
32
- declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined, forceExit: boolean): Promise<void>;
32
+ declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined): Promise<void>;
33
33
  declare function runPrerender_forceExit(): void;
@@ -45,7 +45,7 @@ async function runPrerenderFromCLIPrerenderCommand() {
45
45
  }
46
46
  runPrerender_forceExit();
47
47
  }
48
- async function runPrerenderFromAutoRun(viteConfig, forceExit) {
48
+ async function runPrerenderFromAutoRun(viteConfig) {
49
49
  try {
50
50
  await runPrerender({ viteConfig });
51
51
  }
@@ -54,8 +54,6 @@ async function runPrerenderFromAutoRun(viteConfig, forceExit) {
54
54
  logErrorHint(err);
55
55
  process.exit(1);
56
56
  }
57
- if (forceExit)
58
- runPrerender_forceExit();
59
57
  }
60
58
  async function runPrerender(options = {}, standaloneTrigger) {
61
59
  checkOutdatedOptions(options);
@@ -68,7 +66,6 @@ async function runPrerender(options = {}, standaloneTrigger) {
68
66
  }
69
67
  await disableReactStreaming();
70
68
  const viteConfig = await resolveConfig(options.viteConfig || {}, 'build', 'production');
71
- assertLoadedConfig(viteConfig, options);
72
69
  const vikeConfig = await getVikeConfig(viteConfig);
73
70
  const { outDirClient } = getOutDirs(viteConfig);
74
71
  const { root } = viteConfig;
@@ -671,25 +668,6 @@ async function disableReactStreaming() {
671
668
  const { disable } = mod;
672
669
  disable();
673
670
  }
674
- function assertLoadedConfig(viteConfig, options) {
675
- if (viteConfig.plugins.some((p) => p.name.startsWith('vike'))) {
676
- return;
677
- }
678
- const { configFile } = viteConfig;
679
- if (configFile) {
680
- assertUsage(false, `${configFile} doesn't install the vike plugin`);
681
- }
682
- else {
683
- if (!options.viteConfig) {
684
- assertUsage(false, `[prerender()] No vite.config.js file found at ${process.cwd()}. Use the option ${pc.cyan('prerender({ viteConfig })')}.`, { showStackTrace: true });
685
- }
686
- else {
687
- assertUsage(false, `[prerender()] The Vite config ${pc.cyan('prerender({ viteConfig })')} is missing the vike plugin.`, {
688
- showStackTrace: true
689
- });
690
- }
691
- }
692
- }
693
671
  function isSameUrl(url1, url2) {
694
672
  return normalizeUrl(url1) === normalizeUrl(url2);
695
673
  }
@@ -12,7 +12,8 @@ export { setGlobalContext_viteConfig };
12
12
  export { setGlobalContext_vikeConfig };
13
13
  export { setGlobalContext_isViteDev };
14
14
  export { setGlobalContext_isPrerendering };
15
- export { setBuildEntry };
15
+ export { setGlobalContext_buildEntry };
16
+ export { clearGlobalContext };
16
17
  import type { ViteManifest } from '../shared/ViteManifest.js';
17
18
  import type { ResolvedConfig, ViteDevServer } from 'vite';
18
19
  import type { VikeConfigGlobal } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
@@ -63,4 +64,5 @@ declare function initGlobalContext_renderPage(): Promise<void>;
63
64
  declare function initGlobalContext_runPrerender(): Promise<void>;
64
65
  declare function initGlobalContext_getGlobalContextAsync(isProduction: boolean): Promise<void>;
65
66
  declare function getRuntimeManifest(vikeConfigGlobal: VikeConfigGlobal, viteConfig: ResolvedConfig): RuntimeManifest;
66
- declare function setBuildEntry(buildEntry: unknown): void;
67
+ declare function setGlobalContext_buildEntry(buildEntry: unknown): void;
68
+ declare function clearGlobalContext(): void;
@@ -14,8 +14,9 @@ export { setGlobalContext_viteConfig };
14
14
  export { setGlobalContext_vikeConfig };
15
15
  export { setGlobalContext_isViteDev };
16
16
  export { setGlobalContext_isPrerendering };
17
- export { setBuildEntry };
18
- import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectKeys, isObject, hasProp, debugGlob, getGlobalObject, genPromise } from './utils.js';
17
+ export { setGlobalContext_buildEntry };
18
+ export { clearGlobalContext };
19
+ import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, objectKeys, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger } from './utils.js';
19
20
  import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
20
21
  import { virtualFileIdImportUserCodeServer } from '../shared/virtual-files/virtualFileImportUserCode.js';
21
22
  import { setPageFiles, setPageFilesAsync } from '../../shared/getPageFiles/getPageFiles.js';
@@ -23,16 +24,14 @@ import { assertPluginManifest } from '../shared/assertPluginManifest.js';
23
24
  import { assertRuntimeManifest } from '../shared/assertRuntimeManifest.js';
24
25
  import pc from '@brillout/picocolors';
25
26
  import { resolveBaseFromResolvedConfig } from '../shared/resolveBase.js';
26
- const globalObject = getGlobalObject('globalContext.ts', (() => {
27
- const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
28
- return {
29
- viteDevServerPromise,
30
- viteDevServerPromiseResolve
31
- };
32
- })());
27
+ const debug = createDebugger('vike:globalContext');
28
+ const globalObject = getGlobalObject('globalContext.ts', getInitialGlobalContext());
33
29
  initDevEntry();
34
30
  function getGlobalContext() {
35
- assert(globalObject.globalContext);
31
+ if (!globalObject.globalContext) {
32
+ debug('getGlobalContext()', new Error().stack);
33
+ assert(false);
34
+ }
36
35
  return globalObject.globalContext;
37
36
  }
38
37
  /** @experimental https://vike.dev/getGlobalContext */
@@ -111,9 +110,11 @@ function getViteConfig() {
111
110
  return globalObject.viteConfig ?? null;
112
111
  }
113
112
  async function initGlobalContext_renderPage() {
113
+ debug('initGlobalContext_renderPage()');
114
114
  await initGlobalContext(!globalObject.isViteDev);
115
115
  }
116
116
  async function initGlobalContext_runPrerender() {
117
+ debug('initGlobalContext_runPrerender()');
117
118
  if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
118
119
  return;
119
120
  globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
@@ -127,6 +128,7 @@ async function initGlobalContext_runPrerender() {
127
128
  await initGlobalContext(true);
128
129
  }
129
130
  async function initGlobalContext_getGlobalContextAsync(isProduction) {
131
+ debug('initGlobalContext_getGlobalContextAsync()');
130
132
  if (!isProduction) {
131
133
  const waitFor = 20;
132
134
  const timeout = setTimeout(() => {
@@ -238,18 +240,28 @@ function eagerlyLoadUserFiles() {
238
240
  getPageFilesExports();
239
241
  }
240
242
  async function getBuildEntry(outDir) {
243
+ debug('getBuildEntry()');
241
244
  if (!globalObject.buildEntry) {
245
+ debug('importServerProductionEntry()');
242
246
  await importServerProductionEntry({ outDir });
247
+ if (!globalObject.buildEntry) {
248
+ debug('globalObject.buildEntryPrevious');
249
+ // Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
250
+ globalObject.buildEntry = globalObject.buildEntryPrevious;
251
+ }
243
252
  assert(globalObject.buildEntry);
244
253
  }
245
- return globalObject.buildEntry;
246
- }
247
- function setBuildEntry(buildEntry) {
254
+ const { buildEntry } = globalObject;
248
255
  assert(isObject(buildEntry));
249
256
  assert(hasProp(buildEntry, 'pageFiles', 'object'));
250
257
  assert(hasProp(buildEntry, 'assetsManifest', 'object'));
251
258
  assert(hasProp(buildEntry, 'pluginManifest', 'object'));
259
+ return buildEntry;
260
+ }
261
+ function setGlobalContext_buildEntry(buildEntry) {
262
+ debug('setGlobalContext_buildEntry()');
252
263
  globalObject.buildEntry = buildEntry;
264
+ globalObject.buildEntryPrevious = buildEntry;
253
265
  }
254
266
  function initDevEntry() {
255
267
  setPageFilesAsync(getPageFilesExports);
@@ -270,3 +282,15 @@ async function getPageFilesExports() {
270
282
  assert(isObject(moduleExports));
271
283
  return moduleExports;
272
284
  }
285
+ function clearGlobalContext() {
286
+ debug('clearGlobalContext()');
287
+ objectReplace(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
288
+ }
289
+ function getInitialGlobalContext() {
290
+ debug('getInitialGlobalContext()');
291
+ const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
292
+ return {
293
+ viteDevServerPromise,
294
+ viteDevServerPromiseResolve
295
+ };
296
+ }
@@ -15,6 +15,7 @@ export * from '../../utils/projectInfo.js';
15
15
  export * from '../../utils/isArray.js';
16
16
  export * from '../../utils/isObject.js';
17
17
  export * from '../../utils/objectAssign.js';
18
+ export * from '../../utils/objectReplace.js';
18
19
  export * from '../../utils/PromiseType.js';
19
20
  export * from '../../utils/compareString.js';
20
21
  export * from '../../utils/isObjectWithKeys.js';
@@ -19,6 +19,7 @@ export * from '../../utils/projectInfo.js';
19
19
  export * from '../../utils/isArray.js';
20
20
  export * from '../../utils/isObject.js';
21
21
  export * from '../../utils/objectAssign.js';
22
+ export * from '../../utils/objectReplace.js';
22
23
  export * from '../../utils/PromiseType.js';
23
24
  export * from '../../utils/compareString.js';
24
25
  export * from '../../utils/isObjectWithKeys.js';
@@ -39,11 +39,12 @@ import type { VikeVitePluginOptions } from '../../node/plugin/plugins/importUser
39
39
  import type { Vike, VikePackages } from '../VikeNamespace.js';
40
40
  import type { HooksTimeoutProvidedByUser } from '../hooks/getHook.js';
41
41
  import type { PageContextClient, PageContextServer } from '../types.js';
42
+ import type { InlineConfig } from 'vite';
42
43
  type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
43
44
  type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
44
45
  type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart';
45
46
  type HookNameOldDesign = 'render' | 'prerender';
46
- type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
47
+ type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
47
48
  type Config = ConfigBuiltIn & Vike.Config & (VikePackages.ConfigVikeReact | VikePackages.ConfigVikeVue | VikePackages.ConfigVikeSolid | VikePackages.ConfigVikeSvelte | VikePackages.ConfigVikeAngular);
48
49
  /** Hook for fetching data.
49
50
  *
@@ -344,6 +345,11 @@ type ConfigBuiltIn = {
344
345
  * https://vike.dev/meta
345
346
  */
346
347
  meta?: ConfigMeta | ImportString;
348
+ /** Vite configuration.
349
+ *
350
+ * https://vite.dev/config/
351
+ */
352
+ vite?: InlineConfig;
347
353
  /**
348
354
  * @experimental DON'T USE: the API *will* have breaking changes upon any minor version release.
349
355
  *
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.218-commit-01a099d";
1
+ export declare const PROJECT_VERSION: "0.4.218-commit-ed9b3d4";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.218-commit-01a099d';
2
+ export const PROJECT_VERSION = '0.4.218-commit-ed9b3d4';
@@ -1,7 +1,7 @@
1
1
  export { createDebugger };
2
2
  export { isDebugActivated };
3
3
  export type { Debug };
4
- declare const flags: readonly ["vike:error", "vike:extractAssets", "vike:extractExportNames", "vike:glob", "vike:log", "vike:optimizeDeps", "vike:outDir", "vike:pageFiles", "vike:pointer-imports", "vike:routing", "vike:setup", "vike:stream", "vike:virtual-files", "vike:esbuild-resolve"];
4
+ declare const flags: readonly ["vike:error", "vike:extractAssets", "vike:extractExportNames", "vike:glob", "vike:globalContext", "vike:log", "vike:optimizeDeps", "vike:outDir", "vike:pageFiles", "vike:pointer-imports", "vike:routing", "vike:setup", "vike:stream", "vike:virtual-files", "vike:esbuild-resolve"];
5
5
  type Flag = (typeof flags)[number];
6
6
  type Debug = ReturnType<typeof createDebugger>;
7
7
  type Options = {
@@ -16,6 +16,7 @@ const flags = [
16
16
  'vike:extractAssets',
17
17
  'vike:extractExportNames',
18
18
  'vike:glob',
19
+ 'vike:globalContext',
19
20
  'vike:log',
20
21
  'vike:optimizeDeps',
21
22
  'vike:outDir',
@@ -28,7 +29,7 @@ const flags = [
28
29
  'vike:esbuild-resolve'
29
30
  ];
30
31
  const flagRegex = /\bvike:[a-zA-Z-]+/g;
31
- assertDEBUG();
32
+ assertFlagsActivated();
32
33
  function createDebugger(flag, optionsGlobal) {
33
34
  checkType(flag);
34
35
  assert(flags.includes(flag));
@@ -71,8 +72,8 @@ function debug_(flag, options, ...msgs) {
71
72
  function isDebugActivated(flag) {
72
73
  checkType(flag);
73
74
  assert(flags.includes(flag));
74
- const DEBUG = getDEBUG();
75
- const isActivated = DEBUG?.includes(flag) ?? false;
75
+ const flagsActivated = getFlagsActivated();
76
+ const isActivated = flagsActivated.includes(flag);
76
77
  return isActivated;
77
78
  }
78
79
  function formatMsg(info, options, padding, position) {
@@ -135,13 +136,17 @@ function replaceFunctionSerializer(_key, value) {
135
136
  }
136
137
  return value;
137
138
  }
138
- function assertDEBUG() {
139
- const DEBUG = getDEBUG() ?? '';
140
- const flagsActivated = DEBUG.match(flagRegex) ?? [];
139
+ function assertFlagsActivated() {
140
+ const flagsActivated = getFlagsActivated();
141
141
  flagsActivated.forEach((flag) => {
142
142
  assertUsage(flags.includes(flag), `Unknown DEBUG flag ${pc.cyan(flag)}. Valid flags:\n${flags.map((f) => ` ${pc.cyan(f)}`).join('\n')}`);
143
143
  });
144
144
  }
145
+ function getFlagsActivated() {
146
+ const DEBUG = getDEBUG() ?? '';
147
+ const flagsActivated = DEBUG.match(flagRegex) ?? [];
148
+ return flagsActivated;
149
+ }
145
150
  function getDEBUG() {
146
151
  let DEBUG;
147
152
  // - `process` can be undefined in edge workers
@@ -0,0 +1 @@
1
+ export declare function objectReplace(obj: object, objNew: object, except?: string[]): void;
@@ -0,0 +1,6 @@
1
+ export function objectReplace(obj, objNew, except) {
2
+ Object.keys(obj)
3
+ .filter((key) => !except?.includes(key))
4
+ .forEach((key) => delete obj[key]);
5
+ Object.assign(obj, objNew);
6
+ }
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.218-commit-01a099d";
3
+ projectVersion: "0.4.218-commit-ed9b3d4";
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.218-commit-01a099d",
3
+ "version": "0.4.218-commit-ed9b3d4",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -236,7 +236,7 @@
236
236
  "@types/resolve": "^1.20.6",
237
237
  "@types/semver": "^7.5.8",
238
238
  "@types/source-map-support": "^0.5.10",
239
- "react-streaming": "^0.3.44",
239
+ "react-streaming": "^0.3.47",
240
240
  "rimraf": "^5.0.5",
241
241
  "typescript": "^5.7.3",
242
242
  "vite": "^6.0.5"