vike 0.4.222-commit-207e079 → 0.4.222-commit-5513d32

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 (66) hide show
  1. package/dist/cjs/node/plugin/plugins/buildApp.js +9 -5
  2. package/dist/cjs/node/plugin/plugins/buildConfig.js +3 -0
  3. package/dist/cjs/node/plugin/plugins/envVars.js +0 -1
  4. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +7 -14
  5. package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +1 -1
  6. package/dist/cjs/node/runtime/globalContext.js +1 -1
  7. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  8. package/dist/cjs/node/runtime/renderPage.js +17 -13
  9. package/dist/cjs/node/runtime/universal-middleware.js +14 -0
  10. package/dist/cjs/shared/getPageConfigsRuntime.js +2 -8
  11. package/dist/cjs/shared/getPageContextUrlComputed.js +2 -2
  12. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +44 -12
  13. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -8
  14. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  15. package/dist/cjs/utils/assert.js +1 -1
  16. package/dist/cjs/utils/parseUrl-extras.js +2 -2
  17. package/dist/cjs/utils/parseUrl.js +5 -5
  18. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
  19. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
  20. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
  21. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
  22. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  23. package/dist/esm/client/client-routing-runtime/skipLink.js +2 -2
  24. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  25. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  26. package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
  27. package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
  28. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  29. package/dist/esm/node/plugin/plugins/buildApp.js +9 -5
  30. package/dist/esm/node/plugin/plugins/buildConfig.js +3 -0
  31. package/dist/esm/node/plugin/plugins/envVars.js +0 -1
  32. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  33. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +8 -15
  34. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +2 -2
  35. package/dist/esm/node/runtime/globalContext.d.ts +2 -2
  36. package/dist/esm/node/runtime/globalContext.js +1 -1
  37. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
  38. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
  39. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
  40. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  41. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +4 -4
  42. package/dist/esm/node/runtime/renderPage.d.ts +5 -5
  43. package/dist/esm/node/runtime/renderPage.js +17 -12
  44. package/dist/esm/node/runtime/universal-middleware.d.ts +1 -0
  45. package/dist/esm/node/runtime/universal-middleware.js +11 -0
  46. package/dist/esm/shared/getPageConfigsRuntime.d.ts +2 -2
  47. package/dist/esm/shared/getPageConfigsRuntime.js +3 -9
  48. package/dist/esm/shared/getPageContextUrlComputed.js +2 -2
  49. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  50. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  51. package/dist/esm/shared/page-configs/Config.d.ts +3 -1
  52. package/dist/esm/shared/page-configs/PageConfig.d.ts +9 -2
  53. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +24 -16
  54. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +44 -12
  55. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +3 -2
  56. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -8
  57. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  58. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  59. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  60. package/dist/esm/utils/assert.js +1 -1
  61. package/dist/esm/utils/parseUrl-extras.js +2 -2
  62. package/dist/esm/utils/parseUrl.d.ts +3 -4
  63. package/dist/esm/utils/parseUrl.js +5 -5
  64. package/dist/esm/utils/projectInfo.d.ts +1 -1
  65. package/package.json +15 -2
  66. package/universal-middleware.js +3 -0
@@ -9,6 +9,9 @@ const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js"
9
9
  const getFullBuildInlineConfig_js_1 = require("../shared/getFullBuildInlineConfig.js");
10
10
  function buildApp() {
11
11
  let config;
12
+ // `builder.buildApp` can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
13
+ // In that case, we should'nt `forceExit`.
14
+ let forceExit = false;
12
15
  return [
13
16
  {
14
17
  name: 'vike:buildApp',
@@ -23,6 +26,10 @@ function buildApp() {
23
26
  (0, utils_js_1.assert)(builder.environments.ssr);
24
27
  await builder.build(builder.environments.client);
25
28
  await builder.build(builder.environments.ssr);
29
+ if (forceExit) {
30
+ (0, runPrerender_js_1.runPrerender_forceExit)();
31
+ (0, utils_js_1.assert)(false);
32
+ }
26
33
  }
27
34
  },
28
35
  environments: {
@@ -61,11 +68,8 @@ function buildApp() {
61
68
  if (!(0, context_js_1.isPrerenderAutoRunEnabled)(vikeConfig))
62
69
  return;
63
70
  const configInline = (0, getFullBuildInlineConfig_js_1.getFullBuildInlineConfig)(config);
64
- const { forceExit } = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline, config);
65
- if (forceExit) {
66
- (0, runPrerender_js_1.runPrerender_forceExit)();
67
- (0, utils_js_1.assert)(false);
68
- }
71
+ const res = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline, config);
72
+ forceExit = res.forceExit;
69
73
  }
70
74
  }
