@vue/server-renderer 3.6.0-beta.9 → 3.6.0-rc.1

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,5 +1,5 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-beta.9
2
+ * @vue/server-renderer v3.6.0-rc.1
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -38,8 +38,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
38
38
  enumerable: true
39
39
  }) : target, mod));
40
40
  //#endregion
41
- let vue = require("vue");
42
- vue = __toESM(vue);
41
+ let _vue_runtime_dom = require("@vue/runtime-dom");
42
+ _vue_runtime_dom = __toESM(_vue_runtime_dom);
43
43
  let _vue_shared = require("@vue/shared");
44
44
  let _vue_compiler_ssr = require("@vue/compiler-ssr");
45
45
  //#region packages/server-renderer/src/helpers/ssrRenderAttrs.ts
@@ -92,11 +92,16 @@ function ssrResetCssVars(raw) {
92
92
  //#endregion
93
93
  //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
94
94
  function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
95
- return renderComponentVNode((0, vue.createVNode)(comp, props, children), parentComponent, slotScopeId);
95
+ if ((0, _vue_shared.isString)(comp)) {
96
+ const { getBuffer, push } = createBuffer();
97
+ renderVNode(push, (0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
98
+ return getBuffer();
99
+ }
100
+ return renderComponentVNode((0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
96
101
  }
97
102
  //#endregion
98
103
  //#region packages/server-renderer/src/helpers/ssrRenderSlot.ts
99
- const { ensureValidVNode } = vue.ssrUtils;
104
+ const { ensureValidVNode } = _vue_runtime_dom.ssrUtils;
100
105
  function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
101
106
  push(`<!--[-->`);
102
107
  ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
@@ -149,7 +154,7 @@ function isComment(item) {
149
154
  //#region packages/server-renderer/src/helpers/ssrRenderTeleport.ts
150
155
  function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
151
156
  parentPush("<!--teleport start-->");
152
- const context = parentComponent.appContext.provides[vue.ssrContextKey];
157
+ const context = parentComponent.appContext.provides[_vue_runtime_dom.ssrContextKey];
153
158
  const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
154
159
  const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
155
160
  const bufferIndex = targetBuffer.length;
@@ -165,6 +170,7 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent
165
170
  teleportContent = getBuffer();
166
171
  }
167
172
  targetBuffer.splice(bufferIndex, 0, teleportContent);
173
+ if ((0, _vue_shared.isPromise)(teleportContent) || (0, _vue_shared.isArray)(teleportContent) && teleportContent.hasAsync) targetBuffer.hasAsync = true;
168
174
  parentPush("<!--teleport end-->");
169
175
  }
170
176
  //#endregion
@@ -178,8 +184,8 @@ function ssrRenderList(source, renderItem) {
178
184
  if ((0, _vue_shared.isArray)(source) || (0, _vue_shared.isString)(source)) for (let i = 0, l = source.length; i < l; i++) renderItem(source[i], i);
179
185
  else if (typeof source === "number") for (let i = 0; i < source; i++) renderItem(i + 1, i);
180
186
  else if ((0, _vue_shared.isObject)(source)) if (source[Symbol.iterator]) {
181
- const arr = Array.from(source);
182
- for (let i = 0, l = arr.length; i < l; i++) renderItem(arr[i], i);
187
+ let i = 0;
188
+ for (const item of source) renderItem(item, i++);
183
189
  } else {
184
190
  const keys = Object.keys(source);
185
191
  for (let i = 0, l = keys.length; i < l; i++) {
@@ -190,7 +196,7 @@ function ssrRenderList(source, renderItem) {
190
196
  }
191
197
  //#endregion
192
198
  //#region packages/server-renderer/src/helpers/ssrRenderSuspense.ts
193
- async function ssrRenderSuspense(push, { default: renderContent }) {
199
+ function ssrRenderSuspense(push, { default: renderContent }) {
194
200
  if (renderContent) renderContent();
195
201
  else push(`<!---->`);
196
202
  }
@@ -199,7 +205,7 @@ async function ssrRenderSuspense(push, { default: renderContent }) {
199
205
  function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
200
206
  if (typeof dir !== "function" && dir.getSSRProps) return dir.getSSRProps({
201
207
  dir,
202
- instance: vue.ssrUtils.getComponentPublicInstance(instance.$),
208
+ instance: _vue_runtime_dom.ssrUtils.getComponentPublicInstance(instance.$),
203
209
  value,
204
210
  oldValue: void 0,
205
211
  arg,
@@ -277,7 +283,7 @@ function ssrCompile(template, instance) {
277
283
  };
278
284
  const { code } = (0, _vue_compiler_ssr.compile)(template, finalCompilerOptions);
279
285
  const requireMap = {
280
- vue,
286
+ vue: _vue_runtime_dom,
281
287
  "vue/server-renderer": internal_exports
282
288
  };
283
289
  const fakeRequire = (id) => requireMap[id];
@@ -285,7 +291,7 @@ function ssrCompile(template, instance) {
285
291
  }
286
292
  //#endregion
287
293
  //#region packages/server-renderer/src/render.ts
288
- const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = vue.ssrUtils;
294
+ const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = _vue_runtime_dom.ssrUtils;
289
295
  function cleanupContext(context) {
290
296
  let firstError;
291
297
  if (context.__watcherHandles) {
@@ -327,7 +333,7 @@ function createBuffer() {
327
333
  }
328
334
  function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
329
335
  const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
330
- const context = instance.appContext.provides[vue.ssrContextKey];
336
+ const context = instance.appContext.provides[_vue_runtime_dom.ssrContextKey];
331
337
  if (context) (context.__instanceScopes || (context.__instanceScopes = [])).push(instance.scope);
332
338
  const res = setupComponent(instance, true);
333
339
  const hasAsyncSetup = (0, _vue_shared.isPromise)(res);
@@ -336,7 +342,11 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
336
342
  if (hasAsyncSetup) prefetches = instance.sp;
337
343
  if (prefetches) return Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy)));
338
344
  }).catch(_vue_shared.NOOP).then(() => renderComponentSubTree(instance, slotScopeId));
339
- else return renderComponentSubTree(instance, slotScopeId);
345
+ else try {
346
+ return renderComponentSubTree(instance, slotScopeId);
347
+ } catch (err) {
348
+ return Promise.reject(err);
349
+ }
340
350
  }
341
351
  function renderComponentSubTree(instance, slotScopeId) {
342
352
  const comp = instance.type;
@@ -375,12 +385,14 @@ function renderComponentSubTree(instance, slotScopeId) {
375
385
  const prev = setCurrentRenderingInstance(instance);
376
386
  try {
377
387
  ssrRender(instance.proxy, push, instance, attrs, instance.props, instance.setupState, instance.data, instance.ctx);
388
+ } catch (err) {
389
+ (0, _vue_runtime_dom.handleError)(err, instance, 1);
378
390
  } finally {
379
391
  setCurrentRenderingInstance(prev);
380
392
  }
381
393
  } else if (instance.render && instance.render !== _vue_shared.NOOP) renderVNode(push, instance.subTree = renderComponentRoot(instance), instance, slotScopeId);
382
394
  else {
383
- (0, vue.warn)(`Component ${comp.name || comp.__file || `<Anonymous>`} is missing template or render function.`);
395
+ (0, _vue_runtime_dom.warn)(`Component ${comp.name || comp.__file || `<Anonymous>`} is missing template or render function.`);
384
396
  push(`<!---->`);
385
397
  }
386
398
  }
@@ -390,16 +402,16 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
390
402
  const { type, shapeFlag, children, dirs, props } = vnode;
391
403
  if (dirs) vnode.props = applySSRDirectives(vnode, props, dirs);
392
404
  switch (type) {
393
- case vue.Text:
405
+ case _vue_runtime_dom.Text:
394
406
  push((0, _vue_shared.escapeHtml)(children));
395
407
  break;
396
- case vue.Comment:
408
+ case _vue_runtime_dom.Comment:
397
409
  push(children ? `<!--${(0, _vue_shared.escapeHtmlComment)(children)}-->` : `<!---->`);
398
410
  break;
399
- case vue.Static:
411
+ case _vue_runtime_dom.Static:
400
412
  push(children);
401
413
  break;
402
- case vue.Fragment:
414
+ case _vue_runtime_dom.Fragment:
403
415
  if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
404
416
  push(`<!--[-->`);
405
417
  renderVNodeChildren(push, children, parentComponent, slotScopeId);
@@ -409,7 +421,7 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
409
421
  else if (shapeFlag & 6) push(renderComponentVNode(vnode, parentComponent, slotScopeId));
410
422
  else if (shapeFlag & 64) renderTeleportVNode(push, vnode, parentComponent, slotScopeId);
411
423
  else if (shapeFlag & 128) renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
412
- else (0, vue.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
424
+ else (0, _vue_runtime_dom.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
413
425
  }
414
426
  }
415
427
  function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
@@ -420,15 +432,25 @@ function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
420
432
  let { props, children, shapeFlag, scopeId } = vnode;
421
433
  let openTag = `<${tag}`;
422
434
  if (props) openTag += ssrRenderAttrs(props, tag);
423
- if (scopeId) openTag += ` ${scopeId}`;
435
+ const renderedScopeIds = [];
436
+ const appendScopeId = (id) => {
437
+ if (id && (!props || !(0, _vue_shared.hasOwn)(props, id)) && !renderedScopeIds.includes(id)) {
438
+ openTag += ` ${id}`;
439
+ renderedScopeIds.push(id);
440
+ }
441
+ };
442
+ if (scopeId) appendScopeId(scopeId);
424
443
  let curParent = parentComponent;
425
444
  let curVnode = vnode;
426
445
  while (curParent && curVnode === curParent.subTree) {
427
446
  curVnode = curParent.vnode;
428
- if (curVnode.scopeId) openTag += ` ${curVnode.scopeId}`;
447
+ if (curVnode.scopeId) appendScopeId(curVnode.scopeId);
429
448
  curParent = curParent.parent;
430
449
  }
431
- if (slotScopeId) openTag += ` ${slotScopeId}`;
450
+ if (slotScopeId) {
451
+ const slotScopeIdList = slotScopeId.trim().split(" ");
452
+ for (let i = 0; i < slotScopeIdList.length; i++) appendScopeId(slotScopeIdList[i]);
453
+ }
432
454
  push(openTag + `>`);
433
455
  if (!(0, _vue_shared.isVoidTag)(tag)) {
434
456
  let hasChildrenOverride = false;
@@ -461,17 +483,17 @@ function applySSRDirectives(vnode, rawProps, dirs) {
461
483
  if (props) toMerge.push(props);
462
484
  }
463
485
  }
464
- return (0, vue.mergeProps)(rawProps || {}, ...toMerge);
486
+ return (0, _vue_runtime_dom.mergeProps)(rawProps || {}, ...toMerge);
465
487
  }
466
488
  function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
467
489
  const target = vnode.props && vnode.props.to;
468
490
  const disabled = vnode.props && vnode.props.disabled;
469
491
  if (!target) {
470
- if (!disabled) (0, vue.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
492
+ if (!disabled) (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
471
493
  return [];
472
494
  }
473
495
  if (!(0, _vue_shared.isString)(target)) {
474
- (0, vue.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
496
+ (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
475
497
  return [];
476
498
  }
477
499
  ssrRenderTeleport(push, (push) => {
@@ -480,7 +502,7 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
480
502
  }
481
503
  //#endregion
482
504
  //#region packages/server-renderer/src/renderToString.ts
483
- const { isVNode: isVNode$1 } = vue.ssrUtils;
505
+ const { isVNode: isVNode$1 } = _vue_runtime_dom.ssrUtils;
484
506
  function nestedUnrollBuffer(buffer, parentRet, startIndex) {
485
507
  if (!buffer.hasAsync) return parentRet + unrollBufferSync$1(buffer);
486
508
  let ret = parentRet;
@@ -516,10 +538,10 @@ function unrollBufferSync$1(buffer) {
516
538
  return ret;
517
539
  }
518
540
  async function renderToString(input, context = {}) {
519
- if (isVNode$1(input)) return renderToString((0, vue.createApp)({ render: () => input }), context);
520
- const vnode = (0, vue.createVNode)(input._component, input._props);
541
+ if (isVNode$1(input)) return renderToString((0, _vue_runtime_dom.createApp)({ render: () => input }), context);
542
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
521
543
  vnode.appContext = input._context;
522
- input.provide(vue.ssrContextKey, context);
544
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
523
545
  try {
524
546
  const result = await unrollBuffer$1(await renderComponentVNode(vnode));
525
547
  await resolveTeleports(context);
@@ -531,12 +553,12 @@ async function renderToString(input, context = {}) {
531
553
  async function resolveTeleports(context) {
532
554
  if (context.__teleportBuffers) {
533
555
  context.teleports = context.teleports || {};
534
- for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
556
+ for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(context.__teleportBuffers[key]);
535
557
  }
536
558
  }
537
559
  //#endregion
538
560
  //#region packages/server-renderer/src/renderToStream.ts
539
- const { isVNode } = vue.ssrUtils;
561
+ const { isVNode } = _vue_runtime_dom.ssrUtils;
540
562
  async function unrollBuffer(buffer, stream) {
541
563
  if (buffer.hasAsync) for (let i = 0; i < buffer.length; i++) {
542
564
  let item = buffer[i];
@@ -554,10 +576,10 @@ function unrollBufferSync(buffer, stream) {
554
576
  }
555
577
  }
556
578
  function renderToSimpleStream(input, context, stream) {
557
- if (isVNode(input)) return renderToSimpleStream((0, vue.createApp)({ render: () => input }), context, stream);
558
- const vnode = (0, vue.createVNode)(input._component, input._props);
579
+ if (isVNode(input)) return renderToSimpleStream((0, _vue_runtime_dom.createApp)({ render: () => input }), context, stream);
580
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
559
581
  vnode.appContext = input._context;
560
- input.provide(vue.ssrContextKey, context);
582
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
561
583
  let cleaned = false;
562
584
  const finalize = () => {
563
585
  if (cleaned) return;
@@ -641,7 +663,7 @@ function pipeToWebWritable(input, context = {}, writable) {
641
663
  }
642
664
  //#endregion
643
665
  //#region packages/server-renderer/src/index.ts
644
- (0, vue.initDirectivesForSSR)();
666
+ (0, _vue_runtime_dom.initDirectivesForSSR)();
645
667
  //#endregion
646
668
  exports.pipeToNodeWritable = pipeToNodeWritable;
647
669
  exports.pipeToWebWritable = pipeToWebWritable;
@@ -1,4 +1,4 @@
1
- import { App, Component, ComponentInternalInstance, ComponentPublicInstance, Directive, Slots, VNode } from "vue";
1
+ import { App, Component, ComponentInternalInstance, ComponentPublicInstance, Directive, Slots, VNode } from "@vue/runtime-dom";
2
2
  import { Readable, Writable } from "node:stream";
3
3
  import { includeBooleanAttr as ssrIncludeBooleanAttr } from "@vue/shared";
4
4
 
@@ -40,7 +40,7 @@ export declare function ssrRenderSlot(slots: Slots | SSRSlots, slotName: string,
40
40
  export declare function ssrRenderSlotInner(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string, transition?: boolean): void;
41
41
  //#endregion
42
42
  //#region temp/packages/server-renderer/src/helpers/ssrRenderComponent.d.ts
43
- export declare function ssrRenderComponent(comp: Component, props?: Props | null, children?: Slots | SSRSlots | null, parentComponent?: ComponentInternalInstance | null, slotScopeId?: string): SSRBuffer | Promise<SSRBuffer>;
43
+ export declare function ssrRenderComponent(comp: Component | string, props?: Props | null, children?: Slots | SSRSlots | null, parentComponent?: ComponentInternalInstance | null, slotScopeId?: string): SSRBuffer | Promise<SSRBuffer>;
44
44
  //#endregion
45
45
  //#region temp/packages/server-renderer/src/helpers/ssrRenderTeleport.d.ts
46
46
  export declare function ssrRenderTeleport(parentPush: PushFn, contentRenderFn: (push: PushFn) => void, target: string, disabled: boolean, parentComponent: ComponentInternalInstance): void;
@@ -61,7 +61,7 @@ export declare function ssrRenderList(source: unknown, renderItem: (value: unkno
61
61
  //#region temp/packages/server-renderer/src/helpers/ssrRenderSuspense.d.ts
62
62
  export declare function ssrRenderSuspense(push: PushFn, {
63
63
  default: renderContent
64
- }: Record<string, (() => void) | undefined>): Promise<void>;
64
+ }: Record<string, (() => void) | undefined>): void;
65
65
  //#endregion
66
66
  //#region temp/packages/server-renderer/src/helpers/ssrGetDirectiveProps.d.ts
67
67
  export declare function ssrGetDirectiveProps(instance: ComponentPublicInstance, dir: Directive, value?: any, arg?: string, modifiers?: Record<string, boolean>): Record<string, any>;