@web-widget/vue 0.9.0 → 0.10.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.
@@ -157,6 +157,7 @@ type JSONProps = {
157
157
  };
158
158
  interface CreateVueRenderOptions {
159
159
  onCreatedApp?: (app: App<Element>, context: RenderContext, component: Component, props: ComponentProps) => Promise<void>;
160
+ /**@deprecated*/
160
161
  onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
161
162
  }
162
163
 
@@ -35,11 +35,16 @@ import {
35
35
  defineRender,
36
36
  getComponentDescriptor
37
37
  } from "@web-widget/schema/client-helpers";
38
- import { createApp, createSSRApp } from "vue";
38
+ import { Suspense as Suspense2, createApp, createSSRApp, h as h2 } from "vue";
39
39
 
40
40
  // src/web-widget.ts
41
41
  import { parse } from "@web-widget/web-widget";
42
- import { h, defineComponent, Suspense, useAttrs } from "vue";
42
+ import {
43
+ h,
44
+ defineComponent,
45
+ Suspense,
46
+ useAttrs
47
+ } from "vue";
43
48
  var __ENV__ = {
44
49
  server: true
45
50
  };
@@ -165,6 +170,9 @@ var createVueRender = ({
165
170
  },
166
171
  onPrefetchData
167
172
  } = {}) => {
173
+ if (onPrefetchData) {
174
+ throw new Error(`"onPrefetchData" is not supported.`);
175
+ }
168
176
  return defineRender(async (context) => {
169
177
  const componentDescriptor = getComponentDescriptor(context);
170
178
  const { component, props } = componentDescriptor;
@@ -172,21 +180,18 @@ var createVueRender = ({
172
180
  throw new Error(`Container required.`);
173
181
  }
174
182
  let app;
183
+ const WrapSuspense = (props2) => h2(Suspense2, null, [h2(component, props2)]);
175
184
  return {
176
185
  async mount() {
177
- const state = context.recovering ? context.container.querySelector(
178
- "script[as=state]"
179
- ) : null;
180
- const stateContent = context.recovering && state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
181
- state == null ? void 0 : state.remove();
182
- const mergedProps = stateContent ? Object.assign(stateContent, props) : props;
183
186
  if (context.recovering) {
184
- app = createSSRApp(component, mergedProps);
187
+ app = createSSRApp(WrapSuspense, props);
185
188
  } else {
186
- app = createApp(component, mergedProps);
189
+ app = createApp(WrapSuspense, props);
187
190
  }
188
- await onCreatedApp(app, context, component, mergedProps);
189
- app.mount(context.container);
191
+ await onCreatedApp(app, context, component, props);
192
+ app.runWithContext(() => {
193
+ app.mount(context.container);
194
+ });
190
195
  },
191
196
  async unmount() {
192
197
  app == null ? void 0 : app.unmount();
@@ -158,6 +158,7 @@ type JSONProps = {
158
158
  };
159
159
  interface CreateVueRenderOptions {
160
160
  onCreatedApp?: (app: App<Element>, context: RenderContext, component: Component, props: ComponentProps) => Promise<void>;
161
+ /**@deprecated*/
161
162
  onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
162
163
  }
163
164
 
@@ -35,12 +35,17 @@ import {
35
35
  defineRender,
36
36
  getComponentDescriptor
37
37
  } from "@web-widget/schema/server-helpers";
38
- import { Fragment, createSSRApp, h as h2 } from "vue";
38
+ import { Suspense as Suspense2, createSSRApp, h as h2 } from "vue";
39
39
  import { renderToWebStream } from "vue/server-renderer";
40
40
 
41
41
  // src/web-widget.ts
42
42
  import { parse } from "@web-widget/web-widget";
43
- import { h, defineComponent, Suspense, useAttrs } from "vue";
43
+ import {
44
+ h,
45
+ defineComponent,
46
+ Suspense,
47
+ useAttrs
48
+ } from "vue";
44
49
  var __ENV__ = {
45
50
  server: true
46
51
  };
@@ -161,45 +166,22 @@ export * from "@web-widget/schema/server-helpers";
161
166
  Reflect.defineProperty(__ENV__, "server", {
162
167
  value: true
163
168
  });
164
- var ESCAPE_LOOKUP = {
165
- ">": "\\u003e",
166
- "<": "\\u003c",
167
- "\u2028": "\\u2028",
168
- "\u2029": "\\u2029"
169
- };
170
- var ESCAPE_REGEX = /[><\u2028\u2029]/g;
171
- function htmlEscapeJsonString(str) {
172
- return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
173
- }
174
169
  var createVueRender = ({
175
170
  onCreatedApp = async () => {
176
171
  },
177
172
  onPrefetchData
178
173
  } = {}) => {
174
+ if (onPrefetchData) {
175
+ throw new Error(`"onPrefetchData" is not supported.`);
176
+ }
179
177
  return defineRender(
180
178
  async (context, { vue: ssrContext } = {}) => {
181
179
  const componentDescriptor = getComponentDescriptor(context);
182
180
  const { component, props } = componentDescriptor;
183
- const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
184
- const mergedProps = state ? Object.assign({}, state, props) : props;
185
- if (state) {
186
- const stateStringify = htmlEscapeJsonString(JSON.stringify(state));
187
- const vNode = h2(Fragment, null, [
188
- h2(component, mergedProps),
189
- h2("script", {
190
- as: "state",
191
- type: "application/json",
192
- innerHTML: stateStringify
193
- })
194
- ]);
195
- const app = createSSRApp(vNode);
196
- await onCreatedApp(app, context, component, mergedProps);
197
- return renderToWebStream(app, ssrContext);
198
- } else {
199
- const app = createSSRApp(component, mergedProps);
200
- await onCreatedApp(app, context, component, mergedProps);
201
- return renderToWebStream(app, ssrContext);
202
- }
181
+ const WrapSuspense = (props2) => h2(Suspense2, null, [h2(component, props2)]);
182
+ const app = createSSRApp(WrapSuspense, props);
183
+ await onCreatedApp(app, context, component, props);
184
+ return app.runWithContext(() => renderToWebStream(app, ssrContext));
203
185
  }
204
186
  );
205
187
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web-widget/vue",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -27,10 +27,10 @@
27
27
  "dist"
28
28
  ],
29
29
  "dependencies": {
30
- "@web-widget/vite": "2.6.0",
31
- "@web-widget/html": "0.1.4",
32
- "@web-widget/schema": "0.3.0",
33
- "@web-widget/web-widget": "1.4.0"
30
+ "@web-widget/vite": "2.7.0",
31
+ "@web-widget/html": "0.1.5",
32
+ "@web-widget/schema": "0.4.0",
33
+ "@web-widget/web-widget": "1.5.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "tsup": "^7.0.0",