{"version":3,"file":"RawStreamRPCPlugin.cjs","names":[],"sources":["../../../../src/ssr/serializer/RawStreamRPCPlugin.ts"],"sourcesContent":["import { createPlugin } from 'seroval'\nimport { RawStream } from './RawStream'\nimport type { OnRawStreamCallback, RawStreamRPCNode } from './RawStream'\n\n/**\n * Server-side RawStream plugin for multiplexed server-function responses.\n * The `hint` is ignored: framed responses always carry raw bytes.\n */\n/* @__NO_SIDE_EFFECTS__ */\nexport function createRawStreamRPCPlugin(onRawStream: OnRawStreamCallback) {\n  let nextStreamId = 1\n\n  return /* @__PURE__ */ createPlugin<RawStream, RawStreamRPCNode>({\n    tag: 'tss/RawStream',\n    test(value: unknown) {\n      return value instanceof RawStream\n    },\n    parse: {\n      stream(value, ctx) {\n        const streamId = nextStreamId++\n        onRawStream(streamId, value.stream)\n        return { streamId: ctx.parse(streamId) }\n      },\n    },\n    serialize: undefined as never,\n    deserialize: undefined as never,\n  })\n}\n\n/** Client-side RawStream plugin for multiplexed server-function responses. */\n/* @__NO_SIDE_EFFECTS__ */\nexport function createRawStreamDeserializePlugin(\n  getStream: (id: number) => ReadableStream<Uint8Array>,\n) {\n  return /* @__PURE__ */ createPlugin<\n    ReadableStream<Uint8Array>,\n    RawStreamRPCNode\n  >({\n    tag: 'tss/RawStream',\n    test: () => false,\n    parse: {},\n    serialize: undefined as never,\n    deserialize(node, ctx) {\n      return getStream(ctx.deserialize<number>(node.streamId))\n    },\n  })\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,yBAAyB,aAAkC;CACzE,IAAI,eAAe;CAEnB,OAAuB,iBAAA,GAAA,QAAA,cAA0C;EAC/D,KAAK;EACL,KAAK,OAAgB;GACnB,OAAO,iBAAiB,kBAAA;EAC1B;EACA,OAAO,EACL,OAAO,OAAO,KAAK;GACjB,MAAM,WAAW;GACjB,YAAY,UAAU,MAAM,MAAM;GAClC,OAAO,EAAE,UAAU,IAAI,MAAM,QAAQ,EAAE;EACzC,EACF;EACA,WAAW,KAAA;EACX,aAAa,KAAA;CACf,CAAC;AACH;;;AAIA,SAAgB,iCACd,WACA;CACA,OAAuB,iBAAA,GAAA,QAAA,cAGrB;EACA,KAAK;EACL,YAAY;EACZ,OAAO,CAAC;EACR,WAAW,KAAA;EACX,YAAY,MAAM,KAAK;GACrB,OAAO,UAAU,IAAI,YAAoB,KAAK,QAAQ,CAAC;EACzD;CACF,CAAC;AACH"}