@web-widget/react 0.7.3 → 0.8.0
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/react.client.d.ts +4 -0
- package/dist/react.client.js +5 -8
- package/dist/react.server.d.ts +1 -0
- package/dist/react.server.js +7 -28
- package/package.json +4 -4
package/dist/react.client.d.ts
CHANGED
|
@@ -46,11 +46,13 @@ type JSONProps = {
|
|
|
46
46
|
[x: string]: JSONValue;
|
|
47
47
|
};
|
|
48
48
|
interface CreateReactRenderOptions {
|
|
49
|
+
/**@deprecated*/
|
|
49
50
|
onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
53
54
|
mount?: (() => void | Promise<void>) | undefined;
|
|
55
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
54
56
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
55
57
|
update?: (({ data }: {
|
|
56
58
|
data: Record<string, any>;
|
|
@@ -65,6 +67,7 @@ declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
65
67
|
/**@deprecated Please use `createReactRender` instead.*/
|
|
66
68
|
declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
67
69
|
mount?: (() => void | Promise<void>) | undefined;
|
|
70
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
68
71
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
69
72
|
update?: (({ data }: {
|
|
70
73
|
data: Record<string, any>;
|
|
@@ -78,6 +81,7 @@ declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
78
81
|
}>;
|
|
79
82
|
declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
80
83
|
mount?: (() => void | Promise<void>) | undefined;
|
|
84
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
81
85
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
82
86
|
update?: (({ data }: {
|
|
83
87
|
data: Record<string, any>;
|
package/dist/react.client.js
CHANGED
|
@@ -119,6 +119,9 @@ Reflect.defineProperty(__ENV__, "server", {
|
|
|
119
119
|
var createReactRender = ({
|
|
120
120
|
onPrefetchData
|
|
121
121
|
} = {}) => {
|
|
122
|
+
if (onPrefetchData) {
|
|
123
|
+
throw new Error(`"onPrefetchData" is not supported.`);
|
|
124
|
+
}
|
|
122
125
|
return defineRender(async (context) => {
|
|
123
126
|
const { recovering, container } = context;
|
|
124
127
|
const componentDescriptor = getComponentDescriptor(context);
|
|
@@ -129,17 +132,11 @@ var createReactRender = ({
|
|
|
129
132
|
let root;
|
|
130
133
|
return {
|
|
131
134
|
async mount() {
|
|
132
|
-
const state = context.recovering ? context.container.querySelector(
|
|
133
|
-
"script[as=state]"
|
|
134
|
-
) : null;
|
|
135
|
-
const stateContent = context.recovering && state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
136
|
-
state == null ? void 0 : state.remove();
|
|
137
|
-
const mergedProps = stateContent ? Object.assign(stateContent, props) : props;
|
|
138
135
|
let vNode;
|
|
139
136
|
if (typeof component === "function" && component.constructor.name === "AsyncFunction") {
|
|
140
|
-
vNode = await component(
|
|
137
|
+
vNode = await component(props);
|
|
141
138
|
} else {
|
|
142
|
-
vNode = createElement2(component,
|
|
139
|
+
vNode = createElement2(component, props);
|
|
143
140
|
}
|
|
144
141
|
vNode = createElement2(StrictMode, null, vNode);
|
|
145
142
|
if (recovering) {
|
package/dist/react.server.d.ts
CHANGED
package/dist/react.server.js
CHANGED
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
defineRender,
|
|
36
36
|
getComponentDescriptor
|
|
37
37
|
} from "@web-widget/schema/server-helpers";
|
|
38
|
-
import { createElement as createElement2
|
|
38
|
+
import { createElement as createElement2 } from "react";
|
|
39
39
|
|
|
40
40
|
// src/web-widget.ts
|
|
41
41
|
import { parse } from "@web-widget/web-widget";
|
|
@@ -116,47 +116,26 @@ export * from "@web-widget/schema/server-helpers";
|
|
|
116
116
|
Reflect.defineProperty(__ENV__, "server", {
|
|
117
117
|
value: true
|
|
118
118
|
});
|
|
119
|
-
var ESCAPE_LOOKUP = {
|
|
120
|
-
">": "\\u003e",
|
|
121
|
-
"<": "\\u003c",
|
|
122
|
-
"\u2028": "\\u2028",
|
|
123
|
-
"\u2029": "\\u2029"
|
|
124
|
-
};
|
|
125
|
-
var ESCAPE_REGEX = /[><\u2028\u2029]/g;
|
|
126
|
-
function htmlEscapeJsonString(str) {
|
|
127
|
-
return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
|
|
128
|
-
}
|
|
129
119
|
function renderToReadableStream2(vNode, renderOptions) {
|
|
130
120
|
return ReactDOMServer.renderToReadableStream(vNode, renderOptions);
|
|
131
121
|
}
|
|
132
122
|
var createReactRender = ({
|
|
133
123
|
onPrefetchData
|
|
134
124
|
} = {}) => {
|
|
125
|
+
if (onPrefetchData) {
|
|
126
|
+
throw new Error(`"onPrefetchData" is not supported.`);
|
|
127
|
+
}
|
|
135
128
|
return defineRender(
|
|
136
129
|
async (context, { react: reactRenderOptions } = {}) => {
|
|
137
130
|
const componentDescriptor = getComponentDescriptor(context);
|
|
138
131
|
const { component, props } = componentDescriptor;
|
|
139
|
-
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
140
|
-
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
141
132
|
let vNode;
|
|
142
133
|
if (typeof component === "function" && component.constructor.name === "AsyncFunction") {
|
|
143
|
-
vNode = await component(
|
|
134
|
+
vNode = await component(props);
|
|
144
135
|
} else {
|
|
145
|
-
vNode = createElement2(component,
|
|
136
|
+
vNode = createElement2(component, props);
|
|
146
137
|
}
|
|
147
|
-
const stream =
|
|
148
|
-
createElement2(StrictMode, null, [
|
|
149
|
-
vNode,
|
|
150
|
-
createElement2("script", {
|
|
151
|
-
as: "state",
|
|
152
|
-
type: "application/json",
|
|
153
|
-
dangerouslySetInnerHTML: {
|
|
154
|
-
__html: htmlEscapeJsonString(JSON.stringify(state))
|
|
155
|
-
}
|
|
156
|
-
})
|
|
157
|
-
]),
|
|
158
|
-
reactRenderOptions
|
|
159
|
-
) : await renderToReadableStream2(vNode, reactRenderOptions);
|
|
138
|
+
const stream = await renderToReadableStream2(vNode, reactRenderOptions);
|
|
160
139
|
if (reactRenderOptions == null ? void 0 : reactRenderOptions.awaitAllReady) {
|
|
161
140
|
await stream.allReady;
|
|
162
141
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"globals.d.ts"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@web-widget/vite": "2.
|
|
35
|
-
"@web-widget/schema": "0.
|
|
36
|
-
"@web-widget/web-widget": "1.
|
|
34
|
+
"@web-widget/vite": "2.7.0",
|
|
35
|
+
"@web-widget/schema": "0.4.0",
|
|
36
|
+
"@web-widget/web-widget": "1.5.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/react": "^18.2.9",
|