vike 0.4.196 → 0.4.197-commit-9db6c02

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 (121) hide show
  1. package/dist/cjs/client/client-routing-runtime/prefetch/PrefetchSetting.js +2 -0
  2. package/dist/cjs/client/server-routing-runtime/onLoad.js +7 -0
  3. package/dist/cjs/client/server-routing-runtime/utils.js +34 -0
  4. package/dist/cjs/client/shared/getPageContextProxyForUser.js +79 -0
  5. package/dist/cjs/client/shared/preparePageContextForUserConsumptionClientSide.js +46 -0
  6. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +17 -1
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +26 -23
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.js → transformPointerImports.js} +3 -4
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +44 -47
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
  12. package/dist/cjs/node/prerender/runPrerender.js +5 -5
  13. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  14. package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  15. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +2 -2
  16. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -3
  17. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +1 -1
  18. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  19. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -4
  20. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -7
  21. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -4
  22. package/dist/cjs/node/runtime/renderPage.js +8 -8
  23. package/dist/cjs/shared/addIs404ToPageProps.js +1 -1
  24. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  25. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +2 -2
  26. package/dist/cjs/shared/preparePageContextForUserConsumption.js +34 -0
  27. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  28. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +6 -6
  29. package/dist/cjs/shared/route/index.js +3 -3
  30. package/dist/cjs/shared/route/resolveRouteString.js +10 -1
  31. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  32. package/dist/cjs/utils/isNpmPackage.js +4 -0
  33. package/dist/cjs/utils/isScriptFile.js +3 -3
  34. package/dist/esm/client/client-routing-runtime/entry.js +2 -2
  35. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +10 -0
  36. package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +25 -0
  37. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +28 -18
  38. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +39 -32
  39. package/dist/esm/client/client-routing-runtime/history.js +1 -1
  40. package/dist/esm/client/client-routing-runtime/initClientRouter.d.ts +2 -0
  41. package/dist/esm/client/client-routing-runtime/{installClientRouter.js → initClientRouter.js} +11 -8
  42. package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +2 -0
  43. package/dist/esm/client/client-routing-runtime/{onLinkClick.js → initOnLinkClick.js} +2 -2
  44. package/dist/esm/client/client-routing-runtime/isClientSideRoutable.js +1 -0
  45. package/dist/esm/client/client-routing-runtime/onBrowserHistoryNavigation.js +1 -1
  46. package/dist/esm/client/client-routing-runtime/prefetch/PrefetchSetting.d.ts +7 -0
  47. package/dist/esm/client/client-routing-runtime/prefetch/PrefetchSetting.js +1 -0
  48. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +8 -7
  49. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.js +74 -67
  50. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +16 -5
  51. package/dist/esm/client/client-routing-runtime/prefetch.js +167 -64
  52. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +115 -28
  53. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  54. package/dist/esm/client/server-routing-runtime/getPageContext.js +1 -1
  55. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +1 -1
  56. package/dist/esm/client/shared/getPageContextSerializedInHtml.d.ts +1 -1
  57. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +1 -1
  58. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +1 -1
  59. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +20 -29
  60. package/dist/esm/client/shared/removeFoucBuster.js +17 -11
  61. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +17 -1
  62. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
  63. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
  64. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +25 -22
  65. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.d.ts → transformPointerImports.d.ts} +2 -2
  66. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.js → transformPointerImports.js} +3 -4
  67. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +45 -48
  68. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
  69. package/dist/esm/node/prerender/runPrerender.js +5 -5
  70. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  71. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  72. package/dist/esm/node/runtime/html/injectAssets.d.ts +1 -1
  73. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +1 -1
  74. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +2 -2
  75. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
  76. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -3
  77. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +1 -1
  78. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +1 -1
  79. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +1 -1
  80. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
  81. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
  82. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  83. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
  84. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -4
  85. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +1 -1
  86. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -8
  87. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +6 -6
  88. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -4
  89. package/dist/esm/node/runtime/renderPage.js +8 -8
  90. package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -1
  91. package/dist/esm/shared/addIs404ToPageProps.js +1 -1
  92. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  93. package/dist/esm/shared/page-configs/Config.d.ts +21 -1
  94. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  95. package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +5 -0
  96. package/dist/esm/shared/preparePageContextForUserConsumption.js +32 -0
  97. package/dist/esm/shared/route/executeGuardHook.d.ts +1 -1
  98. package/dist/esm/shared/route/executeGuardHook.js +1 -1
  99. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +6 -6
  100. package/dist/esm/shared/route/index.d.ts +1 -1
  101. package/dist/esm/shared/route/index.js +3 -3
  102. package/dist/esm/shared/route/resolveRouteString.d.ts +2 -15
  103. package/dist/esm/shared/route/resolveRouteString.js +10 -1
  104. package/dist/esm/shared/types.d.ts +6 -2
  105. package/dist/esm/types/index.d.ts +1 -1
  106. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  107. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  108. package/dist/esm/utils/isNpmPackage.d.ts +2 -0
  109. package/dist/esm/utils/isNpmPackage.js +4 -0
  110. package/dist/esm/utils/isScriptFile.d.ts +2 -2
  111. package/dist/esm/utils/isScriptFile.js +3 -3
  112. package/dist/esm/utils/projectInfo.d.ts +1 -1
  113. package/package.json +1 -1
  114. package/dist/cjs/shared/sortPageContext.js +0 -12
  115. package/dist/esm/client/client-routing-runtime/installClientRouter.d.ts +0 -2
  116. package/dist/esm/client/client-routing-runtime/onLinkClick.d.ts +0 -2
  117. package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.d.ts +0 -4
  118. package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.js +0 -16
  119. package/dist/esm/shared/sortPageContext.d.ts +0 -2
  120. package/dist/esm/shared/sortPageContext.js +0 -10
  121. /package/{readme.md → README.md} +0 -0
