vike-react 0.3.5 → 0.3.6

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/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  # `vike-react`
7
7
 
8
- React integration for [Vike](https://vike.dev) (using the [V1 design](https://vike.dev/migration/v1-design)).
8
+ React integration for [Vike](https://vike.dev).
9
9
 
10
10
  > For integrations with Vue and Solid, see the other [`vike-*` packages](https://vike.dev/vike-packages).
11
11
 
@@ -44,6 +44,17 @@ declare const _default: {
44
44
  };
45
45
  effect: ConfigEffect;
46
46
  };
47
+ stream: {
48
+ env: {
49
+ server: true;
50
+ };
51
+ };
52
+ VikeReactQueryWrapper: {
53
+ env: {
54
+ client: true;
55
+ server: true;
56
+ };
57
+ };
47
58
  };
48
59
  };
49
60
  export default _default;
@@ -81,6 +92,14 @@ declare global {
81
92
  *
82
93
  */
83
94
  ssr?: boolean;
95
+ /**
96
+ * Whether to stream the page's HTML. Requires Server-Side Rendering (`ssr: true`).
97
+ *
98
+ * @default false
99
+ *
100
+ */
101
+ stream?: boolean;
102
+ VikeReactQueryWrapper?: Component;
84
103
  }
85
104
  }
86
105
  }
@@ -52,6 +52,12 @@ export default {
52
52
  ssr: {
53
53
  env: { config: true },
54
54
  effect: toggleSsrRelatedConfig
55
+ },
56
+ stream: {
57
+ env: { server: true }
58
+ },
59
+ VikeReactQueryWrapper: {
60
+ env: { client: true, server: true }
55
61
  }
56
62
  }
57
63
  };
@@ -2,18 +2,20 @@ export { getPageElement };
2
2
  import React from 'react';
3
3
  import { PageContextProvider } from './PageContextProvider.js';
4
4
  function getPageElement(pageContext) {
5
- var _a;
5
+ var _a, _b;
6
6
  const Layout = (_a = pageContext.config.Layout) !== null && _a !== void 0 ? _a : PassThrough;
7
7
  const Wrapper =
8
8
  /* Should we implement this? Enabling users to defined a wrapper that is used across all layouts.
9
9
  pageContext.config.Wrapper ??
10
10
  */
11
11
  PassThrough;
12
+ const VikeReactQueryWrapper = (_b = pageContext.config.VikeReactQueryWrapper) !== null && _b !== void 0 ? _b : PassThrough;
12
13
  const { Page, pageProps } = pageContext;
13
14
  const page = (React.createElement(React.StrictMode, null,
14
15
  React.createElement(PageContextProvider, { pageContext: pageContext },
15
- React.createElement(Wrapper, null,
16
- React.createElement(Layout, null, Page ? React.createElement(Page, { ...pageProps }) : null)))));
16
+ React.createElement(VikeReactQueryWrapper, { pageContext: pageContext },
17
+ React.createElement(Wrapper, null,
18
+ React.createElement(Layout, null, Page ? React.createElement(Page, { ...pageProps }) : null))))));
17
19
  return page;
18
20
  }
19
21
  function PassThrough({ children }) {
@@ -10,20 +10,26 @@ import React from 'react';
10
10
  checkVikeVersion();
11
11
  const onRenderHtml = async (pageContext) => {
12
12
  const lang = pageContext.config.lang || 'en';
13
- const { favicon } = pageContext.config;
13
+ const { stream, favicon, description } = pageContext.config;
14
14
  const faviconTag = !favicon ? '' : escapeInject `<link rel="icon" href="${favicon}" />`;
15
+ const descriptionTag = !description ? '' : escapeInject `<meta name="description" content="${description}" />`;
15
16
  const title = getTitle(pageContext);
16
17
  const titleTag = !title ? '' : escapeInject `<title>${title}</title>`;
17
- const { description } = pageContext.config;
18
- const descriptionTag = !description ? '' : escapeInject `<meta name="description" content="${description}" />`;
19
18
  const Head = pageContext.config.Head || (() => React.createElement(React.Fragment, null));
20
19
  const head = (React.createElement(React.StrictMode, null,
21
20
  React.createElement(PageContextProvider, { pageContext: pageContext },
22
21
  React.createElement(Head, null))));
23
22
  const headHtml = dangerouslySkipEscape(renderToString(head));
24
- const isSsrDisabled = !pageContext.Page;
25
- const page = isSsrDisabled ? React.createElement(React.Fragment, null) : getPageElement(pageContext);
26
- const streamOrString = isSsrDisabled ? dangerouslySkipEscape(renderToString(page)) : await renderToStream(page, { userAgent: pageContext.userAgent });
23
+ let pageView;
24
+ if (!pageContext.Page) {
25
+ pageView = '';
26
+ }
27
+ else {
28
+ const page = getPageElement(pageContext);
29
+ pageView = !stream
30
+ ? dangerouslySkipEscape(renderToString(page))
31
+ : await renderToStream(page, { userAgent: pageContext.userAgent });
32
+ }
27
33
  const documentHtml = escapeInject `<!DOCTYPE html>
28
34
  <html lang='${lang}'>
29
35
  <head>
@@ -34,7 +40,7 @@ const onRenderHtml = async (pageContext) => {
34
40
  ${headHtml}
35
41
  </head>
36
42
  <body>
37
- <div id="page-view">${streamOrString}</div>
43
+ <div id="page-view">${pageView}</div>
38
44
  </body>
39
45
  <!-- built with https://github.com/vikejs/vike-react -->
40
46
  </html>`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike-react",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "type": "module",
5
5
  "main": "./dist/renderer/+config.js",
6
6
  "types": "./dist/renderer/+config.d.ts",
@@ -14,24 +14,24 @@
14
14
  "scripts": {
15
15
  "dev": "tsc --watch",
16
16
  "build": "rm -rf dist/ && tsc",
17
- "release": "release-me patch",
18
- "release:commit": "release-me commit"
17
+ "release": "release-me --git-prefix vike-react --changelog-dir packages/vike-react/ patch",
18
+ "release:commit": "release-me --git-prefix vike-react --changelog-dir packages/vike-react/ commit"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "react": "18.x.x",
22
22
  "react-dom": "18.x.x",
23
- "vike": "^0.4.147",
23
+ "vike": "^0.4.149",
24
24
  "vite": "^4.3.8"
25
25
  },
26
26
  "devDependencies": {
27
- "@brillout/release-me": "^0.1.9",
27
+ "@brillout/release-me": "^0.1.12",
28
28
  "@types/node": "^18.17.18",
29
29
  "@types/react": "^18.2.22",
30
30
  "@types/react-dom": "^18.2.7",
31
31
  "react": "^18.2.0",
32
32
  "react-dom": "^18.2.0",
33
33
  "typescript": "^5.2.2",
34
- "vike": "^0.4.147"
34
+ "vike": "^0.4.149"
35
35
  },
36
36
  "dependencies": {
37
37
  "react-streaming": "^0.3.16"