{
  "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": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAsC;AAiBtC,eAAsB,SAClB,OACwB;AACxB,QAAM,aAAa,OAAO,UAAU,WAChC,UAAM,sBAAK,KAAK,IAChB;AACJ,QAAM,SAAS,WAAW,kBAAkB;AAE5C,SAAO,OAAO,OAAO,QAAQ,EAAE,WAAW,CAAC;AAC/C;AATsB;AActB,eAAsB,OAClB,OACkC;AAClC,QAAM,KAAK,OAAO,UAAU,WACxB,UAAM,sBAAK,OAAO,GAAG,IACrB;AAEJ,MAAI,WAAW;AAEf,SAAO,IAAI,eAA2B;AAAA,IAClC,MAAM,MAAO,OAAO;AAChB,UAAI,SAAS;AAEb,aAAO,SAAS,MAAM,YAAY;AAC9B,cAAM,EAAE,aAAa,IAAI,MAAM,GAAG;AAAA,UAC9B;AAAA,UACA;AAAA,UACA,MAAM,aAAa;AAAA,UACnB;AAAA,QACJ;AAEA,YAAI,gBAAgB,GAAG;AACnB,gBAAM,IAAI,MAAM,wCAAwC;AAAA,QAC5D;AAEA,kBAAU;AACV,oBAAY;AAAA,MAChB;AAAA,IACJ;AAAA,IAEA,MAAM,QAAS;AACX,YAAM,GAAG,SAAS,QAAQ;AAC1B,YAAM,GAAG,MAAM;AAAA,IACnB;AAAA,IAEA,MAAM,QAAS;AACX,YAAM,GAAG,MAAM;AAAA,IACnB;AAAA,EACJ,CAAC;AACL;AAvCsB;",
  "names": []
}