71
75
  ];
@@ -86,6 +86,9 @@ function buildConfig() {
86
86
  {
87
87
  name: 'vike:buildConfig:pre',
88
88
  apply: 'build',
89
+ applyToEnvironment(env) {
90
+ return env.name === 'ssr';
91
+ },
89
92
  // Make sure other writeBundle() hooks are called after this writeBundle() hook.
90
93
  // - set_ASSETS_MANIFEST() needs to be called before dist/server/ code is executed.
91
94
  // - For example, the writeBundle() hook of vite-plugin-vercel needs to be called after this writeBundle() hook, otherwise: https://github.com/vikejs/vike/issues/1527
@@ -95,7 +95,6 @@ function getIsClientSide(config, options) {
95
95
  return !isServerSide;
96
96
  }
97
97
  else {
98
- (0, utils_js_1.assert)(config.build.ssr === false);
99
98
  (0, utils_js_1.assert)(typeof options?.ssr === 'boolean');
100
99
  const isServerSide = options.ssr;
101
100
  return !isServerSide;
@@ -133,7 +133,7 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
133
133
  configDefinitions: {},
134
134
  configValueSources: {}
135
135
  },
136
- global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} }),
136
+ global: (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues: {} }),
137
137
  pages: {}
138
138
  };
139
139
  return dummyData;
@@ -149,18 +149,12 @@ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
149
149
  // interop vike(options) in vite.config.js
150
150
  temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
151
151
  // global
152
- const configValuesGlobal = getConfigValues(pageConfigGlobal);
153
- const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: configValuesGlobal });
154
- // TODO/now DEDUPE
152
+ const pageConfigGlobalValues = getConfigValues(pageConfigGlobal);
153
+ const global = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues });
155
154
  // pages
156
155
  const pages = (0, utils_js_1.objectFromEntries)(pageConfigs.map((pageConfig) => {
157
- const configValuesLocal = getConfigValues(pageConfig, true);
158
- const configValues = { ...configValuesGlobal, ...configValuesLocal };
159
- const page = {
160
- ...(0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues }),
161
- route: pageConfig.routeFilesystem?.routeString ?? null
162
- };
163
- return [pageConfig.pageId, page];
156
+ const pageConfigValues = getConfigValues(pageConfig, true);
157
+ return (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendly)(pageConfigGlobalValues, pageConfig, pageConfigValues);
164
158
  }));
165
159
  return { pageConfigs, pageConfigGlobal, global, pages };
166
160
  }
@@ -225,13 +219,12 @@ function getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRo
225
219
  return;
226
220
  configValueSources[configName] = sources;
227
221
  });
228
- const { routeFilesystem, isErrorPage } = determineRouteFilesystem(locationId, configValueSources);
222
+ const pageConfigRoute = determineRouteFilesystem(locationId, configValueSources);
229
223
  applyEffectsAll(configValueSources, configDefinitionsLocal);
230
224
  const configValuesComputed = getComputed(configValueSources, configDefinitionsLocal);