@@ -14,7 +14,7 @@ const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNo
14
14
  async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
15
15
  let statusCode = pageContext.abortStatusCode;
16
16
  if (!statusCode) {
17
- const isError = !pageContext._pageId || (0, error_page_js_1.isErrorPage)(pageContext._pageId, pageContext._pageConfigs);
17
+ const isError = !pageContext.pageId || (0, error_page_js_1.isErrorPage)(pageContext.pageId, pageContext._pageConfigs);
18
18
  if (pageContext.errorWhileRendering) {
19
19
  (0, utils_js_1.assert)(isError);
20
20
  }
@@ -29,8 +29,8 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
29
29
  }
30
30
  const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
31
31
  const headers = [];
32
- (0, utils_js_1.assert)(pageContext._pageId);
33
- const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext._pageId, pageContext._pageConfigs);
32
+ (0, utils_js_1.assert)(pageContext.pageId);
33
+ const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._pageConfigs);
34
34
  if (cacheControl) {
35
35
  headers.push(['Cache-Control', cacheControl]);
36
36
  }
@@ -12,7 +12,7 @@ function debugPageFiles({ pageContext, isHtmlOnly, isClientRouting, pageFilesLoa
12
12
  debug('All page files:', printPageFiles(pageContext._pageFilesAll, true)); // TODO
13
13
  debug(`URL:`, pageContext.urlOriginal);
14
14
  debug.options({ serialization: { emptyArray: 'No match' } })(`Routing:`, printRouteMatches(pageContext._debugRouteMatches));
15
- debug(`pageId:`, pageContext._pageId);
15
+ debug(`pageId:`, pageContext.pageId);
16
16
  debug('Page type:', isHtmlOnly ? 'HTML-only' : 'SSR/SPA');
17
17
  debug(`Routing type:`, !isHtmlOnly && isClientRouting ? 'Client Routing' : 'Server Routing');
18
18
  debug('Server-side page files:', printPageFiles(pageFilesLoaded));
@@ -11,7 +11,7 @@ const createHttpResponse_js_1 = require("./createHttpResponse.js");
11
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
12
  // When the user hasn't defined _error.page.js
13
13
  async function handleErrorWithoutErrorPage(pageContext) {
14
- (0, utils_js_1.assert)(pageContext._pageId === null);
14
+ (0, utils_js_1.assert)(pageContext.pageId === null);
15
15
  (0, utils_js_1.assert)(pageContext.errorWhileRendering || pageContext.is404);
16
16
  {
17
17
  const isV1 = pageContext._pageConfigs.length > 0;
@@ -11,12 +11,12 @@ const analyzePage_js_1 = require("./analyzePage.js");
11
11
  const globalContext_js_1 = require("../globalContext.js");
12
12
  const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
13
13
  async function loadUserFilesServerSide(pageContext) {
14
- const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
14
+ const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
15
15
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
16
- loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
17
- (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
16
+ loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
17
+ (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
18
18
  ]);
19
- const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext._pageId);
19
+ const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext.pageId);
20
20
  const isV1Design = !!pageConfig;
21
21
  const passToClient = [];
22
22
  const errMsg = ' should be an array of strings.';
@@ -2,17 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.preparePageContextForUserConsumptionServerSide = preparePageContextForUserConsumptionServerSide;
4
4
  const utils_js_1 = require("../utils.js");
5
- const sortPageContext_js_1 = require("../../../shared/sortPageContext.js");
6
5
  const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
7
- const addIs404ToPageProps_js_1 = require("../../../shared/addIs404ToPageProps.js");
6
+ const preparePageContextForUserConsumption_js_1 = require("../../../shared/preparePageContextForUserConsumption.js");
8
7
  function preparePageContextForUserConsumptionServerSide(pageContext) {
9
8
  (0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContext);
10
9
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.routeParams));
11
10
  (0, utils_js_1.assert)('Page' in pageContext);
12
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.pageExports));
13
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.exports));
14
- (0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.exportsAll));
15
11
  (0, utils_js_1.assert)(typeof pageContext.isClientSideNavigation === 'boolean');
16
- (0, sortPageContext_js_1.sortPageContext)(pageContext);
17
- (0, addIs404ToPageProps_js_1.addIs404ToPageProps)(pageContext);
12
+ (0, preparePageContextForUserConsumption_js_1.preparePageContextForUserConsumption)(pageContext);
18
13
  }
@@ -28,12 +28,12 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
28
28
  const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
29
29
  const assertV1Design_js_1 = require("../../shared/assertV1Design.js");
30
30
  async function renderPageAlreadyRouted(pageContext) {
31
- // pageContext._pageId can either be the:
31
+ // pageContext.pageId can either be the:
32
32
  // - ID of the page matching the routing, or the
33
33
  // - ID of the error page `_error.page.js`.
34
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '_pageId', 'string'));
34
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'string'));
35
35
  const isError = pageContext.is404 || !!pageContext.errorWhileRendering;
36
- (0, utils_js_1.assert)(isError === (pageContext._pageId === (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs)));
36
+ (0, utils_js_1.assert)(isError === (pageContext.pageId === (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs)));
37
37
  (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
38
38
  if (!isError) {
39
39
  await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext));
@@ -95,7 +95,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
95
95
  return null;
96
96
  }
97
97
  const pageContext = {
98
- _pageId: errorPageId,
98
+ pageId: errorPageId,
99
99
  _httpRequestId: null,
100
100
  _urlRewrite: null,
101
101
  is404: true,
@@ -163,11 +163,11 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, renderC
163
163
  {
164
164
  const errorPageId = (0, error_page_js_1.getErrorPageId)(renderContext.pageFilesAll, renderContext.pageConfigs);
165
165
  if (!errorPageId) {
166
- (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { _pageId: null });
166
+ (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
167
167
  return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
168
168
  }
169
169
  else {
170
- (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { _pageId: errorPageId });
170
+ (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
171
171
  }
172
172
  }
173
173
  let pageContextErrorPage;
@@ -276,17 +276,17 @@ async function renderPageNominal(pageContext) {
276
276
  {
277
277
  const pageContextFromRoute = await (0, index_js_1.route)(pageContext);
278
278
  (0, utils_js_1.objectAssign)(pageContext, pageContextFromRoute);
279
- (0, utils_js_1.objectAssign)(pageContext, { is404: pageContext._pageId ? null : true });
280
- if (pageContext._pageId === null) {
279
+ (0, utils_js_1.objectAssign)(pageContext, { is404: pageContext.pageId ? null : true });
280
+ if (pageContext.pageId === null) {
281
281
  const errorPageId = (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs);
282
282
  if (!errorPageId) {
283
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '_pageId', 'null'));
283
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'null'));
284
284
  return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContext);
285
285
  }
286
- (0, utils_js_1.objectAssign)(pageContext, { _pageId: errorPageId });
286
+ (0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
287
287
  }
288
288
  }
289
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '_pageId', 'string'));
289
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'string'));
290
290
  (0, utils_js_1.assert)(pageContext.errorWhileRendering === null);
