@web-widget/vue 2.3.1 → 3.0.0-beta.2
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/chunk-7KXT6LS2.js +178 -0
- package/dist/chunk-F3PTQ2OL.js +10 -0
- package/dist/types-BY8s0m9C.d.ts +85 -0
- package/dist/vue.adapter.client.d.ts +14 -0
- package/dist/{vue.client.js → vue.adapter.client.js} +15 -12
- package/dist/vue.adapter.server.d.ts +24 -0
- package/dist/vue.adapter.server.js +108 -0
- package/dist/vue.d.ts +18 -0
- package/dist/vue.js +8 -0
- package/package.json +35 -20
- package/dist/chunk-VYBV2IIO.js +0 -143
- package/dist/types-DIPFtLxv.d.ts +0 -67
- package/dist/vite.d.ts +0 -9
- package/dist/vite.js +0 -62
- package/dist/vue.client.d.ts +0 -15
- package/dist/vue.server.d.ts +0 -25
- package/dist/vue.server.js +0 -61
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// src/error-handler.ts
|
|
2
|
+
import { cacheProviderIsLoading } from "@web-widget/helpers/cache";
|
|
3
|
+
function installErrorHandler(app, callback, throwUnhandledErrorInProduction = false) {
|
|
4
|
+
app.config.throwUnhandledErrorInProduction = throwUnhandledErrorInProduction;
|
|
5
|
+
app.config.errorHandler = (err, instance, info) => {
|
|
6
|
+
if (cacheProviderIsLoading(err)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
app.config.warnHandler = () => {
|
|
10
|
+
};
|
|
11
|
+
callback(err);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// src/components.ts
|
|
16
|
+
import { WebWidgetRenderer } from "@web-widget/web-widget";
|
|
17
|
+
import {
|
|
18
|
+
h,
|
|
19
|
+
defineComponent,
|
|
20
|
+
Suspense,
|
|
21
|
+
useAttrs,
|
|
22
|
+
ref,
|
|
23
|
+
onErrorCaptured
|
|
24
|
+
} from "vue";
|
|
25
|
+
import { IS_CLIENT } from "@web-widget/helpers/env";
|
|
26
|
+
var WebWidget = /* @__PURE__ */ defineComponent({
|
|
27
|
+
name: "WebWidgetRoot",
|
|
28
|
+
props: {
|
|
29
|
+
base: {
|
|
30
|
+
type: String
|
|
31
|
+
},
|
|
32
|
+
data: {
|
|
33
|
+
type: Object,
|
|
34
|
+
default: () => ({})
|
|
35
|
+
},
|
|
36
|
+
errorFallback: {
|
|
37
|
+
type: Object,
|
|
38
|
+
default: null
|
|
39
|
+
},
|
|
40
|
+
import: {
|
|
41
|
+
type: String
|
|
42
|
+
},
|
|
43
|
+
inactive: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: false
|
|
46
|
+
},
|
|
47
|
+
loader: {
|
|
48
|
+
type: Function,
|
|
49
|
+
required: true
|
|
50
|
+
},
|
|
51
|
+
loading: {
|
|
52
|
+
type: String
|
|
53
|
+
},
|
|
54
|
+
meta: {
|
|
55
|
+
type: Object
|
|
56
|
+
},
|
|
57
|
+
name: {
|
|
58
|
+
type: String
|
|
59
|
+
},
|
|
60
|
+
renderStage: {
|
|
61
|
+
type: String
|
|
62
|
+
},
|
|
63
|
+
renderTarget: {
|
|
64
|
+
type: String,
|
|
65
|
+
default: "light"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
async setup({ loader, errorFallback, ...props }, { slots }) {
|
|
69
|
+
if (!loader) {
|
|
70
|
+
throw new TypeError(`Missing loader.`);
|
|
71
|
+
}
|
|
72
|
+
if (Object.keys(slots).length > 0) {
|
|
73
|
+
throw new TypeError(`Slot not supported.`);
|
|
74
|
+
}
|
|
75
|
+
const widget = new WebWidgetRenderer(loader, {
|
|
76
|
+
...props,
|
|
77
|
+
children: ""
|
|
78
|
+
});
|
|
79
|
+
const tag = widget.localName;
|
|
80
|
+
const attrs = widget.attributes;
|
|
81
|
+
const innerHTML = await widget.renderInnerHTMLToString().catch((err) => {
|
|
82
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
83
|
+
console.error("[VueWidget] Rendering error:", error);
|
|
84
|
+
return error;
|
|
85
|
+
});
|
|
86
|
+
if (innerHTML instanceof Error) {
|
|
87
|
+
return () => errorFallback;
|
|
88
|
+
}
|
|
89
|
+
if (IS_CLIENT) {
|
|
90
|
+
await customElements.whenDefined(tag);
|
|
91
|
+
}
|
|
92
|
+
const data = attrs.data;
|
|
93
|
+
delete attrs.data;
|
|
94
|
+
return () => {
|
|
95
|
+
const nodeProps = {
|
|
96
|
+
...attrs,
|
|
97
|
+
...IS_CLIENT ? { "^data": data } : { data },
|
|
98
|
+
...!IS_CLIENT ? { innerHTML } : null
|
|
99
|
+
};
|
|
100
|
+
return h(tag, nodeProps);
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
function resolveFallback(fallback) {
|
|
105
|
+
var _a;
|
|
106
|
+
if (fallback !== null && typeof fallback === "object" && !("__v_isVNode" in fallback) && ("pending" in fallback || "error" in fallback)) {
|
|
107
|
+
const obj = fallback;
|
|
108
|
+
return {
|
|
109
|
+
pendingFallback: obj.pending,
|
|
110
|
+
errorFallback: (_a = obj.error) != null ? _a : obj.pending
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
pendingFallback: fallback,
|
|
115
|
+
errorFallback: fallback
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function container(loader, options = {}) {
|
|
119
|
+
return defineComponent({
|
|
120
|
+
name: "VueWidget",
|
|
121
|
+
inheritAttrs: false,
|
|
122
|
+
props: {
|
|
123
|
+
widget: {
|
|
124
|
+
type: Object,
|
|
125
|
+
default: () => ({})
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
setup({ widget }, { slots }) {
|
|
129
|
+
var _a;
|
|
130
|
+
const {
|
|
131
|
+
fallback,
|
|
132
|
+
loading = (_a = options.loading) != null ? _a : "lazy",
|
|
133
|
+
serverOnly,
|
|
134
|
+
clientOnly
|
|
135
|
+
} = widget;
|
|
136
|
+
const { pendingFallback, errorFallback } = resolveFallback(fallback);
|
|
137
|
+
const renderStage = serverOnly ? "server" : clientOnly ? "client" : options.renderStage;
|
|
138
|
+
const data = useAttrs();
|
|
139
|
+
const error = ref(null);
|
|
140
|
+
onErrorCaptured((err) => {
|
|
141
|
+
error.value = err;
|
|
142
|
+
return false;
|
|
143
|
+
});
|
|
144
|
+
return () => {
|
|
145
|
+
var _a2;
|
|
146
|
+
if (error.value && errorFallback) {
|
|
147
|
+
return errorFallback;
|
|
148
|
+
}
|
|
149
|
+
return h(
|
|
150
|
+
Suspense,
|
|
151
|
+
{},
|
|
152
|
+
{
|
|
153
|
+
default: h(
|
|
154
|
+
WebWidget,
|
|
155
|
+
{
|
|
156
|
+
...options,
|
|
157
|
+
data,
|
|
158
|
+
errorFallback,
|
|
159
|
+
loader,
|
|
160
|
+
loading,
|
|
161
|
+
renderStage,
|
|
162
|
+
renderTarget: (_a2 = options.renderTarget) != null ? _a2 : "light"
|
|
163
|
+
},
|
|
164
|
+
slots
|
|
165
|
+
),
|
|
166
|
+
fallback: pendingFallback
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export {
|
|
175
|
+
installErrorHandler,
|
|
176
|
+
resolveFallback,
|
|
177
|
+
container
|
|
178
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
|
|
2
|
+
import { ExtractWidgetProps } from '@web-widget/schema';
|
|
3
|
+
import { DefineComponent, VNode, App, Component } from 'vue';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A Vue component wrapping a widget, with props `T` plus container config.
|
|
7
|
+
*/
|
|
8
|
+
type VueWidgetComponent<T = unknown> = DefineComponent<T & {
|
|
9
|
+
widget?: WidgetContainerConfig;
|
|
10
|
+
}>;
|
|
11
|
+
interface DefineWebWidgetOptions {
|
|
12
|
+
base?: WebWidgetRendererOptions['base'];
|
|
13
|
+
import?: WebWidgetRendererOptions['import'];
|
|
14
|
+
loading?: WebWidgetRendererOptions['loading'];
|
|
15
|
+
name?: WebWidgetRendererOptions['name'];
|
|
16
|
+
renderStage?: WebWidgetRendererOptions['renderStage'];
|
|
17
|
+
renderTarget?: WebWidgetRendererOptions['renderTarget'];
|
|
18
|
+
}
|
|
19
|
+
type WidgetFallback = VNode | {
|
|
20
|
+
pending?: VNode;
|
|
21
|
+
error?: VNode;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a WidgetFallback into separate pending and error VNodes.
|
|
25
|
+
* - `VNode` — used for both pending and error.
|
|
26
|
+
* - `{ pending?, error? }` — specify independently; `error` defaults to `pending`.
|
|
27
|
+
*/
|
|
28
|
+
declare function resolveFallback(fallback: WidgetFallback | undefined): {
|
|
29
|
+
pendingFallback: VNode;
|
|
30
|
+
errorFallback: VNode;
|
|
31
|
+
};
|
|
32
|
+
interface WidgetContainerConfig {
|
|
33
|
+
/**
|
|
34
|
+
* Fallback UI for loading and error states.
|
|
35
|
+
*
|
|
36
|
+
* Only effective during server-side rendering: loading UI shows while the
|
|
37
|
+
* widget module renders; error UI shows if rendering fails. Both are
|
|
38
|
+
* serialized into the HTML stream — no client-side retry exists in the
|
|
39
|
+
* islands architecture.
|
|
40
|
+
*
|
|
41
|
+
* - `VNode` — used for both pending (Suspense) and error.
|
|
42
|
+
* - `{ pending?, error? }` — specify independently; `error` defaults to `pending`.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Simple: same UI for both states
|
|
46
|
+
* <Widget :widget="{ fallback: h(Spinner) }" />
|
|
47
|
+
*
|
|
48
|
+
* // Differentiated: separate pending and error UI
|
|
49
|
+
* <Widget :widget="{ fallback: { pending: h(Spinner), error: h(ErrorUI) } }" />
|
|
50
|
+
*/
|
|
51
|
+
fallback?: WidgetFallback;
|
|
52
|
+
/** Client-side module loading strategy: `'lazy'` loads on first render, `'eager'` on module parse, `'idle'` on browser idle. */
|
|
53
|
+
loading?: WebWidgetRendererOptions['loading'];
|
|
54
|
+
/** Widget renders only on the server (SSR), producing static HTML with no client-side mount. Mutually exclusive with `clientOnly`. */
|
|
55
|
+
serverOnly?: true;
|
|
56
|
+
/** Widget renders only on the client, producing no server HTML (empty placeholder until client mount). Mutually exclusive with `serverOnly`. */
|
|
57
|
+
clientOnly?: true;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Container function (WebWidgetAdapter protocol).
|
|
61
|
+
*
|
|
62
|
+
* Wraps a widget module loader into a Vue component with props type
|
|
63
|
+
* inference from the source module's default export.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { container } from '@web-widget/vue/adapter';
|
|
68
|
+
*
|
|
69
|
+
* const Counter = container(() => import('./Counter@widget.vue'));
|
|
70
|
+
* // ^? VueWidgetComponent<{ count: number }>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
declare function container<M>(loader: () => Promise<M>, options?: DefineWebWidgetOptions): VueWidgetComponent<ExtractWidgetProps<M>>;
|
|
74
|
+
declare function container<Props>(loader: Loader, options?: DefineWebWidgetOptions): VueWidgetComponent<Props>;
|
|
75
|
+
|
|
76
|
+
interface CreateVueRenderOptions {
|
|
77
|
+
onCreatedApp?: (app: App<Element>, context: {
|
|
78
|
+
container?: Element | DocumentFragment;
|
|
79
|
+
data: any;
|
|
80
|
+
progressive?: boolean;
|
|
81
|
+
recovering?: boolean;
|
|
82
|
+
}, component: Component, props: any) => Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { type CreateVueRenderOptions as C, type DefineWebWidgetOptions as D, type VueWidgetComponent as V, type WidgetContainerConfig as W, type WidgetFallback as a, container as c, resolveFallback as r };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as _web_widget_schema from '@web-widget/schema';
|
|
2
|
+
import { Component } from 'vue';
|
|
3
|
+
import { C as CreateVueRenderOptions } from './types-BY8s0m9C.js';
|
|
4
|
+
export { D as DefineWebWidgetOptions, V as VueWidgetComponent, W as WidgetContainerConfig, a as WidgetFallback, c as container, r as resolveFallback } from './types-BY8s0m9C.js';
|
|
5
|
+
export { asReactWidget, toReact } from './vue.js';
|
|
6
|
+
import '@web-widget/web-widget';
|
|
7
|
+
import '@web-widget/react/adapter';
|
|
8
|
+
|
|
9
|
+
declare const createVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_schema.ClientRender<Component, unknown, _web_widget_schema.ClientRenderOptions, void | _web_widget_schema.ClientRenderResult<unknown>>;
|
|
10
|
+
/**@deprecated Please use `createVueRender` instead.*/
|
|
11
|
+
declare const defineVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_schema.ClientRender<Component, unknown, _web_widget_schema.ClientRenderOptions, void | _web_widget_schema.ClientRenderResult<unknown>>;
|
|
12
|
+
declare const render: _web_widget_schema.ClientRender<Component, unknown, _web_widget_schema.ClientRenderOptions, void | _web_widget_schema.ClientRenderResult<unknown>>;
|
|
13
|
+
|
|
14
|
+
export { createVueRender, defineVueRender, render };
|
|
@@ -1,30 +1,32 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
container,
|
|
3
3
|
installErrorHandler,
|
|
4
|
+
resolveFallback
|
|
5
|
+
} from "./chunk-7KXT6LS2.js";
|
|
6
|
+
import {
|
|
7
|
+
asReactWidget,
|
|
4
8
|
toReact
|
|
5
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-F3PTQ2OL.js";
|
|
6
10
|
|
|
7
|
-
// src/client.ts
|
|
11
|
+
// src/adapter.client.ts
|
|
8
12
|
import { defineClientRender } from "@web-widget/helpers";
|
|
9
13
|
import { Suspense, createApp, createSSRApp, h } from "vue";
|
|
10
|
-
export * from "@web-widget/helpers";
|
|
11
|
-
import { useWidgetAsyncState } from "@web-widget/helpers/state";
|
|
12
14
|
var createWidgetSuspense = (component) => (props) => h(Suspense, null, [h(component, props)]);
|
|
13
15
|
var createVueRender = ({
|
|
14
16
|
onCreatedApp = async () => {
|
|
15
17
|
}
|
|
16
18
|
} = {}) => {
|
|
17
19
|
return defineClientRender(
|
|
18
|
-
async (component, data, { recovering, container }) => {
|
|
20
|
+
async (component, data, { recovering, container: container2 }) => {
|
|
19
21
|
data = data != null ? data : {};
|
|
20
22
|
if (!component) {
|
|
21
23
|
throw new TypeError(`Missing component.`);
|
|
22
24
|
}
|
|
23
|
-
if (!
|
|
25
|
+
if (!container2) {
|
|
24
26
|
throw new Error(`Missing container.`);
|
|
25
27
|
}
|
|
26
28
|
let app;
|
|
27
|
-
const context = { data, recovering, container };
|
|
29
|
+
const context = { data, recovering, container: container2 };
|
|
28
30
|
const WidgetSuspense = createWidgetSuspense(component);
|
|
29
31
|
return {
|
|
30
32
|
async mount() {
|
|
@@ -34,7 +36,7 @@ var createVueRender = ({
|
|
|
34
36
|
error = err;
|
|
35
37
|
});
|
|
36
38
|
await onCreatedApp(app, context, component, data);
|
|
37
|
-
app.mount(
|
|
39
|
+
app.mount(container2);
|
|
38
40
|
if (error) {
|
|
39
41
|
throw error;
|
|
40
42
|
}
|
|
@@ -50,10 +52,11 @@ var createVueRender = ({
|
|
|
50
52
|
var defineVueRender = createVueRender;
|
|
51
53
|
var render = createVueRender();
|
|
52
54
|
export {
|
|
55
|
+
asReactWidget,
|
|
56
|
+
container,
|
|
53
57
|
createVueRender,
|
|
54
58
|
defineVueRender,
|
|
55
|
-
defineWebWidget,
|
|
56
59
|
render,
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
resolveFallback,
|
|
61
|
+
toReact
|
|
59
62
|
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as _web_widget_schema from '@web-widget/schema';
|
|
2
|
+
import { Component } from 'vue';
|
|
3
|
+
import { SSRContext } from 'vue/server-renderer';
|
|
4
|
+
import { C as CreateVueRenderOptions } from './types-BY8s0m9C.js';
|
|
5
|
+
export { D as DefineWebWidgetOptions, V as VueWidgetComponent, W as WidgetContainerConfig, a as WidgetFallback, c as container, r as resolveFallback } from './types-BY8s0m9C.js';
|
|
6
|
+
export { asReactWidget, toReact } from './vue.js';
|
|
7
|
+
import '@web-widget/web-widget';
|
|
8
|
+
import '@web-widget/react/adapter';
|
|
9
|
+
|
|
10
|
+
declare module '@web-widget/schema' {
|
|
11
|
+
interface ServerRenderOptions {
|
|
12
|
+
vue?: {};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface VueRenderOptions {
|
|
17
|
+
vue?: SSRContext;
|
|
18
|
+
}
|
|
19
|
+
declare const createVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_schema.ServerRender<Component, unknown, _web_widget_schema.ServerRenderOptions, _web_widget_schema.ServerRenderResult>;
|
|
20
|
+
/**@deprecated Please use `createVueRender` instead.*/
|
|
21
|
+
declare const defineVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_schema.ServerRender<Component, unknown, _web_widget_schema.ServerRenderOptions, _web_widget_schema.ServerRenderResult>;
|
|
22
|
+
declare const render: _web_widget_schema.ServerRender<Component, unknown, _web_widget_schema.ServerRenderOptions, _web_widget_schema.ServerRenderResult>;
|
|
23
|
+
|
|
24
|
+
export { type VueRenderOptions, createVueRender, defineVueRender, render };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
container,
|
|
3
|
+
installErrorHandler,
|
|
4
|
+
resolveFallback
|
|
5
|
+
} from "./chunk-7KXT6LS2.js";
|
|
6
|
+
import {
|
|
7
|
+
asReactWidget,
|
|
8
|
+
toReact
|
|
9
|
+
} from "./chunk-F3PTQ2OL.js";
|
|
10
|
+
|
|
11
|
+
// src/adapter.server.ts
|
|
12
|
+
import { defineServerRender } from "@web-widget/helpers";
|
|
13
|
+
import { createSSRApp, h, Suspense } from "vue";
|
|
14
|
+
import {
|
|
15
|
+
renderToString,
|
|
16
|
+
renderToWebStream
|
|
17
|
+
} from "vue/server-renderer";
|
|
18
|
+
var createWidgetSuspense = (component) => (props) => h(Suspense, null, [h(component, props)]);
|
|
19
|
+
var createVueRender = ({
|
|
20
|
+
onCreatedApp = async () => {
|
|
21
|
+
}
|
|
22
|
+
} = {}) => {
|
|
23
|
+
return defineServerRender(
|
|
24
|
+
async (component, data, { progressive, vue: options }) => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
data = data != null ? data : {};
|
|
27
|
+
if (!component) {
|
|
28
|
+
throw new TypeError(`Missing component.`);
|
|
29
|
+
}
|
|
30
|
+
const ssrContext = Object.create(options != null ? options : null);
|
|
31
|
+
let error;
|
|
32
|
+
const context = { data, progressive };
|
|
33
|
+
const WidgetSuspense = createWidgetSuspense(component);
|
|
34
|
+
const app = createSSRApp(WidgetSuspense, data);
|
|
35
|
+
installErrorHandler(app, (err) => {
|
|
36
|
+
error = err;
|
|
37
|
+
});
|
|
38
|
+
await onCreatedApp(app, context, component, data);
|
|
39
|
+
if (progressive) {
|
|
40
|
+
const stream = renderToWebStream(app, ssrContext);
|
|
41
|
+
const reader = stream.getReader();
|
|
42
|
+
const first = await reader.read();
|
|
43
|
+
try {
|
|
44
|
+
if (ssrContext == null ? void 0 : ssrContext.teleports) {
|
|
45
|
+
const file = (_a = Reflect.get(component, "__file")) != null ? _a : "unknown";
|
|
46
|
+
throw new Error(
|
|
47
|
+
`Teleports are not supported in SSR: ${JSON.stringify(ssrContext.teleports, null, 2)} in ${file}
|
|
48
|
+
Do conditionally render Teleport when mounted on the client.`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
if (error) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
} catch (e) {
|
|
55
|
+
await reader.cancel();
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
58
|
+
return new ReadableStream({
|
|
59
|
+
start(controller) {
|
|
60
|
+
if (first.done) {
|
|
61
|
+
controller.close();
|
|
62
|
+
} else {
|
|
63
|
+
controller.enqueue(first.value);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
async pull(controller) {
|
|
67
|
+
try {
|
|
68
|
+
const { value, done } = await reader.read();
|
|
69
|
+
if (done) {
|
|
70
|
+
controller.close();
|
|
71
|
+
} else {
|
|
72
|
+
controller.enqueue(value);
|
|
73
|
+
}
|
|
74
|
+
} catch (e) {
|
|
75
|
+
controller.error(e);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
async cancel() {
|
|
79
|
+
await reader.cancel();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const html = await renderToString(app, ssrContext);
|
|
84
|
+
if (ssrContext == null ? void 0 : ssrContext.teleports) {
|
|
85
|
+
const file = (_b = Reflect.get(component, "__file")) != null ? _b : "unknown";
|
|
86
|
+
throw new Error(
|
|
87
|
+
`Teleports are not supported in SSR: ${JSON.stringify(ssrContext.teleports, null, 2)} in ${file}
|
|
88
|
+
Do conditionally render Teleport when mounted on the client.`
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
if (error) {
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
return html;
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
};
|
|
98
|
+
var defineVueRender = createVueRender;
|
|
99
|
+
var render = createVueRender();
|
|
100
|
+
export {
|
|
101
|
+
asReactWidget,
|
|
102
|
+
container,
|
|
103
|
+
createVueRender,
|
|
104
|
+
defineVueRender,
|
|
105
|
+
render,
|
|
106
|
+
resolveFallback,
|
|
107
|
+
toReact
|
|
108
|
+
};
|
package/dist/vue.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component, ComponentPublicInstance } from 'vue';
|
|
2
|
+
import { ReactWidgetComponent } from '@web-widget/react/adapter';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Adapt Vue component types to React widget component types.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Use `container()` from `@web-widget/react/adapter` instead.
|
|
8
|
+
* The build tool automatically infers props types for both static imports
|
|
9
|
+
* and explicit `container(() => import(...))` calls.
|
|
10
|
+
*
|
|
11
|
+
* This is a type-level cast only — the actual cross-framework rendering
|
|
12
|
+
* is handled by the `@widget` system.
|
|
13
|
+
*/
|
|
14
|
+
declare function asReactWidget<T>(component: Component<T>): ReactWidgetComponent<Omit<T, keyof ComponentPublicInstance | "$route" | "$router">>;
|
|
15
|
+
/** @deprecated Use `container()` from `@web-widget/react/adapter` instead. */
|
|
16
|
+
declare const toReact: typeof asReactWidget;
|
|
17
|
+
|
|
18
|
+
export { asReactWidget, toReact };
|
package/dist/vue.js
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/vue",
|
|
3
3
|
"description": "Vue adapter",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "3.0.0-beta.2",
|
|
5
5
|
"homepage": "https://github.com/web-widget/web-widget#readme",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -13,49 +13,64 @@
|
|
|
13
13
|
},
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@
|
|
17
|
-
"@web-widget/
|
|
18
|
-
"@web-widget/
|
|
19
|
-
"@web-widget/
|
|
20
|
-
"@web-widget/schema": "2.3.1",
|
|
21
|
-
"@web-widget/react": "2.3.1"
|
|
16
|
+
"@web-widget/helpers": "3.0.0-beta.2",
|
|
17
|
+
"@web-widget/schema": "3.0.0-beta.2",
|
|
18
|
+
"@web-widget/web-widget": "3.0.0-beta.2",
|
|
19
|
+
"@web-widget/react": "3.0.0-beta.2"
|
|
22
20
|
},
|
|
23
21
|
"devDependencies": {
|
|
24
22
|
"tsup": "^8.3.4",
|
|
25
|
-
"typescript": "^5.
|
|
26
|
-
"vite": "^8.0.12",
|
|
23
|
+
"typescript": "^5.9.3",
|
|
27
24
|
"vue": "^3.5.34"
|
|
28
25
|
},
|
|
29
26
|
"exports": {
|
|
30
27
|
".": {
|
|
28
|
+
"types": "./dist/vue.d.ts",
|
|
29
|
+
"default": "./dist/vue.js"
|
|
30
|
+
},
|
|
31
|
+
"./adapter": {
|
|
31
32
|
"worker": {
|
|
32
|
-
"types": "./dist/vue.server.d.ts",
|
|
33
|
-
"default": "./dist/vue.server.js"
|
|
33
|
+
"types": "./dist/vue.adapter.server.d.ts",
|
|
34
|
+
"default": "./dist/vue.adapter.server.js"
|
|
34
35
|
},
|
|
35
36
|
"browser": {
|
|
36
|
-
"types": "./dist/vue.client.d.ts",
|
|
37
|
-
"default": "./dist/vue.client.js"
|
|
37
|
+
"types": "./dist/vue.adapter.client.d.ts",
|
|
38
|
+
"default": "./dist/vue.adapter.client.js"
|
|
38
39
|
},
|
|
39
40
|
"default": {
|
|
40
|
-
"types": "./dist/vue.server.d.ts",
|
|
41
|
-
"default": "./dist/vue.server.js"
|
|
41
|
+
"types": "./dist/vue.adapter.server.d.ts",
|
|
42
|
+
"default": "./dist/vue.adapter.server.js"
|
|
42
43
|
}
|
|
43
|
-
},
|
|
44
|
-
"./vite": {
|
|
45
|
-
"types": "./dist/vite.d.ts",
|
|
46
|
-
"default": "./dist/vite.js"
|
|
47
44
|
}
|
|
48
45
|
},
|
|
46
|
+
"webWidgetAdapter": {
|
|
47
|
+
"version": "1.0.0",
|
|
48
|
+
"name": "vue",
|
|
49
|
+
"extensions": [
|
|
50
|
+
".vue"
|
|
51
|
+
],
|
|
52
|
+
"adapter": "./adapter",
|
|
53
|
+
"deriveExports": [
|
|
54
|
+
{
|
|
55
|
+
"name": "handler",
|
|
56
|
+
"default": "{GET({html}){return html()}}"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "meta",
|
|
60
|
+
"default": "{}"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
49
64
|
"files": [
|
|
50
65
|
"dist"
|
|
51
66
|
],
|
|
52
67
|
"peerDependencies": {
|
|
53
|
-
"vite": "^8.0.12",
|
|
54
68
|
"vue": ">3.3.3"
|
|
55
69
|
},
|
|
56
70
|
"publishConfig": {
|
|
57
71
|
"access": "public"
|
|
58
72
|
},
|
|
73
|
+
"sideEffects": false,
|
|
59
74
|
"type": "module",
|
|
60
75
|
"scripts": {
|
|
61
76
|
"build": "pnpm exec tsup",
|
package/dist/chunk-VYBV2IIO.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
// src/error-handler.ts
|
|
2
|
-
import { cacheProviderIsLoading } from "@web-widget/helpers/cache";
|
|
3
|
-
function installErrorHandler(app, callback, throwUnhandledErrorInProduction = false) {
|
|
4
|
-
app.config.throwUnhandledErrorInProduction = throwUnhandledErrorInProduction;
|
|
5
|
-
app.config.errorHandler = (err, instance, info) => {
|
|
6
|
-
if (cacheProviderIsLoading(err)) {
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
callback(err);
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// src/components.ts
|
|
14
|
-
import { WebWidgetRenderer } from "@web-widget/web-widget";
|
|
15
|
-
import { h, defineComponent, Suspense, useAttrs } from "vue";
|
|
16
|
-
import { IS_CLIENT } from "@web-widget/helpers/env";
|
|
17
|
-
var WebWidget = /* @__PURE__ */ defineComponent({
|
|
18
|
-
name: "WebWidgetRoot",
|
|
19
|
-
props: {
|
|
20
|
-
base: {
|
|
21
|
-
type: String
|
|
22
|
-
},
|
|
23
|
-
data: {
|
|
24
|
-
type: Object,
|
|
25
|
-
default: () => ({})
|
|
26
|
-
},
|
|
27
|
-
import: {
|
|
28
|
-
type: String
|
|
29
|
-
},
|
|
30
|
-
inactive: {
|
|
31
|
-
type: Boolean,
|
|
32
|
-
default: false
|
|
33
|
-
},
|
|
34
|
-
loader: {
|
|
35
|
-
type: Function,
|
|
36
|
-
required: true
|
|
37
|
-
},
|
|
38
|
-
loading: {
|
|
39
|
-
type: String
|
|
40
|
-
},
|
|
41
|
-
meta: {
|
|
42
|
-
type: Object
|
|
43
|
-
},
|
|
44
|
-
name: {
|
|
45
|
-
type: String
|
|
46
|
-
},
|
|
47
|
-
renderStage: {
|
|
48
|
-
type: String
|
|
49
|
-
},
|
|
50
|
-
renderTarget: {
|
|
51
|
-
type: String,
|
|
52
|
-
default: "light"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
async setup({ loader, ...props }, { slots }) {
|
|
56
|
-
if (!loader) {
|
|
57
|
-
throw new TypeError(`Missing loader.`);
|
|
58
|
-
}
|
|
59
|
-
if (Object.keys(slots).length > 0) {
|
|
60
|
-
throw new TypeError(`Slot not supported.`);
|
|
61
|
-
}
|
|
62
|
-
const widget = new WebWidgetRenderer(loader, {
|
|
63
|
-
...props,
|
|
64
|
-
children: ""
|
|
65
|
-
});
|
|
66
|
-
const tag = widget.localName;
|
|
67
|
-
const attrs = widget.attributes;
|
|
68
|
-
const innerHTML = await widget.renderInnerHTMLToString();
|
|
69
|
-
if (IS_CLIENT) {
|
|
70
|
-
await customElements.whenDefined(tag);
|
|
71
|
-
}
|
|
72
|
-
const data = attrs.data;
|
|
73
|
-
delete attrs.data;
|
|
74
|
-
return () => {
|
|
75
|
-
const nodeProps = {
|
|
76
|
-
...attrs,
|
|
77
|
-
...IS_CLIENT ? { "^data": data } : { data },
|
|
78
|
-
...!IS_CLIENT ? { innerHTML } : null
|
|
79
|
-
};
|
|
80
|
-
return h(tag, nodeProps);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
function defineWebWidget(loader, options) {
|
|
85
|
-
var _a, _b;
|
|
86
|
-
return defineComponent({
|
|
87
|
-
name: "WebWidgetSuspense",
|
|
88
|
-
inheritAttrs: false,
|
|
89
|
-
props: {
|
|
90
|
-
fallback: {
|
|
91
|
-
type: Object
|
|
92
|
-
},
|
|
93
|
-
experimental_loading: {
|
|
94
|
-
type: String,
|
|
95
|
-
default: (_a = options.loading) != null ? _a : "lazy"
|
|
96
|
-
},
|
|
97
|
-
renderStage: {
|
|
98
|
-
type: String,
|
|
99
|
-
default: options.renderStage
|
|
100
|
-
},
|
|
101
|
-
experimental_renderTarget: {
|
|
102
|
-
type: String,
|
|
103
|
-
default: (_b = options.renderTarget) != null ? _b : "light"
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
setup({
|
|
107
|
-
fallback,
|
|
108
|
-
experimental_loading,
|
|
109
|
-
renderStage,
|
|
110
|
-
experimental_renderTarget
|
|
111
|
-
}, { slots }) {
|
|
112
|
-
const data = useAttrs();
|
|
113
|
-
return () => h(
|
|
114
|
-
Suspense,
|
|
115
|
-
{},
|
|
116
|
-
{
|
|
117
|
-
default: h(
|
|
118
|
-
WebWidget,
|
|
119
|
-
{
|
|
120
|
-
...options,
|
|
121
|
-
data,
|
|
122
|
-
loader,
|
|
123
|
-
loading: experimental_loading,
|
|
124
|
-
renderStage,
|
|
125
|
-
renderTarget: experimental_renderTarget
|
|
126
|
-
},
|
|
127
|
-
slots
|
|
128
|
-
),
|
|
129
|
-
fallback
|
|
130
|
-
}
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
function toReact(component) {
|
|
136
|
-
return component;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export {
|
|
140
|
-
installErrorHandler,
|
|
141
|
-
defineWebWidget,
|
|
142
|
-
toReact
|
|
143
|
-
};
|
package/dist/types-DIPFtLxv.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import * as vue from 'vue';
|
|
2
|
-
import { PropType, VNode, Component, ComponentPublicInstance, App } from 'vue';
|
|
3
|
-
import { WebWidgetRendererOptions, Loader } from '@web-widget/web-widget';
|
|
4
|
-
import { ReactWidgetComponent } from '@web-widget/react';
|
|
5
|
-
|
|
6
|
-
interface DefineWebWidgetOptions {
|
|
7
|
-
base?: WebWidgetRendererOptions['base'];
|
|
8
|
-
import?: WebWidgetRendererOptions['import'];
|
|
9
|
-
loading?: WebWidgetRendererOptions['loading'];
|
|
10
|
-
name?: WebWidgetRendererOptions['name'];
|
|
11
|
-
renderStage?: WebWidgetRendererOptions['renderStage'];
|
|
12
|
-
renderTarget?: WebWidgetRendererOptions['renderTarget'];
|
|
13
|
-
}
|
|
14
|
-
declare function defineWebWidget(loader: Loader, options: DefineWebWidgetOptions): vue.DefineComponent<vue.ExtractPropTypes<{
|
|
15
|
-
fallback: {
|
|
16
|
-
type: PropType<VNode>;
|
|
17
|
-
};
|
|
18
|
-
experimental_loading: {
|
|
19
|
-
type: PropType<WebWidgetRendererOptions["loading"]>;
|
|
20
|
-
default: "lazy" | "eager" | "idle";
|
|
21
|
-
};
|
|
22
|
-
renderStage: {
|
|
23
|
-
type: PropType<WebWidgetRendererOptions["renderStage"]>;
|
|
24
|
-
default: "server" | "client" | undefined;
|
|
25
|
-
};
|
|
26
|
-
experimental_renderTarget: {
|
|
27
|
-
type: PropType<WebWidgetRendererOptions["renderTarget"]>;
|
|
28
|
-
default: "light" | "shadow";
|
|
29
|
-
};
|
|
30
|
-
}>, () => VNode<vue.RendererNode, vue.RendererElement, {
|
|
31
|
-
[key: string]: any;
|
|
32
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
33
|
-
fallback: {
|
|
34
|
-
type: PropType<VNode>;
|
|
35
|
-
};
|
|
36
|
-
experimental_loading: {
|
|
37
|
-
type: PropType<WebWidgetRendererOptions["loading"]>;
|
|
38
|
-
default: "lazy" | "eager" | "idle";
|
|
39
|
-
};
|
|
40
|
-
renderStage: {
|
|
41
|
-
type: PropType<WebWidgetRendererOptions["renderStage"]>;
|
|
42
|
-
default: "server" | "client" | undefined;
|
|
43
|
-
};
|
|
44
|
-
experimental_renderTarget: {
|
|
45
|
-
type: PropType<WebWidgetRendererOptions["renderTarget"]>;
|
|
46
|
-
default: "light" | "shadow";
|
|
47
|
-
};
|
|
48
|
-
}>> & Readonly<{}>, {
|
|
49
|
-
renderStage: "server" | "client" | undefined;
|
|
50
|
-
experimental_loading: "lazy" | "eager" | "idle" | undefined;
|
|
51
|
-
experimental_renderTarget: "light" | "shadow" | undefined;
|
|
52
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
53
|
-
/**
|
|
54
|
-
* Convert Vue component types to React component types.
|
|
55
|
-
*/
|
|
56
|
-
declare function toReact<T>(component: Component<T>): ReactWidgetComponent<Omit<T, keyof ComponentPublicInstance | "$route" | "$router">>;
|
|
57
|
-
|
|
58
|
-
interface CreateVueRenderOptions {
|
|
59
|
-
onCreatedApp?: (app: App<Element>, context: {
|
|
60
|
-
container?: Element | DocumentFragment;
|
|
61
|
-
data: any;
|
|
62
|
-
progressive?: boolean;
|
|
63
|
-
recovering?: boolean;
|
|
64
|
-
}, component: Component, props: any) => Promise<void>;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export { type CreateVueRenderOptions as C, type DefineWebWidgetOptions as D, defineWebWidget as d, toReact as t };
|
package/dist/vite.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as vite from 'vite';
|
|
2
|
-
import { WebWidgetUserConfig } from '@web-widget/vite-plugin';
|
|
3
|
-
|
|
4
|
-
interface VueWebWidgetPluginOptions extends Partial<WebWidgetUserConfig> {
|
|
5
|
-
workspace?: string;
|
|
6
|
-
}
|
|
7
|
-
declare function vueWebWidgetPlugin(options?: VueWebWidgetPluginOptions): vite.Plugin<any>[];
|
|
8
|
-
|
|
9
|
-
export { type VueWebWidgetPluginOptions, vueWebWidgetPlugin as default };
|
package/dist/vite.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
// src/vite.ts
|
|
2
|
-
import { webWidgetPlugin } from "@web-widget/vite-plugin";
|
|
3
|
-
import { posix } from "path";
|
|
4
|
-
import { normalizePath } from "@rollup/pluginutils";
|
|
5
|
-
function escapeRegExp(path) {
|
|
6
|
-
return path.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
|
-
}
|
|
8
|
-
function appendSlash(path) {
|
|
9
|
-
return path.endsWith(posix.sep) ? path : `${path}${posix.sep}`;
|
|
10
|
-
}
|
|
11
|
-
function vueWebWidgetPlugin(options) {
|
|
12
|
-
const {
|
|
13
|
-
manifest,
|
|
14
|
-
provide = "@web-widget/vue",
|
|
15
|
-
workspace = "",
|
|
16
|
-
export: exportWidget = {},
|
|
17
|
-
import: importWidget = {}
|
|
18
|
-
} = options != null ? options : {};
|
|
19
|
-
const workspacePattern = workspace ? escapeRegExp(normalizePath(appendSlash(workspace))) : workspace;
|
|
20
|
-
const widgetPattern = `[.@]widget`;
|
|
21
|
-
const routePattern = `[.@]route`;
|
|
22
|
-
const modulesPattern = `[.@](?:route|widget)`;
|
|
23
|
-
const extensionPattern = `\\.vue`;
|
|
24
|
-
const vueBuildModeQueryPattern = `(?:\\?vue&type=script\\b.*)`;
|
|
25
|
-
const routeRegExp = new RegExp(
|
|
26
|
-
`^${workspacePattern}.*${routePattern}${extensionPattern}$`
|
|
27
|
-
);
|
|
28
|
-
return webWidgetPlugin({
|
|
29
|
-
manifest,
|
|
30
|
-
provide,
|
|
31
|
-
export: {
|
|
32
|
-
include: new RegExp(
|
|
33
|
-
`^${workspacePattern}[^?]*${modulesPattern}${extensionPattern}$`
|
|
34
|
-
),
|
|
35
|
-
extractFromExportDefault: [
|
|
36
|
-
{
|
|
37
|
-
name: "handler",
|
|
38
|
-
default: "{GET({html}){return html()}}",
|
|
39
|
-
include: routeRegExp
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: "meta",
|
|
43
|
-
default: "{}",
|
|
44
|
-
include: routeRegExp
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
...exportWidget
|
|
48
|
-
},
|
|
49
|
-
import: {
|
|
50
|
-
include: new RegExp(`^[^?]*${widgetPattern}\\.[^?]*$`),
|
|
51
|
-
includeImporter: new RegExp(
|
|
52
|
-
// vite dev mode: .vue
|
|
53
|
-
// vite build mode: .vue?vue&type=script&setup=true&lang.ts
|
|
54
|
-
`^${workspacePattern}[^?]*${extensionPattern}${vueBuildModeQueryPattern}?$`
|
|
55
|
-
),
|
|
56
|
-
...importWidget
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
export {
|
|
61
|
-
vueWebWidgetPlugin as default
|
|
62
|
-
};
|
package/dist/vue.client.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as _web_widget_helpers from '@web-widget/helpers';
|
|
2
|
-
export * from '@web-widget/helpers';
|
|
3
|
-
import { Component } from 'vue';
|
|
4
|
-
import { C as CreateVueRenderOptions } from './types-DIPFtLxv.js';
|
|
5
|
-
export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-DIPFtLxv.js';
|
|
6
|
-
export { useWidgetAsyncState as useWidgetState } from '@web-widget/helpers/state';
|
|
7
|
-
import '@web-widget/web-widget';
|
|
8
|
-
import '@web-widget/react';
|
|
9
|
-
|
|
10
|
-
declare const createVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<Component, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
11
|
-
/**@deprecated Please use `createVueRender` instead.*/
|
|
12
|
-
declare const defineVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_helpers.ClientRender<Component, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
13
|
-
declare const render: _web_widget_helpers.ClientRender<Component, unknown, _web_widget_helpers.ClientRenderOptions, void | _web_widget_helpers.ClientRenderResult<unknown>>;
|
|
14
|
-
|
|
15
|
-
export { createVueRender, defineVueRender, render };
|
package/dist/vue.server.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as _web_widget_helpers from '@web-widget/helpers';
|
|
2
|
-
export * from '@web-widget/helpers';
|
|
3
|
-
import { Component } from 'vue';
|
|
4
|
-
import { SSRContext } from 'vue/server-renderer';
|
|
5
|
-
import { C as CreateVueRenderOptions } from './types-DIPFtLxv.js';
|
|
6
|
-
export { D as DefineWebWidgetOptions, d as defineWebWidget, t as toReact } from './types-DIPFtLxv.js';
|
|
7
|
-
export { useWidgetAsyncState as useWidgetState } from '@web-widget/helpers/state';
|
|
8
|
-
import '@web-widget/web-widget';
|
|
9
|
-
import '@web-widget/react';
|
|
10
|
-
|
|
11
|
-
declare module '@web-widget/schema' {
|
|
12
|
-
interface ServerRenderOptions {
|
|
13
|
-
vue?: {};
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface VueRenderOptions {
|
|
18
|
-
vue?: SSRContext;
|
|
19
|
-
}
|
|
20
|
-
declare const createVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<Component, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
21
|
-
/**@deprecated Please use `createVueRender` instead.*/
|
|
22
|
-
declare const defineVueRender: ({ onCreatedApp, }?: CreateVueRenderOptions) => _web_widget_helpers.ServerRender<Component, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
23
|
-
declare const render: _web_widget_helpers.ServerRender<Component, unknown, _web_widget_helpers.ServerRenderOptions, _web_widget_helpers.ServerRenderResult>;
|
|
24
|
-
|
|
25
|
-
export { type VueRenderOptions, createVueRender, defineVueRender, render };
|
package/dist/vue.server.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defineWebWidget,
|
|
3
|
-
installErrorHandler,
|
|
4
|
-
toReact
|
|
5
|
-
} from "./chunk-VYBV2IIO.js";
|
|
6
|
-
|
|
7
|
-
// src/server.ts
|
|
8
|
-
import { defineServerRender } from "@web-widget/helpers";
|
|
9
|
-
import { createSSRApp, h, Suspense } from "vue";
|
|
10
|
-
import {
|
|
11
|
-
renderToString,
|
|
12
|
-
renderToWebStream
|
|
13
|
-
} from "vue/server-renderer";
|
|
14
|
-
export * from "@web-widget/helpers";
|
|
15
|
-
import { useWidgetAsyncState } from "@web-widget/helpers/state";
|
|
16
|
-
var createWidgetSuspense = (component) => (props) => h(Suspense, null, [h(component, props)]);
|
|
17
|
-
var createVueRender = ({
|
|
18
|
-
onCreatedApp = async () => {
|
|
19
|
-
}
|
|
20
|
-
} = {}) => {
|
|
21
|
-
return defineServerRender(
|
|
22
|
-
async (component, data, { progressive, vue: options }) => {
|
|
23
|
-
var _a;
|
|
24
|
-
data = data != null ? data : {};
|
|
25
|
-
if (!component) {
|
|
26
|
-
throw new TypeError(`Missing component.`);
|
|
27
|
-
}
|
|
28
|
-
const ssrContext = Object.create(options != null ? options : null);
|
|
29
|
-
let error;
|
|
30
|
-
const context = { data, progressive };
|
|
31
|
-
const WidgetSuspense = createWidgetSuspense(component);
|
|
32
|
-
const app = createSSRApp(WidgetSuspense, data);
|
|
33
|
-
installErrorHandler(app, (err) => {
|
|
34
|
-
error = err;
|
|
35
|
-
});
|
|
36
|
-
await onCreatedApp(app, context, component, data);
|
|
37
|
-
const html = progressive ? renderToWebStream(app, ssrContext) : await renderToString(app, ssrContext);
|
|
38
|
-
if (ssrContext == null ? void 0 : ssrContext.teleports) {
|
|
39
|
-
const file = (_a = Reflect.get(component, "__file")) != null ? _a : "unknown";
|
|
40
|
-
throw new Error(
|
|
41
|
-
`Teleports are not supported in SSR: ${JSON.stringify(ssrContext.teleports, null, 2)} in ${file}
|
|
42
|
-
Do conditionally render Teleport when mounted on the client.`
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
if (error) {
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
return html;
|
|
49
|
-
}
|
|
50
|
-
);
|
|
51
|
-
};
|
|
52
|
-
var defineVueRender = createVueRender;
|
|
53
|
-
var render = createVueRender();
|
|
54
|
-
export {
|
|
55
|
-
createVueRender,
|
|
56
|
-
defineVueRender,
|
|
57
|
-
defineWebWidget,
|
|
58
|
-
render,
|
|
59
|
-
toReact,
|
|
60
|
-
useWidgetAsyncState as useWidgetState
|
|
61
|
-
};
|