231
225
  const pageConfig = {
232
226
  pageId: locationId,
233
- isErrorPage,
234
- routeFilesystem,
227
+ ...pageConfigRoute,
235
228
  configDefinitions: configDefinitionsLocal,
236
229
  plusFiles: plusFilesRelevant,
237
230
  configValueSources,
@@ -55,7 +55,7 @@ async function installHttpRequestAsyncStore() {
55
55
  return;
56
56
  }
57
57
  asyncLocalStorage = new mod.AsyncLocalStorage();
58
- (0, renderPage_js_1.renderPage_addWrapper)(async (httpRequestId, renderPage) => {
58
+ (0, renderPage_js_1.renderPage_addAsyncHookwrapper)(async (httpRequestId, renderPage) => {
59
59
  (0, utils_js_1.assert)(asyncLocalStorage);
60
60
  const loggedErrors = new Set();
61
61
  const markErrorAsLogged = (err) => {
@@ -127,7 +127,7 @@ function getViteConfig() {
127
127
  }
128
128
  async function initGlobalContext_renderPage() {
129
129
  debug('initGlobalContext_renderPage()');
130
- // globalObject.isProduction isn't set upon production server without vike-server (there isn't any signal we can use)
130
+ // `globalObject.isProduction === undefined` when using production server without `vike-server`. (There isn't any reliable signal we can use to determine early whether the environement is production or development.)
131
131
  if (globalObject.isProduction === undefined)
132
132
  setIsProduction(true);
133
133
  await initGlobalContext();
@@ -102,7 +102,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pag
102
102
  const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageFilesAll, pageId);
103
103
  const pageConfigLoaded = !pageConfig ? null : await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, isDev);
104
104
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
105
- const pageContextExports = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyOld)(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
105
+ const pageContextExports = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendly_oldDesign)(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
106
106
  return {
107
107
  pageContextExports,
108
108
  pageFilesLoaded: pageFilesServerSide
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderPage_addWrapper = void 0;
7
6
  exports.renderPage = renderPage;
7
+ exports.renderPage_addAsyncHookwrapper = renderPage_addAsyncHookwrapper;
8
8
  const renderPageAlreadyRouted_js_1 = require("./renderPage/renderPageAlreadyRouted.js");
9
9
  const index_js_1 = require("../../shared/route/index.js");
10
10
  const utils_js_1 = require("./utils.js");
@@ -26,13 +26,6 @@ const resolveRedirects_js_1 = require("./renderPage/resolveRedirects.js");
26
26
  const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
27
27
  httpRequestsCount: 0
28
28
  });
29
- let renderPage_wrapper = async (_httpRequestId, ret) => ({
30
- pageContextReturn: await ret()
31
- });
32
- const renderPage_addWrapper = (wrapper) => {
33
- renderPage_wrapper = wrapper;
34
- };
35
- exports.renderPage_addWrapper = renderPage_addWrapper;
36
29
  // `renderPage()` calls `renderPageNominal()` while ensuring that errors are `console.error(err)` instead of `throw err`, so that Vike never triggers a server shut down. (Throwing an error in an Express.js middleware shuts down the whole Express.js server.)
37
30
  async function renderPage(pageContextInit) {
38
31
  (0, assertArguments_js_1.assertArguments)(...arguments);
@@ -46,12 +39,20 @@ async function renderPage(pageContextInit) {
46
39
  const httpRequestId = getRequestId();
47
40
  const urlOriginalPretty = (0, utils_js_1.getUrlPretty)(pageContextInit.urlOriginal);
48
41
  logHttpRequest(urlOriginalPretty, httpRequestId);
49
- const { pageContextReturn } = await renderPage_wrapper(httpRequestId, () => renderPageAndPrepare(pageContextInit, httpRequestId));
42
+ const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () => renderPageAndPrepare(pageContextInit, httpRequestId));
50
43
  logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn);
51
44
  (0, utils_js_1.checkType)(pageContextReturn);
52
45
  (0, utils_js_1.assert)(pageContextReturn.httpResponse);
53
46
  return pageContextReturn;
54
47
  }
48
+ // Fallback wrapper if node:async_hooks isn't available
49
+ let asyncHookWrapper = async (_httpRequestId, ret) => ({
50
+ pageContextReturn: await ret()
51
+ });
52
+ // Add node:async_hooks wrapper
53
+ function renderPage_addAsyncHookwrapper(wrapper) {
54
+ asyncHookWrapper = wrapper;
55
+ }
55
56
  async function renderPageAndPrepare(pageContextInit, httpRequestId) {
56
57
  // Invalid config
57
58
  const handleInvalidConfig = (err) => {
@@ -70,8 +71,11 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
70
71
  await (0, globalContext_js_1.initGlobalContext_renderPage)();
71
72
  }
72
73
  catch (err) {
73
- // Errors are expected since assertUsage() is used in both initGlobalContext_renderPage() and getRenderContext().
74
- // initGlobalContext_renderPage() and getRenderContext() don't call any user hooks => err isn't thrown from user code.
74
+ // Errors are expected since assertUsage() is used in initGlobalContext_renderPage() such as:
75
+ // ```bash
76
+ // Re-build your app (you're using 1.2.3 but your app was built with 1.2.2)
77
+ // ```
78
+ // initGlobalContext_renderPage() doens't call any user hook => err isn't thrown from user code.
75
79
  (0, utils_js_1.assert)(!(0, abort_js_1.isAbortError)(err));
76
80
  (0, loggerRuntime_js_1.logRuntimeError)(err, httpRequestId);
77
81
  const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
@@ -458,6 +462,6 @@ async function assertBaseUrl(pageContextInit, globalContext) {
458
462
  const { baseServer } = globalContext;
459
463
  const { urlOriginal } = pageContextInit;
460
464
  const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
461
- const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
462
- (0, utils_js_1.assertUsage)(hasBaseServer, `${picocolors_1.default.code('renderPage(pageContextInit)')} (https://vike.dev/renderPage) called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which doesn't start with Base URL ${picocolors_1.default.code(baseServer)} (https://vike.dev/base-url)`);
465
+ const { isBaseMissing } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
466
+ (0, utils_js_1.assertUsage)(!isBaseMissing, `${picocolors_1.default.code('renderPage(pageContextInit)')} (https://vike.dev/renderPage) called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which doesn't start with Base URL ${picocolors_1.default.code(baseServer)} (https://vike.dev/base-url)`);
463
467
  }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = universalVikeHandler;
4
+ const index_js_1 = require("./index.js");
5
+ async function universalVikeHandler(request, context, runtime) {
6
+ const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers };
7
+ const pageContext = await (0, index_js_1.renderPage)(pageContextInit);
8
+ const response = pageContext.httpResponse;
9
+ const readable = response.getReadableWebStream();
10
+ return new Response(readable, {
11
+ status: response.statusCode,
12
+ headers: response.headers
13
+ });
14
+ }
@@ -9,15 +9,9 @@ function getPageConfigsRuntime(virtualFileExports) {
9
9
  const { pageFilesAll, pageConfigs, pageConfigGlobal } = (0, parseGlobResults_js_1.parseGlobResults)(virtualFileExports);
10
10
  const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
11
11
  // TODO/now: re-use this call, instead of calling it twice
12
- const globalConfig = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)(pageConfigGlobal);
13
- // TODO/now DEDUPE
12
+ const globalConfig = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues: pageConfigGlobal.configValues });
14
13
  const pageConfigsUserFriendly = Object.fromEntries(pageConfigs.map((pageConfig) => {
15
- const configValues = { ...pageConfigGlobal.configValues, ...pageConfig.configValues };
16
- const page = {
17
- ...(0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues }),
18
- route: pageConfig.routeFilesystem?.routeString ?? null
19
- };
20
- return [pageConfig.pageId, page];
14
+ return (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendly)(pageConfigGlobal.configValues, pageConfig, pageConfig.configValues);
21
15
  }));
22
16
  return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly };
