@web-widget/react 0.8.5 → 0.8.7
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 +2 -7
- package/dist/react.client.js +7 -11
- package/dist/react.server.d.ts +2 -4
- package/dist/react.server.js +45 -14
- package/globals.d.ts +1 -1
- package/package.json +4 -4
package/dist/react.client.d.ts
CHANGED
|
@@ -3,11 +3,9 @@ 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
|
-
declare const __ENV__: {
|
|
9
|
-
server: boolean;
|
|
10
|
-
};
|
|
11
9
|
interface WebWidgetProps {
|
|
12
10
|
base?: WebWidgetContainerOptions["base"];
|
|
13
11
|
children?: ReactNode;
|
|
@@ -52,7 +50,6 @@ interface CreateReactRenderOptions {
|
|
|
52
50
|
|
|
53
51
|
declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
54
52
|
mount?: (() => void | Promise<void>) | undefined;
|
|
55
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
56
53
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
57
54
|
update?: (({ data }: {
|
|
58
55
|
data: Record<string, any>;
|
|
@@ -67,7 +64,6 @@ declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
67
64
|
/**@deprecated Please use `createReactRender` instead.*/
|
|
68
65
|
declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
69
66
|
mount?: (() => void | Promise<void>) | undefined;
|
|
70
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
71
67
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
72
68
|
update?: (({ data }: {
|
|
73
69
|
data: Record<string, any>;
|
|
@@ -81,7 +77,6 @@ declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
81
77
|
}>;
|
|
82
78
|
declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
83
79
|
mount?: (() => void | Promise<void>) | undefined;
|
|
84
|
-
/**@deprecated Please use `createReactRender` instead.*/
|
|
85
80
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
86
81
|
update?: (({ data }: {
|
|
87
82
|
data: Record<string, any>;
|
|
@@ -94,4 +89,4 @@ declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unk
|
|
|
94
89
|
}) => void | Promise<void>) | undefined;
|
|
95
90
|
}>;
|
|
96
91
|
|
|
97
|
-
export { DefineWebWidgetOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps,
|
|
92
|
+
export { DefineWebWidgetOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
|
package/dist/react.client.js
CHANGED
|
@@ -37,13 +37,13 @@ import {
|
|
|
37
37
|
} from "@web-widget/schema/client-helpers";
|
|
38
38
|
import { createElement as createElement2, StrictMode } from "react";
|
|
39
39
|
import { createRoot, hydrateRoot } from "react-dom/client";
|
|
40
|
+
export * from "@web-widget/schema/client-helpers";
|
|
41
|
+
import { useWidgetSyncState } from "@web-widget/schema/client-helpers";
|
|
40
42
|
|
|
41
|
-
// src/
|
|
43
|
+
// src/components.ts
|
|
42
44
|
import { parse } from "@web-widget/web-widget";
|
|
43
45
|
import { Suspense, createElement, lazy } from "react";
|
|
44
|
-
|
|
45
|
-
server: true
|
|
46
|
-
};
|
|
46
|
+
import { IS_BROWSER } from "@web-widget/schema/helpers";
|
|
47
47
|
function WebWidget(_a) {
|
|
48
48
|
var _b = _a, {
|
|
49
49
|
children,
|
|
@@ -64,7 +64,7 @@ function WebWidget(_a) {
|
|
|
64
64
|
// TODO Render children
|
|
65
65
|
children: ""
|
|
66
66
|
}));
|
|
67
|
-
if (
|
|
67
|
+
if (IS_BROWSER) {
|
|
68
68
|
console.warn(`Client components are experimental.`);
|
|
69
69
|
await customElements.whenDefined(tag);
|
|
70
70
|
const element = Object.assign(document.createElement(tag), props);
|
|
@@ -112,10 +112,6 @@ function defineWebWidget(loader, options) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// src/client.ts
|
|
115
|
-
export * from "@web-widget/schema/client-helpers";
|
|
116
|
-
Reflect.defineProperty(__ENV__, "server", {
|
|
117
|
-
value: false
|
|
118
|
-
});
|
|
119
115
|
var createReactRender = ({
|
|
120
116
|
onPrefetchData
|
|
121
117
|
} = {}) => {
|
|
@@ -157,9 +153,9 @@ var defineReactRender = createReactRender;
|
|
|
157
153
|
var render = createReactRender();
|
|
158
154
|
export {
|
|
159
155
|
WebWidget,
|
|
160
|
-
__ENV__,
|
|
161
156
|
createReactRender,
|
|
162
157
|
defineReactRender,
|
|
163
158
|
defineWebWidget,
|
|
164
|
-
render
|
|
159
|
+
render,
|
|
160
|
+
useWidgetSyncState as useWidgetState
|
|
165
161
|
};
|
package/dist/react.server.d.ts
CHANGED
|
@@ -4,11 +4,9 @@ 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
|
-
declare const __ENV__: {
|
|
10
|
-
server: boolean;
|
|
11
|
-
};
|
|
12
10
|
interface WebWidgetProps {
|
|
13
11
|
base?: WebWidgetContainerOptions["base"];
|
|
14
12
|
children?: ReactNode;
|
|
@@ -61,4 +59,4 @@ declare const createReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions
|
|
|
61
59
|
declare const defineReactRender: ({ onPrefetchData, }?: CreateReactRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: ResponseInit & ReactRenderOptions) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
|
|
62
60
|
declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: ResponseInit & ReactRenderOptions) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
|
|
63
61
|
|
|
64
|
-
export { DefineWebWidgetOptions, ReactRenderOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps,
|
|
62
|
+
export { DefineWebWidgetOptions, ReactRenderOptions, WebWidget, WebWidgetProps, WebWidgetSuspenseProps, createReactRender, defineReactRender, defineWebWidget, render };
|
package/dist/react.server.js
CHANGED
|
@@ -36,13 +36,14 @@ import {
|
|
|
36
36
|
getComponentDescriptor
|
|
37
37
|
} from "@web-widget/schema/server-helpers";
|
|
38
38
|
import { createElement as createElement2 } from "react";
|
|
39
|
+
import * as ReactDOMServer from "react-dom/server.browser";
|
|
40
|
+
export * from "@web-widget/schema/server-helpers";
|
|
41
|
+
import { useWidgetSyncState } from "@web-widget/schema/server-helpers";
|
|
39
42
|
|
|
40
|
-
// src/
|
|
43
|
+
// src/components.ts
|
|
41
44
|
import { parse } from "@web-widget/web-widget";
|
|
42
45
|
import { Suspense, createElement, lazy } from "react";
|
|
43
|
-
|
|
44
|
-
server: true
|
|
45
|
-
};
|
|
46
|
+
import { IS_BROWSER } from "@web-widget/schema/helpers";
|
|
46
47
|
function WebWidget(_a) {
|
|
47
48
|
var _b = _a, {
|
|
48
49
|
children,
|
|
@@ -63,7 +64,7 @@ function WebWidget(_a) {
|
|
|
63
64
|
// TODO Render children
|
|
64
65
|
children: ""
|
|
65
66
|
}));
|
|
66
|
-
if (
|
|
67
|
+
if (IS_BROWSER) {
|
|
67
68
|
console.warn(`Client components are experimental.`);
|
|
68
69
|
await customElements.whenDefined(tag);
|
|
69
70
|
const element = Object.assign(document.createElement(tag), props);
|
|
@@ -111,14 +112,23 @@ function defineWebWidget(loader, options) {
|
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
// src/server.ts
|
|
114
|
-
import * as ReactDOMServer from "react-dom/server.browser";
|
|
115
|
-
export * from "@web-widget/schema/server-helpers";
|
|
116
|
-
Reflect.defineProperty(__ENV__, "server", {
|
|
117
|
-
value: true
|
|
118
|
-
});
|
|
119
115
|
function renderToReadableStream2(vNode, renderOptions) {
|
|
120
116
|
return ReactDOMServer.renderToReadableStream(vNode, renderOptions);
|
|
121
117
|
}
|
|
118
|
+
function createTimeoutSignal(ms) {
|
|
119
|
+
const controller = new AbortController();
|
|
120
|
+
const timer = setTimeout(() => {
|
|
121
|
+
controller.abort(
|
|
122
|
+
new Error(`Component did not finish rendering within ${ms}ms.`)
|
|
123
|
+
);
|
|
124
|
+
}, ms);
|
|
125
|
+
return [
|
|
126
|
+
controller.signal,
|
|
127
|
+
function disconnect() {
|
|
128
|
+
clearTimeout(timer);
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
}
|
|
122
132
|
var createReactRender = ({
|
|
123
133
|
onPrefetchData
|
|
124
134
|
} = {}) => {
|
|
@@ -126,9 +136,24 @@ var createReactRender = ({
|
|
|
126
136
|
throw new Error(`"onPrefetchData" is not supported.`);
|
|
127
137
|
}
|
|
128
138
|
return defineRender(
|
|
129
|
-
async (context, { react: reactRenderOptions } = {}) => {
|
|
139
|
+
async (context, { react: reactRenderOptions = {} } = {}) => {
|
|
140
|
+
let error, signal, disconnect;
|
|
130
141
|
const componentDescriptor = getComponentDescriptor(context);
|
|
131
142
|
const { component, props } = componentDescriptor;
|
|
143
|
+
const onError = reactRenderOptions.onError;
|
|
144
|
+
const awaitAllReady = reactRenderOptions.awaitAllReady;
|
|
145
|
+
if (!reactRenderOptions.signal) {
|
|
146
|
+
[signal, disconnect] = createTimeoutSignal(1e3 * 10);
|
|
147
|
+
reactRenderOptions.signal = signal;
|
|
148
|
+
}
|
|
149
|
+
reactRenderOptions.onError = (e) => {
|
|
150
|
+
error = e;
|
|
151
|
+
if (onError) {
|
|
152
|
+
onError(e);
|
|
153
|
+
} else if (!awaitAllReady) {
|
|
154
|
+
console.error(`[@web-widget/react]`, e);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
132
157
|
let vNode;
|
|
133
158
|
if (typeof component === "function" && component.constructor.name === "AsyncFunction") {
|
|
134
159
|
vNode = await component(props);
|
|
@@ -136,9 +161,15 @@ var createReactRender = ({
|
|
|
136
161
|
vNode = createElement2(component, props);
|
|
137
162
|
}
|
|
138
163
|
const stream = await renderToReadableStream2(vNode, reactRenderOptions);
|
|
139
|
-
if (
|
|
164
|
+
if (awaitAllReady) {
|
|
140
165
|
await stream.allReady;
|
|
141
166
|
}
|
|
167
|
+
if (disconnect) {
|
|
168
|
+
disconnect();
|
|
169
|
+
}
|
|
170
|
+
if (error) {
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
142
173
|
return stream;
|
|
143
174
|
}
|
|
144
175
|
);
|
|
@@ -147,9 +178,9 @@ var defineReactRender = createReactRender;
|
|
|
147
178
|
var render = createReactRender();
|
|
148
179
|
export {
|
|
149
180
|
WebWidget,
|
|
150
|
-
__ENV__,
|
|
151
181
|
createReactRender,
|
|
152
182
|
defineReactRender,
|
|
153
183
|
defineWebWidget,
|
|
154
|
-
render
|
|
184
|
+
render,
|
|
185
|
+
useWidgetSyncState as useWidgetState
|
|
155
186
|
};
|
package/globals.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/react",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.7",
|
|
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.5",
|
|
35
|
+
"@web-widget/schema": "0.4.3",
|
|
36
|
+
"@web-widget/web-widget": "1.7.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/react": "^18.2.9",
|