{
  "version": 3,
  "sources": ["../src/node.ts"],
  "sourcesContent": ["import { open, type FileHandle } from 'node:fs/promises'\n\nexport type StreamWithHandle = ReadableStream<Uint8Array> & {\n    fileHandle:FileHandle;\n};\n\nexport interface FileHandleLike {\n    write (\n        buffer:Uint8Array,\n        offset:number,\n        length:number,\n        position:number\n    ):Promise<{ bytesWritten:number }>;\n    truncate (len?:number):Promise<void>;\n    close ():Promise<void>;\n}\n\nexport async function fromFile (\n    input:string|FileHandle\n):Promise<StreamWithHandle> {\n    const fileHandle = typeof input === 'string' ?\n        await open(input) :\n        input\n    const stream = fileHandle.readableWebStream()\n\n    return Object.assign(stream, { fileHandle })\n}\n\n/**\n * Convert a Node file handle into a writable web stream.\n */\nexport async function toFile (\n    input:string|FileHandleLike\n):Promise<WritableStream<Uint8Array>> {\n    const fh = typeof input === 'string' ?\n        await open(input, 'w') :\n        input\n\n    let position = 0\n\n    return new WritableStream<Uint8Array>({\n        async write (chunk) {\n            let offset = 0\n\n            while (offset < chunk.byteLength) {\n                const { bytesWritten } = await fh.write(\n                    chunk,\n                    offset,\n                    chunk.byteLength - offset,\n                    position\n                )\n\n                if (bytesWritten <= 0) {\n                    throw new Error('Expected file handle write to advance.')\n                }\n\n                offset += bytesWritten\n                position += bytesWritten\n            }\n        },\n\n        async close () {\n            await fh.truncate(position)\n            await fh.close()\n        },\n\n        async abort () {\n            await fh.close()\n        }\n    })\n}\n"],
  "mappings": "4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAsC,4BAiBtC,eAAsBC,EAClBC,EACwB,CACxB,MAAMC,EAAa,OAAOD,GAAU,SAChC,QAAM,QAAKA,CAAK,EAChBA,EACEE,EAASD,EAAW,kBAAkB,EAE5C,OAAO,OAAO,OAAOC,EAAQ,CAAE,WAAAD,CAAW,CAAC,CAC/C,CATsBE,EAAAJ,EAAA,YActB,eAAsBK,EAClBJ,EACkC,CAClC,MAAMK,EAAK,OAAOL,GAAU,SACxB,QAAM,QAAKA,EAAO,GAAG,EACrBA,EAEJ,IAAIM,EAAW,EAEf,OAAO,IAAI,eAA2B,CAClC,MAAM,MAAOC,EAAO,CAChB,IAAIC,EAAS,EAEb,KAAOA,EAASD,EAAM,YAAY,CAC9B,KAAM,CAAE,aAAAE,CAAa,EAAI,MAAMJ,EAAG,MAC9BE,EACAC,EACAD,EAAM,WAAaC,EACnBF,CACJ,EAEA,GAAIG,GAAgB,EAChB,MAAM,IAAI,MAAM,wCAAwC,EAG5DD,GAAUC,EACVH,GAAYG,CAChB,CACJ,EAEA,MAAM,OAAS,CACX,MAAMJ,EAAG,SAASC,CAAQ,EAC1B,MAAMD,EAAG,MAAM,CACnB,EAEA,MAAM,OAAS,CACX,MAAMA,EAAG,MAAM,CACnB,CACJ,CAAC,CACL,CAvCsBF,EAAAC,EAAA",
  "names": ["node_exports", "__export", "fromFile", "toFile", "__toCommonJS", "import_promises", "fromFile", "input", "fileHandle", "stream", "__name", "toFile", "fh", "position", "chunk", "offset", "bytesWritten"]
}
