@web-widget/vue2 0.1.2 → 0.2.0-beta1
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.server.cjs +28 -26
- package/dist/vue2.server.js +28 -26
- package/package.json +1 -1
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,6 +207,17 @@ 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 = () => {
|
|
@@ -214,38 +227,27 @@ var defineVueRender = ({
|
|
|
214
227
|
return (0, import_server_helpers.defineRender)(async (context, component, props) => {
|
|
215
228
|
const shellTag = "web-widget.shell";
|
|
216
229
|
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
217
|
-
const mergedProps = state ? Object.assign(state, props) : props;
|
|
230
|
+
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
218
231
|
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", {
|
|
232
|
+
const app = new import_vue2.default(__spreadValues({
|
|
233
|
+
render: (h2) => h2(shellTag, {}, [
|
|
234
|
+
h2(component, {
|
|
232
235
|
attrs: {
|
|
233
|
-
|
|
234
|
-
type: "application/json"
|
|
236
|
+
"data-vue2root": "true"
|
|
235
237
|
},
|
|
236
|
-
|
|
237
|
-
innerHTML: stateStringify
|
|
238
|
-
}
|
|
238
|
+
props: mergedProps
|
|
239
239
|
})
|
|
240
|
-
])
|
|
241
|
-
} else {
|
|
242
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [h2(component, vNodeData)]);
|
|
243
|
-
}
|
|
244
|
-
const app = new import_vue2.default(__spreadValues({
|
|
245
|
-
render: render2
|
|
240
|
+
])
|
|
246
241
|
}, onBeforeCreateApp(context, component, mergedProps)));
|
|
247
242
|
onCreatedApp(app, context, component, mergedProps);
|
|
248
|
-
|
|
243
|
+
const result = __FEATURE_STREAM__ && import_node_stream.Readable.toWeb ? import_node_stream.Readable.toWeb(renderer.renderToStream(app)) : await renderer.renderToString(app);
|
|
244
|
+
if (state) {
|
|
245
|
+
const json = htmlEscapeJsonString(JSON.stringify(state));
|
|
246
|
+
const script = `<script as="state" type="application/json">${json}</script>`;
|
|
247
|
+
return typeof result === "string" ? result + script : appendStringToReadableStream(result, script);
|
|
248
|
+
} else {
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
249
251
|
});
|
|
250
252
|
};
|
|
251
253
|
var render = defineVueRender();
|
package/dist/vue2.server.js
CHANGED
|
@@ -33,6 +33,7 @@ var __objRest = (source, exclude) => {
|
|
|
33
33
|
// src/server.ts
|
|
34
34
|
import { defineRender } from "@web-widget/schema/server-helpers";
|
|
35
35
|
import { Readable } from "stream";
|
|
36
|
+
import { TransformStream } from "stream/web";
|
|
36
37
|
import Vue from "vue";
|
|
37
38
|
import { createRenderer } from "vue-server-renderer";
|
|
38
39
|
export * from "@web-widget/schema/server-helpers";
|
|
@@ -159,6 +160,7 @@ function defineWebWidget(loader, options) {
|
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
// src/server.ts
|
|
163
|
+
var __FEATURE_STREAM__ = false;
|
|
162
164
|
var ESCAPE_LOOKUP = {
|
|
163
165
|
">": "\\u003e",
|
|
164
166
|
"<": "\\u003c",
|
|
@@ -169,6 +171,17 @@ var ESCAPE_REGEX = /[><\u2028\u2029]/g;
|
|
|
169
171
|
function htmlEscapeJsonString(str) {
|
|
170
172
|
return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
|
|
171
173
|
}
|
|
174
|
+
function appendStringToReadableStream(stream, text) {
|
|
175
|
+
const encoder = new TextEncoder();
|
|
176
|
+
const uint8Array = encoder.encode(text);
|
|
177
|
+
return stream.pipeThrough(
|
|
178
|
+
new TransformStream({
|
|
179
|
+
flush(controller) {
|
|
180
|
+
controller.enqueue(uint8Array);
|
|
181
|
+
}
|
|
182
|
+
})
|
|
183
|
+
);
|
|
184
|
+
}
|
|
172
185
|
var defineVueRender = ({
|
|
173
186
|
onBeforeCreateApp = () => ({}),
|
|
174
187
|
onCreatedApp = () => {
|
|
@@ -178,38 +191,27 @@ var defineVueRender = ({
|
|
|
178
191
|
return defineRender(async (context, component, props) => {
|
|
179
192
|
const shellTag = "web-widget.shell";
|
|
180
193
|
const state = onPrefetchData ? await onPrefetchData(context, component, props) : void 0;
|
|
181
|
-
const mergedProps = state ? Object.assign(state, props) : props;
|
|
194
|
+
const mergedProps = state ? Object.assign({}, state, props) : props;
|
|
182
195
|
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", {
|
|
196
|
+
const app = new Vue(__spreadValues({
|
|
197
|
+
render: (h2) => h2(shellTag, {}, [
|
|
198
|
+
h2(component, {
|
|
196
199
|
attrs: {
|
|
197
|
-
|
|
198
|
-
type: "application/json"
|
|
200
|
+
"data-vue2root": "true"
|
|
199
201
|
},
|
|
200
|
-
|
|
201
|
-
innerHTML: stateStringify
|
|
202
|
-
}
|
|
202
|
+
props: mergedProps
|
|
203
203
|
})
|
|
204
|
-
])
|
|
205
|
-
} else {
|
|
206
|
-
render2 = (h2) => h2(shellTag, shellTagVNodeData, [h2(component, vNodeData)]);
|
|
207
|
-
}
|
|
208
|
-
const app = new Vue(__spreadValues({
|
|
209
|
-
render: render2
|
|
204
|
+
])
|
|
210
205
|
}, onBeforeCreateApp(context, component, mergedProps)));
|
|
211
206
|
onCreatedApp(app, context, component, mergedProps);
|
|
212
|
-
|
|
207
|
+
const result = __FEATURE_STREAM__ && Readable.toWeb ? Readable.toWeb(renderer.renderToStream(app)) : await renderer.renderToString(app);
|
|
208
|
+
if (state) {
|
|
209
|
+
const json = htmlEscapeJsonString(JSON.stringify(state));
|
|
210
|
+
const script = `<script as="state" type="application/json">${json}</script>`;
|
|
211
|
+
return typeof result === "string" ? result + script : appendStringToReadableStream(result, script);
|
|
212
|
+
} else {
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
213
215
|
});
|
|
214
216
|
};
|
|
215
217
|
var render = defineVueRender();
|