291
291
  // Render
292
292
  const pageContextAfterRender = await (0, renderPageAlreadyRouted_js_1.renderPageAlreadyRouted)(pageContext);
@@ -406,7 +406,7 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
406
406
  (0, utils_js_1.assert)(abortCall);
407
407
  (0, utils_js_1.assertUsage)(errorPageId, `You called ${picocolors_1.default.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
408
408
  const pageContext = createPageContext({});
409
- (0, utils_js_1.objectAssign)(pageContext, { _pageId: errorPageId });
409
+ (0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
410
410
  (0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
411
411
  (0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit);
412
412
  (0, utils_js_1.objectAssign)(pageContext, renderContext);
@@ -8,7 +8,7 @@ function addIs404ToPageProps(pageContext) {
8
8
  addIs404(pageContext);
9
9
  }
10
10
  function assertIs404(pageContext) {
11
- if ((0, error_page_js_1.isErrorPage)(pageContext._pageId, pageContext._pageConfigs)) {
11
+ if ((0, error_page_js_1.isErrorPage)(pageContext.pageId, pageContext._pageConfigs)) {
12
12
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'is404', 'boolean'));
13
13
  }
14
14
  }
@@ -15,6 +15,6 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
15
15
  (0, utils_js_1.assertUsage)(!('_objectCreatedByVike' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
16
16
  // In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
17
17
  // Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
18
- (0, utils_js_1.assertWarning)(!('_pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext._pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
18
+ (0, utils_js_1.assertWarning)(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
19
19
  (0, utils_js_1.assertUsage)(!('is404' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.is404')} which is forbidden, use ${picocolors_1.default.cyan('throw render()')} instead, see https://vike.dev/render`);
20
20
  }
@@ -7,7 +7,7 @@ exports.serializeConfigValues = serializeConfigValues;
7
7
  const assertIsNotProductionRuntime_js_1 = require("../../../utils/assertIsNotProductionRuntime.js");
8
8
  const utils_js_1 = require("../../../node/plugin/utils.js");
9
9
  const addImportStatement_js_1 = require("../../../node/plugin/plugins/importUserCode/addImportStatement.js");
10
- const transformFileImports_js_1 = require("../../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js");
10
+ const transformPointerImports_js_1 = require("../../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformPointerImports.js");
11
11
  const helpers_js_1 = require("../helpers.js");
12
12
  const stringify_1 = require("@brillout/json-serializer/stringify");
