vike 0.4.224 → 0.4.225-commit-37a36a5

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 (139) hide show
  1. package/dist/cjs/node/api/build.js +1 -1
  2. package/dist/cjs/node/api/context.js +4 -4
  3. package/dist/cjs/node/api/dev.js +1 -1
  4. package/dist/cjs/node/api/prepareViteApiCall.js +3 -2
  5. package/dist/cjs/node/api/prerender.js +1 -1
  6. package/dist/cjs/node/api/preview.js +1 -1
  7. package/dist/cjs/node/cli/context.js +5 -4
  8. package/dist/cjs/node/cli/entry.js +3 -3
  9. package/dist/cjs/node/cli/parseCli.js +43 -15
  10. package/dist/cjs/node/cli/utils.js +1 -1
  11. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
  12. package/dist/cjs/node/plugin/plugins/commonConfig.js +16 -5
  13. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
  14. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  15. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
  17. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
  18. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +138 -83
  19. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  20. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
  21. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  22. package/dist/cjs/node/plugin/shared/getEnvVarObject.js +9 -8
  23. package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +1 -1
  24. package/dist/cjs/node/prerender/context.js +1 -1
  25. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +33 -18
  26. package/dist/cjs/node/prerender/runPrerender.js +6 -8
  27. package/dist/cjs/node/prerender/utils.js +1 -1
  28. package/dist/cjs/node/runtime/globalContext.js +9 -5
  29. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
  30. package/dist/cjs/node/runtime/html/stream.js +7 -0
  31. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +14 -5
  32. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -4
  33. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +6 -1
  34. package/dist/cjs/node/runtime/renderPage.js +6 -10
  35. package/dist/cjs/node/runtime/utils.js +0 -1
  36. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +10 -8
  37. package/dist/cjs/node/shared/assertV1Design.js +2 -1
  38. package/dist/cjs/node/shared/utils.js +0 -1
  39. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +19 -2
  40. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +8 -5
  41. package/dist/cjs/shared/page-configs/helpers.js +1 -1
  42. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -5
  43. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -5
  44. package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
  45. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  46. package/dist/cjs/utils/assert.js +11 -4
  47. package/dist/cjs/utils/assertSingleInstance.js +11 -17
  48. package/dist/cjs/utils/debug.js +2 -1
  49. package/dist/cjs/utils/getRandomId.js +1 -1
  50. package/dist/cjs/utils/normalizeHeaders.js +1 -1
  51. package/dist/cjs/utils/parseUrl-extras.js +1 -0
  52. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +1 -1
  53. package/dist/esm/client/client-routing-runtime/createPageContext.js +2 -2
  54. package/dist/esm/node/api/build.js +1 -1
  55. package/dist/esm/node/api/context.d.ts +8 -2
  56. package/dist/esm/node/api/context.js +4 -4
  57. package/dist/esm/node/api/dev.js +1 -1
  58. package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -2
  59. package/dist/esm/node/api/prepareViteApiCall.js +3 -2
  60. package/dist/esm/node/api/prerender.js +1 -1
  61. package/dist/esm/node/api/preview.js +1 -1
  62. package/dist/esm/node/api/types.d.ts +7 -0
  63. package/dist/esm/node/cli/context.d.ts +4 -2
  64. package/dist/esm/node/cli/context.js +5 -4
  65. package/dist/esm/node/cli/entry.js +4 -4
  66. package/dist/esm/node/cli/parseCli.d.ts +3 -0
  67. package/dist/esm/node/cli/parseCli.js +44 -16
  68. package/dist/esm/node/cli/utils.d.ts +1 -1
  69. package/dist/esm/node/cli/utils.js +1 -1
  70. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +2 -2
  71. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
  72. package/dist/esm/node/plugin/plugins/commonConfig.js +16 -5
  73. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
  74. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  75. package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +3 -1
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +5 -2
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -2
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +140 -84
  82. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  83. package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
  84. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  85. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  86. package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +3 -1
  87. package/dist/esm/node/plugin/shared/getEnvVarObject.js +9 -8
  88. package/dist/esm/node/plugin/shared/loggerNotProd/log.js +2 -2
  89. package/dist/esm/node/prerender/context.js +1 -1
  90. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +2 -1
  91. package/dist/esm/node/prerender/resolvePrerenderConfig.js +34 -19
  92. package/dist/esm/node/prerender/runPrerender.js +7 -9
  93. package/dist/esm/node/prerender/utils.d.ts +1 -1
  94. package/dist/esm/node/prerender/utils.js +1 -1
  95. package/dist/esm/node/runtime/globalContext.d.ts +1 -1
  96. package/dist/esm/node/runtime/globalContext.js +10 -6
  97. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
  98. package/dist/esm/node/runtime/html/stream.js +7 -0
  99. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -3
  100. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +3 -1
  101. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +15 -6
  102. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +3 -1
  103. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -4
  104. package/dist/esm/node/runtime/renderPage/logErrorHint.js +6 -1
  105. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
  106. package/dist/esm/node/runtime/renderPage.js +7 -11
  107. package/dist/esm/node/runtime/utils.d.ts +0 -1
  108. package/dist/esm/node/runtime/utils.js +0 -1
  109. package/dist/esm/node/runtime-dev/createDevMiddleware.js +10 -8
  110. package/dist/esm/node/shared/assertV1Design.js +2 -1
  111. package/dist/esm/node/shared/utils.d.ts +0 -1
  112. package/dist/esm/node/shared/utils.js +0 -1
  113. package/dist/esm/shared/page-configs/Config.d.ts +19 -1
  114. package/dist/esm/shared/page-configs/PageConfig.d.ts +16 -5
  115. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +5 -3
  116. package/dist/esm/shared/page-configs/getConfigDefinedAt.js +20 -3
  117. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +8 -5
  118. package/dist/esm/shared/page-configs/helpers.js +1 -1
  119. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +1 -1
  120. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -5
  121. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +3 -3
  122. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -5
  123. package/dist/esm/shared/route/loadPageRoutes.js +2 -2
  124. package/dist/esm/shared/types.d.ts +5 -1
  125. package/dist/esm/types/index.d.ts +2 -0
  126. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  127. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  128. package/dist/esm/utils/assert.d.ts +2 -1
  129. package/dist/esm/utils/assert.js +11 -4
  130. package/dist/esm/utils/assertSingleInstance.js +11 -17
  131. package/dist/esm/utils/debug.js +2 -1
  132. package/dist/esm/utils/getRandomId.d.ts +1 -1
  133. package/dist/esm/utils/getRandomId.js +1 -1
  134. package/dist/esm/utils/normalizeHeaders.js +1 -1
  135. package/dist/esm/utils/parseUrl-extras.js +1 -0
  136. package/package.json +6 -3
  137. package/dist/cjs/utils/projectInfo.js +0 -8
  138. package/dist/esm/utils/projectInfo.d.ts +0 -4
  139. package/dist/esm/utils/projectInfo.js +0 -5
