{"version":3,"file":"queue.cjs","names":[],"sources":["../../../../src/client/stream/transport/queue.ts"],"sourcesContent":["import type { QueueResult } from \"./types.js\";\n\nexport class AsyncQueue<T> {\n  private readonly values: T[] = [];\n\n  private readonly waiters: Array<(result: QueueResult<T>) => void> = [];\n\n  private readonly rejecters: Array<(error: Error) => void> = [];\n\n  private closed = false;\n\n  private error: Error | null = null;\n\n  push(value: T): void {\n    if (this.closed) {\n      return;\n    }\n\n    const waiter = this.waiters.shift();\n    this.rejecters.shift();\n    if (waiter) {\n      waiter({ done: false, value });\n      return;\n    }\n\n    this.values.push(value);\n  }\n\n  close(error?: unknown): void {\n    if (this.closed) {\n      return;\n    }\n\n    this.closed = true;\n    this.error =\n      error == null\n        ? null\n        : // oxlint-disable-next-line no-instanceof/no-instanceof\n          error instanceof Error\n          ? error\n          : new Error(String(error));\n\n    if (this.error) {\n      for (const rejecter of this.rejecters.splice(0)) {\n        rejecter(this.error);\n      }\n      this.waiters.length = 0;\n      return;\n    }\n\n    for (const waiter of this.waiters.splice(0)) {\n      waiter({ done: true, value: undefined });\n    }\n    this.rejecters.length = 0;\n  }\n\n  async shift(): Promise<QueueResult<T>> {\n    if (this.values.length > 0) {\n      return { done: false, value: this.values.shift() as T };\n    }\n\n    if (this.error) {\n      throw this.error;\n    }\n\n    if (this.closed) {\n      return { done: true, value: undefined };\n    }\n\n    return await new Promise<QueueResult<T>>((resolve, reject) => {\n      this.waiters.push(resolve);\n      this.rejecters.push(reject);\n    });\n  }\n}\n"],"mappings":";AAEA,IAAa,aAAb,MAA2B;CACzB,SAA+B,EAAE;CAEjC,UAAoE,EAAE;CAEtE,YAA4D,EAAE;CAE9D,SAAiB;CAEjB,QAA8B;CAE9B,KAAK,OAAgB;AACnB,MAAI,KAAK,OACP;EAGF,MAAM,SAAS,KAAK,QAAQ,OAAO;AACnC,OAAK,UAAU,OAAO;AACtB,MAAI,QAAQ;AACV,UAAO;IAAE,MAAM;IAAO;IAAO,CAAC;AAC9B;;AAGF,OAAK,OAAO,KAAK,MAAM;;CAGzB,MAAM,OAAuB;AAC3B,MAAI,KAAK,OACP;AAGF,OAAK,SAAS;AACd,OAAK,QACH,SAAS,OACL,OAEA,iBAAiB,QACf,QACA,IAAI,MAAM,OAAO,MAAM,CAAC;AAEhC,MAAI,KAAK,OAAO;AACd,QAAK,MAAM,YAAY,KAAK,UAAU,OAAO,EAAE,CAC7C,UAAS,KAAK,MAAM;AAEtB,QAAK,QAAQ,SAAS;AACtB;;AAGF,OAAK,MAAM,UAAU,KAAK,QAAQ,OAAO,EAAE,CACzC,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW,CAAC;AAE1C,OAAK,UAAU,SAAS;;CAG1B,MAAM,QAAiC;AACrC,MAAI,KAAK,OAAO,SAAS,EACvB,QAAO;GAAE,MAAM;GAAO,OAAO,KAAK,OAAO,OAAO;GAAO;AAGzD,MAAI,KAAK,MACP,OAAM,KAAK;AAGb,MAAI,KAAK,OACP,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;AAGzC,SAAO,MAAM,IAAI,SAAyB,SAAS,WAAW;AAC5D,QAAK,QAAQ,KAAK,QAAQ;AAC1B,QAAK,UAAU,KAAK,OAAO;IAC3B"}