UNPKG

swarpc

Version:

Full type-safe RPC library for service worker -- move things off of the UI thread with ease!

27 lines (26 loc) 738 B
// TODO: keep it in sync with web standards, how? const transferableClasses = [ MessagePort, ReadableStream, WritableStream, TransformStream, ArrayBuffer, ]; export function findTransferables(value) { if (value === null || value === undefined) { return []; } if (typeof value === "object") { if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) { return [value]; } if (transferableClasses.some((cls) => value instanceof cls)) { return [value]; } if (Array.isArray(value)) { return value.flatMap(findTransferables); } return Object.values(value).flatMap(findTransferables); } return []; }