vike-react 0.4.13 → 0.4.15-commit-9c8eeea
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 +2 -5
- package/dist/+config.d.ts +1 -0
- package/dist/+config.js +3 -2
- package/dist/renderer/getPageElement.js +7 -7
- package/dist/renderer/onRenderHtml.js +6 -5
- package/dist/types/Config.d.ts +12 -6
- package/package.json +4 -4
package/README.md
CHANGED
@@ -1,5 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
See also:
|
4
|
-
- Docs at [`vike.dev`](https://vike.dev) and [`vike.dev/vike-react`](https://vike.dev/vike-react)
|
5
|
-
- [CHANGELOG.md](https://github.com/vikejs/vike-react/blob/main/packages/vike-react/CHANGELOG.md)
|
1
|
+
Docs: [vike.dev/vike-react](https://vike.dev/vike-react)
|
2
|
+
Source code: [GitHub > vikejs/vike-react](https://github.com/vikejs/vike-react)
|
package/dist/+config.d.ts
CHANGED
package/dist/+config.js
CHANGED
@@ -5,7 +5,7 @@ import './types/index.js';
|
|
5
5
|
export default {
|
6
6
|
name: 'vike-react',
|
7
7
|
require: {
|
8
|
-
vike: '>=0.4.
|
8
|
+
vike: '>=0.4.178'
|
9
9
|
},
|
10
10
|
// https://vike.dev/onRenderHtml
|
11
11
|
onRenderHtml: 'import:vike-react/renderer/onRenderHtml:onRenderHtml',
|
@@ -24,7 +24,8 @@ export default {
|
|
24
24
|
env: { server: true }
|
25
25
|
},
|
26
26
|
Layout: {
|
27
|
-
env: { server: true, client: true }
|
27
|
+
env: { server: true, client: true },
|
28
|
+
cumulative: true
|
28
29
|
},
|
29
30
|
title: {
|
30
31
|
env: { server: true, client: true }
|
@@ -2,11 +2,14 @@ export { getPageElement };
|
|
2
2
|
import React from 'react';
|
3
3
|
import { PageContextProvider } from '../hooks/usePageContext.js';
|
4
4
|
function getPageElement(pageContext) {
|
5
|
-
// Main component
|
6
|
-
const Layout = pageContext.config.Layout ?? PassThrough;
|
7
5
|
const { Page } = pageContext;
|
8
|
-
let page =
|
9
|
-
|
6
|
+
let page = Page ? React.createElement(Page, null) : null;
|
7
|
+
[
|
8
|
+
// Inner wrapping
|
9
|
+
...(pageContext.config.Layout || []),
|
10
|
+
// Outer wrapping
|
11
|
+
...(pageContext.config.Wrapper || [])
|
12
|
+
].forEach((Wrapper) => {
|
10
13
|
page = React.createElement(Wrapper, null, page);
|
11
14
|
});
|
12
15
|
page = React.createElement(PageContextProvider, { pageContext: pageContext }, page);
|
@@ -15,6 +18,3 @@ function getPageElement(pageContext) {
|
|
15
18
|
}
|
16
19
|
return page;
|
17
20
|
}
|
18
|
-
function PassThrough({ children }) {
|
19
|
-
return React.createElement(React.Fragment, null, children);
|
20
|
-
}
|
@@ -1,19 +1,19 @@
|
|
1
1
|
// https://vike.dev/onRenderHtml
|
2
2
|
export { onRenderHtml };
|
3
|
+
import React from 'react';
|
3
4
|
import { renderToString } from 'react-dom/server';
|
4
5
|
import { renderToStream } from 'react-streaming/server';
|
5
|
-
import {
|
6
|
+
import { dangerouslySkipEscape, escapeInject, version } from 'vike/server';
|
7
|
+
import { PageContextProvider } from '../hooks/usePageContext.js';
|
6
8
|
import { getHeadSetting } from './getHeadSetting.js';
|
7
9
|
import { getPageElement } from './getPageElement.js';
|
8
|
-
import { PageContextProvider } from '../hooks/usePageContext.js';
|
9
|
-
import React from 'react';
|
10
10
|
checkVikeVersion();
|
11
11
|
addEcosystemStamp();
|
12
12
|
const onRenderHtml = async (pageContext) => {
|
13
13
|
const title = getHeadSetting('title', pageContext);
|
14
14
|
const favicon = getHeadSetting('favicon', pageContext);
|
15
15
|
const lang = getHeadSetting('lang', pageContext) || 'en';
|
16
|
-
const
|
16
|
+
const titleTags = !title ? '' : escapeInject `<title>${title}</title><meta property="og:title" content="${title}" />`;
|
17
17
|
const faviconTag = !favicon ? '' : escapeInject `<link rel="icon" href="${favicon}" />`;
|
18
18
|
const Head = pageContext.config.Head || (() => React.createElement(React.Fragment, null));
|
19
19
|
let head = (React.createElement(PageContextProvider, { pageContext: pageContext },
|
@@ -35,6 +35,7 @@ const onRenderHtml = async (pageContext) => {
|
|
35
35
|
else {
|
36
36
|
const disable = stream === false ? true : undefined;
|
37
37
|
pageView = await renderToStream(page, {
|
38
|
+
webStream: typeof stream === 'string' ? stream === 'web' : undefined,
|
38
39
|
userAgent: pageContext.headers?.['user-agent'] ||
|
39
40
|
// Deprecated way of acccessing User Agent header. Eventually remove it.
|
40
41
|
pageContext.userAgent,
|
@@ -46,7 +47,7 @@ const onRenderHtml = async (pageContext) => {
|
|
46
47
|
<html lang='${lang}'>
|
47
48
|
<head>
|
48
49
|
<meta charset="UTF-8" />
|
49
|
-
${
|
50
|
+
${titleTags}
|
50
51
|
${headHtml}
|
51
52
|
${faviconTag}
|
52
53
|
</head>
|
package/dist/types/Config.d.ts
CHANGED
@@ -9,13 +9,11 @@ declare global {
|
|
9
9
|
/**
|
10
10
|
* A component that defines the visual layout of the page common to several pages.
|
11
11
|
*
|
12
|
-
* Technically: the `<
|
12
|
+
* Technically: the `<Layout>` component wraps the root component `<Page>`.
|
13
13
|
*
|
14
14
|
* https://vike.dev/Layout
|
15
15
|
*/
|
16
|
-
Layout?:
|
17
|
-
children: React.ReactNode;
|
18
|
-
}) => React.ReactNode;
|
16
|
+
Layout?: Layout;
|
19
17
|
/**
|
20
18
|
* A component wrapping the the root component `<Page>`.
|
21
19
|
*
|
@@ -44,14 +42,20 @@ declare global {
|
|
44
42
|
*/
|
45
43
|
ssr?: boolean;
|
46
44
|
/**
|
47
|
-
* Whether to stream the page's HTML.
|
45
|
+
* Whether to stream the page's HTML.
|
46
|
+
*
|
47
|
+
* Requires Server-Side Rendering (`ssr: true`).
|
48
|
+
*
|
49
|
+
* A Node.js Stream is used whenever possible, falling back to a Web Stream otherwise.
|
50
|
+
*
|
51
|
+
* By setting the value to `web` or `node`, you force the usage of a Web Stream or Node.js Stream.
|
48
52
|
*
|
49
53
|
* @default false
|
50
54
|
*
|
51
55
|
* https://vike.dev/stream
|
52
56
|
*
|
53
57
|
*/
|
54
|
-
stream?: boolean;
|
58
|
+
stream?: boolean | 'node' | 'web';
|
55
59
|
/**
|
56
60
|
* Whether the existence of the React SSR stream is required (some integrations require it).
|
57
61
|
*
|
@@ -81,10 +85,12 @@ declare global {
|
|
81
85
|
}
|
82
86
|
interface ConfigResolved {
|
83
87
|
Wrapper?: Wrapper[];
|
88
|
+
Layout?: Layout[];
|
84
89
|
}
|
85
90
|
}
|
86
91
|
}
|
87
92
|
type Wrapper = (props: {
|
88
93
|
children: React.ReactNode;
|
89
94
|
}) => React.ReactNode;
|
95
|
+
type Layout = Wrapper;
|
90
96
|
export {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "vike-react",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.15-commit-9c8eeea",
|
4
4
|
"type": "module",
|
5
5
|
"main": "./dist/index.js",
|
6
6
|
"types": "./dist/index.d.ts",
|
@@ -23,7 +23,7 @@
|
|
23
23
|
"peerDependencies": {
|
24
24
|
"react": ">=18.0.0",
|
25
25
|
"react-dom": ">=18.0.0",
|
26
|
-
"vike": ">=0.4.
|
26
|
+
"vike": ">=0.4.178",
|
27
27
|
"vite": ">=4.3.8"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
@@ -36,10 +36,10 @@
|
|
36
36
|
"react-dom": "^18.2.0",
|
37
37
|
"rimraf": "^5.0.5",
|
38
38
|
"typescript": "^5.3.3",
|
39
|
-
"vike": "^0.4.
|
39
|
+
"vike": "^0.4.178"
|
40
40
|
},
|
41
41
|
"dependencies": {
|
42
|
-
"react-streaming": "^0.3.
|
42
|
+
"react-streaming": "^0.3.36"
|
43
43
|
},
|
44
44
|
"typesVersions": {
|
45
45
|
"*": {
|