MCPcopy Create free account
hub / github.com/andywer/threads.js / replaceArrayBufferWithPlaceholder

Function replaceArrayBufferWithPlaceholder

test/transferables.test.ts:19–34  ·  view source on GitHub ↗
(obj: In, arrayBuffer: ArrayBuffer)

Source from the content-addressed store, hash-verified

17}
18
19function replaceArrayBufferWithPlaceholder<In extends any>(obj: In, arrayBuffer: ArrayBuffer): In extends ArrayBuffer ? (In | typeof arrayBufferPlaceholder) : In {
20 if ((obj as any) === arrayBuffer) {
21 return arrayBufferPlaceholder as any
22 } else if (Array.isArray(obj)) {
23 return (obj as any[]).map(element => replaceArrayBufferWithPlaceholder(element, arrayBuffer)) as any
24 } else if (obj && typeof obj === "object") {
25 const result: In = Object.create(Object.getPrototypeOf(obj))
26
27 for (const key of Object.getOwnPropertyNames(obj)) {
28 (result as any)[key] = replaceArrayBufferWithPlaceholder((obj as any)[key], arrayBuffer)
29 }
30 return result as any
31 } else {
32 return obj as any
33 }
34}
35
36test("can pass transferable objects on thread call", async t => {
37 const testData = new ArrayBuffer(64)

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected