@web-widget/vue2 1.56.0 → 1.57.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.
@@ -1,16 +1,18 @@
1
1
  // src/components.ts
2
2
  import { WebWidgetRenderer } from "@web-widget/web-widget";
3
3
  import Vue, { h, defineComponent, useAttrs, getCurrentInstance } from "vue";
4
- import { IS_CLIENT } from "@web-widget/helpers/env";
5
4
  Vue.config.ignoredElements = ["web-widget"];
6
- Vue.config.warnHandler = (msg, vm, trace) => {
7
- if (msg === `Error in setup: "[object Promise]"`) {
5
+ Vue.config.warnHandler = (msg, _vm, trace) => {
6
+ if (msg.includes(`[object Promise]`)) {
8
7
  return;
9
8
  }
10
9
  console.error("[Vue warn]: ".concat(msg).concat(trace));
11
10
  };
12
11
  function defineWebWidget(loader, options) {
13
12
  var _a, _b;
13
+ if (!loader) {
14
+ throw new TypeError(`Missing loader.`);
15
+ }
14
16
  return defineComponent({
15
17
  name: "WebWidgetRoot",
16
18
  inheritAttrs: false,
@@ -33,25 +35,9 @@ function defineWebWidget(loader, options) {
33
35
  },
34
36
  async serverPrefetch() {
35
37
  const widget = this.$widget;
36
- const innerHTML = await widget.renderInnerHTMLToString();
37
- this.$innerHTML = innerHTML;
38
+ this.$innerHTML = await widget.renderInnerHTMLToString();
38
39
  },
39
- // async mounted() {
40
- // if (!(this as any).$innerHTML) {
41
- // const widget = (this as any).$widget as WebWidgetRenderer;
42
- // const innerHTML = await widget.renderInnerHTMLToString();
43
- // (this as any).$innerHTML = innerHTML;
44
- // }
45
- // },
46
- setup({
47
- fallback,
48
- experimental_loading,
49
- renderStage,
50
- experimental_renderTarget
51
- }, { slots }) {
52
- if (!loader) {
53
- throw new TypeError(`Missing loader.`);
54
- }
40
+ setup(props, { slots }) {
55
41
  if (Object.keys(slots).length > 0) {
56
42
  throw new TypeError(`Slot not supported.`);
57
43
  }
@@ -59,21 +45,17 @@ function defineWebWidget(loader, options) {
59
45
  const widget = new WebWidgetRenderer(loader, {
60
46
  ...options,
61
47
  data,
62
- loading: experimental_loading,
63
- renderStage,
64
- renderTarget: experimental_renderTarget
48
+ loading: props.experimental_loading,
49
+ renderStage: props.renderStage,
50
+ renderTarget: props.experimental_renderTarget
65
51
  });
66
52
  const instance = getCurrentInstance();
67
53
  instance.proxy.$widget = widget;
68
- if (IS_CLIENT) {
69
- }
70
54
  return () => {
71
55
  const innerHTML = instance.proxy.$innerHTML;
72
56
  return h(widget.localName, {
73
57
  attrs: widget.attributes,
74
- domProps: {
75
- innerHTML
76
- }
58
+ domProps: { innerHTML }
77
59
  });
78
60
  };
79
61
  }
@@ -3,7 +3,7 @@ import vue__default, { PropType, Component, ComponentPublicInstance } from 'vue'
3
3
  import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
4
4
  import { ReactWidgetComponent } from '@web-widget/react';
5
5
  import { DefaultProps } from 'vue/types/options';
6
- import { RenderContext, ComponentProps, SerializableValue } from '@web-widget/helpers';
6
+ import { SerializableValue } from '@web-widget/helpers';
7
7
 
8
8
  interface DefineWebWidgetOptions {
9
9
  base?: WebWidgetRendererOptions['base'];
@@ -59,10 +59,21 @@ interface SerializableObject {
59
59
  [key: string]: SerializableValue;
60
60
  }
61
61
  interface CreateVueRenderOptions {
62
- onBeforeCreateApp?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<any>;
63
- onCreatedApp?: (app: vue__default, context: RenderContext, component: Component, props: ComponentProps) => Promise<void>;
62
+ onBeforeCreateApp?: (context: {
63
+ container?: Element | DocumentFragment;
64
+ data: any;
65
+ progressive?: boolean;
66
+ recovering?: boolean;
67
+ }, component: Component, props: any) => Promise<any>;
68
+ onCreatedApp?: (app: vue__default, context: {
69
+ data: any;
70
+ }, component: Component, props: any) => Promise<void>;
64
71
  /**@deprecated*/
65
- onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<SerializableObject>;
72
+ onPrefetchData?: (context: {
73
+ data: any;
74
+ }, component: Component,
75
+ /**@deprecated*/
76
+ props: any) => Promise<SerializableObject>;
66
77
  }
67
78
 
68
79
  export { type CreateVueRenderOptions as C, type DefineWebWidgetOptions as D, defineWebWidget as d, toReact as t };
@@ -1,16 +1,19 @@
1
1
  import * as _web_widget_helpers from '@web-widget/helpers';
2
2
  export * from '@web-widget/helpers';
3
- import { C as CreateVueRenderOptions } from './types-ByGZXCRo.js';
4
- export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-ByGZXCRo.js';
3
+ import { Component } from 'vue';
4
+ import { C as CreateVueRenderOptions } from './types-4o3Qq_l9.js';
5
+ export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-4o3Qq_l9.js';
5
6
  export { useWidgetSyncState as useWidgetState } from '@web-widget/helpers/state';
6
- import 'vue';
7
7
  import '@web-widget/web-widget';
8
8
  import '@web-widget/react';
9
9
  import 'vue/types/options';
10
10
 
11
- declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => (context: _web_widget_helpers.WidgetRenderContext<unknown>, renderOptions: _web_widget_helpers.WidgetRenderOptions) => Promise<_web_widget_helpers.WidgetRenderResult>;
11
+ type EnhancedComponent = Component & {
12
+ __name?: string;
13
+ };
14
+ declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
12
15
  /**@deprecated Please use `createVueRender` instead.*/
13
- declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => (context: _web_widget_helpers.WidgetRenderContext<unknown>, renderOptions: _web_widget_helpers.WidgetRenderOptions) => Promise<_web_widget_helpers.WidgetRenderResult>;
14
- declare const render: (context: _web_widget_helpers.WidgetRenderContext<unknown>, renderOptions: _web_widget_helpers.WidgetRenderOptions) => Promise<_web_widget_helpers.WidgetRenderResult>;
16
+ declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
17
+ declare const render: _web_widget_helpers.ClientRender<EnhancedComponent, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
15
18
 
16
19
  export { createVueRender, defineVueRender, render };
@@ -1,94 +1,99 @@
1
1
  import {
2
2
  defineWebWidget,
3
3
  toReact
4
- } from "./chunk-DALLV7RU.js";
4
+ } from "./chunk-3ANIDHOH.js";
5
5
 
6
6
  // src/client.ts
7
- import { defineRender, getComponentDescriptor } from "@web-widget/helpers";
7
+ import { defineClientRender } from "@web-widget/helpers";
8
8
  import { cacheProviderIsLoading } from "@web-widget/helpers/cache";
9
9
  import Vue from "vue";
10
10
  export * from "@web-widget/helpers";
11
11
  import { useWidgetSyncState } from "@web-widget/helpers/state";
12
+ function sanitizeComponentName(name) {
13
+ return name.replace("@", ".");
14
+ }
15
+ function clearContainerContent(container) {
16
+ if ("innerHTML" in container) {
17
+ container.innerHTML = "";
18
+ }
19
+ }
12
20
  var createVueRender = ({
13
21
  onBeforeCreateApp = async () => ({}),
14
22
  onCreatedApp = async () => {
15
23
  },
16
24
  onPrefetchData
17
25
  } = {}) => {
18
- return defineRender(async (context) => {
19
- let { recovering, container } = context;
20
- const componentDescriptor = getComponentDescriptor(context);
21
- const component = componentDescriptor.component;
22
- const props = componentDescriptor.props;
23
- if (!container) {
24
- throw new Error(`Container required.`);
25
- }
26
- if (component.__name) {
27
- component.__name = component.__name.replace("@", ".");
28
- }
29
- let app;
30
- return {
31
- async mount() {
32
- let ssrRoot = container;
33
- let mergedProps = props;
34
- if (recovering) {
35
- const vue2ssrAttrSelector = `[data-server-rendered="true"]`;
36
- const root = container.querySelector(vue2ssrAttrSelector) || container.firstElementChild;
37
- const state = container.querySelector(
38
- "script[as=state]"
39
- );
40
- const stateContent = state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
41
- if (!root) {
42
- throw new Error(
43
- `No element found for hydration: ${vue2ssrAttrSelector}`
26
+ return defineClientRender(
27
+ async (component, data, { recovering, container }) => {
28
+ if (!component) {
29
+ throw new TypeError(`Missing component.`);
30
+ }
31
+ if (!container) {
32
+ throw new Error(`Missing container.`);
33
+ }
34
+ if (component.__name) {
35
+ component.__name = sanitizeComponentName(component.__name);
36
+ }
37
+ let app;
38
+ const context = { data, recovering, container };
39
+ return {
40
+ async mount() {
41
+ let ssrRoot = container;
42
+ let mergedProps = data;
43
+ if (recovering) {
44
+ const vue2ssrAttrSelector = `[data-server-rendered="true"]`;
45
+ const root = container.querySelector(vue2ssrAttrSelector) || container.firstElementChild;
46
+ const state = container.querySelector(
47
+ "script[as=state]"
44
48
  );
45
- }
46
- ssrRoot = root;
47
- mergedProps = stateContent ? Object.assign(stateContent, props) : props;
48
- state == null ? void 0 : state.remove();
49
- }
50
- let loading;
51
- app = new Vue({
52
- render(h) {
53
- return h(component, {
54
- props: mergedProps
55
- });
56
- },
57
- errorCaptured: (err, vm, info) => {
58
- if (cacheProviderIsLoading(err)) {
59
- loading = err;
60
- return false;
61
- } else {
62
- throw err;
49
+ const stateContent = state ? JSON.parse(state.textContent) : onPrefetchData ? await onPrefetchData(context, component, data) : void 0;
50
+ if (!root) {
51
+ throw new Error(
52
+ `No element found for hydration: ${vue2ssrAttrSelector}`
53
+ );
63
54
  }
64
- },
65
- ...await onBeforeCreateApp(context, component, mergedProps)
66
- });
67
- await onCreatedApp(app, context, component, mergedProps);
68
- if (recovering) {
69
- app.$mount(ssrRoot, recovering);
70
- } else {
71
- container.appendChild(app.$mount().$el);
72
- }
73
- if (loading) {
74
- recovering = false;
75
- clearInsterHTML(container);
76
- throw loading;
55
+ ssrRoot = root;
56
+ mergedProps = stateContent ? Object.assign(stateContent, data) : data;
57
+ state == null ? void 0 : state.remove();
58
+ }
59
+ let loading;
60
+ app = new Vue({
61
+ render(h) {
62
+ return h(component, {
63
+ props: mergedProps
64
+ });
65
+ },
66
+ errorCaptured: (err, _vm, _info) => {
67
+ if (cacheProviderIsLoading(err)) {
68
+ loading = err;
69
+ return false;
70
+ } else {
71
+ throw err;
72
+ }
73
+ },
74
+ ...await onBeforeCreateApp(context, component, mergedProps)
75
+ });
76
+ await onCreatedApp(app, context, component, mergedProps);
77
+ if (recovering) {
78
+ app.$mount(ssrRoot, recovering);
79
+ } else {
80
+ container.appendChild(app.$mount().$el);
81
+ }
82
+ if (loading) {
83
+ recovering = false;
84
+ clearContainerContent(container);
85
+ throw loading;
86
+ }
87
+ },
88
+ async unmount() {
89
+ app == null ? void 0 : app.$destroy();
90
+ clearContainerContent(container);
91
+ app = null;
77
92
  }
78
- },
79
- async unmount() {
80
- app == null ? void 0 : app.$destroy();
81
- clearInsterHTML(container);
82
- app = null;
83
- }
84
- };
85
- });
93
+ };
94
+ }
95
+ );
86
96
  };
87
- function clearInsterHTML(container) {
88
- if ("innerHTML" in container) {
89
- container.innerHTML = "";
90
- }
91
- }
92
97
  var defineVueRender = createVueRender;
93
98
  var render = createVueRender();
94
99
  export {
@@ -1,16 +1,19 @@
1
1
  import * as _web_widget_helpers from '@web-widget/helpers';
2
2
  export * from '@web-widget/helpers';
3
- import { C as CreateVueRenderOptions } from './types-ByGZXCRo.js';
4
- export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-ByGZXCRo.js';
3
+ import { Component } from 'vue';
4
+ import { C as CreateVueRenderOptions } from './types-4o3Qq_l9.js';
5
+ export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-4o3Qq_l9.js';
5
6
  export { useWidgetSyncState as useWidgetState } from '@web-widget/helpers/state';
6
- import 'vue';
7
7
  import '@web-widget/web-widget';
8
8
  import '@web-widget/react';
9
9
  import 'vue/types/options';
10
10
 
11
- declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => (context: _web_widget_helpers.RouteRenderContext<unknown, Record<string, string>>, renderOptions: _web_widget_helpers.RouteRenderOptions) => Promise<_web_widget_helpers.RouteRenderResult>;
11
+ type BuildedComponent = Component & {
12
+ __name?: string;
13
+ };
14
+ declare const createVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
12
15
  /**@deprecated Please use `createVueRender` instead.*/
13
- declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => (context: _web_widget_helpers.RouteRenderContext<unknown, Record<string, string>>, renderOptions: _web_widget_helpers.RouteRenderOptions) => Promise<_web_widget_helpers.RouteRenderResult>;
14
- declare const render: (context: _web_widget_helpers.RouteRenderContext<unknown, Record<string, string>>, renderOptions: _web_widget_helpers.RouteRenderOptions) => Promise<_web_widget_helpers.RouteRenderResult>;
16
+ declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
17
+ declare const render: _web_widget_helpers.ServerRender<BuildedComponent, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
15
18
 
16
19
  export { createVueRender, defineVueRender, render };
@@ -1,31 +1,35 @@
1
1
  import {
2
2
  defineWebWidget,
3
3
  toReact
4
- } from "./chunk-DALLV7RU.js";
4
+ } from "./chunk-3ANIDHOH.js";
5
5
 
6
6
  // src/server.ts
7
- import { defineRender, getComponentDescriptor } from "@web-widget/helpers";
7
+ import { defineServerRender } from "@web-widget/helpers";
8
8
  import { escapeJson } from "@web-widget/helpers/purify";
9
9
  import Vue from "vue";
10
10
  import { createRenderer } from "vue-server-renderer";
11
11
  export * from "@web-widget/helpers";
12
12
  import { useWidgetSyncState } from "@web-widget/helpers/state";
13
+ function sanitizeComponentName(name) {
14
+ return name.replace("@", "-");
15
+ }
13
16
  var createVueRender = ({
14
17
  onBeforeCreateApp = async () => ({}),
15
18
  onCreatedApp = async () => {
16
19
  },
17
20
  onPrefetchData
18
21
  } = {}) => {
19
- return defineRender(
20
- async (context, { progressive }) => {
21
- const componentDescriptor = getComponentDescriptor(context);
22
- const component = componentDescriptor.component;
23
- const props = componentDescriptor.props;
22
+ return defineServerRender(
23
+ async (component, data, { progressive }) => {
24
+ if (!component) {
25
+ throw new TypeError(`Missing component.`);
26
+ }
24
27
  if (component.__name) {
25
- component.__name = component.__name.replace("@", "-");
28
+ component.__name = sanitizeComponentName(component.__name);
26
29
  }
27
- const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
28
- const mergedProps = state ? Object.assign({}, state, props) : props;
30
+ const context = { data, progressive };
31
+ const state = onPrefetchData ? await onPrefetchData(context, component, data) : void 0;
32
+ const mergedProps = state ? Object.assign({}, state, data) : data;
29
33
  const renderer = createRenderer();
30
34
  const app = new Vue({
31
35
  render: (h) => h(component, {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@web-widget/vue2",
3
3
  "description": "Vue2 adapter",
4
- "version": "1.56.0",
4
+ "version": "1.57.0",
5
5
  "homepage": "https://github.com/web-widget/web-widget#readme",
6
6
  "repository": {
7
7
  "type": "git",
@@ -14,10 +14,10 @@
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
16
  "@rollup/pluginutils": "^5.1.4",
17
- "@web-widget/helpers": "1.56.0",
18
- "@web-widget/vite-plugin": "1.56.0",
19
- "@web-widget/web-widget": "1.56.0",
20
- "@web-widget/react": "1.56.0"
17
+ "@web-widget/helpers": "1.57.0",
18
+ "@web-widget/vite-plugin": "1.57.0",
19
+ "@web-widget/web-widget": "1.57.0",
20
+ "@web-widget/react": "1.57.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^22.2.0",