vike 0.4.268-commit-45c1759 → 0.4.268-commit-ca58695

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.
@@ -1,2 +1,3 @@
1
1
  export { readPageContextJson } from '../runtime-client-routing/streamedValues.js';
2
+ export { createPageContextFromServer_experimentalRSC } from '../runtime-client-routing/renderPageClient.js';
2
3
  import '../assertEnvClient.js';
@@ -1,3 +1,4 @@
1
1
  // Used by vike-react-rsc
2
2
  export { readPageContextJson } from '../runtime-client-routing/streamedValues.js';
3
+ export { createPageContextFromServer_experimentalRSC } from '../runtime-client-routing/renderPageClient.js';
3
4
  import '../assertEnvClient.js';
@@ -3,6 +3,7 @@ export { getPageContextFromHooksClient_firstRender };
3
3
  export { getPageContextFromHooksServer };
4
4
  export { getPageContextFromHooksServer_firstRender };
5
5
  export { setPageContextInitIsPassedToClient };
6
+ export { processPageContextFromServer };
6
7
  export type { PageContextFromHooksServer };
7
8
  import type { PageContextConfig, PageFile } from '../../shared-server-client/getPageFiles.js';
8
9
  import type { PageContextCreatedClient } from './createPageContextClient.js';
@@ -509,3 +510,4 @@ declare function getPageContextFromHooksClient(pageContext: {
509
510
  urlOriginal: string;
510
511
  }>;
511
512
  declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;
513
+ declare function processPageContextFromServer(pageContext: Record<string, unknown>): void;
@@ -3,6 +3,7 @@ export { getPageContextFromHooksClient_firstRender };
3
3
  export { getPageContextFromHooksServer };
4
4
  export { getPageContextFromHooksServer_firstRender };
5
5
  export { setPageContextInitIsPassedToClient };
6
+ export { processPageContextFromServer };
6
7
  import { assert, assertUsage, getProjectError } from '../../utils/assert.js';
7
8
  import { getGlobalObject } from '../../utils/getGlobalObject.js';
8
9
  import { hasProp } from '../../utils/hasProp.js';
@@ -2,6 +2,7 @@ export { renderPageClient };
2
2
  export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { getPageContextClient };
5
+ export { createPageContextFromServer_experimentalRSC };
5
6
  export type { PageContextBegin };
6
7
  export type { PageContextInternalClientAfterRender };
7
8
  import { type PageContextAbort, type PageContextAborted } from '../../shared-server-client/route/abort.js';
@@ -798,3 +799,11 @@ declare function getRenderCount(): number;
798
799
  * https://vike.dev/getPageContextClient
799
800
  */
800
801
  declare function getPageContextClient(): PageContextClient | null;
802
+ /**
803
+ * Creates a new `pageContext` for the page that `pageContext` renders, with the values of `pageContextFromServer` on top.
804
+ * - `pageContext` is the `pageContext` of the page rendered last
805
+ * - `pageContext` and `pageContextFromServer` aren't modified
806
+ * - The new `pageContext` is the `pageContext.previousPageContext` of the next navigation, including a navigation that has already started
807
+ * - Unless a navigation has started, `getPageContextClient()` returns the new `pageContext`
808
+ */
809
+ declare function createPageContextFromServer_experimentalRSC(pageContext: PageContextClient, pageContextFromServer: Record<string, unknown>): PageContextClient;
@@ -2,6 +2,7 @@ export { renderPageClient };
2
2
  export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { getPageContextClient };
5
+ export { createPageContextFromServer_experimentalRSC };
5
6
  import { assert, assertInfo, assertWarning } from '../../utils/assert.js';
6
7
  import { catchInfiniteLoop } from '../../utils/catchInfiniteLoop.js';
7
8
  import { genPromise } from '../../utils/genPromise.js';
@@ -12,7 +13,7 @@ import { isReact } from '../../utils/isReact.js';
12
13
  import { objectAssign } from '../../utils/objectAssign.js';
13
14
  import { redirectHard } from '../../utils/redirectHard.js';
14
15
  import { updateType } from '../../utils/updateType.js';
15
- import { getPageContextFromHooksClient, getPageContextFromHooksServer, getPageContextFromHooksClient_firstRender, getPageContextFromHooksServer_firstRender, setPageContextInitIsPassedToClient, } from './getPageContextFromHooks.js';
16
+ import { getPageContextFromHooksClient, getPageContextFromHooksServer, getPageContextFromHooksClient_firstRender, getPageContextFromHooksServer_firstRender, setPageContextInitIsPassedToClient, processPageContextFromServer, } from './getPageContextFromHooks.js';
16
17
  import { cancelStreamedValues } from './streamedValues.js';
17
18
  import { createPageContextClient } from './createPageContextClient.js';
18
19
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache, } from './prefetch.js';
@@ -21,6 +22,7 @@ import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide, } from '../
21
22
  import { changeUrl, saveScrollPosition } from './history.js';