@@ -9,7 +9,7 @@ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
9
9
  const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('prerender/context.ts', {});
10
10
  function isPrerenderAutoRunEnabled(vikeConfig) {
11
11
  const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
12
- return (prerenderConfigGlobal.isEnabled &&
12
+ return (prerenderConfigGlobal.isPrerenderingEnabled &&
13
13
  !(prerenderConfigGlobal || {}).disableAutoRun &&
14
14
  !globalObject.isDisabled &&
15
15
  vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
@@ -4,28 +4,42 @@ exports.resolvePrerenderConfigGlobal = resolvePrerenderConfigGlobal;
4
4
  exports.resolvePrerenderConfigLocal = resolvePrerenderConfigLocal;
5
5
  const utils_js_1 = require("./utils.js");
6
6
  const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
7
+ // When setting +prerender to an object => it also enables pre-rendering
8
+ const defaultValueForObject = true;
7
9
  function resolvePrerenderConfigGlobal(vikeConfig) {
8
- const prerenderConfigs = vikeConfig.global.config.prerender;
9
- let prerenderConfigList = prerenderConfigs || [];
10
- // Needed because of backwards compatibility of `vike({prerender:true})` in `vite.config.js`; after we remove it we can remove this line.
11
- prerenderConfigList = prerenderConfigList.filter(isObject2);
12
- (0, utils_js_1.assert)(prerenderConfigList.every(isObject2)); // Help TS
10
+ const prerenderConfigs = vikeConfig.global.config.prerender || [];
11
+ const prerenderSettings = prerenderConfigs.filter(isObject2);
13
12
  const prerenderConfigGlobal = {
14
- partial: pickFirst(prerenderConfigList.map((c) => c.partial)) ?? false,
15
- noExtraDir: pickFirst(prerenderConfigList.map((c) => c.noExtraDir)) ?? false,
16
- parallel: pickFirst(prerenderConfigList.map((c) => c.parallel)) ?? true,
17
- disableAutoRun: pickFirst(prerenderConfigList.map((c) => c.disableAutoRun)) ?? false
13
+ partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
14
+ noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? false,
15
+ parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
16
+ disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
18
17
  };
19
- const prerenderConfigGlobalLocalValue = prerenderConfigList.map((c) => c.value).filter((v) => v !== null);
20
- const defaultLocalValue = pickFirst(prerenderConfigGlobalLocalValue) ??
21
- (prerenderConfigGlobalLocalValue.length > 0 ||
22
- // Backwards compatibility for with vike({ prerender: true }) in vite.config.js
23
- prerenderConfigs?.some((p) => p === true) ||
24
- false);
18
+ let defaultLocalValue = false;
19
+ {
20
+ const valueFirst = prerenderConfigs.filter((p) => !(0, utils_js_1.isObject)(p) || p.value !== null)[0];
21
+ if (valueFirst === true || ((0, utils_js_1.isObject)(valueFirst) && (valueFirst.value ?? defaultValueForObject))) {
22
+ defaultLocalValue = true;
23
+ }
24
+ }
25
+ // TODO/next-major: remove
26
+ // Backwards compatibility for `vike({prerender:true})` in vite.config.js
27
+ {
28
+ const valuesWithDefinedAt = vikeConfig.global._from.configsCumulative.prerender?.values ?? [];
29
+ if (valuesWithDefinedAt.some((v) => v.definedAt.includes('vite.config.js') && v.value)) {
30
+ defaultLocalValue = true;
31
+ }
32
+ }
25
33
  (0, utils_js_1.objectAssign)(prerenderConfigGlobal, {
26
34
  defaultLocalValue,
27
- isEnabled: defaultLocalValue || vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value)
35
+ isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
36
+ vikeConfig.pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
37
+ isPrerenderingEnabled: vikeConfig.pageConfigs.length > 0 &&
38
+ vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
28
39
  });
40
+ // TODO/next-major remove
41
+ if (vikeConfig.pageConfigs.length === 0 && defaultLocalValue)
42
+ prerenderConfigGlobal.isPrerenderingEnabled = true;
29
43
  return prerenderConfigGlobal;
30
44
  }
31
45
  function resolvePrerenderConfigLocal(pageConfig) {
@@ -35,13 +49,14 @@ function resolvePrerenderConfigLocal(pageConfig) {
35
49
  const values = configValue.value;
36
50
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
37
51
  const value = values[0];
52
+ // TODO/now I believe this assert() can fail
38
53
  (0, utils_js_1.assert)(typeof value === 'boolean');
39
54
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
40
55
  const prerenderConfigLocal = { value };
41
56
  return prerenderConfigLocal;
42
57
  }
43
- function isObject2(p) {
44
- return typeof p === 'object' && p !== null;
58
+ function isObject2(value) {
59
+ return typeof value === 'object' && value !== null;
45
60
  }
46
61
  function pickFirst(arr) {
47
62
  return arr.filter((v) => v !== undefined)[0];
@@ -76,7 +76,7 @@ async function runPrerenderFromAPI(options = {}) {
76
76
  }
77
77
  async function runPrerenderFromCLIPrerenderCommand() {
78
78
  try {
79
- const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(undefined, 'prerender');
79
+ const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)({}, 'prerender');
80
80
  await runPrerender({ viteConfig: viteConfigEnhanced }, '$ vike prerender');
81
81
  }
82
82
  catch (err) {
@@ -113,7 +113,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
113
113
  (0, getHook_js_1.getHook_setIsPrerenderering)();
114
114
  const logLevel = !!options.onPagePrerender ? 'warn' : 'info';
115
115
  if (logLevel === 'info') {
116
- console.log(`${picocolors_1.default.cyan(`vike v${utils_js_1.projectInfo.projectVersion}`)} ${picocolors_1.default.green('pre-rendering HTML...')}`);
116
+ console.log(`${picocolors_1.default.cyan(`vike v${utils_js_1.PROJECT_VERSION}`)} ${picocolors_1.default.green('pre-rendering HTML...')}`);
117
117
  }
118
118
  await disableReactStreaming();
119
119
  const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
@@ -122,13 +122,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
122
122
  const { root } = viteConfig;
123
123
  const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
124
124
  validatePrerenderConfig(prerenderConfigGlobal);
125
- const { partial, noExtraDir, parallel, defaultLocalValue, isEnabled } = prerenderConfigGlobal;
126
- if (!isEnabled) {
125
+ const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
126
+ if (!isPrerenderingEnabled) {
127
127
  (0, utils_js_1.assert)(standaloneTrigger);
128
- // TODO/now: make it assertUsage() and remove dist/server/entry.mjs whenever possible
129
- (0, utils_js_1.assertWarning)(prerenderConfigGlobal, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the config ${picocolors_1.default.cyan('prerender')} (${picocolors_1.default.underline('https://vike.dev/prerender')}) to enable it.`, {
130
- onlyOnce: true
131
- });
128
+ // TODO/now: make it assertUsage() and remove dist/server/entry.mjs if pre-rendering is completely disabled
129
+ (0, utils_js_1.assertWarning)(false, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${picocolors_1.default.cyan('prerender')} setting (${picocolors_1.default.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`, { onlyOnce: true });
132
130
  }
133
131
  const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
134
132
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
@@ -18,7 +18,7 @@ const assertIsNotBrowser_js_1 = require("../../utils/assertIsNotBrowser.js");
18
18
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
19
19
  __exportStar(require("../../utils/assert.js"), exports);
20
20
  __exportStar(require("../../utils/hasProp.js"), exports);
21
- __exportStar(require("../../utils/projectInfo.js"), exports);
21
+ __exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
22
22
  __exportStar(require("../../utils/objectAssign.js"), exports);
23
23
  __exportStar(require("../../utils/isObjectWithKeys.js"), exports);
24
24
  __exportStar(require("../../utils/isCallable.js"), exports);
@@ -92,9 +92,10 @@ function makePublic(globalContext) {
92
92
  async function setGlobalContext_viteDevServer(viteDevServer) {
93
93
  debug('setGlobalContext_viteDevServer()');
94
94
  setIsProduction(false);
95
- if (globalObject.viteDevServer)
96
- return;
97
- assertIsNotInitilizedYet();
95
+ // We cannot cache globalObject.viteDevServer because it's fully replaced when the user modifies vite.config.js => Vite's dev server is fully reloaded and a new viteDevServer replaces the previous one.
96
+ if (!globalObject.viteDevServer) {
97
+ assertIsNotInitilizedYet();
98
+ }
98
99
  (0, utils_js_1.assert)(globalObject.viteConfig);
99
100
  globalObject.viteDevServer = viteDevServer;
100
101
  await updateUserFiles();
@@ -354,7 +355,7 @@ function assertBuildInfo(buildInfo) {
354
355
  (0, utils_js_1.checkType)({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
355
356
  }
356
357
  function assertVersionAtBuildTime(versionAtBuildTime) {
357
- const versionAtRuntime = utils_js_1.projectInfo.projectVersion;
358
+ const versionAtRuntime = utils_js_1.PROJECT_VERSION;
358
359
  const pretty = (version) => picocolors_1.default.bold(`vike@${version}`);
359
360
  (0, utils_js_1.assertUsage)(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
360
361
  }
@@ -372,7 +373,7 @@ async function updateUserFiles() {
372
373
  const { promise, resolve } = (0, utils_js_1.genPromise)();
373
374
  (0, utils_js_1.assert)(!globalObject.isProduction);
374
375
  globalObject.waitForUserFilesUpdate = promise;
375
- const viteDevServer = getViteDevServer();
376
+ const { viteDevServer } = globalObject;
376
377
  (0, utils_js_1.assert)(viteDevServer);
377
378
  let virtualFileExports;
378
379
  try {
@@ -384,6 +385,9 @@ async function updateUserFiles() {
384
385
  }
385
386
  virtualFileExports = virtualFileExports.default || virtualFileExports;
386
387
  (0, utils_js_1.debugGlob)('Glob result: ', virtualFileExports);
388
+ // Avoid race condition: abort if there is a new globalObject.viteDevServer (happens when vite.config.js is modified => Vite's dev server is fully reloaded).
389
+ if (viteDevServer !== globalObject.viteDevServer)
390
+ return;
387
391
  await setUserFiles(virtualFileExports);
388
392
  resolve();
389
393
  }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getViteDevScript = getViteDevScript;
7
7
  const utils_js_1 = require("../../utils.js");
8
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
+ const reachOutCTA = 'Create a new GitHub issue to discuss a solution.';
9
10
  async function getViteDevScript(pageContext) {
10
11
  const globalContext = pageContext._globalContext;
11
12
  if (globalContext.isProduction) {
@@ -17,11 +18,13 @@ async function getViteDevScript(pageContext) {
17
18
  let fakeHtml = fakeHtmlBegin + fakeHtmlEnd;
18
19
  fakeHtml = await viteDevServer.transformIndexHtml('/', fakeHtml);
19
20
  (0, utils_js_1.assertUsage)(!fakeHtml.includes('vite-plugin-pwa'), `The HTML transformer of ${picocolors_1.default.cyan('vite-plugin-pwa')} cannot be applied, see workaround at https://github.com/vikejs/vike/issues/388#issuecomment-1199280084`);
20
- (0, utils_js_1.assertUsage)(!fakeHtml.startsWith(fakeHtmlBegin.replace(' ', '')), 'Vite plugins that minify the HTML are not supported by vike, see https://github.com/vikejs/vike/issues/224');
21
- (0, utils_js_1.assertUsage)(fakeHtml.startsWith(fakeHtmlBegin) && fakeHtml.endsWith(fakeHtmlEnd), 'You are using a Vite Plugin that transforms the HTML in a way that conflicts with vike. Create a new GitHub ticket to discuss a solution.');
21
+ (0, utils_js_1.assertUsage)(!fakeHtml.startsWith(fakeHtmlBegin.replace(' ', '')), `Vite plugins that minify the HTML cannot be applied, see https://github.com/vikejs/vike/issues/224`);
22
+ (0, utils_js_1.assertUsage)(fakeHtml.startsWith(fakeHtmlBegin) && fakeHtml.endsWith(fakeHtmlEnd), `You are using a Vite Plugin that transforms the HTML in a way that conflicts with Vike. ${reachOutCTA}`);
22
23
  const viteInjection = fakeHtml.slice(fakeHtmlBegin.length, -1 * fakeHtmlEnd.length);
23
24
  (0, utils_js_1.assert)(viteInjection.includes('script'));
24
- (0, utils_js_1.assertWarning)(!viteInjection.includes('import('), 'Unexpected Vite HMR code. Reach out to a Vike maintainer on GitHub.', { onlyOnce: true });
25
+ (0, utils_js_1.assertWarning)(!viteInjection.includes('import('), `Unexpected Vite injected HMR code. ${reachOutCTA}`, {
26
+ onlyOnce: true
27
+ });
25
28
  const viteDevScript = viteInjection;
26
29
  return viteDevScript;
27
30
  }
@@ -164,6 +164,13 @@ function getStreamReadableWeb(htmlRender) {
164
164
  if (isStreamReadableWeb(htmlRender)) {
165
165
  return htmlRender;
166
166
  }
167
+ if (isStreamPipeWeb(htmlRender)) {
168
+ const streamPipeWeb = getStreamPipeWeb(htmlRender);
169
+ (0, utils_js_1.assert)(streamPipeWeb);
170
+ const { readable, writable } = new TransformStream();
171
+ streamPipeWeb(writable);
172
+ return readable;
173
+ }
167
174
  return null;
168
175
  }
169
176
  function pipeToStreamWritableWeb(htmlRender, writable) {
@@ -9,20 +9,29 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
9
  const globalObject = (0, utils_js_1.getGlobalObject)('createHttpResponse/assertNoInfiniteHttpRedirect.ts', {
10
10
  redirectGraph: {}
11
11
  });
12
- function assertNoInfiniteHttpRedirect(urlRedirectTarget, urlLogical) {
12
+ function assertNoInfiniteHttpRedirect(
13
+ // The exact URL that the user will be redirected to.
14
+ // - It includes the Base URL as well as the locale (i18n) base.
15
+ urlRedirectTarget,
16
+ // Rationale for checking against `pageContextInit.urlOriginal`: https://github.com/vikejs/vike/pull/2264#issuecomment-2713890263
17
+ pageContextInit) {
18
+ // TO-DO/eventually: use cookie as described at https://github.com/vikejs/vike/pull/2273
19
+ if (true)
20
+ return 'DISABLED'; // Disabled until we make it reliable.
13
21
  if (!urlRedirectTarget.startsWith('/')) {
14
- // We assume that urlRedirectTarget points to an origin that is external (not the same origin), and we can therefore assume that the app doesn't define an infinite loop (in itself).
15
- // - There isn't a reliable way to check whether the redirect points to an external origin or the same origin. For same origins, we assume/hope the user to pass the URL without origin.
22
+ // We assume that urlRedirectTarget points to an origin that is external (not the same origin), and we can therefore assume that the app doesn't define an infinite loop (at least not in itself).
23
+ // - There isn't a reliable way to check whether the redirect points to an external origin or the same origin; we hope/assume the user sets the URL without origin.
16
24
  // ```js
17
25
  // // For same-origin, the user usually/hopefully passes a URL without origin
18
26
  // renderPage({ urlOriginal: '/some/pathname' })
19
27
  // ```
20
28
  return;
21
29
  }
22
- (0, utils_js_1.assert)(urlLogical.startsWith('/'));
30
+ const urlOriginalNormalized = (0, utils_js_1.removeUrlOrigin)(pageContextInit.urlOriginal).urlModified;
31
+ (0, utils_js_1.assert)(urlOriginalNormalized.startsWith('/'));
23
32
  const graph = copy(globalObject.redirectGraph);
24
33
  graph[urlRedirectTarget] ?? (graph[urlRedirectTarget] = new Set());
25
- graph[urlRedirectTarget].add(urlLogical);
34
+ graph[urlRedirectTarget].add(urlOriginalNormalized);
26
35
  validate(graph);
27
36
  globalObject.redirectGraph = graph;
28
37
  }
@@ -84,10 +84,8 @@ async function createHttpResponsePageContextJson(pageContextSerialized) {
84
84
  const httpResponse = createHttpResponse(200, 'application/json', [], pageContextSerialized, [], null);
85
85
  return httpResponse;
86
86
  }
87
- function createHttpResponseRedirect({ url, statusCode },
88
- // The URL we assume the redirect to be logically based on
89
- urlLogical) {
90
- (0, assertNoInfiniteHttpRedirect_js_1.assertNoInfiniteHttpRedirect)(url, urlLogical);
87
+ function createHttpResponseRedirect({ url, statusCode }, pageContextInit) {
88
+ (0, assertNoInfiniteHttpRedirect_js_1.assertNoInfiniteHttpRedirect)(url, pageContextInit);
91
89
  (0, utils_js_1.assert)(url);
92
90
  (0, utils_js_1.assert)(statusCode);
93
91
  (0, utils_js_1.assert)(300 <= statusCode && statusCode <= 399);
@@ -27,6 +27,10 @@ const errorsMisc = [
27
27
  errMsg: 'assets.json',
28
28
  link: 'https://vike.dev/getGlobalContext',
29
29
  mustMentionNodeModules: false
30
+ },
31
+ {
32
+ errMsg: 'ERR_UNKNOWN_FILE_EXTENSION',
33
+ link: 'https://vike.dev/broken-npm-package#err-unknown-file-extension'
30
34
  }
31
35
  ];
32
36
  const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
@@ -77,7 +81,8 @@ const errorsCjsEsm = [
77
81
  { errMsg: 'exports is not defined' },
78
82
  { errMsg: 'module is not defined' },
79
83
  { errMsg: 'not defined in ES' },
80
- { errMsg: "Unexpected token 'export'" }
84
+ { errMsg: "Unexpected token 'export'" },
85
+ { errMsg: 'Failed to resolve entry for package' }
81
86
  ];
82
87
  function logErrorHint(error) {
83
88
  /* Collect errors for ./logErrorHint.spec.ts
@@ -346,7 +346,7 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
346
346
  if (!urlNormalized)
347
347
  return null;
348
348
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
349
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 }, pageContextInit.urlOriginal);
349
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 }, pageContextInit);
350
350
  const pageContextHttpResponse = createPageContext(pageContextInit);
351
351
  (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
352
352
  return pageContextHttpResponse;
@@ -388,7 +388,7 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
388
388
  (0, utils_js_1.assert)(urlTarget !== pageContextInit.urlOriginal);
389
389
  }
390
390
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
391
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 }, urlWithoutBase);
391
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 }, pageContextInit);
392
392
  const pageContextHttpResponse = createPageContext(pageContextInit);
393
393
  (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
394
394
  return pageContextHttpResponse;
@@ -396,7 +396,9 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
396
396
  function normalize(url) {
397
397
  return url || '/';
398
398
  }
399
- async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
399
+ async function handleAbortError(errAbort, pageContextsFromRewrite,
400
+ // The original `pageContextInit` object passed to `renderPage(pageContextInit)`
401
+ pageContextInit,
400
402
  // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
401
403
  pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
402
404
  (0, abort_js_1.logAbortErrorHandled)(errAbort, globalContext.isProduction, pageContextNominalPageInit);
@@ -434,13 +436,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
434
436
  if (pageContextAbort._urlRedirect) {
435
437
  const pageContextReturn = createPageContext(pageContextInit);
436
438
  (0, utils_js_1.objectAssign)(pageContextReturn, pageContextAbort);
437
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect, (() => {
438
- const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
439
- const urlLogical = (0, utils_js_1.createUrlFromComponents)(null, pathname, searchOriginal,
440
- // The server-side doesn't have access to the hash
441
- null);
442
- return urlLogical;
443
- })());
439
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect, pageContextInit);
444
440
  (0, utils_js_1.objectAssign)(pageContextReturn, { httpResponse });
445
441
  return { pageContextReturn };
446
442
  }
@@ -31,7 +31,6 @@ __exportStar(require("../../utils/parseUrl.js"), exports);
31
31
  __exportStar(require("../../utils/parseUrl-extras.js"), exports);
32
32
  __exportStar(require("../../utils/slice.js"), exports);
33
33
  __exportStar(require("../../utils/sorter.js"), exports);
34
- __exportStar(require("../../utils/projectInfo.js"), exports);
35
34
  __exportStar(require("../../utils/isArray.js"), exports);
36
35
  __exportStar(require("../../utils/isObject.js"), exports);
37
36
  __exportStar(require("../../utils/objectAssign.js"), exports);
@@ -11,16 +11,18 @@ const globalContext_js_1 = require("../runtime/globalContext.js");
11
11
  */
12
12
  async function createDevMiddleware(options = {}) {
13
13
  (0, globalContext_js_1.setGlobalContext_isProduction)(false);
14
- const viteConfigFromOptions = {
15
- ...options.viteConfig,
16
- server: {
17
- ...options.viteConfig?.server,
18
- middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
14
+ const optionsMod = {
15
+ ...options,
16
+ viteConfig: {
17
+ ...options.viteConfig,
18
+ root: options.root ?? options.viteConfig?.root,
19
+ server: {
20
+ ...options.viteConfig?.server,
21
+ middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
22
+ }
19
23
  }
20
24
  };
21
- if (options.root)
22
- viteConfigFromOptions.root = options.root;
23
- const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(viteConfigFromOptions, 'dev');
25
+ const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(optionsMod, 'dev');
24
26
  const server = await (0, vite_1.createServer)(viteConfigEnhanced);
25
27
  const devMiddleware = server.middlewares;
26
28
  return { devMiddleware, viteServer: server, viteConfig: server.config };
@@ -12,7 +12,8 @@ function assertV1Design(pageConfigs, pageFilesAll) {
12
12
  (0, utils_js_1.assert)(pageConfigs.length > 0);
13
13
  const filesV1 = (0, utils_js_1.unique)(pageConfigs
14
14
  .map((p) => Object.values(p.configValueSources).map((sources) => sources
15
- .map((c) => c.definedAtFilePath.filePathAbsoluteUserRootDir)
15
+ .map((c) => c.definedAt)
16
+ .map((definedAt) => (definedAt.definedBy ? null : definedAt.filePathAbsoluteUserRootDir))
16
17
  .filter(utils_js_1.isNotNullish)
17
18
  .map((filePathToShowToUser) => indent + filePathToShowToUser)))
18
19
  .flat(2));
@@ -19,7 +19,6 @@ const assertIsNotBrowser_js_1 = require("../../utils/assertIsNotBrowser.js");
19
19
  __exportStar(require("../../utils/assert.js"), exports);
20
20
  __exportStar(require("../../utils/getFileExtension.js"), exports);
21
21
  __exportStar(require("../../utils/isPlainObject.js"), exports);
22
- __exportStar(require("../../utils/projectInfo.js"), exports);
23
22
  __exportStar(require("../../utils/checkType.js"), exports);
24
23
  __exportStar(require("../../utils/hasProp.js"), exports);
25
24
  __exportStar(require("../../utils/objectAssign.js"), exports);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getConfigDefinedAt = getConfigDefinedAt;
7
7
  exports.getConfigDefinedAtOptional = getConfigDefinedAtOptional;
8
8
  exports.getDefinedAtString = getDefinedAtString;
9
+ exports.getDefinedByString = getDefinedByString;
9
10
  const utils_js_1 = require("../utils.js");
10
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
12
  const getExportPath_js_1 = require("./getExportPath.js");
@@ -33,8 +34,10 @@ function getDefinedAtString(definedAtData, configName) {
33
34
  }
34
35
  (0, utils_js_1.assert)(files.length >= 1);
35
36
  const definedAtString = files
36
- .map((source) => {
37
- const { filePathToShowToUser, fileExportPathToShowToUser } = source;
37
+ .map((definedAt) => {
38
+ if (definedAt.definedBy)
39
+ return getDefinedByString(definedAt, configName);
40
+ const { filePathToShowToUser, fileExportPathToShowToUser } = definedAt;
38
41
  let s = filePathToShowToUser;
39
42
  const exportPath = (0, getExportPath_js_1.getExportPath)(fileExportPathToShowToUser, configName);
40
43
  if (exportPath) {
@@ -45,3 +48,17 @@ function getDefinedAtString(definedAtData, configName) {
45
48
  .join(' / ');
46
49
  return definedAtString;
47
50
  }
51
+ function getDefinedByString(definedAt, configName) {
52
+ if (definedAt.definedBy === 'api') {
53
+ return `API call ${picocolors_1.default.cyan(`${definedAt.operation}({ vikeConfig: { ${configName} } })`)}`;
54
+ }
55
+ const { definedBy } = definedAt;
56
+ if (definedBy === 'cli') {
57
+ return `CLI option ${picocolors_1.default.cyan(`--${configName}`)}`;
58
+ }
59
+ if (definedBy === 'env') {
60
+ return `environment variable ${picocolors_1.default.cyan(`VIKE_CONFIG="{${configName}}"`)}`;
61
+ }
62
+ (0, utils_js_1.checkType)(definedBy);
63
+ (0, utils_js_1.assert)(false);
64
+ }
@@ -33,7 +33,7 @@ function getConfigValue(pageConfig, configName) {
33
33
  return {
34
34
  type: 'standard',
35
35
  value: configValueSource.value,
36
- definedAtData: getDefinedAtFile(configValueSource)
36
+ definedAtData: getDefinedAt(configValueSource)
37
37
  };
38
38
  }
39
39
  else {
@@ -53,13 +53,16 @@ function mergeCumulative(configValueSources) {
53
53
  (0, utils_js_1.assert)(configValueSource.configEnv.config === true);
54
54
  (0, utils_js_1.assert)(configValueSource.valueIsLoaded);
55
55
  value.push(configValueSource.value);
56
- definedAtData.push(getDefinedAtFile(configValueSource));
56
+ definedAtData.push(getDefinedAt(configValueSource));
57
57
  });
58
58
  return { value, definedAtData };
59
59
  }
60
- function getDefinedAtFile(configValueSource) {
60
+ function getDefinedAt(configValueSource) {
61
+ const { definedAt } = configValueSource;
62
+ if (definedAt.definedBy)
63
+ return definedAt;
61
64
  return {
62
- filePathToShowToUser: configValueSource.definedAtFilePath.filePathToShowToUser,
63
- fileExportPathToShowToUser: configValueSource.definedAtFilePath.fileExportPathToShowToUser
65
+ filePathToShowToUser: definedAt.filePathToShowToUser,
66
+ fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
64
67
  };
65
68
  }
@@ -14,7 +14,7 @@ function getConfigValueFilePathToShowToUser(definedAtData) {
14
14
  // A unique file path only exists if the config value isn't cumulative nor computed:
15
15
  // - cumulative config values have multiple file paths
16
16
  // - computed values don't have any file path
17
- if (!definedAtData || (0, utils_js_1.isArray)(definedAtData))
17
+ if (!definedAtData || (0, utils_js_1.isArray)(definedAtData) || definedAtData.definedBy)
18
18
  return null;
19
19
  const { filePathToShowToUser } = definedAtData;
20
20
  (0, utils_js_1.assert)(filePathToShowToUser);
@@ -6,10 +6,6 @@ const utils_js_1 = require("../../utils.js");
6
6
  const getConfigDefinedAt_js_1 = require("../getConfigDefinedAt.js");
7
7
  const parse_1 = require("@brillout/json-serializer/parse");
8
8
  const assertPlusFileExport_js_1 = require("../assertPlusFileExport.js");
9
- function parseConfigValuesSerialized(configValuesSerialized) {
10
- const configValues = parseConfigValuesSerialized_tmp(configValuesSerialized);
11
- return configValues;
12
- }
13
9
  function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
14
10
  // pageConfigs
15
11
  const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
@@ -45,7 +41,7 @@ function assertRouteConfigValue(configValues) {
45
41
  }
46
42
  */
47
43
  }
48
- function parseConfigValuesSerialized_tmp(configValuesSerialized) {
44
+ function parseConfigValuesSerialized(configValuesSerialized) {
49
45
  const configValues = {};
50
46
  Object.entries(configValuesSerialized).forEach(([configName, configValueSeriliazed]) => {
51
47
  let configValue;
@@ -102,6 +98,7 @@ function parseValueSerialized(valueSerialized, configName, getDefinedAtFile) {
102
98
  if (valueSerialized.type === 'plus-file') {
103
99
  const definedAtFile = getDefinedAtFile();
104
100
  const { exportValues } = valueSerialized;
101
+ (0, utils_js_1.assert)(!definedAtFile.definedBy);
105
102
  (0, assertPlusFileExport_js_1.assertPlusFileExport)(exportValues, definedAtFile.filePathToShowToUser, configName);
106
103
  let value;
107
104
  let valueWasFound = false;
@@ -52,7 +52,7 @@ function serializeConfigValues(pageConfig, importStatements, filesEnv, isEnvMatc
52
52
  function getValueSerializedFromSource(configValueSource, configName, importStatements, filesEnv) {
53
53
  let valueData;
54
54
  if (configValueSource.valueIsLoaded && !configValueSource.valueIsLoadedWithImport) {
55
- valueData = getValueSerializedWithJson(configValueSource.value, configName, configValueSource.definedAtFilePath, importStatements, filesEnv, configValueSource.configEnv);
55
+ valueData = getValueSerializedWithJson(configValueSource.value, configName, configValueSource.definedAt, importStatements, filesEnv, configValueSource.configEnv);
56
56
  }
57
57
  else {
58
58
  valueData = getValueSerializedWithImport(configValueSource, importStatements, filesEnv, configName);
@@ -103,8 +103,9 @@ function serializeConfigValue(configValueBase, valueData, configName, lines, tab
103
103
  }
104
104
  function getValueSerializedWithImport(configValueSource, importStatements, filesEnv, configName) {
105
105
  (0, utils_js_1.assert)(!configValueSource.valueIsFilePath);
106
- const { valueIsDefinedByPlusValueFile, definedAtFilePath, configEnv } = configValueSource;
107
- const { filePathAbsoluteVite, fileExportName } = definedAtFilePath;
106
+ const { valueIsDefinedByPlusValueFile, definedAt, configEnv } = configValueSource;
107
+ (0, utils_js_1.assert)(!definedAt.definedBy);
108
+ const { filePathAbsoluteVite, fileExportName } = definedAt;
108
109
  if (valueIsDefinedByPlusValueFile)
109
110
  (0, utils_js_1.assert)(fileExportName === undefined);
110
111
  const { importName } = addImportStatement(importStatements, filePathAbsoluteVite, fileExportName || '*', filesEnv, configEnv, configName);
@@ -231,9 +232,12 @@ function getConfigValuesBase(pageConfig, isEnvMatch, isEager) {
231
232
  return [...fromComputed, ...fromSources].filter((r) => r !== 'SKIP');
232
233
  }
233
234
  function getDefinedAtFileSource(source) {
235
+ const { definedAt } = source;
236
+ if (definedAt.definedBy)
237
+ return definedAt;
234
238
  const definedAtFile = {
235
- filePathToShowToUser: source.definedAtFilePath.filePathToShowToUser,
236
- fileExportPathToShowToUser: source.definedAtFilePath.fileExportPathToShowToUser
239
+ filePathToShowToUser: definedAt.filePathToShowToUser,
240
+ fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
237
241
  };
238
242
  return definedAtFile;
239
243
  }
@@ -62,11 +62,11 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
62
62
  if (!pageRoute) {
63
63
  const { routeFilesystem } = pageConfig;
64
64
  (0, utils_js_1.assert)(routeFilesystem);
65
- const { routeString, definedBy } = routeFilesystem;
65
+ const { routeString, definedAtLocation } = routeFilesystem;
66
66
  (0, utils_js_1.assert)(routeFilesystem.routeString.startsWith('/'));
67
67
  pageRoute = {
68
68
  pageId,
69
- routeFilesystemDefinedBy: definedBy,
69
+ routeFilesystemDefinedBy: definedAtLocation,
70
70
  comesFromV1PageConfig,
71
71
  routeString,
72
72
  routeDefinedAtString: null,
@@ -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.224';
5
+ exports.PROJECT_VERSION = '0.4.225-commit-37a36a5';
@@ -17,7 +17,7 @@ const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
17
17
  const createErrorWithCleanStackTrace_js_1 = require("./createErrorWithCleanStackTrace.js");
18
18
  const getGlobalObject_js_1 = require("./getGlobalObject.js");
19
19
  const isObject_js_1 = require("./isObject.js");
20
- const projectInfo_js_1 = require("./projectInfo.js");
20
+ const PROJECT_VERSION_js_1 = require("./PROJECT_VERSION.js");
21
21
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
22
22
  const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/assert.ts', {
23
23
  alreadyLogged: new Set(),
@@ -34,7 +34,7 @@ const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/assert.ts'
34
34
  });
35
35
  (0, assertSingleInstance_js_1.assertSingleInstance_onAssertModuleLoad)();
36
36
  const projectTag = `[vike]`;
37
- const projectTagWithVersion = `[vike@${projectInfo_js_1.projectInfo.projectVersion}]`;
37
+ const projectTagWithVersion = `[vike@${PROJECT_VERSION_js_1.PROJECT_VERSION}]`;
38
38
  const bugTag = 'Bug';
39
39
  const numberOfStackTraceLinesToRemove = 2;
40
40
  function assert(condition, debugInfo) {
@@ -61,7 +61,7 @@ function assert(condition, debugInfo) {
61
61
  globalObject.onBeforeLog?.();
62
62
  throw internalError;
63
63
  }
64
- function assertUsage(condition, errMsg, { showStackTrace } = {}) {
64
+ function assertUsage(condition, errMsg, { showStackTrace, exitOnError } = {}) {
65
65
  if (condition)
66
66
  return;
67
67
  showStackTrace = showStackTrace || globalObject.alwaysShowStackTrace;
@@ -73,7 +73,13 @@ function assertUsage(condition, errMsg, { showStackTrace } = {}) {
73
73
  globalObject.showStackTraceList.add(usageError);
74
74
  }
75
75
  globalObject.onBeforeLog?.();
76
- throw usageError;
76
+ if (!exitOnError) {
77
+ throw usageError;
78
+ }
79
+ else {
80
+ console.error(showStackTrace ? usageError : errMsg);
81
+ process.exit(1);
82
+ }
77
83
  }
78
84
  function getProjectError(errMsg) {
79
85
  errMsg = addWhitespace(errMsg);
@@ -187,6 +193,7 @@ function overwriteAssertProductionLogger(logger) {
187
193
  function isBug(err) {
188
194
  return String(err).includes(`[${bugTag}]`);
189
195
  }
196
+ // Called upon `DEBUG=vike:error`
190
197
  function setAlwaysShowStackTrace() {
191
198
  globalObject.alwaysShowStackTrace = true;
192
199
  }