{"version":3,"file":"dist-89xCrGqi.mjs","names":[],"sources":["../../../node_modules/.pnpm/image-size@2.0.2_patch_hash=77c12533e3a635c4066c55da8952f4912e8210416539dc1249550fa639271595/node_modules/image-size/dist/index.mjs"],"sourcesContent":["// lib/types/utils.ts\nvar decoder = new TextDecoder();\nvar toUTF8String = (input, start = 0, end = input.length) => decoder.decode(input.slice(start, end));\nvar toHexString = (input, start = 0, end = input.length) => input.slice(start, end).reduce((memo, i) => memo + `0${i.toString(16)}`.slice(-2), \"\");\nvar getView = (input, offset) => new DataView(input.buffer, input.byteOffset + offset);\nvar readInt16LE = (input, offset = 0) => getView(input, offset).getInt16(0, true);\nvar readUInt16BE = (input, offset = 0) => getView(input, offset).getUint16(0, false);\nvar readUInt16LE = (input, offset = 0) => getView(input, offset).getUint16(0, true);\nvar readUInt24LE = (input, offset = 0) => {\n  const view = getView(input, offset);\n  return view.getUint16(0, true) + (view.getUint8(2) << 16);\n};\nvar readInt32LE = (input, offset = 0) => getView(input, offset).getInt32(0, true);\nvar readUInt32BE = (input, offset = 0) => getView(input, offset).getUint32(0, false);\nvar readUInt32LE = (input, offset = 0) => getView(input, offset).getUint32(0, true);\nvar readUInt64 = (input, offset, isBigEndian) => getView(input, offset).getBigUint64(0, !isBigEndian);\nvar methods = {\n  readUInt16BE,\n  readUInt16LE,\n  readUInt32BE,\n  readUInt32LE\n};\nfunction readUInt(input, bits, offset = 0, isBigEndian = false) {\n  const endian = isBigEndian ? \"BE\" : \"LE\";\n  const methodName = `readUInt${bits}${endian}`;\n  return methods[methodName](input, offset);\n}\nfunction readBox(input, offset) {\n  if (input.length - offset < 4) return;\n  const boxSize = readUInt32BE(input, offset);\n  if (input.length - offset < boxSize) return;\n  return {\n    name: toUTF8String(input, 4 + offset, 8 + offset),\n    offset,\n    size: boxSize\n  };\n}\nfunction findBox(input, boxName, currentOffset) {\n  while (currentOffset < input.length) {\n    const box = readBox(input, currentOffset);\n    if (!box) break;\n    if (box.name === boxName) return box;\n    currentOffset += box.size > 0 ? box.size : 8;\n  }\n}\n\n// lib/types/bmp.ts\nvar BMP = {\n  validate: (input) => toUTF8String(input, 0, 2) === \"BM\",\n  calculate: (input) => ({\n    height: Math.abs(readInt32LE(input, 22)),\n    width: readUInt32LE(input, 18)\n  })\n};\n\n// lib/types/ico.ts\nvar TYPE_ICON = 1;\nvar SIZE_HEADER = 2 + 2 + 2;\nvar SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4;\nfunction getSizeFromOffset(input, offset) {\n  const value = input[offset];\n  return value === 0 ? 256 : value;\n}\nfunction getImageSize(input, imageIndex) {\n  const offset = SIZE_HEADER + imageIndex * SIZE_IMAGE_ENTRY;\n  return {\n    height: getSizeFromOffset(input, offset + 1),\n    width: getSizeFromOffset(input, offset)\n  };\n}\nvar ICO = {\n  validate(input) {\n    const reserved = readUInt16LE(input, 0);\n    const imageCount = readUInt16LE(input, 4);\n    if (reserved !== 0 || imageCount === 0) return false;\n    const imageType = readUInt16LE(input, 2);\n    return imageType === TYPE_ICON;\n  },\n  calculate(input) {\n    const nbImages = readUInt16LE(input, 4);\n    const imageSize2 = getImageSize(input, 0);\n    if (nbImages === 1) return imageSize2;\n    const images = [];\n    for (let imageIndex = 0; imageIndex < nbImages; imageIndex += 1) {\n      images.push(getImageSize(input, imageIndex));\n    }\n    return {\n      width: imageSize2.width,\n      height: imageSize2.height,\n      images\n    };\n  }\n};\n\n// lib/types/cur.ts\nvar TYPE_CURSOR = 2;\nvar CUR = {\n  validate(input) {\n    const reserved = readUInt16LE(input, 0);\n    const imageCount = readUInt16LE(input, 4);\n    if (reserved !== 0 || imageCount === 0) return false;\n    const imageType = readUInt16LE(input, 2);\n    return imageType === TYPE_CURSOR;\n  },\n  calculate: (input) => ICO.calculate(input)\n};\n\n// lib/types/dds.ts\nvar DDS = {\n  validate: (input) => readUInt32LE(input, 0) === 542327876,\n  calculate: (input) => ({\n    height: readUInt32LE(input, 12),\n    width: readUInt32LE(input, 16)\n  })\n};\n\n// lib/types/gif.ts\nvar gifRegexp = /^GIF8[79]a/;\nvar GIF = {\n  validate: (input) => gifRegexp.test(toUTF8String(input, 0, 6)),\n  calculate: (input) => ({\n    height: readUInt16LE(input, 8),\n    width: readUInt16LE(input, 6)\n  })\n};\n\n// lib/types/heif.ts\nvar brandMap = {\n  avif: \"avif\",\n  mif1: \"heif\",\n  msf1: \"heif\",\n  // heif-sequence\n  heic: \"heic\",\n  heix: \"heic\",\n  hevc: \"heic\",\n  // heic-sequence\n  hevx: \"heic\"\n  // heic-sequence\n};\nvar HEIF = {\n  validate(input) {\n    const boxType = toUTF8String(input, 4, 8);\n    if (boxType !== \"ftyp\") return false;\n    const ftypBox = findBox(input, \"ftyp\", 0);\n    if (!ftypBox) return false;\n    const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n    return brand in brandMap;\n  },\n  calculate(input) {\n    const metaBox = findBox(input, \"meta\", 0);\n    const iprpBox = metaBox && findBox(input, \"iprp\", metaBox.offset + 12);\n    const ipcoBox = iprpBox && findBox(input, \"ipco\", iprpBox.offset + 8);\n    if (!ipcoBox) {\n      throw new TypeError(\"Invalid HEIF, no ipco box found\");\n    }\n    const type = toUTF8String(input, 8, 12);\n    const images = [];\n    let currentOffset = ipcoBox.offset + 8;\n    while (currentOffset < ipcoBox.offset + ipcoBox.size) {\n      const ispeBox = findBox(input, \"ispe\", currentOffset);\n      if (!ispeBox) break;\n      const rawWidth = readUInt32BE(input, ispeBox.offset + 12);\n      const rawHeight = readUInt32BE(input, ispeBox.offset + 16);\n      const clapBox = findBox(input, \"clap\", currentOffset);\n      let width = rawWidth;\n      let height = rawHeight;\n      if (clapBox && clapBox.offset < ipcoBox.offset + ipcoBox.size) {\n        const cropRight = readUInt32BE(input, clapBox.offset + 12);\n        width = rawWidth - cropRight;\n      }\n      images.push({ height, width });\n      currentOffset = ispeBox.offset + (ispeBox.size > 0 ? ispeBox.size : 8);\n    }\n    if (images.length === 0) {\n      throw new TypeError(\"Invalid HEIF, no sizes found\");\n    }\n    return {\n      width: images[0].width,\n      height: images[0].height,\n      type,\n      ...images.length > 1 ? { images } : {}\n    };\n  }\n};\n\n// lib/types/icns.ts\nvar SIZE_HEADER2 = 4 + 4;\nvar FILE_LENGTH_OFFSET = 4;\nvar ENTRY_LENGTH_OFFSET = 4;\nvar ICON_TYPE_SIZE = {\n  ICON: 32,\n  \"ICN#\": 32,\n  // m => 16 x 16\n  \"icm#\": 16,\n  icm4: 16,\n  icm8: 16,\n  // s => 16 x 16\n  \"ics#\": 16,\n  ics4: 16,\n  ics8: 16,\n  is32: 16,\n  s8mk: 16,\n  icp4: 16,\n  // l => 32 x 32\n  icl4: 32,\n  icl8: 32,\n  il32: 32,\n  l8mk: 32,\n  icp5: 32,\n  ic11: 32,\n  // h => 48 x 48\n  ich4: 48,\n  ich8: 48,\n  ih32: 48,\n  h8mk: 48,\n  // . => 64 x 64\n  icp6: 64,\n  ic12: 32,\n  // t => 128 x 128\n  it32: 128,\n  t8mk: 128,\n  ic07: 128,\n  // . => 256 x 256\n  ic08: 256,\n  ic13: 256,\n  // . => 512 x 512\n  ic09: 512,\n  ic14: 512,\n  // . => 1024 x 1024\n  ic10: 1024\n};\nfunction readImageHeader(input, imageOffset) {\n  const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET;\n  return [\n    toUTF8String(input, imageOffset, imageLengthOffset),\n    readUInt32BE(input, imageLengthOffset)\n  ];\n}\nfunction getImageSize2(type) {\n  const size = ICON_TYPE_SIZE[type];\n  return { width: size, height: size, type };\n}\nvar ICNS = {\n  validate: (input) => toUTF8String(input, 0, 4) === \"icns\",\n  calculate(input) {\n    const inputLength = input.length;\n    const fileLength = readUInt32BE(input, FILE_LENGTH_OFFSET);\n    let imageOffset = SIZE_HEADER2;\n    const images = [];\n    while (imageOffset < fileLength && imageOffset < inputLength) {\n      const imageHeader = readImageHeader(input, imageOffset);\n      const imageSize2 = getImageSize2(imageHeader[0]);\n      images.push(imageSize2);\n      imageOffset += imageHeader[1] > 0 ? imageHeader[1] : 8;\n    }\n    if (images.length === 0) {\n      throw new TypeError(\"Invalid ICNS, no sizes found\");\n    }\n    return {\n      width: images[0].width,\n      height: images[0].height,\n      ...images.length > 1 ? { images } : {}\n    };\n  }\n};\n\n// lib/types/j2c.ts\nvar J2C = {\n  // TODO: this doesn't seem right. SIZ marker doesn't have to be right after the SOC\n  validate: (input) => readUInt32BE(input, 0) === 4283432785,\n  calculate: (input) => ({\n    height: readUInt32BE(input, 12),\n    width: readUInt32BE(input, 8)\n  })\n};\n\n// lib/types/jp2.ts\nvar JP2 = {\n  validate(input) {\n    const boxType = toUTF8String(input, 4, 8);\n    if (boxType !== \"jP  \") return false;\n    const ftypBox = findBox(input, \"ftyp\", 0);\n    if (!ftypBox) return false;\n    const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n    return brand === \"jp2 \";\n  },\n  calculate(input) {\n    const jp2hBox = findBox(input, \"jp2h\", 0);\n    const ihdrBox = jp2hBox && findBox(input, \"ihdr\", jp2hBox.offset + 8);\n    if (ihdrBox) {\n      return {\n        height: readUInt32BE(input, ihdrBox.offset + 8),\n        width: readUInt32BE(input, ihdrBox.offset + 12)\n      };\n    }\n    throw new TypeError(\"Unsupported JPEG 2000 format\");\n  }\n};\n\n// lib/types/jpg.ts\nvar EXIF_MARKER = \"45786966\";\nvar APP1_DATA_SIZE_BYTES = 2;\nvar EXIF_HEADER_BYTES = 6;\nvar TIFF_BYTE_ALIGN_BYTES = 2;\nvar BIG_ENDIAN_BYTE_ALIGN = \"4d4d\";\nvar LITTLE_ENDIAN_BYTE_ALIGN = \"4949\";\nvar IDF_ENTRY_BYTES = 12;\nvar NUM_DIRECTORY_ENTRIES_BYTES = 2;\nfunction isEXIF(input) {\n  return toHexString(input, 2, 6) === EXIF_MARKER;\n}\nfunction extractSize(input, index) {\n  return {\n    height: readUInt16BE(input, index),\n    width: readUInt16BE(input, index + 2)\n  };\n}\nfunction extractOrientation(exifBlock, isBigEndian) {\n  const idfOffset = 8;\n  const offset = EXIF_HEADER_BYTES + idfOffset;\n  const idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian);\n  for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) {\n    const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + directoryEntryNumber * IDF_ENTRY_BYTES;\n    const end = start + IDF_ENTRY_BYTES;\n    if (start > exifBlock.length) {\n      return;\n    }\n    const block = exifBlock.slice(start, end);\n    const tagNumber = readUInt(block, 16, 0, isBigEndian);\n    if (tagNumber === 274) {\n      const dataFormat = readUInt(block, 16, 2, isBigEndian);\n      if (dataFormat !== 3) {\n        return;\n      }\n      const numberOfComponents = readUInt(block, 32, 4, isBigEndian);\n      if (numberOfComponents !== 1) {\n        return;\n      }\n      return readUInt(block, 16, 8, isBigEndian);\n    }\n  }\n}\nfunction validateExifBlock(input, index) {\n  const exifBlock = input.slice(APP1_DATA_SIZE_BYTES, index);\n  const byteAlign = toHexString(\n    exifBlock,\n    EXIF_HEADER_BYTES,\n    EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES\n  );\n  const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN;\n  const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN;\n  if (isBigEndian || isLittleEndian) {\n    return extractOrientation(exifBlock, isBigEndian);\n  }\n}\nfunction validateInput(input, index) {\n  if (index > input.length) {\n    throw new TypeError(\"Corrupt JPG, exceeded buffer limits\");\n  }\n}\nvar JPG = {\n  validate: (input) => toHexString(input, 0, 2) === \"ffd8\",\n  calculate(_input) {\n    let input = _input.slice(4);\n    let orientation;\n    let next;\n    while (input.length) {\n      const i = readUInt16BE(input, 0);\n      validateInput(input, i);\n      if (input[i] !== 255) {\n        input = input.slice(1);\n        continue;\n      }\n      if (isEXIF(input)) {\n        orientation = validateExifBlock(input, i);\n      }\n      next = input[i + 1];\n      if (next === 192 || next === 193 || next === 194) {\n        const size = extractSize(input, i + 5);\n        if (!orientation) {\n          return size;\n        }\n        return {\n          height: size.height,\n          orientation,\n          width: size.width\n        };\n      }\n      input = input.slice(i + 2);\n    }\n    throw new TypeError(\"Invalid JPG, no size found\");\n  }\n};\n\n// lib/utils/bit-reader.ts\nvar BitReader = class {\n  constructor(input, endianness) {\n    this.input = input;\n    this.endianness = endianness;\n    // Skip the first 16 bits (2 bytes) of signature\n    this.byteOffset = 2;\n    this.bitOffset = 0;\n  }\n  /** Reads a specified number of bits, and move the offset */\n  getBits(length = 1) {\n    let result = 0;\n    let bitsRead = 0;\n    while (bitsRead < length) {\n      if (this.byteOffset >= this.input.length) {\n        throw new Error(\"Reached end of input\");\n      }\n      const currentByte = this.input[this.byteOffset];\n      const bitsLeft = 8 - this.bitOffset;\n      const bitsToRead = Math.min(length - bitsRead, bitsLeft);\n      if (this.endianness === \"little-endian\") {\n        const mask = (1 << bitsToRead) - 1;\n        const bits = currentByte >> this.bitOffset & mask;\n        result |= bits << bitsRead;\n      } else {\n        const mask = (1 << bitsToRead) - 1 << 8 - this.bitOffset - bitsToRead;\n        const bits = (currentByte & mask) >> 8 - this.bitOffset - bitsToRead;\n        result = result << bitsToRead | bits;\n      }\n      bitsRead += bitsToRead;\n      this.bitOffset += bitsToRead;\n      if (this.bitOffset === 8) {\n        this.byteOffset++;\n        this.bitOffset = 0;\n      }\n    }\n    return result;\n  }\n};\n\n// lib/types/jxl-stream.ts\nfunction calculateImageDimension(reader, isSmallImage) {\n  if (isSmallImage) {\n    return 8 * (1 + reader.getBits(5));\n  }\n  const sizeClass = reader.getBits(2);\n  const extraBits = [9, 13, 18, 30][sizeClass];\n  return 1 + reader.getBits(extraBits);\n}\nfunction calculateImageWidth(reader, isSmallImage, widthMode, height) {\n  if (isSmallImage && widthMode === 0) {\n    return 8 * (1 + reader.getBits(5));\n  }\n  if (widthMode === 0) {\n    return calculateImageDimension(reader, false);\n  }\n  const aspectRatios = [1, 1.2, 4 / 3, 1.5, 16 / 9, 5 / 4, 2];\n  return Math.floor(height * aspectRatios[widthMode - 1]);\n}\nvar JXLStream = {\n  validate: (input) => {\n    return toHexString(input, 0, 2) === \"ff0a\";\n  },\n  calculate(input) {\n    const reader = new BitReader(input, \"little-endian\");\n    const isSmallImage = reader.getBits(1) === 1;\n    const height = calculateImageDimension(reader, isSmallImage);\n    const widthMode = reader.getBits(3);\n    const width = calculateImageWidth(reader, isSmallImage, widthMode, height);\n    return { width, height };\n  }\n};\n\n// lib/types/jxl.ts\nfunction extractCodestream(input) {\n  const jxlcBox = findBox(input, \"jxlc\", 0);\n  if (jxlcBox) {\n    return input.slice(jxlcBox.offset + 8, jxlcBox.offset + jxlcBox.size);\n  }\n  const partialStreams = extractPartialStreams(input);\n  if (partialStreams.length > 0) {\n    return concatenateCodestreams(partialStreams);\n  }\n  return void 0;\n}\nfunction extractPartialStreams(input) {\n  const partialStreams = [];\n  let offset = 0;\n  while (offset < input.length) {\n    const jxlpBox = findBox(input, \"jxlp\", offset);\n    if (!jxlpBox) break;\n    partialStreams.push(\n      input.slice(jxlpBox.offset + 12, jxlpBox.offset + jxlpBox.size)\n    );\n    offset = jxlpBox.offset + (jxlpBox.size > 0 ? jxlpBox.size : 8);\n  }\n  return partialStreams;\n}\nfunction concatenateCodestreams(partialCodestreams) {\n  const totalLength = partialCodestreams.reduce(\n    (acc, curr) => acc + curr.length,\n    0\n  );\n  const codestream = new Uint8Array(totalLength);\n  let position = 0;\n  for (const partial of partialCodestreams) {\n    codestream.set(partial, position);\n    position += partial.length;\n  }\n  return codestream;\n}\nvar JXL = {\n  validate: (input) => {\n    const boxType = toUTF8String(input, 4, 8);\n    if (boxType !== \"JXL \") return false;\n    const ftypBox = findBox(input, \"ftyp\", 0);\n    if (!ftypBox) return false;\n    const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n    return brand === \"jxl \";\n  },\n  calculate(input) {\n    const codestream = extractCodestream(input);\n    if (codestream) return JXLStream.calculate(codestream);\n    throw new Error(\"No codestream found in JXL container\");\n  }\n};\n\n// lib/types/ktx.ts\nvar KTX = {\n  validate: (input) => {\n    const signature = toUTF8String(input, 1, 7);\n    return [\"KTX 11\", \"KTX 20\"].includes(signature);\n  },\n  calculate: (input) => {\n    const type = input[5] === 49 ? \"ktx\" : \"ktx2\";\n    const offset = type === \"ktx\" ? 36 : 20;\n    return {\n      height: readUInt32LE(input, offset + 4),\n      width: readUInt32LE(input, offset),\n      type\n    };\n  }\n};\n\n// lib/types/png.ts\nvar pngSignature = \"PNG\\r\\n\u001a\\n\";\nvar pngImageHeaderChunkName = \"IHDR\";\nvar pngFriedChunkName = \"CgBI\";\nvar PNG = {\n  validate(input) {\n    if (pngSignature === toUTF8String(input, 1, 8)) {\n      let chunkName = toUTF8String(input, 12, 16);\n      if (chunkName === pngFriedChunkName) {\n        chunkName = toUTF8String(input, 28, 32);\n      }\n      if (chunkName !== pngImageHeaderChunkName) {\n        throw new TypeError(\"Invalid PNG\");\n      }\n      return true;\n    }\n    return false;\n  },\n  calculate(input) {\n    if (toUTF8String(input, 12, 16) === pngFriedChunkName) {\n      return {\n        height: readUInt32BE(input, 36),\n        width: readUInt32BE(input, 32)\n      };\n    }\n    return {\n      height: readUInt32BE(input, 20),\n      width: readUInt32BE(input, 16)\n    };\n  }\n};\n\n// lib/types/pnm.ts\nvar PNMTypes = {\n  P1: \"pbm/ascii\",\n  P2: \"pgm/ascii\",\n  P3: \"ppm/ascii\",\n  P4: \"pbm\",\n  P5: \"pgm\",\n  P6: \"ppm\",\n  P7: \"pam\",\n  PF: \"pfm\"\n};\nvar handlers = {\n  default: (lines) => {\n    let dimensions = [];\n    while (lines.length > 0) {\n      const line = lines.shift();\n      if (line[0] === \"#\") {\n        continue;\n      }\n      dimensions = line.split(\" \");\n      break;\n    }\n    if (dimensions.length === 2) {\n      return {\n        height: Number.parseInt(dimensions[1], 10),\n        width: Number.parseInt(dimensions[0], 10)\n      };\n    }\n    throw new TypeError(\"Invalid PNM\");\n  },\n  pam: (lines) => {\n    const size = {};\n    while (lines.length > 0) {\n      const line = lines.shift();\n      if (line.length > 16 || line.charCodeAt(0) > 128) {\n        continue;\n      }\n      const [key, value] = line.split(\" \");\n      if (key && value) {\n        size[key.toLowerCase()] = Number.parseInt(value, 10);\n      }\n      if (size.height && size.width) {\n        break;\n      }\n    }\n    if (size.height && size.width) {\n      return {\n        height: size.height,\n        width: size.width\n      };\n    }\n    throw new TypeError(\"Invalid PAM\");\n  }\n};\nvar PNM = {\n  validate: (input) => toUTF8String(input, 0, 2) in PNMTypes,\n  calculate(input) {\n    const signature = toUTF8String(input, 0, 2);\n    const type = PNMTypes[signature];\n    const lines = toUTF8String(input, 3).split(/[\\r\\n]+/);\n    const handler = handlers[type] || handlers.default;\n    return handler(lines);\n  }\n};\n\n// lib/types/psd.ts\nvar PSD = {\n  validate: (input) => toUTF8String(input, 0, 4) === \"8BPS\",\n  calculate: (input) => ({\n    height: readUInt32BE(input, 14),\n    width: readUInt32BE(input, 18)\n  })\n};\n\n// lib/types/svg.ts\nvar svgReg = /<svg\\s([^>\"']|\"[^\"]*\"|'[^']*')*>/;\nvar extractorRegExps = {\n  height: /\\sheight=(['\"])([^%]+?)\\1/,\n  root: svgReg,\n  viewbox: /\\sviewBox=(['\"])(.+?)\\1/i,\n  width: /\\swidth=(['\"])([^%]+?)\\1/\n};\nvar INCH_CM = 2.54;\nvar units = {\n  in: 96,\n  cm: 96 / INCH_CM,\n  em: 16,\n  ex: 8,\n  m: 96 / INCH_CM * 100,\n  mm: 96 / INCH_CM / 10,\n  pc: 96 / 72 / 12,\n  pt: 96 / 72,\n  px: 1\n};\nvar unitsReg = new RegExp(\n  `^([0-9.]+(?:e\\\\d+)?)(${Object.keys(units).join(\"|\")})?$`\n);\nfunction parseLength(len) {\n  const m = unitsReg.exec(len);\n  if (!m) {\n    return void 0;\n  }\n  return Math.round(Number(m[1]) * (units[m[2]] || 1));\n}\nfunction parseViewbox(viewbox) {\n  const bounds = viewbox.split(\" \");\n  return {\n    height: parseLength(bounds[3]),\n    width: parseLength(bounds[2])\n  };\n}\nfunction parseAttributes(root) {\n  const width = root.match(extractorRegExps.width);\n  const height = root.match(extractorRegExps.height);\n  const viewbox = root.match(extractorRegExps.viewbox);\n  return {\n    height: height && parseLength(height[2]),\n    viewbox: viewbox && parseViewbox(viewbox[2]),\n    width: width && parseLength(width[2])\n  };\n}\nfunction calculateByDimensions(attrs) {\n  return {\n    height: attrs.height,\n    width: attrs.width\n  };\n}\nfunction calculateByViewbox(attrs, viewbox) {\n  const ratio = viewbox.width / viewbox.height;\n  if (attrs.width) {\n    return {\n      height: Math.floor(attrs.width / ratio),\n      width: attrs.width\n    };\n  }\n  if (attrs.height) {\n    return {\n      height: attrs.height,\n      width: Math.floor(attrs.height * ratio)\n    };\n  }\n  return {\n    height: viewbox.height,\n    width: viewbox.width\n  };\n}\nvar SVG = {\n  // Scan only the first kilo-byte to speed up the check on larger files\n  validate: (input) => svgReg.test(toUTF8String(input, 0, 1e3)),\n  calculate(input) {\n    const root = toUTF8String(input).match(extractorRegExps.root);\n    if (root) {\n      const attrs = parseAttributes(root[0]);\n      if (attrs.width && attrs.height) {\n        return calculateByDimensions(attrs);\n      }\n      if (attrs.viewbox) {\n        return calculateByViewbox(attrs, attrs.viewbox);\n      }\n    }\n    throw new TypeError(\"Invalid SVG\");\n  }\n};\n\n// lib/types/tga.ts\nvar TGA = {\n  validate(input) {\n    return readUInt16LE(input, 0) === 0 && readUInt16LE(input, 4) === 0;\n  },\n  calculate(input) {\n    return {\n      height: readUInt16LE(input, 14),\n      width: readUInt16LE(input, 12)\n    };\n  }\n};\n\n// lib/types/tiff.ts\nvar CONSTANTS = {\n  TAG: {\n    WIDTH: 256,\n    HEIGHT: 257,\n    COMPRESSION: 259\n  },\n  TYPE: {\n    SHORT: 3,\n    LONG: 4,\n    LONG8: 16\n  },\n  ENTRY_SIZE: {\n    STANDARD: 12,\n    BIG: 20\n  },\n  COUNT_SIZE: {\n    STANDARD: 2,\n    BIG: 8\n  }\n};\nfunction readIFD(input, { isBigEndian, isBigTiff }) {\n  const ifdOffset = isBigTiff ? Number(readUInt64(input, 8, isBigEndian)) : readUInt(input, 32, 4, isBigEndian);\n  const entryCountSize = isBigTiff ? CONSTANTS.COUNT_SIZE.BIG : CONSTANTS.COUNT_SIZE.STANDARD;\n  return input.slice(ifdOffset + entryCountSize);\n}\nfunction readTagValue(input, type, offset, isBigEndian) {\n  switch (type) {\n    case CONSTANTS.TYPE.SHORT:\n      return readUInt(input, 16, offset, isBigEndian);\n    case CONSTANTS.TYPE.LONG:\n      return readUInt(input, 32, offset, isBigEndian);\n    case CONSTANTS.TYPE.LONG8: {\n      const value = Number(readUInt64(input, offset, isBigEndian));\n      if (value > Number.MAX_SAFE_INTEGER) {\n        throw new TypeError(\"Value too large\");\n      }\n      return value;\n    }\n    default:\n      return 0;\n  }\n}\nfunction nextTag(input, isBigTiff) {\n  const entrySize = isBigTiff ? CONSTANTS.ENTRY_SIZE.BIG : CONSTANTS.ENTRY_SIZE.STANDARD;\n  if (input.length > entrySize) {\n    return input.slice(entrySize);\n  }\n}\nfunction extractTags(input, { isBigEndian, isBigTiff }) {\n  const tags = {};\n  let temp = input;\n  while (temp?.length) {\n    const code = readUInt(temp, 16, 0, isBigEndian);\n    const type = readUInt(temp, 16, 2, isBigEndian);\n    const length = isBigTiff ? Number(readUInt64(temp, 4, isBigEndian)) : readUInt(temp, 32, 4, isBigEndian);\n    if (code === 0) break;\n    if (length === 1 && (type === CONSTANTS.TYPE.SHORT || type === CONSTANTS.TYPE.LONG || isBigTiff && type === CONSTANTS.TYPE.LONG8)) {\n      const valueOffset = isBigTiff ? 12 : 8;\n      tags[code] = readTagValue(temp, type, valueOffset, isBigEndian);\n    }\n    temp = nextTag(temp, isBigTiff);\n  }\n  return tags;\n}\nfunction determineFormat(input) {\n  const signature = toUTF8String(input, 0, 2);\n  const version = readUInt(input, 16, 2, signature === \"MM\");\n  return {\n    isBigEndian: signature === \"MM\",\n    isBigTiff: version === 43\n  };\n}\nfunction validateBigTIFFHeader(input, isBigEndian) {\n  const byteSize = readUInt(input, 16, 4, isBigEndian);\n  const reserved = readUInt(input, 16, 6, isBigEndian);\n  if (byteSize !== 8 || reserved !== 0) {\n    throw new TypeError(\"Invalid BigTIFF header\");\n  }\n}\nvar signatures = /* @__PURE__ */ new Set([\n  \"49492a00\",\n  // Little Endian\n  \"4d4d002a\",\n  // Big Endian\n  \"49492b00\",\n  // BigTIFF Little Endian\n  \"4d4d002b\"\n  // BigTIFF Big Endian\n]);\nvar TIFF = {\n  validate: (input) => {\n    const signature = toHexString(input, 0, 4);\n    return signatures.has(signature);\n  },\n  calculate(input) {\n    const format = determineFormat(input);\n    if (format.isBigTiff) {\n      validateBigTIFFHeader(input, format.isBigEndian);\n    }\n    const ifdBuffer = readIFD(input, format);\n    const tags = extractTags(ifdBuffer, format);\n    const info = {\n      height: tags[CONSTANTS.TAG.HEIGHT],\n      width: tags[CONSTANTS.TAG.WIDTH],\n      type: format.isBigTiff ? \"bigtiff\" : \"tiff\"\n    };\n    if (tags[CONSTANTS.TAG.COMPRESSION]) {\n      info.compression = tags[CONSTANTS.TAG.COMPRESSION];\n    }\n    if (!info.width || !info.height) {\n      throw new TypeError(\"Invalid Tiff. Missing tags\");\n    }\n    return info;\n  }\n};\n\n// lib/types/webp.ts\nfunction calculateExtended(input) {\n  return {\n    height: 1 + readUInt24LE(input, 7),\n    width: 1 + readUInt24LE(input, 4)\n  };\n}\nfunction calculateLossless(input) {\n  return {\n    height: 1 + ((input[4] & 15) << 10 | input[3] << 2 | (input[2] & 192) >> 6),\n    width: 1 + ((input[2] & 63) << 8 | input[1])\n  };\n}\nfunction calculateLossy(input) {\n  return {\n    height: readInt16LE(input, 8) & 16383,\n    width: readInt16LE(input, 6) & 16383\n  };\n}\nvar WEBP = {\n  validate(input) {\n    const riffHeader = \"RIFF\" === toUTF8String(input, 0, 4);\n    const webpHeader = \"WEBP\" === toUTF8String(input, 8, 12);\n    const vp8Header = \"VP8\" === toUTF8String(input, 12, 15);\n    return riffHeader && webpHeader && vp8Header;\n  },\n  calculate(_input) {\n    const chunkHeader = toUTF8String(_input, 12, 16);\n    const input = _input.slice(20, 30);\n    if (chunkHeader === \"VP8X\") {\n      const extendedHeader = input[0];\n      const validStart = (extendedHeader & 192) === 0;\n      const validEnd = (extendedHeader & 1) === 0;\n      if (validStart && validEnd) {\n        return calculateExtended(input);\n      }\n      throw new TypeError(\"Invalid WebP\");\n    }\n    if (chunkHeader === \"VP8 \" && input[0] !== 47) {\n      return calculateLossy(input);\n    }\n    const signature = toHexString(input, 3, 6);\n    if (chunkHeader === \"VP8L\" && signature !== \"9d012a\") {\n      return calculateLossless(input);\n    }\n    throw new TypeError(\"Invalid WebP\");\n  }\n};\n\n// lib/types/index.ts\nvar typeHandlers = /* @__PURE__ */ new Map([\n  [\"bmp\", BMP],\n  [\"cur\", CUR],\n  [\"dds\", DDS],\n  [\"gif\", GIF],\n  [\"heif\", HEIF],\n  [\"icns\", ICNS],\n  [\"ico\", ICO],\n  [\"j2c\", J2C],\n  [\"jp2\", JP2],\n  [\"jpg\", JPG],\n  [\"jxl\", JXL],\n  [\"jxl-stream\", JXLStream],\n  [\"ktx\", KTX],\n  [\"png\", PNG],\n  [\"pnm\", PNM],\n  [\"psd\", PSD],\n  [\"svg\", SVG],\n  [\"tga\", TGA],\n  [\"tiff\", TIFF],\n  [\"webp\", WEBP]\n]);\nvar types = Array.from(typeHandlers.keys());\n\n// lib/detector.ts\nvar firstBytes = /* @__PURE__ */ new Map([\n  [0, \"heif\"],\n  [56, \"psd\"],\n  [66, \"bmp\"],\n  [68, \"dds\"],\n  [71, \"gif\"],\n  [73, \"tiff\"],\n  [77, \"tiff\"],\n  [82, \"webp\"],\n  [105, \"icns\"],\n  [137, \"png\"],\n  [255, \"jpg\"]\n]);\nfunction detector(input) {\n  const byte = input[0];\n  const type = firstBytes.get(byte);\n  if (type && typeHandlers.get(type).validate(input)) {\n    return type;\n  }\n  return types.find((type2) => typeHandlers.get(type2).validate(input));\n}\n\n// lib/lookup.ts\nvar globalOptions = {\n  disabledTypes: []\n};\nfunction imageSize(input) {\n  const type = detector(input);\n  if (typeof type !== \"undefined\") {\n    if (globalOptions.disabledTypes.indexOf(type) > -1) {\n      throw new TypeError(`disabled file type: ${type}`);\n    }\n    const size = typeHandlers.get(type).calculate(input);\n    if (size !== void 0) {\n      size.type = size.type ?? type;\n      if (size.images && size.images.length > 1) {\n        const largestImage = size.images.reduce((largest, current) => {\n          return current.width * current.height > largest.width * largest.height ? current : largest;\n        }, size.images[0]);\n        size.width = largestImage.width;\n        size.height = largestImage.height;\n      }\n      return size;\n    }\n  }\n  throw new TypeError(`unsupported file type: ${type}`);\n}\nvar disableTypes = (types2) => {\n  globalOptions.disabledTypes = types2;\n};\n\nexport { imageSize as default, disableTypes, imageSize, types };\n"],"x_google_ignoreList":[0],"mappings":"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"}