@web-widget/vue2 0.2.0 → 0.2.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/vue2.client.d.ts +2 -2
- package/dist/vue2.client.js +7 -2
- package/dist/vue2.server.cjs +30 -26
- package/dist/vue2.server.d.ts +2 -2
- package/dist/vue2.server.js +34 -27
- package/package.json +4 -4
package/dist/vue2.client.d.ts
CHANGED
|
@@ -145,7 +145,7 @@ interface DefineVueRenderOptions {
|
|
|
145
145
|
onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string
|
|
148
|
+
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
149
149
|
mount?: (() => void | Promise<void>) | undefined;
|
|
150
150
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
151
151
|
update?: (({ data }: {
|
|
@@ -158,7 +158,7 @@ declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchDat
|
|
|
158
158
|
data: Record<string, any>;
|
|
159
159
|
}) => void | Promise<void>) | undefined;
|
|
160
160
|
}>;
|
|
161
|
-
declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string
|
|
161
|
+
declare const render: (context: _web_widget_schema.ClientWidgetRenderContext<unknown> | _web_widget_schema.ClientRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<void | {
|
|
162
162
|
mount?: (() => void | Promise<void>) | undefined;
|
|
163
163
|
unmount?: (() => void | Promise<void>) | undefined;
|
|
164
164
|
update?: (({ data }: {
|
package/dist/vue2.client.js
CHANGED
|
@@ -31,8 +31,11 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// src/client.ts
|
|
34
|
+
import {
|
|
35
|
+
defineRender,
|
|
36
|
+
getComponentDescriptor
|
|
37
|
+
} from "@web-widget/schema/client-helpers";
|
|
34
38
|
import Vue from "vue";
|
|
35
|
-
import { defineRender as defineRenderHelper } from "@web-widget/schema/client-helpers";
|
|
36
39
|
export * from "@web-widget/schema/client-helpers";
|
|
37
40
|
|
|
38
41
|
// src/web-widget.ts
|
|
@@ -163,7 +166,9 @@ var defineVueRender = ({
|
|
|
163
166
|
},
|
|
164
167
|
onPrefetchData
|
|
165
168
|
} = {}) => {
|
|
166
|
-
return
|
|
169
|
+
return defineRender(async (context) => {
|
|
170
|
+
const componentDescriptor = getComponentDescriptor(context);
|
|
171
|
+
const { component, props } = componentDescriptor;
|
|
167
172
|
if (!context.container) {
|
|
168
173
|
throw new Error(`Container required.`);
|
|
169
174
|
}
|
package/dist/vue2.server.cjs
CHANGED
|
@@ -69,6 +69,7 @@ __export(server_exports, {
|
|
|
69
69
|
module.exports = __toCommonJS(server_exports);
|
|
70
70
|
var import_server_helpers = require("@web-widget/schema/server-helpers");
|
|
71
71
|
var import_node_stream = require("stream");
|
|
72
|
+
var import_web = require("stream/web");
|
|
72
73
|
var import_vue2 = __toESM(require("vue"), 1);
|
|
73
74
|
var import_vue_server_renderer = require("vue-server-renderer");
|
|
74
75
|
__reExport(server_exports, require("@web-widget/schema/server-helpers"), module.exports);
|
|
@@ -195,6 +196,7 @@ function defineWebWidget(loader, options) {
|
|
|
195
196
|
}
|
|
196
197
|
|
|
197
198
|
// src/server.ts
|
|
199
|
+
var __FEATURE_STREAM__ = false;
|
|
198
200
|
var ESCAPE_LOOKUP = {
|
|
199
201
|
">": "\\u003e",
|
|
200
202
|
"<": "\\u003c",
|
|
@@ -205,47 +207,49 @@ var ESCAPE_REGEX = /[><\u2028\u2029]/g;
|
|
|
205
207
|
function htmlEscapeJsonString(str) {
|
|
206
208
|
return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
|
|
207
209
|
}
|
|
210
|
+
function appendStringToReadableStream(stream, text) {
|
|
211
|
+
const encoder = new TextEncoder();
|
|
212
|
+
const uint8Array = encoder.encode(text);
|
|
213
|
+
return stream.pipeThrough(
|
|
214
|
+
new import_web.TransformStream({
|
|
215
|
+
flush(controller) {
|
|
216
|
+
controller.enqueue(uint8Array);
|
|
217
|
+
}
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
}
|
|
208
221
|
var defineVueRender = ({
|
|
209
222
|
onBeforeCreateApp = () => ({}),
|
|
210
223
|
onCreatedApp = () => {
|
|
211
224
|
},
|
|
212
225
|
onPrefetchData
|
|
213
226
|
} = {}) => {
|
|
214
|
-
return (0, import_server_helpers.defineRender)(async (context
|
|
227
|
+
return (0, import_server_helpers.defineRender)(async (context) => {
|
|
228
|
+
const componentDescriptor = (0, import_server_helpers.getComponentDescriptor)(context);
|
|
229
|
+
const { component, props } = componentDescriptor;
|
|
215
230
|
const shellTag = "web-widget.shell";
|
|
216
231
|
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
217
232
|
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
218
233
|
const renderer = (0, import_vue_server_renderer.createRenderer)();
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
},
|
|
223
|
-
props: mergedProps
|
|
224
|
-
};
|
|
225
|
-
const shellTagVNodeData = {};
|
|
226
|
-
let render2;
|
|
227
|
-
if (state) {
|
|
228
|
-
const stateStringify = htmlEscapeJsonString(JSON.stringify(state));
|
|
229
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [
|
|
230
|
-
h2(component, vNodeData),
|
|
231
|
-
h2("script", {
|
|
234
|
+
const app = new import_vue2.default(__spreadValues({
|
|
235
|
+
render: (h2) => h2(shellTag, {}, [
|
|
236
|
+
h2(component, {
|
|
232
237
|
attrs: {
|
|
233
|
-
|
|
234
|
-
type: "application/json"
|
|
238
|
+
"data-vue2root": "true"
|
|
235
239
|
},
|
|
236
|
-
|
|
237
|
-
innerHTML: stateStringify
|
|
238
|
-
}
|
|
240
|
+
props: mergedProps
|
|
239
241
|
})
|
|
240
|
-
])
|
|
241
|
-
} else {
|
|
242
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [h2(component, vNodeData)]);
|
|
243
|
-
}
|
|
244
|
-
const app = new import_vue2.default(__spreadValues({
|
|
245
|
-
render: render2
|
|
242
|
+
])
|
|
246
243
|
}, onBeforeCreateApp(context, component, mergedProps)));
|
|
247
244
|
onCreatedApp(app, context, component, mergedProps);
|
|
248
|
-
|
|
245
|
+
const result = __FEATURE_STREAM__ && import_node_stream.Readable.toWeb ? import_node_stream.Readable.toWeb(renderer.renderToStream(app)) : await renderer.renderToString(app);
|
|
246
|
+
if (state) {
|
|
247
|
+
const json = htmlEscapeJsonString(JSON.stringify(state));
|
|
248
|
+
const script = `<script as="state" type="application/json">${json}</script>`;
|
|
249
|
+
return typeof result === "string" ? result + script : appendStringToReadableStream(result, script);
|
|
250
|
+
} else {
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
249
253
|
});
|
|
250
254
|
};
|
|
251
255
|
var render = defineVueRender();
|
package/dist/vue2.server.d.ts
CHANGED
|
@@ -145,7 +145,7 @@ interface DefineVueRenderOptions {
|
|
|
145
145
|
onPrefetchData?: (context: RenderContext, component: Component, props: ComponentProps) => Promise<JSONProps>;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string
|
|
149
|
-
declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string
|
|
148
|
+
declare const defineVueRender: ({ onBeforeCreateApp, onCreatedApp, onPrefetchData, }?: DefineVueRenderOptions) => (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
|
|
149
|
+
declare const render: (context: _web_widget_schema.ServerWidgetRenderContext<unknown> | _web_widget_schema.ServerRouteRenderContext<unknown, Record<string, string>>, renderOptions: any) => Promise<string | ReadableStream<any> | ReadableStream<any>>;
|
|
150
150
|
|
|
151
151
|
export { DefineWebWidgetOptions, WebWidget, __ENV__, defineVueRender, defineWebWidget, render };
|
package/dist/vue2.server.js
CHANGED
|
@@ -31,8 +31,12 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// src/server.ts
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
defineRender,
|
|
36
|
+
getComponentDescriptor
|
|
37
|
+
} from "@web-widget/schema/server-helpers";
|
|
35
38
|
import { Readable } from "stream";
|
|
39
|
+
import { TransformStream } from "stream/web";
|
|
36
40
|
import Vue from "vue";
|
|
37
41
|
import { createRenderer } from "vue-server-renderer";
|
|
38
42
|
export * from "@web-widget/schema/server-helpers";
|
|
@@ -159,6 +163,7 @@ function defineWebWidget(loader, options) {
|
|
|
159
163
|
}
|
|
160
164
|
|
|
161
165
|
// src/server.ts
|
|
166
|
+
var __FEATURE_STREAM__ = false;
|
|
162
167
|
var ESCAPE_LOOKUP = {
|
|
163
168
|
">": "\\u003e",
|
|
164
169
|
"<": "\\u003c",
|
|
@@ -169,47 +174,49 @@ var ESCAPE_REGEX = /[><\u2028\u2029]/g;
|
|
|
169
174
|
function htmlEscapeJsonString(str) {
|
|
170
175
|
return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
|
|
171
176
|
}
|
|
177
|
+
function appendStringToReadableStream(stream, text) {
|
|
178
|
+
const encoder = new TextEncoder();
|
|
179
|
+
const uint8Array = encoder.encode(text);
|
|
180
|
+
return stream.pipeThrough(
|
|
181
|
+
new TransformStream({
|
|
182
|
+
flush(controller) {
|
|
183
|
+
controller.enqueue(uint8Array);
|
|
184
|
+
}
|
|
185
|
+
})
|
|
186
|
+
);
|
|
187
|
+
}
|
|
172
188
|
var defineVueRender = ({
|
|
173
189
|
onBeforeCreateApp = () => ({}),
|
|
174
190
|
onCreatedApp = () => {
|
|
175
191
|
},
|
|
176
192
|
onPrefetchData
|
|
177
193
|
} = {}) => {
|
|
178
|
-
return defineRender(async (context
|
|
194
|
+
return defineRender(async (context) => {
|
|
195
|
+
const componentDescriptor = getComponentDescriptor(context);
|
|
196
|
+
const { component, props } = componentDescriptor;
|
|
179
197
|
const shellTag = "web-widget.shell";
|
|
180
198
|
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
181
199
|
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
182
200
|
const renderer = createRenderer();
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
props: mergedProps
|
|
188
|
-
};
|
|
189
|
-
const shellTagVNodeData = {};
|
|
190
|
-
let render2;
|
|
191
|
-
if (state) {
|
|
192
|
-
const stateStringify = htmlEscapeJsonString(JSON.stringify(state));
|
|
193
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [
|
|
194
|
-
h2(component, vNodeData),
|
|
195
|
-
h2("script", {
|
|
201
|
+
const app = new Vue(__spreadValues({
|
|
202
|
+
render: (h2) => h2(shellTag, {}, [
|
|
203
|
+
h2(component, {
|
|
196
204
|
attrs: {
|
|
197
|
-
|
|
198
|
-
type: "application/json"
|
|
205
|
+
"data-vue2root": "true"
|
|
199
206
|
},
|
|
200
|
-
|
|
201
|
-
innerHTML: stateStringify
|
|
202
|
-
}
|
|
207
|
+
props: mergedProps
|
|
203
208
|
})
|
|
204
|
-
])
|
|
205
|
-
} else {
|
|
206
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [h2(component, vNodeData)]);
|
|
207
|
-
}
|
|
208
|
-
const app = new Vue(__spreadValues({
|
|
209
|
-
render: render2
|
|
209
|
+
])
|
|
210
210
|
}, onBeforeCreateApp(context, component, mergedProps)));
|
|
211
211
|
onCreatedApp(app, context, component, mergedProps);
|
|
212
|
-
|
|
212
|
+
const result = __FEATURE_STREAM__ && Readable.toWeb ? Readable.toWeb(renderer.renderToStream(app)) : await renderer.renderToString(app);
|
|
213
|
+
if (state) {
|
|
214
|
+
const json = htmlEscapeJsonString(JSON.stringify(state));
|
|
215
|
+
const script = `<script as="state" type="application/json">${json}</script>`;
|
|
216
|
+
return typeof result === "string" ? result + script : appendStringToReadableStream(result, script);
|
|
217
|
+
} else {
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
213
220
|
});
|
|
214
221
|
};
|
|
215
222
|
var render = defineVueRender();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@web-widget/vue2",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@web-widget/vite": "
|
|
28
|
-
"@web-widget/schema": "0.
|
|
29
|
-
"@web-widget/web-widget": "1.0.
|
|
27
|
+
"@web-widget/vite": "2.0.2",
|
|
28
|
+
"@web-widget/schema": "0.1.2",
|
|
29
|
+
"@web-widget/web-widget": "1.0.1",
|
|
30
30
|
"vue": "^2.7.14",
|
|
31
31
|
"vue-server-renderer": "^2.7.14"
|
|
32
32
|
},
|