MCPcopy Create free account
hub / github.com/breck7/scroll / appendFromStream

Method appendFromStream

external/.scrollLibs.js:16650–16723  ·  view source on GitHub ↗
(input)

Source from the content-addressed store, hash-verified

16648 return newParticle
16649 }
16650 async appendFromStream(input) {
16651 var _a, e_1, _b, _c
16652 const { edgeSymbol, particleBreakSymbol } = this
16653 let buffer = ""
16654 const breakRegex = new RegExp(`${particleBreakSymbol}(?!${edgeSymbol})`)
16655 // Node.js Readable stream
16656 if (typeof process !== "undefined" && input instanceof require("stream").Readable) {
16657 try {
16658 for (var _d = true, input_1 = __asyncValues(input), input_1_1; (input_1_1 = await input_1.next()), (_a = input_1_1.done), !_a; ) {
16659 _c = input_1_1.value
16660 _d = false
16661 try {
16662 const chunk = _c
16663 buffer += chunk.toString("utf8")
16664 while (true) {
16665 const breakIndex = buffer.search(breakRegex)
16666 if (breakIndex === -1) break
16667 const block = buffer.slice(0, breakIndex)
16668 buffer = buffer.slice(breakIndex + particleBreakSymbol.length)
16669 await this._transformAndAppendBlockAsync(block)
16670 }
16671 } finally {
16672 _d = true
16673 }
16674 }
16675 } catch (e_1_1) {
16676 e_1 = { error: e_1_1 }
16677 } finally {
16678 try {
16679 if (!_d && !_a && (_b = input_1.return)) await _b.call(input_1)
16680 } finally {
16681 if (e_1) throw e_1.error
16682 }
16683 }
16684 // Process remaining buffer
16685 await this._transformAndAppendBlockAsync(buffer)
16686 }
16687 // Browser ReadableStream
16688 else if (typeof ReadableStream !== "undefined" && input instanceof ReadableStream) {
16689 const reader = input.getReader()
16690 try {
16691 while (true) {
16692 const { done, value } = await reader.read()
16693 if (done) break
16694 buffer += new TextDecoder().decode(value) // Convert Uint8Array to string
16695 while (true) {
16696 const breakIndex = buffer.search(breakRegex)
16697 if (breakIndex === -1) break
16698 const block = buffer.slice(0, breakIndex)
16699 buffer = buffer.slice(breakIndex + particleBreakSymbol.length)
16700 await this._transformAndAppendBlockAsync(block)
16701 }
16702 }
16703 // Process remaining buffer
16704 await this._transformAndAppendBlockAsync(buffer)
16705 } finally {
16706 reader.releaseLock()
16707 }

Callers 2

appendParticleAsyncMethod · 0.80
_singlePassFuseMethod · 0.80

Calls 5

nextMethod · 0.80
sliceMethod · 0.80
toStringMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected