@vue/server-renderer 3.2.45 → 3.2.47

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.
@@ -2,10 +2,23 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var vue = require('vue');
5
+ var Vue = require('vue');
6
6
  var shared = require('@vue/shared');
7
7
  var compilerSsr = require('@vue/compiler-ssr');
8
8
 
9
+ function _interopNamespaceDefault(e) {
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ for (var k in e) {
13
+ n[k] = e[k];
14
+ }
15
+ }
16
+ n.default = e;
17
+ return Object.freeze(n);
18
+ }
19
+
20
+ var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue);
21
+
9
22
  // leading comma for empty string ""
10
23
  const shouldIgnoreProp = shared.makeMap(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
11
24
  function ssrRenderAttrs(props, tag) {
@@ -77,6 +90,207 @@ function ssrRenderStyle(raw) {
77
90
  return shared.escapeHtml(shared.stringifyStyle(styles));
78
91
  }
79
92
 
93
+ function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
94
+ return renderComponentVNode(Vue.createVNode(comp, props, children), parentComponent, slotScopeId);
95
+ }
96
+
97
+ function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
98
+ // template-compiled slots are always rendered as fragments
99
+ push(`<!--[-->`);
100
+ ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
101
+ push(`<!--]-->`);
102
+ }
103
+ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
104
+ const slotFn = slots[slotName];
105
+ if (slotFn) {
106
+ const slotBuffer = [];
107
+ const bufferedPush = (item) => {
108
+ slotBuffer.push(item);
109
+ };
110
+ const ret = slotFn(slotProps, bufferedPush, parentComponent, slotScopeId ? ' ' + slotScopeId : '');
111
+ if (shared.isArray(ret)) {
112
+ // normal slot
113
+ renderVNodeChildren(push, ret, parentComponent, slotScopeId);
114
+ }
115
+ else {
116
+ // ssr slot.
117
+ // check if the slot renders all comments, in which case use the fallback
118
+ let isEmptySlot = true;
119
+ if (transition) {
120
+ isEmptySlot = false;
121
+ }
122
+ else {
123
+ for (let i = 0; i < slotBuffer.length; i++) {
124
+ if (!isComment(slotBuffer[i])) {
125
+ isEmptySlot = false;
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ if (isEmptySlot) {
131
+ if (fallbackRenderFn) {
132
+ fallbackRenderFn();
133
+ }
134
+ }
135
+ else {
136
+ for (let i = 0; i < slotBuffer.length; i++) {
137
+ push(slotBuffer[i]);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ else if (fallbackRenderFn) {
143
+ fallbackRenderFn();
144
+ }
145
+ }
146
+ const commentTestRE = /^<!--.*-->$/s;
147
+ const commentRE = /<!--[^]*?-->/gm;
148
+ function isComment(item) {
149
+ if (typeof item !== 'string' || !commentTestRE.test(item))
150
+ return false;
151
+ // if item is '<!---->' or '<!--[-->' or '<!--]-->', return true directly
152
+ if (item.length <= 8)
153
+ return true;
154
+ return !item.replace(commentRE, '').trim();
155
+ }
156
+
157
+ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
158
+ parentPush('<!--teleport start-->');
159
+ const context = parentComponent.appContext.provides[Vue.ssrContextKey];
160
+ const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
161
+ const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
162
+ // record current index of the target buffer to handle nested teleports
163
+ // since the parent needs to be rendered before the child
164
+ const bufferIndex = targetBuffer.length;
165
+ let teleportContent;
166
+ if (disabled) {
167
+ contentRenderFn(parentPush);
168
+ teleportContent = `<!--teleport anchor-->`;
169
+ }
170
+ else {
171
+ const { getBuffer, push } = createBuffer();
172
+ contentRenderFn(push);
173
+ push(`<!--teleport anchor-->`);
174
+ teleportContent = getBuffer();
175
+ }
176
+ targetBuffer.splice(bufferIndex, 0, teleportContent);
177
+ parentPush('<!--teleport end-->');
178
+ }
179
+
180
+ function ssrInterpolate(value) {
181
+ return shared.escapeHtml(shared.toDisplayString(value));
182
+ }
183
+
184
+ function ssrRenderList(source, renderItem) {
185
+ if (shared.isArray(source) || shared.isString(source)) {
186
+ for (let i = 0, l = source.length; i < l; i++) {
187
+ renderItem(source[i], i);
188
+ }
189
+ }
190
+ else if (typeof source === 'number') {
191
+ for (let i = 0; i < source; i++) {
192
+ renderItem(i + 1, i);
193
+ }
194
+ }
195
+ else if (shared.isObject(source)) {
196
+ if (source[Symbol.iterator]) {
197
+ const arr = Array.from(source);
198
+ for (let i = 0, l = arr.length; i < l; i++) {
199
+ renderItem(arr[i], i);
200
+ }
201
+ }
202
+ else {
203
+ const keys = Object.keys(source);
204
+ for (let i = 0, l = keys.length; i < l; i++) {
205
+ const key = keys[i];
206
+ renderItem(source[key], key, i);
207
+ }
208
+ }
209
+ }
210
+ }
211
+
212
+ async function ssrRenderSuspense(push, { default: renderContent }) {
213
+ if (renderContent) {
214
+ renderContent();
215
+ }
216
+ else {
217
+ push(`<!---->`);
218
+ }
219
+ }
220
+
221
+ function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
222
+ if (typeof dir !== 'function' && dir.getSSRProps) {
223
+ return (dir.getSSRProps({
224
+ dir,
225
+ instance,
226
+ value,
227
+ oldValue: undefined,
228
+ arg,
229
+ modifiers
230
+ }, null) || {});
231
+ }
232
+ return {};
233
+ }
234
+
235
+ const ssrLooseEqual = shared.looseEqual;
236
+ function ssrLooseContain(arr, value) {
237
+ return shared.looseIndexOf(arr, value) > -1;
238
+ }
239
+ // for <input :type="type" v-model="model" value="value">
240
+ function ssrRenderDynamicModel(type, model, value) {
241
+ switch (type) {
242
+ case 'radio':
243
+ return shared.looseEqual(model, value) ? ' checked' : '';
244
+ case 'checkbox':
245
+ return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
246
+ ? ' checked'
247
+ : '';
248
+ default:
249
+ // text types
250
+ return ssrRenderAttr('value', model);
251
+ }
252
+ }
253
+ // for <input v-bind="obj" v-model="model">
254
+ function ssrGetDynamicModelProps(existingProps = {}, model) {
255
+ const { type, value } = existingProps;
256
+ switch (type) {
257
+ case 'radio':
258
+ return shared.looseEqual(model, value) ? { checked: true } : null;
259
+ case 'checkbox':
260
+ return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
261
+ ? { checked: true }
262
+ : null;
263
+ default:
264
+ // text types
265
+ return { value: model };
266
+ }
267
+ }
268
+
269
+ // internal runtime helpers
270
+
271
+ var helpers = /*#__PURE__*/Object.freeze({
272
+ __proto__: null,
273
+ ssrGetDirectiveProps: ssrGetDirectiveProps,
274
+ ssrGetDynamicModelProps: ssrGetDynamicModelProps,
275
+ ssrIncludeBooleanAttr: shared.includeBooleanAttr,
276
+ ssrInterpolate: ssrInterpolate,
277
+ ssrLooseContain: ssrLooseContain,
278
+ ssrLooseEqual: ssrLooseEqual,
279
+ ssrRenderAttr: ssrRenderAttr,
280
+ ssrRenderAttrs: ssrRenderAttrs,
281
+ ssrRenderClass: ssrRenderClass,
282
+ ssrRenderComponent: ssrRenderComponent,
283
+ ssrRenderDynamicAttr: ssrRenderDynamicAttr,
284
+ ssrRenderDynamicModel: ssrRenderDynamicModel,
285
+ ssrRenderList: ssrRenderList,
286
+ ssrRenderSlot: ssrRenderSlot,
287
+ ssrRenderSlotInner: ssrRenderSlotInner,
288
+ ssrRenderStyle: ssrRenderStyle,
289
+ ssrRenderSuspense: ssrRenderSuspense,
290
+ ssrRenderTeleport: ssrRenderTeleport,
291
+ ssrRenderVNode: renderVNode
292
+ });
293
+
80
294
  const compileCache = Object.create(null);
81
295
  function ssrCompile(template, instance) {
82
296
  // TODO: This is copied from runtime-core/src/component.ts and should probably be refactored
@@ -106,33 +320,15 @@ function ssrCompile(template, instance) {
106
320
  }
107
321
  };
108
322
  const { code } = compilerSsr.compile(template, finalCompilerOptions);
109
- return (compileCache[cacheKey] = Function('require', code)(require));
110
- }
111
-
112
- function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
113
- parentPush('<!--teleport start-->');
114
- const context = parentComponent.appContext.provides[vue.ssrContextKey];
115
- const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
116
- const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
117
- // record current index of the target buffer to handle nested teleports
118
- // since the parent needs to be rendered before the child
119
- const bufferIndex = targetBuffer.length;
120
- let teleportContent;
121
- if (disabled) {
122
- contentRenderFn(parentPush);
123
- teleportContent = `<!--teleport anchor-->`;
124
- }
125
- else {
126
- const { getBuffer, push } = createBuffer();
127
- contentRenderFn(push);
128
- push(`<!--teleport anchor-->`);
129
- teleportContent = getBuffer();
130
- }
131
- targetBuffer.splice(bufferIndex, 0, teleportContent);
132
- parentPush('<!--teleport end-->');
323
+ const requireMap = {
324
+ vue: Vue__namespace,
325
+ 'vue/server-renderer': helpers
326
+ };
327
+ const fakeRequire = (id) => requireMap[id];
328
+ return (compileCache[cacheKey] = Function('require', code)(fakeRequire));
133
329
  }
134
330
 
135
- const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode } = vue.ssrUtils;
331
+ const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode } = Vue.ssrUtils;
136
332
  // Each component has a buffer array.
