MCPcopy
hub / github.com/vuejs/core / nestedUnrollBuffer

Function nestedUnrollBuffer

packages/server-renderer/src/renderToString.ts:14–50  ·  view source on GitHub ↗
(
  buffer: SSRBuffer,
  parentRet: string,
  startIndex: number,
)

Source from the content-addressed store, hash-verified

12const { isVNode } = ssrUtils
13
14function nestedUnrollBuffer(
15 buffer: SSRBuffer,
16 parentRet: string,
17 startIndex: number,
18): Promise<string> | string {
19 if (!buffer.hasAsync) {
20 return parentRet + unrollBufferSync(buffer)
21 }
22
23 let ret = parentRet
24 for (let i = startIndex; i < buffer.length; i += 1) {
25 const item = buffer[i]
26 if (isString(item)) {
27 ret += item
28 continue
29 }
30
31 if (isPromise(item)) {
32 return item.then(nestedItem => {
33 buffer[i] = nestedItem
34 return nestedUnrollBuffer(buffer, ret, i)
35 })
36 }
37
38 const result = nestedUnrollBuffer(item, ret, 0)
39 if (isPromise(result)) {
40 return result.then(nestedItem => {
41 buffer[i] = nestedItem
42 return nestedUnrollBuffer(buffer, '', i)
43 })
44 }
45
46 ret = result
47 }
48
49 return ret
50}
51
52export function unrollBuffer(buffer: SSRBuffer): Promise<string> | string {
53 return nestedUnrollBuffer(buffer, '', 0)

Callers 1

unrollBufferFunction · 0.85

Calls 3

isStringFunction · 0.90
isPromiseFunction · 0.90
unrollBufferSyncFunction · 0.70

Tested by

no test coverage detected