{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * The resolved value of a promise cascade, can cascade further\n */\nexport type Cade<T> =\n  | (ReadableStreamReadValueResult<T> & { next: Promiscade<T> })\n  | ReadableStreamReadDoneResult<undefined>;\n\n/**\n * A cascading promise structure for stream processing\n */\nexport type Promiscade<T> = Promise<Cade<T>>;\n\n/**\n * Converts a ReadableStream into a Promiscade structure\n */\nexport function streamToPromiscade<T>(\n  stream: ReadableStream<T>\n): Promiscade<T> {\n  const reader = stream.getReader();\n  return (function cade(): Promiscade<T> {\n    return new Promise<Cade<T>>((resolve, reject) =>\n      reader.read().then((value) => {\n        resolve(\n          value.done\n            ? { done: true }\n            : {\n                ...value,\n                next: cade(),\n              }\n        );\n      }, reject)\n    );\n  })();\n}\n\n/**\n * Converts a Promiscade into a ReadableStream\n */\nexport function promiscadeToReadableStream<T>(\n  promiscade: Promiscade<T>\n): ReadableStream<T> {\n  return new ReadableStream<T>({\n    start(controller) {\n      const onError = controller.error.bind(controller);\n      promiscade.then(function handle(cade) {\n        try {\n          if (cade.done) {\n            controller.close();\n          } else {\n            controller.enqueue(cade.value);\n            cade.next.then(handle, onError);\n          }\n        } catch {\n          // the controller might already be closed by the consumer, don't error in that case\n        }\n      }, onError);\n    },\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeO,SAAS,mBACd,QACe;AACf,QAAM,SAAS,OAAO,UAAU;AAChC,SAAQ,SAAS,OAAsB;AACrC,WAAO,IAAI;AAAA,MAAiB,CAAC,SAAS,WACpC,OAAO,KAAK,EAAE,KAAK,CAAC,UAAU;AAC5B;AAAA,UACE,MAAM,OACF,EAAE,MAAM,KAAK,IACb;AAAA,YACE,GAAG;AAAA,YACH,MAAM,KAAK;AAAA,UACb;AAAA,QACN;AAAA,MACF,GAAG,MAAM;AAAA,IACX;AAAA,EACF,EAAG;AACL;AAKO,SAAS,2BACd,YACmB;AACnB,SAAO,IAAI,eAAkB;AAAA,IAC3B,MAAM,YAAY;AAChB,YAAM,UAAU,WAAW,MAAM,KAAK,UAAU;AAChD,iBAAW,KAAK,SAAS,OAAO,MAAM;AACpC,YAAI;AACF,cAAI,KAAK,MAAM;AACb,uBAAW,MAAM;AAAA,UACnB,OAAO;AACL,uBAAW,QAAQ,KAAK,KAAK;AAC7B,iBAAK,KAAK,KAAK,QAAQ,OAAO;AAAA,UAChC;AAAA,QACF,QAAQ;AAAA,QAER;AAAA,MACF,GAAG,OAAO;AAAA,IACZ;AAAA,EACF,CAAC;AACH;","names":[]}