@web-widget/react 0.7.3 → 0.8.1

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.
@@ -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>;
@@ -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(mergedProps);
137
+ vNode = await component(props);
141
138
  } else {
142
- vNode = createElement2(component, mergedProps);
139
+ vNode = createElement2(component, props);
143
140
  }
144
141
  vNode = createElement2(StrictMode, null, vNode);
145
142
  if (recovering) {
@@ -47,6 +47,7 @@ type JSONProps = {
47
47
  [x: string]: JSONValue;
48
48
  };
49
49
  interface CreateReactRenderOptions {
50
+ /**@deprecated*/
50
51
  onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
51
52
  }
52
53
 
@@ -35,7 +35,7 @@ import {
35
35
  defineRender,
36
36
  getComponentDescriptor
37
37
  } from "@web-widget/schema/server-helpers";
38
- import { createElement as createElement2, StrictMode } from "react";
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(mergedProps);
134
+ vNode = await component(props);
144
135
  } else {
145
- vNode = createElement2(component, mergedProps);
136
+ vNode = createElement2(component, props);
146
137
  }
147
- const stream = state ? await renderToReadableStream2(
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.7.3",
3
+ "version": "0.8.1",
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.6.0",
35
- "@web-widget/schema": "0.3.0",
36
- "@web-widget/web-widget": "1.4.0"
34
+ "@web-widget/vite": "2.7.1",
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",