text: /*! Based on fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> & David Frank */
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
      if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
      if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
      return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
  };
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
      if (kind === "m") throw new TypeError("Private method is not writable");
      if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
      if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
      return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
  };
  var _Blob_parts, _Blob_type, _Blob_size;
  import { ReadableStream } from "web-streams-polyfill";
  import { isFunction } from "./isFunction.js";
  import { consumeBlobParts, sliceBlob } from "./blobHelpers.js";
  export class Blob {
      constructor(blobParts = [], options = {}) {
          _Blob_parts.set(this, []);
          _Blob_type.set(this, "");
          _Blob_size.set(this, 0);
          options !== null && options !== void 0 ? options : (options = {});
          if (typeof blobParts !== "object" || blobParts === null) {
              throw new TypeError("Failed to construct 'Blob': "
                  + "The provided value cannot be converted to a sequence.");
          }
          if (!isFunction(blobParts[Symbol.iterator])) {
              throw new TypeError("Failed to construct 'Blob': "
                  + "The object must have a callable @@iterator property.");
          }
          if (typeof options !== "object" && !isFunction(options)) {
              throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary.");
          }
          const encoder = new TextEncoder();
          for (const raw of blobParts) {
              let part;
              if (ArrayBuffer.isView(raw)) {
                  part = new Uint8Array(raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength));
              }
              else if (raw instanceof ArrayBuffer) {
                  part = new Uint8Array(raw.slice(0));
              }
              else if (raw instanceof Blob) {
                  part = raw;
              }
              else {
                  part = encoder.encode(String(raw));
              }
              __classPrivateFieldSet(this, _Blob_size, __classPrivateFieldGet(this, _Blob_size, "f") + (ArrayBuffer.isView(part) ? part.byteLength : part.size), "f");
              __classPrivateFieldGet(this, _Blob_parts, "f").push(part);
          }
          const type = options.type === undefined ? "" : String(options.type);
          __classPrivateFieldSet(this, _Blob_type, /^[\x20-\x7E]*$/.test(type) ? type : "", "f");
      }
      static [(_Blob_parts = new WeakMap(), _Blob_type = new WeakMap(), _Blob_size = new WeakMap(), Symbol.hasInstance)](value) {
          return Boolean(value
              && typeof value === "object"
              && isFunction(value.constructor)
              && (isFunction(value.stream)
                  || isFunction(value.arrayBuffer))
              && /^(Blob|File)$/.test(value[Symbol.toStringTag]));
      }
      get type() {
          return __classPrivateFieldGet(this, _Blob_type, "f");
      }
      get size() {
          return __classPrivateFieldGet(this, _Blob_size, "f");
      }
      slice(start, end, contentType) {
          return new Blob(sliceBlob(__classPrivateFieldGet(this, _Blob_parts, "f"), this.size, start, end), {
              type: contentType
          });
      }
      async text() {
          const decoder = new TextDecoder();
          let result = "";
          for await (const chunk of consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, "f"))) {
              result += decoder.decode(chunk, { stream: true });
          }
          result += decoder.decode();
          return result;
      }
      async arrayBuffer() {
          const view = new Uint8Array(this.size);
          let offset = 0;
          for await (const chunk of consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, "f"))) {
              view.set(chunk, offset);
              offset += chunk.length;
          }
          return view.buffer;
      }
      stream() {
          const iterator = consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, "f"), true);
          return new ReadableStream({
              async pull(controller) {
                  const { value, done } = await iterator.next();
                  if (done) {
                      return queueMicrotask(() => controller.close());
                  }
                  controller.enqueue(value);
              },
              async cancel() {
                  await iterator.return();
              }
          });
      }
      get [Symbol.toStringTag]() {
          return "Blob";
      }
  }
  Object.defineProperties(Blob.prototype, {
      type: { enumerable: true },
      size: { enumerable: true },
      slice: { enumerable: true },
      stream: { enumerable: true },
      text: { enumerable: true },
      arrayBuffer: { enumerable: true }
  });
  