23
17
  }
@@ -88,8 +88,8 @@ function urlGetter() {
88
88
  }
89
89
  function urlParsedGetter() {
90
90
  const {
91
- // remove hasBaseServer as it isn't part of UrlPublic
92
- hasBaseServer: _, ...urlParsed } = getUrlParsed(this);
91
+ // remove isBaseMissing as it isn't part of UrlPublic
92
+ isBaseMissing: _, ...urlParsed } = getUrlParsed(this);
93
93
  const hashIsAvailable = (0, utils_js_1.isBrowser)();
94
94
  const warnHashNotAvailable = (prop) => {
95
95
  (0, utils_js_1.assertWarning)(hashIsAvailable, `pageContext.urlParsed.${prop} isn't available on the server-side (HTTP requests don't include the URL hash)`, { onlyOnce: true, showStackTrace: true });
@@ -3,23 +3,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPageConfigUserFriendlyOld = getPageConfigUserFriendlyOld;
7
- exports.getPageConfigUserFriendlyNew = getPageConfigUserFriendlyNew;
6
+ exports.getPageConfigUserFriendly = getPageConfigUserFriendly;
7
+ exports.getPageConfigUserFriendly_oldDesign = getPageConfigUserFriendly_oldDesign;
8
+ exports.getPageConfigGlobalUserFriendly = getPageConfigGlobalUserFriendly;
8
9
  const assert_exports_old_design_js_1 = require("../getPageFiles/assert_exports_old_design.js");
9
10
  const getConfigDefinedAt_js_1 = require("./getConfigDefinedAt.js");
10
11
  const helpers_js_1 = require("./helpers.js");
11
12
  const utils_js_1 = require("../utils.js");
12
13
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
13
- function getPageConfigUserFriendlyNew(pageConfig) {
14
- const res = getPageConfigUserFriendlyV1Desin(pageConfig);
14
+ function getPageConfigUserFriendly(pageConfigGlobalValues, pageConfig, pageConfigValues) {
15
+ const pageConfigUserFriendly = getPageConfigUserFriendly_public({ pageConfigGlobalValues, pageConfigValues });
16
+ let page;
17
+ if (!pageConfig.isErrorPage) {
18
+ const route = pageConfigUserFriendly.config.route ?? pageConfig.routeFilesystem.routeString;
19
+ page = {
20
+ ...pageConfigUserFriendly,
21
+ route
22
+ };
23
+ }
24
+ else {
25
+ page = {
26
+ ...pageConfigUserFriendly,
27
+ isErrorPage: true
28
+ };
29
+ }
30
+ return [pageConfig.pageId, page];
31
+ }
32
+ function getPageConfigUserFriendly_public({ pageConfigGlobalValues, pageConfigValues }) {
33
+ const pageConfigUserFriendly = getPageConfigUserFriendly_base({ pageConfigGlobalValues, pageConfigValues });
34
+ return getPublicCopy(pageConfigUserFriendly);
35
+ }
36
+ function getPublicCopy(pageConfigUserFriendly) {
37
+ const p = pageConfigUserFriendly;
15
38
  return {
16
- config: res.config,
17
- _source: res.source,
18
- _sources: res.sources,
19
- _from: res.from
39
+ config: p.config,
40
+ _source: p.source,
41
+ _sources: p.sources,
42
+ _from: p.from
20
43
  };
21
44
  }
22
- function getPageConfigUserFriendlyOld(pageFiles, pageConfig, pageConfigGlobal) {
45
+ function getPageConfigUserFriendly_base({ pageConfigGlobalValues, pageConfigValues }) {
46
+ const configValues = { ...pageConfigGlobalValues, ...pageConfigValues };
47
+ return getPageConfigUserFriendly_V1Design({ configValues });
48
+ }
49
+ function getPageConfigGlobalUserFriendly({ pageConfigGlobalValues }) {
50
+ const pageConfigGlobalUserFriendly = getPageConfigUserFriendly_V1Design({ configValues: pageConfigGlobalValues });
51
+ return getPublicCopy(pageConfigGlobalUserFriendly);
52
+ }
53
+ function getPageConfigUserFriendly_oldDesign(pageFiles, pageConfig, pageConfigGlobal) {
23
54
  const config = {};
24
55
  const configEntries = {}; // TODO/v1-release: remove
25
56
  const exportsAll = {}; // TODO/v1-release: remove
@@ -44,8 +75,9 @@ function getPageConfigUserFriendlyOld(pageFiles, pageConfig, pageConfigGlobal) {
44
75
  let sources;
45
76
  let from;
46
77
  if (pageConfig) {
47
- const res = getPageConfigUserFriendlyV1Desin({
48
- configValues: { ...pageConfigGlobal.configValues, ...pageConfig.configValues }
78
+ const res = getPageConfigUserFriendly_base({
79
+ pageConfigGlobalValues: pageConfigGlobal.configValues,
80
+ pageConfigValues: pageConfig.configValues
49
81
  });
50
82
  source = res.source;
51
83
  sources = res.sources;
@@ -92,7 +124,7 @@ function getPageConfigUserFriendlyOld(pageFiles, pageConfig, pageConfigGlobal) {
92
124
  return pageContextExports;
93
125
  }
94
126
  // V1 design
95
- function getPageConfigUserFriendlyV1Desin(pageConfig) {
127
+ function getPageConfigUserFriendly_V1Design(pageConfig) {
96
128
  const config = {};
97
129
  const configEntries = {};
98
130
  const exportsAll = {};
@@ -14,15 +14,9 @@ function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
14
14
  // pageConfigs
15
15
  const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
16
16
  const configValues = parseConfigValuesSerialized(pageConfigSerialized.configValuesSerialized);
17
- const { pageId, isErrorPage, routeFilesystem, loadConfigValuesAll } = pageConfigSerialized;
18
17
  assertRouteConfigValue(configValues);
19
- return {
20
- pageId,
21
- isErrorPage,
22
- routeFilesystem,
23
- configValues,
24
- loadConfigValuesAll
25
- };
18
+ const pageConfig = { ...pageConfigSerialized, configValues };
19
+ return pageConfig;
26
20
  });
27
21
  // pageConfigsGlobal
28
22
  const pageConfigGlobal = { configValues: {} };
@@ -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.222-commit-207e079';
5
+ exports.PROJECT_VERSION = '0.4.222-commit-5513d32';
@@ -47,7 +47,7 @@ function assert(condition, debugInfo) {
47
47
  const debugInfoSerialized = typeof debugInfo === 'string' ? debugInfo : JSON.stringify(debugInfo);
48
48
  return picocolors_1.default.dim(`Debug info (for Vike maintainers; you can ignore this): ${debugInfoSerialized}`);
49
49
  })();
50
- const link = picocolors_1.default.blue('https://github.com/vikejs/vike/issues/new');
50
+ const link = picocolors_1.default.blue('https://github.com/vikejs/vike/issues/new?template=bug.yml');
51
51
  let errMsg = [
52
52
  `You stumbled upon a Vike bug. Go to ${link} and copy-paste this error. A maintainer will fix the bug (usually within 24 hours).`,
53
53
  debugStr
@@ -30,8 +30,8 @@ function prependBase(url, baseServer) {
30
30
  return `${baseServerNormalized}${url}`;
31
31
  }
32
32
  function removeBaseServer(url, baseServer) {
33
- const { hasBaseServer, origin, pathname, pathnameOriginal, searchOriginal, hashOriginal } = (0, parseUrl_js_1.parseUrl)(url, baseServer);
34
- (0, assert_js_1.assert)(hasBaseServer);
33
+ const { isBaseMissing, origin, pathname, pathnameOriginal, searchOriginal, hashOriginal } = (0, parseUrl_js_1.parseUrl)(url, baseServer);
34
+ (0, assert_js_1.assert)(!isBaseMissing);
35
35
  (0, parseUrl_js_1.assertUrlComponents)(url, origin, pathnameOriginal, searchOriginal, hashOriginal);
36
36
  const urlWithoutBase = (0, parseUrl_js_1.createUrlFromComponents)(origin, pathname, searchOriginal, hashOriginal);
37
37
  return urlWithoutBase;
@@ -49,7 +49,7 @@ function parseUrl(url, baseServer) {
49
49
  const pathnameOriginal = urlWithoutHashNorSearch.slice((origin || '').length);
50
50
  assertUrlComponents(url, origin, pathnameOriginal, searchOriginal, hashOriginal);
51
51
  // Base URL
52
- let { pathname, hasBaseServer } = removeBaseServer(pathnameAbsoluteWithBase, baseServer);
52
+ let { pathname, isBaseMissing } = removeBaseServer(pathnameAbsoluteWithBase, baseServer);
53
53
  // pageContext.urlParsed.href
54
54
  const href = createUrlFromComponents(origin, pathname, searchOriginal, hashOriginal);
55
55
  // pageContext.urlParsed.{hostname, port}
@@ -66,7 +66,7 @@ function parseUrl(url, baseServer) {
66
66
  origin,
67
67
  pathname,
68
68
  pathnameOriginal: pathnameOriginal,
69
- hasBaseServer,
69
+ isBaseMissing,
70
70
  search,
71
71
  searchAll,
72
72
  searchOriginal,
@@ -235,7 +235,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
235
235
  (0, assert_js_1.assert)(baseServer.startsWith('/'));
236
236
  if (baseServer === '/') {
237
237
  const pathname = pathnameAbsoluteWithBase;
238
- return { pathname, hasBaseServer: true };
238
+ return { pathname, isBaseMissing: false };
239
239
  }
240
240
  // Support `url === '/some-base-url' && baseServer === '/some-base-url/'`
241
241
  let baseServerNormalized = baseServer;
@@ -245,7 +245,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
245
245
  }
246
246
  if (!urlPathname.startsWith(baseServerNormalized)) {
247
247
  const pathname = pathnameAbsoluteWithBase;
248
- return { pathname, hasBaseServer: false };
248
+ return { pathname, isBaseMissing: true };
249
249
  }
250
250
  (0, assert_js_1.assert)(urlPathname.startsWith('/') || urlPathname.startsWith('http'));
251
251
  (0, assert_js_1.assert)(urlPathname.startsWith(baseServerNormalized));
@@ -253,7 +253,7 @@ function removeBaseServer(pathnameAbsoluteWithBase, baseServer) {
253
253
  if (!urlPathname.startsWith('/'))
254
254
  urlPathname = '/' + urlPathname;
255
255
  (0, assert_js_1.assert)(urlPathname.startsWith('/'));
256
- return { pathname: urlPathname, hasBaseServer: true };
256
+ return { pathname: urlPathname, isBaseMissing: false };
257
257
  }
258
258
  function isBaseServer(baseServer) {
259
259
  return baseServer.startsWith('/');
@@ -1,7 +1,7 @@
1
1
  export { setPageContextCurrent };
2
2
  export { getPageContextCurrent };
3
- import type { PageConfigUserFriendly } from '../../shared/getPageFiles.js';
4
- type PageContextCurrent = PageConfigUserFriendly & {
3
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
+ type PageContextCurrent = PageConfigUserFriendlyOld & {
5
5
  urlPathname: string;
6
6
  };
7
7
  declare function getPageContextCurrent(): null | PageContextCurrent;
@@ -5,7 +5,7 @@ export { getPageContextFromClientHooks };
5
5
  export { setPageContextInitIsPassedToClient };
6
6
  export type { PageContextFromServerHooks };
7
7
  export type { PageContextFromClientHooks };
8
- import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
8
+ import type { PageConfigUserFriendlyOld, PageFile } from '../../shared/getPageFiles.js';
9
9
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
10
10
  type PageContext = {
11
11
  urlOriginal: string;
@@ -21,9 +21,9 @@ declare function getPageContextFromHooks_serialized(): PageContextSerialized & {
21
21
  routeParams: Record<string, string>;
22
22
  _hasPageContextFromServer: true;
23
23
  };
24
- declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageConfigUserFriendly & {
24
+ declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageConfigUserFriendlyOld & {
25
25
  _hasPageContextFromServer: true;
26
- }): Promise<PageContextSerialized & PageContext & PageConfigUserFriendly & {
26
+ }): Promise<PageContextSerialized & PageContext & PageConfigUserFriendlyOld & {
27
27
  _hasPageContextFromServer: true;
28
28
  } & {
29
29
  _hasPageContextFromClient: boolean;
@@ -45,5 +45,5 @@ type PageContextFromClientHooks = {
45
45
  declare function getPageContextFromClientHooks(pageContext: {
46
46
  pageId: string;
47
47
  _hasPageContextFromServer: boolean;
48
- } & PageContext & PageConfigUserFriendly, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
48
+ } & PageContext & PageConfigUserFriendlyOld, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
49
49
  declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;
@@ -1,10 +1,10 @@
1
1
  export { getPrefetchSettings };
2
2
  export { PAGE_CONTEXT_MAX_AGE_DEFAULT };
3
3
  export type { PrefetchSettingResolved };
4
- import type { PageConfigUserFriendly } from '../../../shared/getPageFiles.js';
4
+ import type { PageConfigUserFriendlyOld } from '../../../shared/getPageFiles.js';
5
5
  declare const PAGE_CONTEXT_MAX_AGE_DEFAULT = 5000;
6
6
  type PrefetchSettingResolved = {
7
7
  staticAssets: false | 'hover' | 'viewport';
8
8
  pageContext: false | number;
9
9
  };
10
- declare function getPrefetchSettings(pageContext: PageConfigUserFriendly, linkTag: null | HTMLElement): PrefetchSettingResolved;
10
+ declare function getPrefetchSettings(pageContext: PageConfigUserFriendlyOld, linkTag: null | HTMLElement): PrefetchSettingResolved;
@@ -6,7 +6,7 @@ export { addLinkPrefetchHandlers };
6
6
  export { addLinkPrefetchHandlers_watch };
7
7
  export { addLinkPrefetchHandlers_unwatch };
8
8
  import { type PageContextFromServerHooks, getPageContextFromServerHooks } from './getPageContextFromHooks.js';
9
- import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
9
+ import type { PageConfigUserFriendlyOld, PageFile } from '../../shared/getPageFiles.js';
10
10
  import { type PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
11
11
  type ResultPageContextFromServer = Awaited<ReturnType<typeof getPageContextFromServerHooks>>;
12
12
  type PageContextForPrefetch = {
@@ -19,7 +19,7 @@ type PageContextForPrefetch = {
19
19
  };
20
20
  declare function getPageContextPrefetched(pageContext: {
21
21
  urlPathname: string;
22
- } & PageConfigUserFriendly): null | PageContextFromServerHooks;
22
+ } & PageConfigUserFriendlyOld): null | PageContextFromServerHooks;
23
23
  declare function populatePageContextPrefetchCache(pageContext: PageContextForPrefetch, result: ResultPageContextFromServer): void;
24
24
  /**
25
25
  * Programmatically prefetch client assets.
@@ -60,8 +60,8 @@ async function prefetchPageContextFromServerHooks(pageContextLink, resultMaxAge)
60
60
  const result = await getPageContextFromServerHooks(pageContextLink, false);
61
61
  setPageContextPrefetchCache(pageContextLink, result, resultMaxAge);
62
62
  }
63
- function populatePageContextPrefetchCache(pageContext /*& PageConfigUserFriendly*/, result) {
64
- // TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use PageConfigUserFriendly as it isn't available here.)
63
+ function populatePageContextPrefetchCache(pageContext /*& PageConfigUserFriendlyOld*/, result) {
64
+ // TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use PageConfigUserFriendlyOld as it isn't available here.)
65
65
  if (!isBrilloutDocpress())
66
66
  return;
67
67
  setPageContextPrefetchCache(pageContext, result, null);
@@ -49,8 +49,8 @@ function isSameAsCurrentUrl(href) {
49
49
  function hasBaseServer(href) {
50
50
  const baseServer = getBaseServer();
51
51
  assert(isBaseServer(baseServer));
52
- const { hasBaseServer } = parseUrl(href, baseServer);
53
- return hasBaseServer;
52
+ const { isBaseMissing } = parseUrl(href, baseServer);
53
+ return !isBaseMissing;
54
54
  }
55
55
  function isDisableAutomaticLinkInterception() {
56
56
  // @ts-ignore
@@ -11,6 +11,6 @@ declare function getPageContext(): Promise<{
11
11
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
12
12
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
13
13
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
14
- } & import("../../shared/getPageFiles.js").PageConfigUserFriendly & {
14
+ } & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
15
15
  _pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
16
16
  }>;
@@ -1,6 +1,6 @@
1
1
  export { executeOnRenderClientHook };
2
2
  export type { PageContextBeforeRenderClient };
3
- import type { PageFile, PageConfigUserFriendly } from '../../shared/getPageFiles.js';
3
+ import type { PageFile, PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
4
  import { type PageContextForUserConsumptionClientSide } from './preparePageContextForUserConsumptionClientSide.js';
5
5
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
6
6
  type PageContextBeforeRenderClient = {
@@ -9,5 +9,5 @@ type PageContextBeforeRenderClient = {
9
9
  urlPathname?: string;
10
10
  pageId: string;
11
11
  _pageConfigs: PageConfigRuntime[];
12
- } & PageConfigUserFriendly & PageContextForUserConsumptionClientSide;
12
+ } & PageConfigUserFriendlyOld & PageContextForUserConsumptionClientSide;
13
13
  declare function executeOnRenderClientHook<PC extends PageContextBeforeRenderClient>(pageContext: PC, isClientRouting: boolean): Promise<void>;
@@ -1,9 +1,9 @@
1
1
  export { loadUserFilesClientSide };
2
2
  export { isErrorFetchingStaticAssets };
3
3
  export type { PageContextUserFiles };
4
- import { type PageFile, type PageConfigUserFriendly } from '../../shared/getPageFiles.js';
4
+ import { type PageFile, type PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
5
5
  import type { PageConfigGlobalRuntime, PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
6
- type PageContextUserFilesLoaded = PageConfigUserFriendly & {
6
+ type PageContextUserFilesLoaded = PageConfigUserFriendlyOld & {
7
7
  _pageFilesLoaded: PageFile[];
8
8
  };
9
9
  type PageContextUserFiles = {
@@ -1,7 +1,7 @@
1
1
  export { loadUserFilesClientSide };
2
2
  export { isErrorFetchingStaticAssets };
3
3
  import { getPageFilesClientSide } from '../../shared/getPageFiles.js';
4
- import { getPageConfigUserFriendlyOld } from '../../shared/page-configs/getPageConfigUserFriendly.js';
4
+ import { getPageConfigUserFriendly_oldDesign } from '../../shared/page-configs/getPageConfigUserFriendly.js';
5
5
  import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
6
6
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
7
7
  import { objectAssign } from '../server-routing-runtime/utils.js';
@@ -30,7 +30,7 @@ async function loadUserFilesClientSide(pageId, pageFilesAll, pageConfigs, pageCo
30
30
  }
31
31
  throw err;
32
32
  }
33
- const pageContextExports = getPageConfigUserFriendlyOld(pageFilesClientSide, pageConfigLoaded, pageConfigGlobal);
33
+ const pageContextExports = getPageConfigUserFriendly_oldDesign(pageFilesClientSide, pageConfigLoaded, pageConfigGlobal);
34
34
  const pageContextAddendum = {};
35
35
  objectAssign(pageContextAddendum, pageContextExports);
36
36
  objectAssign(pageContextAddendum, { _pageFilesLoaded: pageFilesClientSide });
@@ -1,9 +1,9 @@
1
1
  export { preparePageContextForUserConsumptionClientSide };
2
2
  export type { PageContextForUserConsumptionClientSide };
3
- import type { PageConfigUserFriendly } from '../../shared/getPageFiles.js';
3
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
4
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
5
5
  import { PageContextForPassToClientWarning } from './getPageContextProxyForUser.js';
6
- type PageContextForUserConsumptionClientSide = PageConfigUserFriendly & PageContextForPassToClientWarning & {
6
+ type PageContextForUserConsumptionClientSide = PageConfigUserFriendlyOld & PageContextForPassToClientWarning & {
7
7
  pageId: string;
8
8
  _pageConfigs: PageConfigRuntime[];
9
9
  };