vike-react 0.4.7 → 0.4.8-commit-68be831

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.
package/dist/+config.d.ts CHANGED
@@ -48,6 +48,16 @@ declare const _default: {
48
48
  server: true;
49
49
  };
50
50
  };
51
+ _streamIsRequied: {
52
+ env: {
53
+ server: true;
54
+ };
55
+ };
56
+ onBeforeRenderClient: {
57
+ env: {
58
+ client: true;
59
+ };
60
+ };
51
61
  onAfterRenderClient: {
52
62
  env: {
53
63
  client: true;
package/dist/+config.js CHANGED
@@ -39,6 +39,12 @@ export default {
39
39
  stream: {
40
40
  env: { server: true }
41
41
  },
42
+ _streamIsRequied: {
43
+ env: { server: true }
44
+ },
45
+ onBeforeRenderClient: {
46
+ env: { client: true }
47
+ },
42
48
  onAfterRenderClient: {
43
49
  env: { client: true }
44
50
  },
@@ -5,16 +5,27 @@ import { getHeadSetting } from './getHeadSetting.js';
5
5
  import { getPageElement } from './getPageElement.js';
6
6
  let root;
7
7
  const onRenderClient = (pageContext) => {
8
+ pageContext.config.onBeforeRenderClient?.(pageContext);
8
9
  const page = getPageElement(pageContext);
10
+ // TODO: implement this? So that, upon errors, onRenderClient() throws an error and Vike can render the error. As of April 2024 it isn't released yet.
11
+ // - https://react-dev-git-fork-rickhanlonii-rh-root-options-fbopensource.vercel.app/reference/react-dom/client/createRoot#show-a-dialog-for-uncaught-errors
12
+ // - https://react-dev-git-fork-rickhanlonii-rh-root-options-fbopensource.vercel.app/reference/react-dom/client/hydrateRoot#show-a-dialog-for-uncaught-errors
13
+ const onUncaughtError = (_error, _errorInfo) => { };
9
14
  const container = document.getElementById('react-root');
10
15
  if (container.innerHTML !== '' && pageContext.isHydration) {
11
16
  // First render (hydration)
12
- root = ReactDOM.hydrateRoot(container, page);
17
+ root = ReactDOM.hydrateRoot(container, page, {
18
+ // @ts-expect-error
19
+ onUncaughtError
20
+ });
13
21
  }
14
22
  else {
15
23
  if (!root) {
16
24
  // First render (not hydration)
17
- root = ReactDOM.createRoot(container);
25
+ root = ReactDOM.createRoot(container, {
26
+ // @ts-expect-error
27
+ onUncaughtError
28
+ });
18
29
  }
19
30
  else {
20
31
  // Client-side navigation
@@ -26,9 +26,16 @@ const onRenderHtml = async (pageContext) => {
26
26
  }
27
27
  else {
28
28
  const page = getPageElement(pageContext);
29
- pageView = !pageContext.config.stream
30
- ? dangerouslySkipEscape(renderToString(page))
31
- : await renderToStream(page, { userAgent: pageContext.userAgent });
29
+ const { stream,
30
+ // @ts-expect-error
31
+ _streamIsRequied } = pageContext.config;
32
+ if (!stream && !_streamIsRequied) {
33
+ pageView = dangerouslySkipEscape(renderToString(page));
34
+ }
35
+ else {
36
+ const disable = stream === false ? true : undefined;
37
+ pageView = await renderToStream(page, { userAgent: pageContext.userAgent, disable });
38
+ }
32
39
  }
33
40
  const documentHtml = escapeInject `<!DOCTYPE html>
34
41
  <html lang='${lang}'>
@@ -60,5 +67,10 @@ function checkVikeVersion() {
60
67
  // - react-streaming (to improve error messages, see https://github.com/brillout/react-streaming/blob/70c168de1e97b9c4385a4c3002b5013f1e406341/src/utils/isVikeReactApp.ts#L4)
61
68
  function addEcosystemStamp() {
62
69
  const g = globalThis;
63
- g._isVikeReactApp = true;
70
+ g._isVikeReactApp =
71
+ /* Don't set to true so that consumers do `!!globalThis._isVikeApp` instead of `globalThis._isVikeApp === true`.
72
+ true
73
+ */
74
+ // We use an object so that we can eventually, in the future, add helpful information as needed. (E.g. the vike-react version.)
75
+ {};
64
76
  }
@@ -52,6 +52,10 @@ declare global {
52
52
  *
53
53
  */
54
54
  stream?: boolean;
55
+ /**
56
+ * Client-side hook called before the page is rendered.
57
+ */
58
+ onBeforeRenderClient?: (pageContext: PageContextClient) => void;
55
59
  /**
56
60
  * Client-side hook called after the page is rendered.
57
61
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike-react",
3
- "version": "0.4.7",
3
+ "version": "0.4.8-commit-68be831",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,9 +16,9 @@
16
16
  "scripts": {
17
17
  "dev": "tsc --watch",
18
18
  "build": "rm -rf dist/ && tsc",
19
- "release": "release-me --git-prefix vike-react --changelog-dir packages/vike-react/ patch",
20
- "release:minor": "release-me --git-prefix vike-react --changelog-dir packages/vike-react/ minor",
21
- "release:commit": "release-me --git-prefix vike-react --changelog-dir packages/vike-react/ commit"
19
+ "release": "release-me patch",
20
+ "release:minor": "release-me minor",
21
+ "release:commit": "release-me commit"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": "18.x.x",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@biomejs/biome": "^1.6.4",
31
- "@brillout/release-me": "^0.1.14",
31
+ "@brillout/release-me": "^0.3.4",
32
32
  "@types/node": "^20.11.17",
33
33
  "@types/react": "^18.2.55",
34
34
  "@types/react-dom": "^18.2.19",
@@ -38,7 +38,7 @@
38
38
  "vike": "^0.4.168"
39
39
  },
40
40
  "dependencies": {
41
- "react-streaming": "^0.3.25"
41
+ "react-streaming": "^0.3.27"
42
42
  },
43
43
  "typesVersions": {
44
44
  "*": {