137
333
  // A buffer array can contain one of the following:
138
334
  // - plain string
@@ -261,7 +457,7 @@ function renderComponentSubTree(instance, slotScopeId) {
261
457
  }
262
458
  else {
263
459
  const componentName = comp.name || comp.__file || `<Anonymous>`;
264
- vue.warn(`Component ${componentName} is missing template or render function.`);
460
+ Vue.warn(`Component ${componentName} is missing template or render function.`);
265
461
  push(`<!---->`);
266
462
  }
267
463
  }
@@ -270,16 +466,16 @@ function renderComponentSubTree(instance, slotScopeId) {
270
466
  function renderVNode(push, vnode, parentComponent, slotScopeId) {
271
467
  const { type, shapeFlag, children } = vnode;
272
468
  switch (type) {
273
- case vue.Text:
469
+ case Vue.Text:
274
470
  push(shared.escapeHtml(children));
275
471
  break;
276
- case vue.Comment:
472
+ case Vue.Comment:
277
473
  push(children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->`);
278
474
  break;
279
- case vue.Static:
475
+ case Vue.Static:
280
476
  push(children);
281
477
  break;
282
- case vue.Fragment:
478
+ case Vue.Fragment:
283
479
  if (vnode.slotScopeIds) {
284
480
  slotScopeId =
285
481
  (slotScopeId ? slotScopeId + ' ' : '') + vnode.slotScopeIds.join(' ');
@@ -302,7 +498,7 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
302
498
  renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
303
499
  }
304
500
  else {
305
- vue.warn('[@vue/server-renderer] Invalid VNode type:', type, `(${typeof type})`);
501
+ Vue.warn('[@vue/server-renderer] Invalid VNode type:', type, `(${typeof type})`);
306
502
  }
307
503
  }
308
504
  }
@@ -376,19 +572,19 @@ function applySSRDirectives(vnode, rawProps, dirs) {
376
572
  toMerge.push(props);
377
573
  }
378
574
  }
379
- return vue.mergeProps(rawProps || {}, ...toMerge);
575
+ return Vue.mergeProps(rawProps || {}, ...toMerge);
380
576
  }
381
577
  function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
382
578
  const target = vnode.props && vnode.props.to;
383
579
  const disabled = vnode.props && vnode.props.disabled;
384
580
  if (!target) {
385
581
  if (!disabled) {
386
- vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`);
582
+ Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`);
387
583
  }
388
584
  return [];
389
585
  }
390
586
  if (!shared.isString(target)) {
391
- vue.warn(`[@vue/server-renderer] Teleport target must be a query selector string.`);
587
+ Vue.warn(`[@vue/server-renderer] Teleport target must be a query selector string.`);
392
588
  return [];
393
589
  }
394
590
  ssrRenderTeleport(push, push => {
@@ -396,8 +592,8 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
396
592
  }, target, disabled || disabled === '', parentComponent);
397
593
  }
398
594
 
399
- const { isVNode } = vue.ssrUtils;
400
- async function unrollBuffer(buffer) {
595
+ const { isVNode: isVNode$1 } = Vue.ssrUtils;
596
+ async function unrollBuffer$1(buffer) {
401
597
  if (buffer.hasAsync) {
402
598
  let ret = '';
403
599
  for (let i = 0; i < buffer.length; i++) {
@@ -409,7 +605,7 @@ async function unrollBuffer(buffer) {
409
605
  ret += item;
410
606
  }
411
607
  else {
412
- ret += await unrollBuffer(item);
608
+ ret += await unrollBuffer$1(item);
413
609
  }
414
610
  }
415
611
  return ret;
@@ -417,10 +613,10 @@ async function unrollBuffer(buffer) {
417
613
  else {
418
614
  // sync buffer can be more efficiently unrolled without unnecessary await
419
615
  // ticks
420
- return unrollBufferSync(buffer);
616
+ return unrollBufferSync$1(buffer);
421
617
  }
422
618
  }
423
- function unrollBufferSync(buffer) {
619
+ function unrollBufferSync$1(buffer) {
424
620
  let ret = '';
425
621
  for (let i = 0; i < buffer.length; i++) {
426
622
  let item = buffer[i];
@@ -429,23 +625,23 @@ function unrollBufferSync(buffer) {
429
625
  }
430
626
  else {
431
627
  // since this is a sync buffer, child buffers are never promises
432
- ret += unrollBufferSync(item);
628
+ ret += unrollBufferSync$1(item);
433
629
  }
434
630
  }
435
631
  return ret;
436
632
  }
437
633
  async function renderToString(input, context = {}) {
438
- if (isVNode(input)) {
634
+ if (isVNode$1(input)) {
439
635
  // raw vnode, wrap with app (for context)
440
- return renderToString(vue.createApp({ render: () => input }), context);
636
+ return renderToString(Vue.createApp({ render: () => input }), context);
441
637
  }
442
638
  // rendering an app
443
- const vnode = vue.createVNode(input._component, input._props);
639
+ const vnode = Vue.createVNode(input._component, input._props);
444
640
  vnode.appContext = input._context;
445
641
  // provide the ssr context to the tree
446
- input.provide(vue.ssrContextKey, context);
642
+ input.provide(Vue.ssrContextKey, context);
447
643
  const buffer = await renderComponentVNode(vnode);
448
- const result = await unrollBuffer(buffer);
644
+ const result = await unrollBuffer$1(buffer);
449
645
  await resolveTeleports(context);
450
646
  if (context.__watcherHandles) {
451
647
  for (const unwatch of context.__watcherHandles) {
@@ -460,13 +656,13 @@ async function resolveTeleports(context) {
460
656
  for (const key in context.__teleportBuffers) {
461
657
  // note: it's OK to await sequentially here because the Promises were
462
658
  // created eagerly in parallel.
463
- context.teleports[key] = await unrollBuffer(await Promise.all([context.__teleportBuffers[key]]));
659
+ context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
464
660
  }
465
661
  }
466
662
  }
467
663
 
468
- const { isVNode: isVNode$1 } = vue.ssrUtils;
469
- async function unrollBuffer$1(buffer, stream) {
664
+ const { isVNode } = Vue.ssrUtils;
665
+ async function unrollBuffer(buffer, stream) {
470
666
  if (buffer.hasAsync) {
471
667
  for (let i = 0; i < buffer.length; i++) {
472
668
  let item = buffer[i];
@@ -477,17 +673,17 @@ async function unrollBuffer$1(buffer, stream) {
477
673
  stream.push(item);
478
674
  }
479
675
  else {
480
- await unrollBuffer$1(item, stream);
676
+ await unrollBuffer(item, stream);
481
677
  }
482
678
  }
483
679
  }
484
680
  else {
485
681
  // sync buffer can be more efficiently unrolled without unnecessary await
486
682
  // ticks
487
- unrollBufferSync$1(buffer, stream);
683
+ unrollBufferSync(buffer, stream);
488
684
  }
489
685
  }
490
- function unrollBufferSync$1(buffer, stream) {
686
+ function unrollBufferSync(buffer, stream) {
491
687
  for (let i = 0; i < buffer.length; i++) {
492
688
  let item = buffer[i];
493
689
  if (shared.isString(item)) {
@@ -495,22 +691,22 @@ function unrollBufferSync$1(buffer, stream) {
495
691
  }
496
692
  else {
497
693
  // since this is a sync buffer, child buffers are never promises
498
- unrollBufferSync$1(item, stream);
694
+ unrollBufferSync(item, stream);
499
695
  }
500
696
  }
501
697
  }
502
698
  function renderToSimpleStream(input, context, stream) {
503
- if (isVNode$1(input)) {
699
+ if (isVNode(input)) {
504
700
  // raw vnode, wrap with app (for context)
505
- return renderToSimpleStream(vue.createApp({ render: () => input }), context, stream);
701
+ return renderToSimpleStream(Vue.createApp({ render: () => input }), context, stream);
506
702
  }
507
703
  // rendering an app
508
- const vnode = vue.createVNode(input._component, input._props);
704
+ const vnode = Vue.createVNode(input._component, input._props);
509
705
  vnode.appContext = input._context;
510
706
  // provide the ssr context to the tree
511
- input.provide(vue.ssrContextKey, context);
707
+ input.provide(Vue.ssrContextKey, context);
512
708
  Promise.resolve(renderComponentVNode(vnode))
513
- .then(buffer => unrollBuffer$1(buffer, stream))
709
+ .then(buffer => unrollBuffer(buffer, stream))
514
710
  .then(() => resolveTeleports(context))
515
711
  .then(() => {
516
712
  if (context.__watcherHandles) {
@@ -617,160 +813,7 @@ function pipeToWebWritable(input, context = {}, writable) {
617
813
  });
618
814
  }
619
815
 
620
- function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
621
- return renderComponentVNode(vue.createVNode(comp, props, children), parentComponent, slotScopeId);
622
- }
623
-
624
- function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
625
- // template-compiled slots are always rendered as fragments
626
- push(`<!--[-->`);
627
- ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
628
- push(`<!--]-->`);
629
- }
630
- function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
631
- const slotFn = slots[slotName];
632
- if (slotFn) {
633
- const slotBuffer = [];
634
- const bufferedPush = (item) => {
635
- slotBuffer.push(item);
636
- };
637
- const ret = slotFn(slotProps, bufferedPush, parentComponent, slotScopeId ? ' ' + slotScopeId : '');
638
- if (shared.isArray(ret)) {
639
- // normal slot
640
- renderVNodeChildren(push, ret, parentComponent, slotScopeId);
641
- }
642
- else {
643
- // ssr slot.
644
- // check if the slot renders all comments, in which case use the fallback
645
- let isEmptySlot = true;
646
- if (transition) {
647
- isEmptySlot = false;
648
- }
649
- else {
650
- for (let i = 0; i < slotBuffer.length; i++) {
651
- if (!isComment(slotBuffer[i])) {
652
- isEmptySlot = false;
653
- break;
654
- }
655
- }
656
- }
657
- if (isEmptySlot) {
658
- if (fallbackRenderFn) {
659
- fallbackRenderFn();
660
- }
661
- }
662
- else {
663
- for (let i = 0; i < slotBuffer.length; i++) {
664
- push(slotBuffer[i]);
665
- }
666
- }
667
- }
668
- }
669
- else if (fallbackRenderFn) {
670
- fallbackRenderFn();
671
- }
672
- }
673
- const commentTestRE = /^<!--.*-->$/s;
674
- const commentRE = /<!--[^]*?-->/gm;
675
- function isComment(item) {
676
- if (typeof item !== 'string' || !commentTestRE.test(item))
677
- return false;
678
- // if item is '<!---->' or '<!--[-->' or '<!--]-->', return true directly
679
- if (item.length <= 8)
680
- return true;
681
- return !item.replace(commentRE, '').trim();
682
- }
683
-
684
- function ssrInterpolate(value) {
685
- return shared.escapeHtml(shared.toDisplayString(value));
686
- }
687
-
688
- function ssrRenderList(source, renderItem) {
689
- if (shared.isArray(source) || shared.isString(source)) {
690
- for (let i = 0, l = source.length; i < l; i++) {
691
- renderItem(source[i], i);
692
- }
693
- }
694
- else if (typeof source === 'number') {
695
- for (let i = 0; i < source; i++) {
696
- renderItem(i + 1, i);
697
- }
698
- }
699
- else if (shared.isObject(source)) {
700
- if (source[Symbol.iterator]) {
701
- const arr = Array.from(source);
702
- for (let i = 0, l = arr.length; i < l; i++) {
703
- renderItem(arr[i], i);
704
- }
705
- }
706
- else {
707
- const keys = Object.keys(source);
708
- for (let i = 0, l = keys.length; i < l; i++) {
709
- const key = keys[i];
710
- renderItem(source[key], key, i);
711
- }
712
- }
713
- }
714
- }
715
-
716
- async function ssrRenderSuspense(push, { default: renderContent }) {
717
- if (renderContent) {
718
- renderContent();
719
- }
720
- else {
721
- push(`<!---->`);
722
- }
723
- }
724
-
725
- function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
726
- if (typeof dir !== 'function' && dir.getSSRProps) {
727
- return (dir.getSSRProps({
728
- dir,
729
- instance,
730
- value,
731
- oldValue: undefined,
732
- arg,
733
- modifiers
734
- }, null) || {});
735
- }
736
- return {};
737
- }
738
-
739
- const ssrLooseEqual = shared.looseEqual;
740
- function ssrLooseContain(arr, value) {
741
- return shared.looseIndexOf(arr, value) > -1;
742
- }
743
- // for <input :type="type" v-model="model" value="value">
744
- function ssrRenderDynamicModel(type, model, value) {
745
- switch (type) {
746
- case 'radio':
747
- return shared.looseEqual(model, value) ? ' checked' : '';
748
- case 'checkbox':
749
- return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
750
- ? ' checked'
751
- : '';
752
- default:
753
- // text types
754
- return ssrRenderAttr('value', model);
755
- }
756
- }
757
- // for <input v-bind="obj" v-model="model">
758
- function ssrGetDynamicModelProps(existingProps = {}, model) {
759
- const { type, value } = existingProps;
760
- switch (type) {
761
- case 'radio':
762
- return shared.looseEqual(model, value) ? { checked: true } : null;
763
- case 'checkbox':
764
- return (shared.isArray(model) ? ssrLooseContain(model, value) : model)
765
- ? { checked: true }
766
- : null;
767
- default:
768
- // text types
769
- return { value: model };
770
- }
771
- }
772
-
773
- vue.initDirectivesForSSR();
816
+ Vue.initDirectivesForSSR();
774
817
 
775
818
  exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr;
776
819
  exports.pipeToNodeWritable = pipeToNodeWritable;