22
23
  import { addNewPageContextAborted, getPageContextAddendumAbort, isAbortError, logAbort, } from '../../shared-server-client/route/abort.js';
23
24
  import { route } from '../../shared-server-client/route/index.js';
25
+ import { forkPageContext } from '../../shared-server-client/forkPageContext.js';
24
26
  import { isClientSideRoutable } from './isClientSideRoutable.js';
25
27
  import { isScrollPosition, setScrollPosition } from './setScrollPosition.js';
26
28
  import { scrollRestoration_initialRenderIsDone } from './scrollRestoration.js';
@@ -401,6 +403,12 @@ async function renderPageClient(renderArgs) {
401
403
  }
402
404
  };
403
405
  changeUrl(urlOriginal, overwriteLastHistoryEntry);
406
+ {
407
+ const previousPageContextBefore = globalObject.renderedPageContext?.previousPageContext;
408
+ // Remove previousPageContext of past pages (otherwise all the past pageContext are kept in memory)
409
+ if (previousPageContextBefore)
410
+ previousPageContextBefore.previousPageContext = null;
411
+ }
404
412
  globalObject.previousPageContext = pageContext;
405
413
  // There should never be concurrent onRenderClient() calls
406
414
  assert(globalObject.onRenderClientPreviousPromise === undefined);
@@ -509,7 +517,7 @@ async function getPageContextBegin(isForErrorPage, { urlOriginal, isBackwardNavi
509
517
  showStackTrace: true,
510
518
  onlyOnce: true,
511
519
  });
512
- return previousPageContext;
520
+ return this.previousPageContext;
513
521
  },
514
522
  enumerable: false,
515
523
  });
@@ -608,6 +616,29 @@ function getPageContextClient() {
608
616
  return null;
609
617
  return getPageContextPublicClient(pageContext);
610
618
  }
619
+ // TODO/soon: check whether this is the right API
620
+ /**
621
+ * Creates a new `pageContext` for the page that `pageContext` renders, with the values of `pageContextFromServer` on top.
622
+ * - `pageContext` is the `pageContext` of the page rendered last
623
+ * - `pageContext` and `pageContextFromServer` aren't modified
624
+ * - The new `pageContext` is the `pageContext.previousPageContext` of the next navigation, including a navigation that has already started
625
+ * - Unless a navigation has started, `getPageContextClient()` returns the new `pageContext`
626
+ */
627
+ function createPageContextFromServer_experimentalRSC(pageContext, pageContextFromServer) {
628
+ const pageContextFromServerCopy = { ...pageContextFromServer };
629
+ processPageContextFromServer(pageContextFromServerCopy);
630
+ const pageContextNew = forkPageContext(pageContext._originalObject);
631
+ objectAssign(pageContextNew, pageContextFromServerCopy);
632
+ // A navigation sets currentPageContext and reads previousPageContext when it starts, and sets previousPageContext when it renders
633
+ if (globalObject.currentPageContext === globalObject.previousPageContext) {
634
+ globalObject.currentPageContext = pageContextNew;
635
+ }
636
+ else {
637
+ globalObject.currentPageContext.previousPageContext = getPageContextPublicClient(pageContextNew);
638
+ }
639
+ globalObject.previousPageContext = pageContextNew;
640
+ return getPageContextPublicClient(pageContextNew);
641
+ }
611
642
  async function loadPageConfigsLazyClientSideAndExecHook(pageContext, isFirstRender, isRenderOutdated) {
612
643
  let hasErr = false;
613
644
  let err;
@@ -17,7 +17,7 @@ function getPageContextPublicShared(pageContext) {
17
17
  showStackTrace: true,
18
18
  onlyOnce: true,
19
19
  });
20
- return pageContext.pageId;
20
+ return this.pageId;
21
21
  },
22
22
  enumerable: false,
23
23
  });
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: '0.4.268-commit-45c1759';
1
+ export declare const PROJECT_VERSION: '0.4.268-commit-ca58695';
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.268-commit-45c1759';
2
+ export const PROJECT_VERSION = '0.4.268-commit-ca58695';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.268-commit-45c1759",
3
+ "version": "0.4.268-commit-ca58695",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {