@web-widget/react 0.8.5 → 0.8.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/dist/react.client.d.ts +4 -3
- package/dist/react.client.js +3 -1
- package/dist/react.server.d.ts +1 -0
- package/dist/react.server.js +40 -3
- package/package.json +4 -4
package/dist/react.client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { RenderContext, ComponentProps } from '@web-widget/schema';
|
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import { ReactNode, Component } from 'react';
|
|
5
5
|
export * from '@web-widget/schema/client-helpers';
|
|
6
|
+
export { useWidgetSyncState as useWidgetState } from '@web-widget/schema/client-helpers';
|
|
6
7
|
import { WebWidgetContainerOptions, Loader } from '@web-widget/web-widget';
|
|
7
8
|
|
|
8
9
|
declare const __ENV__: {
|
|
@@ -52,9 +53,9 @@ interface CreateReactRenderOptions {
|
|
|
52
53
|
|
|
53
54
|
declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
54
55
|
mount?: (() => void | Promise<void>) | undefined;
|
|
55
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
56
56
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
57
57
|
update?: (({ data }: {
|
|
58
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
58
59
|
data: Record<string, any>;
|
|
59
60
|
}) => void | Promise<void>) | undefined;
|
|
60
61
|
} | {
|
|
@@ -67,9 +68,9 @@ declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
67
68
|
/**@deprecated Please use `createReactRender` instead.*/
|
|
68
69
|
declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
69
70
|
mount?: (() => void | Promise<void>) | undefined;
|
|
70
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
71
71
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
72
72
|
update?: (({ data }: {
|
|
73
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
73
74
|
data: Record<string, any>;
|
|
74
75
|
}) => void | Promise<void>) | undefined;
|
|
75
76
|
} | {
|
|
@@ -81,9 +82,9 @@ declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
81
82
|
}>;
|
|
82
83
|
declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
83
84
|
mount?: (() => void | Promise<void>) | undefined;
|
|
84
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
85
85
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
86
86
|
update?: (({ data }: {
|
|
87
|
+
/**@deprecated Please use `createReactRender` instead.*/
|
|
87
88
|
data: Record<string, any>;
|
|
88
89
|
}) => void | Promise<void>) | undefined;
|
|
89
90
|
} | {
|
package/dist/react.client.js
CHANGED
|
@@ -113,6 +113,7 @@ function defineWebWidget(loader, options) {
|
|
|
113
113
|
|
|
114
114
|
// src/client.ts
|
|
115
115
|
export * from "@web-widget/schema/client-helpers";
|
|
116
|
+
import { useWidgetSyncState } from "@web-widget/schema/client-helpers";
|
|
116
117
|
Reflect.defineProperty(__ENV__, "server", {
|
|
117
118
|
value: false
|
|
118
119
|
});
|
|
@@ -161,5 +162,6 @@ export {
|
|
|
161
162
|
createReactRender,
|
|
162
163
|
defineReactRender,
|
|
163
164
|
defineWebWidget,
|
|
164
|
-
render
|
|
165
|
+
render,
|
|
166
|
+
useWidgetSyncState as useWidgetState
|
|
165
167
|
};
|
package/dist/react.server.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { RenderToReadableStreamOptions } from 'react-dom/server';
|
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode, Component } from 'react';
|
|
6
6
|
export * from '@web-widget/schema/server-helpers';
|
|
7
|
+
export { useWidgetSyncState as useWidgetState } from '@web-widget/schema/server-helpers';
|
|
7
8
|
import { WebWidgetContainerOptions, Loader } from '@web-widget/web-widget';
|
|
8
9
|
|
|
9
10
|
declare const __ENV__: {
|
package/dist/react.server.js
CHANGED
|
@@ -113,12 +113,27 @@ function defineWebWidget(loader, options) {
|
|
|
113
113
|
// src/server.ts
|
|
114
114
|
import * as ReactDOMServer from "react-dom/server.browser";
|
|
115
115
|
export * from "@web-widget/schema/server-helpers";
|
|
116
|
+
import { useWidgetSyncState } from "@web-widget/schema/server-helpers";
|
|
116
117
|
Reflect.defineProperty(__ENV__, "server", {
|
|
117
118
|
value: true
|
|
118
119
|
});
|
|
119
120
|
function renderToReadableStream2(vNode, renderOptions) {
|
|
120
121
|
return ReactDOMServer.renderToReadableStream(vNode, renderOptions);
|
|
121
122
|
}
|
|
123
|
+
function createTimeoutSignal(ms) {
|
|
124
|
+
const controller = new AbortController();
|
|
125
|
+
const timer = setTimeout(() => {
|
|
126
|
+
controller.abort(
|
|
127
|
+
new Error(`Component did not finish rendering within ${ms}ms.`)
|
|
128
|
+
);
|
|
129
|
+
}, ms);
|
|
130
|
+
return [
|
|
131
|
+
controller.signal,
|
|
132
|
+
function disconnect() {
|
|
133
|
+
clearTimeout(timer);
|
|
134
|
+
}
|
|
135
|
+
];
|
|
136
|
+
}
|
|
122
137
|
var createReactRender = ({
|
|
123
138
|
onPrefetchData
|
|
124
139
|
} = {}) => {
|
|
@@ -126,9 +141,24 @@ var createReactRender = ({
|
|
|
126
141
|
throw new Error(`"onPrefetchData" is not supported.`);
|
|
127
142
|
}
|
|
128
143
|
return defineRender(
|
|
129
|
-
async (context, { react: reactRenderOptions } = {}) => {
|
|
144
|
+
async (context, { react: reactRenderOptions = {} } = {}) => {
|
|
145
|
+
let error, signal, disconnect;
|
|
130
146
|
const componentDescriptor = getComponentDescriptor(context);
|
|
131
147
|
const { component, props } = componentDescriptor;
|
|
148
|
+
const onError = reactRenderOptions.onError;
|
|
149
|
+
const awaitAllReady = reactRenderOptions.awaitAllReady;
|
|
150
|
+
if (!reactRenderOptions.signal) {
|
|
151
|
+
[signal, disconnect] = createTimeoutSignal(1e3 * 10);
|
|
152
|
+
reactRenderOptions.signal = signal;
|
|
153
|
+
}
|
|
154
|
+
reactRenderOptions.onError = (e) => {
|
|
155
|
+
error = e;
|
|
156
|
+
if (onError) {
|
|
157
|
+
onError(e);
|
|
158
|
+
} else if (!awaitAllReady) {
|
|
159
|
+
console.error(`[@web-widget/react]`, e);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
132
162
|
let vNode;
|
|
133
163
|
if (typeof component === "function" && component.constructor.name === "AsyncFunction") {
|
|
134
164
|
vNode = await component(props);
|
|
@@ -136,9 +166,15 @@ var createReactRender = ({
|
|
|
136
166
|
vNode = createElement2(component, props);
|
|
137
167
|
}
|
|
138
168
|
const stream = await renderToReadableStream2(vNode, reactRenderOptions);
|
|
139
|
-
if (
|
|
169
|
+
if (awaitAllReady) {
|
|
140
170
|
await stream.allReady;
|
|
141
171
|
}
|
|
172
|
+
if (disconnect) {
|
|
173
|
+
disconnect();
|
|
174
|
+
}
|
|
175
|
+
if (error) {
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
142
178
|
return stream;
|
|
143
179
|
}
|
|
144
180
|
);
|
|
@@ -151,5 +187,6 @@ export {
|
|
|
151
187
|
createReactRender,
|
|
152
188
|
defineReactRender,
|
|
153
189
|
defineWebWidget,
|
|
154
|
-
render
|
|
190
|
+
render,
|
|
191
|
+
useWidgetSyncState as useWidgetState
|
|
155
192
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/react",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
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.8.
|
|
35
|
-
"@web-widget/schema": "0.4.
|
|
36
|
-
"@web-widget/web-widget": "1.7.
|
|
34
|
+
"@web-widget/vite": "2.8.4",
|
|
35
|
+
"@web-widget/schema": "0.4.2",
|
|
36
|
+
"@web-widget/web-widget": "1.7.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/react": "^18.2.9",
|