13
13
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
@@ -164,7 +164,7 @@ function valueToJson(value, configName, definedAtData, importStatements) {
164
164
  // - https://github.com/vikejs/vike-react/pull/113
165
165
  replacer(_, value) {
166
166
  if (typeof value === 'string') {
167
- const importData = (0, transformFileImports_js_1.parsePointerImportData)(value);
167
+ const importData = (0, transformPointerImports_js_1.parsePointerImportData)(value);
168
168
  if (importData) {
169
169
  const { importName } = (0, addImportStatement_js_1.addImportStatement)(importStatements, importData.importPath, importData.exportName);
170
170
  const replacement = [REPLACE_ME_BEFORE, importName, REPLACE_ME_AFTER].join('');
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preparePageContextForUserConsumption = preparePageContextForUserConsumption;
4
+ const utils_js_1 = require("./utils.js");
5
+ const addIs404ToPageProps_js_1 = require("./addIs404ToPageProps.js");
6
+ function preparePageContextForUserConsumption(pageContext) {
7
+ (0, utils_js_1.assert)(pageContext.pageId);
8
+ (0, utils_js_1.assert)('config' in pageContext);
9
+ (0, utils_js_1.assert)('configEntries' in pageContext);
10
+ (0, addIs404ToPageProps_js_1.addIs404ToPageProps)(pageContext);
11
+ // TODO/next-major-release: remove
12
+ if (!('_pageId' in pageContext)) {
13
+ Object.defineProperty(pageContext, '_pageId', {
14
+ get() {
15
+ (0, utils_js_1.assertWarning)(false, 'pageContext._pageId has been renamed to pageContext.pageId', {
16
+ showStackTrace: true,
17
+ onlyOnce: true
18
+ });
19
+ return pageContext.pageId;
20
+ },
21
+ enumerable: false
22
+ });
23
+ }
24
+ // For a more readable `console.log(pageContext)` output
25
+ sortPageContext(pageContext);
26
+ }
27
+ // Sort `pageContext` keys alphabetically, in order to make reading the `console.log(pageContext)` output easier
28
+ function sortPageContext(pageContext) {
29
+ let descriptors = Object.getOwnPropertyDescriptors(pageContext);
30
+ for (const key of Object.keys(pageContext))
31
+ delete pageContext[key];
32
+ descriptors = Object.fromEntries(Object.entries(descriptors).sort(([key1], [key2]) => (0, utils_js_1.compareString)(key1, key2)));
33
+ Object.defineProperties(pageContext, descriptors);
34
+ }
@@ -10,7 +10,7 @@ async function executeGuardHook(pageContext, prepareForUserConsumption) {
10
10
  if (pageContext._pageFilesAll.length > 0) {
11
11
  // V0.4 design
12
12
  (0, utils_js_1.assert)(pageContext._pageConfigs.length === 0);
13
- hook = findPageGuard(pageContext._pageId, pageContext._pageFilesAll);
13
+ hook = findPageGuard(pageContext.pageId, pageContext._pageFilesAll);
14
14
  }
15
15
  else {
16
16
  // V1 design
@@ -16,8 +16,8 @@ async function executeOnBeforeRouteHook(pageContext) {
16
16
  const pageContextFromHook = await getPageContextFromHook(pageContext._onBeforeRouteHook, pageContext);
17
17
  if (pageContextFromHook) {
18
18
  (0, utils_js_1.objectAssign)(pageContextFromOnBeforeRouteHook, pageContextFromHook);
19
- if ((0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, '_pageId', 'string') ||
20
- (0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, '_pageId', 'null')) {
19
+ if ((0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'pageId', 'string') ||
20
+ (0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'pageId', 'null')) {
21
21
  // We bypass Vike's routing
22
22
  if (!(0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'routeParams')) {
23
23
  (0, utils_js_1.objectAssign)(pageContextFromOnBeforeRouteHook, { routeParams: {} });
@@ -50,10 +50,10 @@ async function getPageContextFromHook(onBeforeRouteHook, pageContext) {
50
50
  return null;
51
51
  }
52
52
  (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn, 'pageContext', 'object'), `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext }')} but pageContext should be a plain JavaScript object.`);
53
- if ((0, utils_js_1.hasProp)(hookReturn.pageContext, '_pageId') && !(0, utils_js_1.hasProp)(hookReturn.pageContext, '_pageId', 'null')) {
54
- const errPrefix2 = `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: { _pageId } }')} but ${picocolors_1.default.cyan('_pageId')} should be`;
55
- (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn.pageContext, '_pageId', 'string'), `${errPrefix2} a string or null`);
56
- (0, utils_js_1.assertUsage)(pageContext._allPageIds.includes(hookReturn.pageContext._pageId), `${errPrefix2} ${(0, utils_js_1.joinEnglish)(pageContext._allPageIds.map((s) => picocolors_1.default.cyan(s)), 'or')}`);
53
+ if ((0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId') && !(0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId', 'null')) {
54
+ const errPrefix2 = `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: { pageId } }')} but ${picocolors_1.default.cyan('pageId')} should be`;
55
+ (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId', 'string'), `${errPrefix2} a string or null`);
56
+ (0, utils_js_1.assertUsage)(pageContext._allPageIds.includes(hookReturn.pageContext.pageId), `${errPrefix2} ${(0, utils_js_1.joinEnglish)(pageContext._allPageIds.map((s) => picocolors_1.default.cyan(s)), 'or')}`);
57
57
  }
58
58
  if ((0, utils_js_1.hasProp)(hookReturn.pageContext, 'routeParams')) {
59
59
  (0, resolveRouteFunction_js_1.assertRouteParams)(hookReturn.pageContext, `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: { routeParams } }')} but routeParams should`);
@@ -26,7 +26,7 @@ async function route(pageContext) {
26
26
  const pageContextFromOnBeforeRouteHook = await (0, executeOnBeforeRouteHook_js_1.executeOnBeforeRouteHook)(pageContext);
27
27
  if (pageContextFromOnBeforeRouteHook) {
28
28
  if (pageContextFromOnBeforeRouteHook._routingProvidedByOnBeforeRouteHook) {
29
- (0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook._pageId);
29
+ (0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook.pageId);
30
30
  return pageContextFromOnBeforeRouteHook;
31
31
  }
32
32
  else {
@@ -90,7 +90,7 @@ async function route(pageContext) {
90
90
  (0, utils_js_1.objectAssign)(pageContextFromRoute, { _routeMatch: winner });
91
91
  if (!winner) {
92
92
  (0, utils_js_1.objectAssign)(pageContextFromRoute, {
93
- _pageId: null,
93
+ pageId: null,
94
94
  routeParams: {}
95
95
  });
96
96
  return pageContextFromRoute;
@@ -99,7 +99,7 @@ async function route(pageContext) {
99
99
  const { routeParams } = winner;
100
100
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(routeParams));
101
101
  (0, utils_js_1.objectAssign)(pageContextFromRoute, {
102
- _pageId: winner.pageId,
102
+ pageId: winner.pageId,
103
103
  routeParams: winner.routeParams
104
104
  });
105
105
  }
@@ -8,7 +8,7 @@ exports.getUrlFromRouteString = getUrlFromRouteString;
8
8
  exports.isStaticRouteString = isStaticRouteString;
9
9
  exports.analyzeRouteString = analyzeRouteString;
10
10
  exports.assertRouteString = assertRouteString;
11
- exports.parseRouteString = parseRouteString;
11
+ exports.getRouteStringParameterList = getRouteStringParameterList;
12
12
  const utils_js_1 = require("../utils.js");
13
13
  const utils_js_2 = require("./utils.js");
14
14
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
@@ -101,6 +101,15 @@ function parseRouteString(routeString) {
101
101
  });
102
102
  return segments;
103
103
  }
104
+ function getRouteStringParameterList(routeString) {
105
+ const routeParameterList = [];
106
+ const segments = parseRouteString(routeString);
107
+ segments.forEach((segment) => {
108
+ if (segment.param)
109
+ routeParameterList.push(segment.param);
110
+ });
111
+ return routeParameterList;
112
+ }
104
113
  function getUrlFromRouteString(routeString) {
105
114
  if (isStaticRouteString(routeString)) {
106
115
  const url = routeString;
@@ -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.196';
5
+ exports.PROJECT_VERSION = '0.4.197-commit-9db6c02';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isNpmPackageImport = isNpmPackageImport;
4
+ exports.isNpmPackageImport_unreliable = isNpmPackageImport_unreliable;
4
5
  exports.assertIsNpmPackageImport = assertIsNpmPackageImport;
5
6
  exports.isValidPathAlias = isValidPathAlias;
6
7
  exports.parse = parse;
@@ -11,6 +12,9 @@ const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
11
12
  function isNpmPackageImport(str, { cannotBePathAlias }) {
12
13
  // We cannot distinguish path alises that look like npm package imports
13
14
  (0, assert_js_1.assert)(cannotBePathAlias);
15
+ return isNpmPackageImport_unreliable(str);
16
+ }
17
+ function isNpmPackageImport_unreliable(str) {
14
18
  const res = parse(str);
15
19
  return res !== null;
16
20
  }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.scriptFileExtensionList = exports.scriptFileExtensions = void 0;
4
4
  exports.isScriptFile = isScriptFile;
5
- exports.isJavaScriptFile = isJavaScriptFile;
5
+ exports.isPlainJavaScriptFile = isPlainJavaScriptFile;
6
6
  exports.isTemplateFile = isTemplateFile;
7
7
  const assert_js_1 = require("./assert.js");
8
8
  // We can't use a RegExp:
@@ -49,11 +49,11 @@ const scriptFileExtensions = '(' + scriptFileExtensionList.join('|') + ')';
49
49
  exports.scriptFileExtensions = scriptFileExtensions;
50
50
  function isScriptFile(filePath) {
51
51
  const yes = scriptFileExtensionList.some((ext) => filePath.endsWith('.' + ext));
52
- if (isJavaScriptFile(filePath))
52
+ if (isPlainJavaScriptFile(filePath))
53
53
  (0, assert_js_1.assert)(yes);
54
54
  return yes;
55
55
  }
56
- function isJavaScriptFile(filePath) {
56
+ function isPlainJavaScriptFile(filePath) {
57
57
  const yes1 = /\.(c|m)?(j|t)s$/.test(filePath);
58
58
  const yes2 = extJavaScript.some((ext) => filePath.endsWith('.' + ext));
59
59
  (0, assert_js_1.assert)(yes1 === yes2);
@@ -1,7 +1,7 @@
1
1
  import { assertClientRouting } from '../../utils/assertRoutingType.js';
2
2
  assertClientRouting();
3
3
  import './pageFiles';
4
- import { installClientRouter } from './installClientRouter.js';
4
+ import { initClientRouter } from './initClientRouter.js';
5
5
  import { assertSingleInstance_onClientEntryClientRouting } from './utils.js';
6
6
  import { removeFoucBuster } from '../shared/removeFoucBuster.js';
7
7
  // @ts-ignore Since dist/cjs/client/ is never used, we can ignore this error.
@@ -9,4 +9,4 @@ const isProd = import.meta.env.PROD;
9
9
  assertSingleInstance_onClientEntryClientRouting(isProd);
10
10
  if (import.meta.env.DEV)
11
11
  removeFoucBuster();
12
- installClientRouter();
12
+ initClientRouter();
@@ -0,0 +1,10 @@
1
+ export { setPageContextCurrent };
2
+ export { getPageContextCurrent };
3
+ export { getPageContextCurrentAsync };
4
+ import type { PageContextExports } from '../../shared/getPageFiles.js';
5
+ type PageContextCurrent = PageContextExports & {
6
+ urlPathname: string;
7
+ };
8
+ declare function getPageContextCurrent(): null | PageContextCurrent;
9
+ declare function getPageContextCurrentAsync(): Promise<PageContextCurrent>;
10
+ declare function setPageContextCurrent(pageContextCurrent: PageContextCurrent): void;
@@ -0,0 +1,25 @@
1
+ export { setPageContextCurrent };
2
+ export { getPageContextCurrent };
3
+ export { getPageContextCurrentAsync };
4
+ import { genPromise, getGlobalObject } from './utils.js';
5
+ const globalObject = getGlobalObject('getPageContextCurrent.ts', (() => {
6
+ const { promise: pageContextCurrentPromise, resolve: pageContextCurrentPromiseResolve } = genPromise();
7
+ return {
8
+ pageContextCurrent: null,
9
+ pageContextCurrentPromise,
10
+ pageContextCurrentPromiseResolve
11
+ };
12
+ })());
13
+ function getPageContextCurrent() {
14
+ const { pageContextCurrent } = globalObject;
15
+ return pageContextCurrent;
16
+ }
17
+ // TODO/pageContext-prefetch: I think we can remove this? Once we use Vike's default if pageContextCurrent isn't defined yet.
18
+ async function getPageContextCurrentAsync() {
19
+ const pageContextCurrent = await globalObject.pageContextCurrentPromise;
20
+ return pageContextCurrent;
21
+ }
22
+ function setPageContextCurrent(pageContextCurrent) {
23
+ globalObject.pageContextCurrent = pageContextCurrent;
24
+ globalObject.pageContextCurrentPromiseResolve(pageContextCurrent);
25
+ }
@@ -1,6 +1,10 @@
1
1
  export { getPageContextFromHooks_isHydration };
2
- export { getPageContextFromHooks_isNotHydration };
3
2
  export { getPageContextFromHooks_serialized };
3
+ export { getPageContextFromServerHooks };
4
+ export { getPageContextFromClientHooks };
5
+ export { setPageContextInitIsPassedToClient };
6
+ export type { PageContextFromServerHooks };
7
+ export type { PageContextFromClientHooks };
4
8
  import type { PageContextExports, PageFile } from '../../shared/getPageFiles.js';
5
9
  import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
6
10
  type PageContext = {
@@ -10,30 +14,36 @@ type PageContext = {
10
14
  _pageConfigs: PageConfigRuntime[];
11
15
  };
12
16
  type PageContextSerialized = {
13
- _pageId: string;
17
+ pageId: string;
14
18
  _hasPageContextFromServer: true;
15
19
  };
16
20
  declare function getPageContextFromHooks_serialized(): PageContextSerialized & {
17
21
  routeParams: Record<string, string>;
18
22
  };
19
- declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageContextExports): Promise<PageContextSerialized & PageContext & PageContextExports & {
20
- isHydration: true;
21
- _hasPageContextFromClient: false;
23
+ declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageContextExports & {
24
+ _hasPageContextFromServer: true;
25
+ }): Promise<PageContextSerialized & PageContext & PageContextExports & {
22
26
  _hasPageContextFromServer: true;
27
+ } & {
28
+ isHydration: true;
29
+ _hasPageContextFromClient: boolean;
23
30
  }>;
24
- declare function getPageContextFromHooks_isNotHydration(pageContext: {
25
- _pageId: string;
26
- } & PageContext & PageContextExports, isErrorPage: boolean): Promise<{
27
- is404ServerSideRouted: boolean;
28
- pageContextAugmented?: undefined;
31
+ type PageContextFromServerHooks = {
32
+ _hasPageContextFromServer: boolean;
33
+ };
34
+ declare function getPageContextFromServerHooks(pageContext: {
35
+ pageId: string;
36
+ } & PageContext, isErrorPage: boolean): Promise<{
37
+ is404ServerSideRouted: true;
29
38
  } | {
30
- pageContextAugmented: {
31
- _pageId: string;
32
- } & PageContext & PageContextExports & {
33
- isHydration: false;
34
- _hasPageContextFromClient: boolean;
35
- } & {
36
- _hasPageContextFromServer: boolean;
37
- };
38
39
  is404ServerSideRouted?: undefined;
40
+ pageContextFromServerHooks: PageContextFromServerHooks;
39
41
  }>;
42
+ type PageContextFromClientHooks = {
43
+ _hasPageContextFromClient: boolean;
44
+ };
45
+ declare function getPageContextFromClientHooks(pageContext: {
46
+ pageId: string;
47
+ _hasPageContextFromServer: boolean;
48
+ } & PageContext & PageContextExports, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
49
+ declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;