{
  "version": 3,
  "sources": ["../src/index.ts", "../src/constants.ts", "../src/errors.ts", "../src/reader.ts", "../src/writer.ts", "../src/utils/generateUUID7.ts", "../src/utils/isValidUUID.ts", "../src/utils/computeSha256Hex.ts", "../src/format.ts", "../src/bundle.ts"],
  "sourcesContent": ["/**\n * AIT Format - Protocol Buffer definitions and reader/writer for Apps-in-Toss bundle format.\n *\n * @packageDocumentation\n */\n\n// Re-export protobuf types from generated package\nexport * from \"@apps-in-toss/ait-format-proto\";\n\n// Constants\nexport { FORMAT_VERSION, MAGIC, MAGIC_STRING, HEADER_SIZE } from \"./constants\";\n\n// Errors\nexport { AITError, AITFormatError, AITVersionError } from \"./errors\";\n\n// Main entry point\nexport { AppsInTossBundle } from \"./bundle\";\n\n// Reader/Writer\nexport { AITReader, type AITReaderOptions, type AppJson, type AppJsonMetadata } from \"./reader\";\nexport { AITWriter, type AITWriterOptions, type MetadataOptions } from \"./writer\";\n\n// Format detection\nexport { BundleFormat, Format } from \"./format\";\n", "/**\n * AIT file format constants.\n */\n\n/** Magic bytes identifying AIT files (\"AITBUNDL\") */\nexport const MAGIC = new Uint8Array([0x41, 0x49, 0x54, 0x42, 0x55, 0x4e, 0x44, 0x4c]);\nexport const MAGIC_STRING = \"AITBUNDL\";\nexport const MAGIC_SIZE = 8;\n\n/** Current format version */\nexport const FORMAT_VERSION = 1;\n\n/** Header sizes (in bytes) */\nexport const VERSION_SIZE = 4;\nexport const LENGTH_SIZE = 8;\nexport const HEADER_SIZE = MAGIC_SIZE + VERSION_SIZE + LENGTH_SIZE; // 20 bytes\n\n", "/**\n * AIT error classes.\n */\n\n/** Base error for AIT operations */\nexport class AITError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"AITError\";\n  }\n}\n\n/** Invalid AIT file format */\nexport class AITFormatError extends AITError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"AITFormatError\";\n  }\n}\n\n/** Unsupported AIT format version */\nexport class AITVersionError extends AITError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"AITVersionError\";\n  }\n}\n\n", "/**\n * AIT file reader implementation.\n */\n\nimport { AITBundle, AITMetadata, Permission } from \"@apps-in-toss/ait-format-proto\";\nimport { FORMAT_VERSION, LENGTH_SIZE, MAGIC, MAGIC_SIZE, VERSION_SIZE } from \"./constants\";\nimport { AITFormatError, AITVersionError } from \"./errors\";\n\nexport interface AITReaderOptions {\n  /** Tuple of supported format versions */\n  supportedVersions?: number[];\n}\n\n/**\n * Reader for AIT (Apps-in-Toss) bundle files.\n *\n * @example\n * ```typescript\n * const reader = AITReader.fromBuffer(buffer);\n * console.log(reader.deploymentId);\n * console.log(reader.appName);\n * console.log(reader.metadata);\n * const data = await reader.readEntry(\"index.html\");\n * ```\n */\nexport class AITReader {\n  private readonly buffer: Uint8Array;\n  private readonly view: DataView;\n  private readonly supportedVersions: number[];\n\n  private _formatVersion: number = 0;\n  private _bundle: AITBundle | null = null;\n  private _zipBlobOffset: number = 0;\n  private _zipBlobLength: number = 0;\n\n  private constructor(buffer: Uint8Array, options?: AITReaderOptions) {\n    this.buffer = buffer;\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.supportedVersions = options?.supportedVersions ?? [FORMAT_VERSION];\n\n    this.readHeader();\n    this.readBundle();\n    this.readZipHeader();\n  }\n\n  /**\n   * Create an AITReader from a buffer.\n   */\n  static fromBuffer(buffer: Uint8Array, options?: AITReaderOptions): AITReader {\n    return new AITReader(buffer, options);\n  }\n\n  /**\n   * Create an AITReader from an ArrayBuffer.\n   */\n  static fromArrayBuffer(buffer: ArrayBuffer, options?: AITReaderOptions): AITReader {\n    return new AITReader(new Uint8Array(buffer), options);\n  }\n\n  private readHeader(): void {\n    // Validate minimum size\n    if (this.buffer.length < MAGIC_SIZE + VERSION_SIZE + LENGTH_SIZE) {\n      throw new AITFormatError(\"Buffer too small to be a valid AIT file\");\n    }\n\n    // Validate magic\n    const magic = this.buffer.slice(0, MAGIC_SIZE);\n    if (!this.arraysEqual(magic, MAGIC)) {\n      throw new AITFormatError(\n        `Invalid magic bytes: expected AITBUNDL, got ${new TextDecoder().decode(magic)}`\n      );\n    }\n\n    // Read version\n    this._formatVersion = this.view.getUint32(MAGIC_SIZE, false);\n    if (!this.supportedVersions.includes(this._formatVersion)) {\n      throw new AITVersionError(\n        `Unsupported format version: ${this._formatVersion}, supported: [${this.supportedVersions.join(\", \")}]`\n      );\n    }\n  }\n\n  private readBundle(): void {\n    const bundleLenOffset = MAGIC_SIZE + VERSION_SIZE;\n    const bundleLen = Number(this.view.getBigUint64(bundleLenOffset, false));\n\n    const bundleOffset = bundleLenOffset + LENGTH_SIZE;\n    if (this.buffer.length < bundleOffset + bundleLen) {\n      throw new AITFormatError(\"Unexpected end of buffer reading bundle\");\n    }\n\n    const bundleBytes = this.buffer.slice(bundleOffset, bundleOffset + bundleLen);\n    this._bundle = AITBundle.decode(bundleBytes);\n\n    if (!this._bundle.deploymentId) {\n      throw new AITFormatError(\"Bundle deployment_id must not be empty\");\n    }\n    if (!this._bundle.appName) {\n      throw new AITFormatError(\"Bundle app_name must not be empty\");\n    }\n\n    // Update offset for ZIP header\n    this._zipBlobOffset = bundleOffset + bundleLen;\n  }\n\n  private readZipHeader(): void {\n    if (this.buffer.length < this._zipBlobOffset + LENGTH_SIZE) {\n      throw new AITFormatError(\"Unexpected end of buffer reading ZIP blob length\");\n    }\n\n    this._zipBlobLength = Number(this.view.getBigUint64(this._zipBlobOffset, false));\n    this._zipBlobOffset += LENGTH_SIZE; // Now points to actual ZIP data\n  }\n\n  private arraysEqual(a: Uint8Array, b: Uint8Array): boolean {\n    if (a.length !== b.length) return false;\n    for (let i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n\n  /** Get the format version */\n  get formatVersion(): number {\n    return this._formatVersion;\n  }\n\n  /** Get the deployment ID */\n  get deploymentId(): string {\n    return this._bundle?.deploymentId ?? \"\";\n  }\n\n  /** Get the application name */\n  get appName(): string {\n    return this._bundle?.appName ?? \"\";\n  }\n\n  /** Get the bundle */\n  get bundle(): AITBundle {\n    if (!this._bundle) {\n      throw new AITFormatError(\"Bundle not loaded\");\n    }\n    return this._bundle;\n  }\n\n  /** Get the metadata */\n  get metadata(): AITMetadata | undefined {\n    return this._bundle?.metadata;\n  }\n\n  /** Get the permissions */\n  get permissions(): Permission[] {\n    return this._bundle?.permissions ?? [];\n  }\n\n  /**\n   * Read the entire ZIP blob.\n   */\n  readZipBlob(): Uint8Array {\n    return this.buffer.slice(this._zipBlobOffset, this._zipBlobOffset + this._zipBlobLength);\n  }\n\n  /**\n   * Read a single entry from the ZIP blob.\n   */\n  async readEntry(name: string): Promise<Uint8Array> {\n    const { unzipSync } = await import(\"fflate\");\n    const zipBlob = this.readZipBlob();\n    const unzipped = unzipSync(zipBlob);\n\n    const entry = unzipped[name];\n    if (!entry) {\n      throw new Error(`Entry not found: ${name}`);\n    }\n\n    return entry;\n  }\n\n  /**\n   * List all entry names in the ZIP blob.\n   */\n  listEntries(): string[] {\n    return this._bundle?.index.map((entry) => entry.name) ?? [];\n  }\n\n  /**\n   * Read the signature if present.\n   */\n  readSignature(): Uint8Array | null {\n    const sigLenOffset = this._zipBlobOffset + this._zipBlobLength;\n    if (this.buffer.length < sigLenOffset + LENGTH_SIZE) {\n      return null;\n    }\n\n    const sigLen = Number(this.view.getBigUint64(sigLenOffset, false));\n    if (sigLen === 0) {\n      return null;\n    }\n\n    const sigOffset = sigLenOffset + LENGTH_SIZE;\n    if (this.buffer.length < sigOffset + sigLen) {\n      return null;\n    }\n\n    return this.buffer.slice(sigOffset, sigOffset + sigLen);\n  }\n\n  /**\n   * Convert bundle to app.json format.\n   *\n   * @returns Object in app.json format with appName, permissions, and _metadata.\n   */\n  toAppJson(): AppJson {\n    const result: AppJson = {\n      appName: this._bundle?.appName ?? \"\",\n      permissions: (this._bundle?.permissions ?? []).map((p) => ({\n        name: p.name,\n        access: p.access,\n      })),\n      _metadata: {\n        deploymentId: this._bundle?.deploymentId ?? \"\",\n      },\n    };\n\n    // Add metadata fields if present\n    const meta = this._bundle?.metadata;\n    if (meta) {\n      if (meta.runtimeVersion) {\n        result._metadata.runtimeVersion = meta.runtimeVersion;\n      }\n      if (meta.bundleFiles && meta.bundleFiles.length > 0) {\n        result._metadata.bundleFiles = [...meta.bundleFiles];\n      }\n      if (meta.packageJson) {\n        result._metadata.packageJson = meta.packageJson as Record<string, unknown>;\n      }\n      if (meta.sdkVersion) {\n        result._metadata.sdkVersion = meta.sdkVersion;\n      }\n    }\n\n    return result;\n  }\n}\n\n/** app.json format */\nexport interface AppJson {\n  appName: string;\n  permissions: Array<{ name: string; access: string }>;\n  _metadata: AppJsonMetadata;\n}\n\nexport interface AppJsonMetadata {\n  deploymentId: string;\n  runtimeVersion?: string;\n  bundleFiles?: string[];\n  packageJson?: Record<string, unknown>;\n  sdkVersion?: string;\n}\n", "/**\n * AIT file writer implementation.\n */\n\nimport {\n  AITBundle,\n  AITMetadata,\n  Permission,\n  ZipIndexEntry,\n  CompressionMethod,\n  PlatformType,\n} from \"@apps-in-toss/ait-format-proto\";\nimport { FORMAT_VERSION, LENGTH_SIZE, MAGIC, VERSION_SIZE } from \"./constants\";\nimport { computeSha256Hex, generateUUID7, isValidUUID } from \"./utils\";\n\nexport interface AITWriterOptions {\n  /** Application name (required) */\n  appName: string;\n  /** Unique identifier for this deployment. If not provided, a UUIDv7 will be auto-generated. */\n  deploymentId?: string;\n  /** AIT format version (default: current version) */\n  formatVersion?: number;\n  /** Creator info string (e.g., \"my-service/1.0.0\") */\n  createdBy?: string;\n}\n\nexport interface MetadataOptions {\n  /** Whether this is a game app */\n  isGame?: boolean;\n  /** Platform type (WEB or REACT_NATIVE) */\n  platform?: PlatformType;\n  /** Runtime version string */\n  runtimeVersion?: string;\n  /** List of bundle file names */\n  bundleFiles?: string[];\n  /** Package JSON content */\n  packageJson?: Record<string, unknown>;\n  /** Additional metadata */\n  extra?: Record<string, unknown>;\n  /** SDK Version */\n  sdkVersion?: string;\n}\n\ninterface FileEntry {\n  name: string;\n  data: Uint8Array;\n  compress: boolean;\n}\n\n/**\n * Writer for AIT (Apps-in-Toss) bundle files.\n *\n * @example\n * ```typescript\n * // With auto-generated UUIDv7\n * const writer = new AITWriter({ appName: \"my-app\" });\n * writer.setMetadata({ isGame: false, platform: PlatformType.WEB });\n * writer.addFile(\"index.html\", new TextEncoder().encode(\"<html>...</html>\"));\n * const buffer = await writer.toBuffer();\n *\n * // With explicit deployment ID\n * const writer = new AITWriter({\n *   deploymentId: \"019bfa90-ad4c-799f-b227-b4159e6867f7\",\n *   appName: \"my-app\"\n * });\n * ```\n */\nexport class AITWriter {\n  private readonly formatVersion: number;\n  private readonly deploymentId: string;\n  private readonly appName: string;\n  private readonly createdBy: string;\n  private metadata: AITMetadata | undefined = undefined;\n  private readonly permissions: Permission[] = [];\n  private readonly files: FileEntry[] = [];\n  private signature: Uint8Array | null = null;\n\n  constructor(options: AITWriterOptions) {\n    if (!options.appName) {\n      throw new Error(\"appName must not be empty\");\n    }\n\n    if (options.deploymentId === undefined) {\n      // Auto-generate UUIDv7\n      this.deploymentId = generateUUID7();\n    } else {\n      if (!options.deploymentId) {\n        throw new Error(\"deploymentId must not be empty\");\n      }\n      if (!isValidUUID(options.deploymentId)) {\n        throw new Error(\n          \"deploymentId must be a valid UUID format (e.g., '019bfa90-ad4c-799f-b227-b4159e6867f7')\"\n        );\n      }\n      this.deploymentId = options.deploymentId;\n    }\n\n    this.formatVersion = options.formatVersion ?? FORMAT_VERSION;\n    this.appName = options.appName;\n    this.createdBy = options.createdBy ?? \"\";\n  }\n\n  /**\n   * Set the bundle metadata.\n   */\n  setMetadata(options: MetadataOptions): this {\n    this.metadata = {\n      isGame: options.isGame ?? false,\n      platform: options.platform ?? PlatformType.PLATFORM_UNSPECIFIED,\n      runtimeVersion: options.runtimeVersion ?? \"\",\n      bundleFiles: options.bundleFiles ?? [],\n      packageJson: options.packageJson,\n      sdkVersion: options.sdkVersion ?? '',\n      extra: options.extra,\n    };\n    return this;\n  }\n\n  /**\n   * Add a permission entry.\n   */\n  addPermission(name: string, access: string): this {\n    this.permissions.push({ name, access });\n    return this;\n  }\n\n  /**\n   * Add a file to the bundle.\n   */\n  addFile(name: string, data: Uint8Array, options?: { compress?: boolean }): this {\n    this.files.push({\n      name,\n      data,\n      compress: options?.compress ?? true,\n    });\n    return this;\n  }\n\n  /**\n   * Set the digital signature.\n   */\n  setSignature(signature: Uint8Array): this {\n    this.signature = signature;\n    return this;\n  }\n\n  /**\n   * Build the ZIP blob and index entries.\n   */\n  private async buildZipBlob(): Promise<{ zipBytes: Uint8Array; index: ZipIndexEntry[] }> {\n    const { zipSync } = await import(\"fflate\");\n\n    const zipInput: Record<string, Uint8Array> = {};\n    for (const file of this.files) {\n      zipInput[file.name] = file.data;\n    }\n\n    const zipBytes = zipSync(zipInput, { level: 6 });\n\n    // Build index entries with SHA256 hashes\n    const index: ZipIndexEntry[] = await Promise.all(\n      this.files.map(async (file) => ({\n        name: file.name,\n        zipOffset: BigInt(0), // Simplified - actual offset would need ZIP parsing\n        compressedSize: BigInt(0),\n        uncompressedSize: BigInt(file.data.length),\n        compMethod: file.compress ? CompressionMethod.DEFLATE : CompressionMethod.NONE,\n        sha256Hex: await computeSha256Hex(file.data),\n        attrs: undefined,\n      }))\n    );\n\n    return { zipBytes, index };\n  }\n\n  /**\n   * Build the bundle protobuf message.\n   */\n  private buildBundle(index: ZipIndexEntry[]): AITBundle {\n    return {\n      formatVersion: this.formatVersion,\n      deploymentId: this.deploymentId,\n      appName: this.appName,\n      metadata: this.metadata,\n      permissions: this.permissions,\n      index,\n      createdBy: this.createdBy,\n      createdAtMs: BigInt(Date.now()),\n    };\n  }\n\n  /**\n   * Serialize the AIT bundle to a buffer.\n   */\n  async toBuffer(): Promise<Uint8Array> {\n    const { zipBytes, index } = await this.buildZipBlob();\n    const bundle = this.buildBundle(index);\n    const bundleBytes = AITBundle.encode(bundle).finish();\n\n    // Calculate total size\n    const signatureBytes = this.signature ?? new Uint8Array(0);\n    const totalSize =\n      MAGIC.length +\n      VERSION_SIZE +\n      LENGTH_SIZE +\n      bundleBytes.length +\n      LENGTH_SIZE +\n      zipBytes.length +\n      LENGTH_SIZE +\n      signatureBytes.length;\n\n    const buffer = new Uint8Array(totalSize);\n    const view = new DataView(buffer.buffer);\n    let offset = 0;\n\n    // Write MAGIC\n    buffer.set(MAGIC, offset);\n    offset += MAGIC.length;\n\n    // Write FORMAT_VERSION (big-endian)\n    view.setUint32(offset, this.formatVersion, false);\n    offset += VERSION_SIZE;\n\n    // Write BUNDLE_LEN (big-endian uint64)\n    view.setBigUint64(offset, BigInt(bundleBytes.length), false);\n    offset += LENGTH_SIZE;\n\n    // Write BUNDLE_BYTES\n    buffer.set(bundleBytes, offset);\n    offset += bundleBytes.length;\n\n    // Write ZIP_BLOB_LEN (big-endian uint64)\n    view.setBigUint64(offset, BigInt(zipBytes.length), false);\n    offset += LENGTH_SIZE;\n\n    // Write ZIP_BLOB_BYTES\n    buffer.set(zipBytes, offset);\n    offset += zipBytes.length;\n\n    // Write SIGNATURE_LEN (big-endian uint64)\n    view.setBigUint64(offset, BigInt(signatureBytes.length), false);\n    offset += LENGTH_SIZE;\n\n    // Write SIGNATURE_BYTES\n    if (signatureBytes.length > 0) {\n      buffer.set(signatureBytes, offset);\n    }\n\n    return buffer;\n  }\n}\n", "/**\n * Generate a UUID version 7 (time-ordered UUID).\n *\n * UUID v7 format:\n * - 48 bits: Unix timestamp in milliseconds\n * - 4 bits: Version (0111 for v7)\n * - 12 bits: Random data\n * - 2 bits: Variant (10 for RFC 4122)\n * - 62 bits: Random data\n *\n * @returns A UUIDv7 string in standard format (8-4-4-4-12)\n */\nexport function generateUUID7(): string {\n  const timestamp = Date.now();\n\n  // Generate random bytes (need 10 bytes: 2 for version field, 2 for variant field, 6 for node)\n  const randomBytes = new Uint8Array(10);\n  if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n    crypto.getRandomValues(randomBytes);\n  } else {\n    // Fallback for environments without crypto\n    for (let i = 0; i < 10; i++) {\n      randomBytes[i] = Math.floor(Math.random() * 256);\n    }\n  }\n\n  const hex = (n: number, len: number) => n.toString(16).padStart(len, \"0\");\n  const byteToHex = (b: number) => b.toString(16).padStart(2, \"0\");\n\n  // First 48 bits: timestamp (split into 32-bit high + 16-bit low)\n  const timeHigh = Math.floor(timestamp / 0x10000);\n  const timeLow = timestamp & 0xffff;\n\n  // time-high (32 bits) = first 8 hex chars\n  const timeHighHex = hex(timeHigh, 8);\n  // time-low (16 bits) = next 4 hex chars\n  const timeLowHex = hex(timeLow, 4);\n\n  // Next 16 bits: 4-bit version (0111) + 12-bit random\n  const versionAndRandom = 0x7000 | (((randomBytes[0]! << 4) | (randomBytes[1]! >> 4)) & 0x0fff);\n  const versionHex = hex(versionAndRandom, 4);\n\n  // Next 16 bits: 2-bit variant (10) + 14-bit random\n  const variantAndRandom =\n    0x8000 |\n    ((((randomBytes[1]! & 0x0f) << 10) | (randomBytes[2]! << 2) | (randomBytes[3]! >> 6)) & 0x3fff);\n  const variantHex = hex(variantAndRandom, 4);\n\n  // Last 48 bits: random (6 bytes)\n  const nodeHex =\n    byteToHex(randomBytes[4]!) +\n    byteToHex(randomBytes[5]!) +\n    byteToHex(randomBytes[6]!) +\n    byteToHex(randomBytes[7]!) +\n    byteToHex(randomBytes[8]!) +\n    byteToHex(randomBytes[9]!);\n\n  return `${timeHighHex}-${timeLowHex}-${versionHex}-${variantHex}-${nodeHex}`;\n}\n", "/**\n * Validate if a string is a valid UUID format.\n *\n * @param uuid The string to validate\n * @returns true if the string is a valid UUID format\n */\nexport function isValidUUID(uuid: string): boolean {\n  // UUID format: 8-4-4-4-12 hex characters\n  const parts = uuid.toLowerCase().split(\"-\");\n  if (parts.length !== 5) return false;\n  if (parts[0]?.length !== 8) return false;\n  if (parts[1]?.length !== 4) return false;\n  if (parts[2]?.length !== 4) return false;\n  if (parts[3]?.length !== 4) return false;\n  if (parts[4]?.length !== 12) return false;\n\n  // Check all characters are valid hex\n  const hexPattern = /^[0-9a-f]+$/;\n  return parts.every((part) => hexPattern.test(part));\n}\n", "/**\n * Compute SHA256 hash of data and return as hex string.\n * Uses SubtleCrypto for browser compatibility.\n *\n * @param data The data to hash\n * @returns SHA256 hash as lowercase hex string\n */\nexport async function computeSha256Hex(data: Uint8Array): Promise<string> {\n  const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n  return Array.from(new Uint8Array(hashBuffer))\n    .map((b) => b.toString(16).padStart(2, \"0\"))\n    .join(\"\");\n}\n", "/**\n * Bundle format detection utilities.\n *\n * @example\n * ```typescript\n * import { BundleFormat, AITReader } from \"@apps-in-toss/ait-format\";\n *\n * const buffer = await fs.readFile(\"bundle.ait\");\n * const format = BundleFormat.detect(buffer);\n *\n * if (format === BundleFormat.Format.AIT) {\n *   const reader = AITReader.fromBuffer(buffer);\n *   // Process AIT bundle\n * } else if (format === BundleFormat.Format.ZIP) {\n *   // Process legacy ZIP bundle\n * }\n * ```\n */\n\nimport { MAGIC } from \"./constants\";\n\n/** ZIP local file header magic (PK\\x03\\x04) */\nconst ZIP_MAGIC = new Uint8Array([0x50, 0x4b, 0x03, 0x04]);\n\n/**\n * Bundle format types.\n */\nexport enum Format {\n  /** AIT bundle format (AITBUNDL magic) */\n  AIT = \"AIT\",\n  /** Legacy ZIP format (PK magic) */\n  ZIP = \"ZIP\",\n  /** Unknown format */\n  UNKNOWN = \"UNKNOWN\",\n}\n\n/**\n * Bundle format detection utilities.\n */\nexport const BundleFormat = {\n  /**\n   * Format enum for convenience.\n   */\n  Format,\n\n  /**\n   * Detect the bundle format from a buffer.\n   *\n   * @param buffer - The buffer to detect format from (only first 8 bytes are needed)\n   * @returns The detected format\n   */\n  detect(buffer: Uint8Array): Format {\n    // Check AIT magic (8 bytes)\n    if (buffer.length >= MAGIC.length) {\n      let isAIT = true;\n      for (let i = 0; i < MAGIC.length; i++) {\n        if (buffer[i] !== MAGIC[i]) {\n          isAIT = false;\n          break;\n        }\n      }\n      if (isAIT) {\n        return Format.AIT;\n      }\n    }\n\n    // Check ZIP magic (4 bytes)\n    if (buffer.length >= ZIP_MAGIC.length) {\n      let isZIP = true;\n      for (let i = 0; i < ZIP_MAGIC.length; i++) {\n        if (buffer[i] !== ZIP_MAGIC[i]) {\n          isZIP = false;\n          break;\n        }\n      }\n      if (isZIP) {\n        return Format.ZIP;\n      }\n    }\n\n    return Format.UNKNOWN;\n  },\n\n  /**\n   * Check if the buffer represents an AIT format.\n   *\n   * @param buffer - The buffer to check (only first 8 bytes are needed)\n   * @returns true if AIT format\n   */\n  isAIT(buffer: Uint8Array): boolean {\n    if (buffer.length < MAGIC.length) {\n      return false;\n    }\n    for (let i = 0; i < MAGIC.length; i++) {\n      if (buffer[i] !== MAGIC[i]) {\n        return false;\n      }\n    }\n    return true;\n  },\n\n  /**\n   * Check if the buffer represents a ZIP format.\n   *\n   * @param buffer - The buffer to check (only first 4 bytes are needed)\n   * @returns true if ZIP format\n   */\n  isZIP(buffer: Uint8Array): boolean {\n    if (buffer.length < ZIP_MAGIC.length) {\n      return false;\n    }\n    for (let i = 0; i < ZIP_MAGIC.length; i++) {\n      if (buffer[i] !== ZIP_MAGIC[i]) {\n        return false;\n      }\n    }\n    return true;\n  },\n} as const;\n", "/**\n * Main entry point for AIT (Apps-in-Toss) bundle operations.\n */\n\nimport { AITReader, AITReaderOptions } from \"./reader\";\nimport { AITWriter, AITWriterOptions } from \"./writer\";\nimport { FORMAT_VERSION, MAGIC } from \"./constants\";\nimport { BundleFormat, Format } from \"./format\";\nimport { generateUUID7 } from \"./utils\";\n\n/**\n * Main entry point for AIT bundle operations.\n *\n * @example\n * ```typescript\n * // Writing (auto-generated UUIDv7 for deploymentId)\n * const writer = AppsInTossBundle.writer({ appName: \"app-name\" });\n * writer.setMetadata({ platform: PlatformType.REACT_NATIVE });\n * writer.addFile(\"index.html\", new TextEncoder().encode(\"<html>...</html>\"));\n * const buffer = await writer.toBuffer();\n *\n * // Writing with explicit deploymentId\n * const writer = AppsInTossBundle.writer({\n *   deploymentId: \"019bfa90-ad4c-799f-b227-b4159e6867f7\",\n *   appName: \"app-name\",\n * });\n *\n * // Reading\n * const reader = AppsInTossBundle.reader(buffer);\n * console.log(reader.deploymentId);\n * console.log(reader.appName);\n * const content = await reader.readEntry(\"index.html\");\n * ```\n */\nexport class AppsInTossBundle {\n  private constructor() {\n    throw new Error(\"AppsInTossBundle is a utility class and cannot be instantiated\");\n  }\n\n  /**\n   * Create a new writer.\n   *\n   * @param options Writer options including deploymentId and appName\n   * @returns AITWriter instance\n   */\n  static writer(options: AITWriterOptions): AITWriter {\n    return new AITWriter(options);\n  }\n\n  /**\n   * Create a reader from a Uint8Array buffer.\n   *\n   * @param buffer AIT file contents\n   * @param options Reader options\n   * @returns AITReader instance\n   */\n  static reader(buffer: Uint8Array, options?: AITReaderOptions): AITReader {\n    return AITReader.fromBuffer(buffer, options);\n  }\n\n  /**\n   * Create a reader from an ArrayBuffer.\n   *\n   * @param buffer AIT file contents as ArrayBuffer\n   * @param options Reader options\n   * @returns AITReader instance\n   */\n  static readerFromArrayBuffer(buffer: ArrayBuffer, options?: AITReaderOptions): AITReader {\n    return AITReader.fromArrayBuffer(buffer, options);\n  }\n\n  /**\n   * Get the current format version.\n   *\n   * @returns Current format version\n   */\n  static getFormatVersion(): number {\n    return FORMAT_VERSION;\n  }\n\n  /**\n   * Get the magic bytes identifying AIT files.\n   *\n   * @returns Magic bytes\n   */\n  static getMagic(): Uint8Array {\n    return MAGIC;\n  }\n\n  /**\n   * Bundle format types.\n   */\n  static readonly Format = Format;\n\n  /**\n   * Detect the bundle format from a buffer.\n   *\n   * @param buffer - The buffer to detect format from (only first 8 bytes are needed)\n   * @returns The detected format\n   *\n   * @example\n   * ```typescript\n   * const buffer = await fs.readFile(\"bundle.ait\");\n   * const format = AppsInTossBundle.detect(buffer);\n   *\n   * if (format === AppsInTossBundle.Format.AIT) {\n   *   const reader = AppsInTossBundle.reader(buffer);\n   *   // Process AIT bundle\n   * } else if (format === AppsInTossBundle.Format.ZIP) {\n   *   // Process legacy ZIP bundle\n   * }\n   * ```\n   */\n  static detect(buffer: Uint8Array): Format {\n    return BundleFormat.detect(buffer);\n  }\n\n  /**\n   * Check if the buffer represents an AIT format.\n   *\n   * @param buffer - The buffer to check (only first 8 bytes are needed)\n   * @returns true if AIT format\n   */\n  static isAIT(buffer: Uint8Array): boolean {\n    return BundleFormat.isAIT(buffer);\n  }\n\n  /**\n   * Check if the buffer represents a ZIP format.\n   *\n   * @param buffer - The buffer to check (only first 4 bytes are needed)\n   * @returns true if ZIP format\n   */\n  static isZIP(buffer: Uint8Array): boolean {\n    return BundleFormat.isZIP(buffer);\n  }\n\n  /**\n   * Generate a new UUIDv7 string.\n   *\n   * @returns A UUIDv7 string in standard format (8-4-4-4-12)\n   */\n  static generateUUID7(): string {\n    return generateUUID7();\n  }\n}\n\n"],
  "mappings": "AAOA,WAAc,iCCFP,IAAMA,EAAQ,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACvEC,EAAe,WACfC,EAAa,EAGbC,EAAiB,EAGjBC,EAAe,EACfC,EAAc,EACdC,EAAcJ,EAAaE,EAAeC,ECVhD,IAAME,EAAN,cAAuB,KAAM,CAClC,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,UACd,CACF,EAGaC,EAAN,cAA6BF,CAAS,CAC3C,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,gBACd,CACF,EAGaE,EAAN,cAA8BH,CAAS,CAC5C,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,iBACd,CACF,ECtBA,OAAS,aAAAG,MAA0C,iCAqB5C,IAAMC,EAAN,MAAMC,CAAU,CACJ,OACA,KACA,kBAET,eAAyB,EACzB,QAA4B,KAC5B,eAAyB,EACzB,eAAyB,EAEzB,YAAYC,EAAoBC,EAA4B,CAClE,KAAK,OAASD,EACd,KAAK,KAAO,IAAI,SAASA,EAAO,OAAQA,EAAO,WAAYA,EAAO,UAAU,EAC5E,KAAK,kBAAoBC,GAAS,mBAAqB,CAACC,CAAc,EAEtE,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,CACrB,CAKA,OAAO,WAAWF,EAAoBC,EAAuC,CAC3E,OAAO,IAAIF,EAAUC,EAAQC,CAAO,CACtC,CAKA,OAAO,gBAAgBD,EAAqBC,EAAuC,CACjF,OAAO,IAAIF,EAAU,IAAI,WAAWC,CAAM,EAAGC,CAAO,CACtD,CAEQ,YAAmB,CAEzB,GAAI,KAAK,OAAO,OAASE,EAAaC,EAAeC,EACnD,MAAM,IAAIC,EAAe,yCAAyC,EAIpE,IAAMC,EAAQ,KAAK,OAAO,MAAM,EAAGJ,CAAU,EAC7C,GAAI,CAAC,KAAK,YAAYI,EAAOC,CAAK,EAChC,MAAM,IAAIF,EACR,+CAA+C,IAAI,YAAY,EAAE,OAAOC,CAAK,CAAC,EAChF,EAKF,GADA,KAAK,eAAiB,KAAK,KAAK,UAAUJ,EAAY,EAAK,EACvD,CAAC,KAAK,kBAAkB,SAAS,KAAK,cAAc,EACtD,MAAM,IAAIM,EACR,+BAA+B,KAAK,cAAc,iBAAiB,KAAK,kBAAkB,KAAK,IAAI,CAAC,GACtG,CAEJ,CAEQ,YAAmB,CACzB,IAAMC,EAAkBP,EAAaC,EAC/BO,EAAY,OAAO,KAAK,KAAK,aAAaD,EAAiB,EAAK,CAAC,EAEjEE,EAAeF,EAAkBL,EACvC,GAAI,KAAK,OAAO,OAASO,EAAeD,EACtC,MAAM,IAAIL,EAAe,yCAAyC,EAGpE,IAAMO,EAAc,KAAK,OAAO,MAAMD,EAAcA,EAAeD,CAAS,EAG5E,GAFA,KAAK,QAAUG,EAAU,OAAOD,CAAW,EAEvC,CAAC,KAAK,QAAQ,aAChB,MAAM,IAAIP,EAAe,wCAAwC,EAEnE,GAAI,CAAC,KAAK,QAAQ,QAChB,MAAM,IAAIA,EAAe,mCAAmC,EAI9D,KAAK,eAAiBM,EAAeD,CACvC,CAEQ,eAAsB,CAC5B,GAAI,KAAK,OAAO,OAAS,KAAK,eAAiBN,EAC7C,MAAM,IAAIC,EAAe,kDAAkD,EAG7E,KAAK,eAAiB,OAAO,KAAK,KAAK,aAAa,KAAK,eAAgB,EAAK,CAAC,EAC/E,KAAK,gBAAkBD,CACzB,CAEQ,YAAYU,EAAeC,EAAwB,CACzD,GAAID,EAAE,SAAWC,EAAE,OAAQ,MAAO,GAClC,QAASC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC5B,GAAIF,EAAEE,CAAC,IAAMD,EAAEC,CAAC,EAAG,MAAO,GAE5B,MAAO,EACT,CAGA,IAAI,eAAwB,CAC1B,OAAO,KAAK,cACd,CAGA,IAAI,cAAuB,CACzB,OAAO,KAAK,SAAS,cAAgB,EACvC,CAGA,IAAI,SAAkB,CACpB,OAAO,KAAK,SAAS,SAAW,EAClC,CAGA,IAAI,QAAoB,CACtB,GAAI,CAAC,KAAK,QACR,MAAM,IAAIX,EAAe,mBAAmB,EAE9C,OAAO,KAAK,OACd,CAGA,IAAI,UAAoC,CACtC,OAAO,KAAK,SAAS,QACvB,CAGA,IAAI,aAA4B,CAC9B,OAAO,KAAK,SAAS,aAAe,CAAC,CACvC,CAKA,aAA0B,CACxB,OAAO,KAAK,OAAO,MAAM,KAAK,eAAgB,KAAK,eAAiB,KAAK,cAAc,CACzF,CAKA,MAAM,UAAUY,EAAmC,CACjD,GAAM,CAAE,UAAAC,CAAU,EAAI,KAAM,QAAO,QAAQ,EACrCC,EAAU,KAAK,YAAY,EAG3BC,EAFWF,EAAUC,CAAO,EAEXF,CAAI,EAC3B,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,oBAAoBH,CAAI,EAAE,EAG5C,OAAOG,CACT,CAKA,aAAwB,CACtB,OAAO,KAAK,SAAS,MAAM,IAAKA,GAAUA,EAAM,IAAI,GAAK,CAAC,CAC5D,CAKA,eAAmC,CACjC,IAAMC,EAAe,KAAK,eAAiB,KAAK,eAChD,GAAI,KAAK,OAAO,OAASA,EAAejB,EACtC,OAAO,KAGT,IAAMkB,EAAS,OAAO,KAAK,KAAK,aAAaD,EAAc,EAAK,CAAC,EACjE,GAAIC,IAAW,EACb,OAAO,KAGT,IAAMC,EAAYF,EAAejB,EACjC,OAAI,KAAK,OAAO,OAASmB,EAAYD,EAC5B,KAGF,KAAK,OAAO,MAAMC,EAAWA,EAAYD,CAAM,CACxD,CAOA,WAAqB,CACnB,IAAME,EAAkB,CACtB,QAAS,KAAK,SAAS,SAAW,GAClC,aAAc,KAAK,SAAS,aAAe,CAAC,GAAG,IAAKC,IAAO,CACzD,KAAMA,EAAE,KACR,OAAQA,EAAE,MACZ,EAAE,EACF,UAAW,CACT,aAAc,KAAK,SAAS,cAAgB,EAC9C,CACF,EAGMC,EAAO,KAAK,SAAS,SAC3B,OAAIA,IACEA,EAAK,iBACPF,EAAO,UAAU,eAAiBE,EAAK,gBAErCA,EAAK,aAAeA,EAAK,YAAY,OAAS,IAChDF,EAAO,UAAU,YAAc,CAAC,GAAGE,EAAK,WAAW,GAEjDA,EAAK,cACPF,EAAO,UAAU,YAAcE,EAAK,aAElCA,EAAK,aACPF,EAAO,UAAU,WAAaE,EAAK,aAIhCF,CACT,CACF,EC/OA,OACE,aAAAG,EAIA,qBAAAC,EACA,gBAAAC,MACK,iCCCA,SAASC,GAAwB,CACtC,IAAMC,EAAY,KAAK,IAAI,EAGrBC,EAAc,IAAI,WAAW,EAAE,EACrC,GAAI,OAAO,OAAW,KAAe,OAAO,gBAC1C,OAAO,gBAAgBA,CAAW,MAGlC,SAASC,EAAI,EAAGA,EAAI,GAAIA,IACtBD,EAAYC,CAAC,EAAI,KAAK,MAAM,KAAK,OAAO,EAAI,GAAG,EAInD,IAAMC,EAAM,CAACC,EAAWC,IAAgBD,EAAE,SAAS,EAAE,EAAE,SAASC,EAAK,GAAG,EAClEC,EAAaC,GAAcA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EAGzDC,EAAW,KAAK,MAAMR,EAAY,KAAO,EACzCS,EAAUT,EAAY,MAGtBU,EAAcP,EAAIK,EAAU,CAAC,EAE7BG,EAAaR,EAAIM,EAAS,CAAC,EAG3BG,EAAmB,OAAYX,EAAY,CAAC,GAAM,EAAMA,EAAY,CAAC,GAAM,GAAM,KACjFY,EAAaV,EAAIS,EAAkB,CAAC,EAGpCE,EACJ,QACIb,EAAY,CAAC,EAAK,KAAS,GAAOA,EAAY,CAAC,GAAM,EAAMA,EAAY,CAAC,GAAM,GAAM,MACpFc,EAAaZ,EAAIW,EAAkB,CAAC,EAGpCE,EACJV,EAAUL,EAAY,CAAC,CAAE,EACzBK,EAAUL,EAAY,CAAC,CAAE,EACzBK,EAAUL,EAAY,CAAC,CAAE,EACzBK,EAAUL,EAAY,CAAC,CAAE,EACzBK,EAAUL,EAAY,CAAC,CAAE,EACzBK,EAAUL,EAAY,CAAC,CAAE,EAE3B,MAAO,GAAGS,CAAW,IAAIC,CAAU,IAAIE,CAAU,IAAIE,CAAU,IAAIC,CAAO,EAC5E,CCpDO,SAASC,EAAYC,EAAuB,CAEjD,IAAMC,EAAQD,EAAK,YAAY,EAAE,MAAM,GAAG,EAM1C,GALIC,EAAM,SAAW,GACjBA,EAAM,CAAC,GAAG,SAAW,GACrBA,EAAM,CAAC,GAAG,SAAW,GACrBA,EAAM,CAAC,GAAG,SAAW,GACrBA,EAAM,CAAC,GAAG,SAAW,GACrBA,EAAM,CAAC,GAAG,SAAW,GAAI,MAAO,GAGpC,IAAMC,EAAa,cACnB,OAAOD,EAAM,MAAOE,GAASD,EAAW,KAAKC,CAAI,CAAC,CACpD,CCZA,eAAsBC,EAAiBC,EAAmC,CACxE,IAAMC,EAAa,MAAM,OAAO,OAAO,OAAO,UAAWD,CAAI,EAC7D,OAAO,MAAM,KAAK,IAAI,WAAWC,CAAU,CAAC,EACzC,IAAKC,GAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAC1C,KAAK,EAAE,CACZ,CHuDO,IAAMC,EAAN,KAAgB,CACJ,cACA,aACA,QACA,UACT,SAAoC,OAC3B,YAA4B,CAAC,EAC7B,MAAqB,CAAC,EAC/B,UAA+B,KAEvC,YAAYC,EAA2B,CACrC,GAAI,CAACA,EAAQ,QACX,MAAM,IAAI,MAAM,2BAA2B,EAG7C,GAAIA,EAAQ,eAAiB,OAE3B,KAAK,aAAeC,EAAc,MAC7B,CACL,GAAI,CAACD,EAAQ,aACX,MAAM,IAAI,MAAM,gCAAgC,EAElD,GAAI,CAACE,EAAYF,EAAQ,YAAY,EACnC,MAAM,IAAI,MACR,yFACF,EAEF,KAAK,aAAeA,EAAQ,YAC9B,CAEA,KAAK,cAAgBA,EAAQ,eAAiBG,EAC9C,KAAK,QAAUH,EAAQ,QACvB,KAAK,UAAYA,EAAQ,WAAa,EACxC,CAKA,YAAYA,EAAgC,CAC1C,YAAK,SAAW,CACd,OAAQA,EAAQ,QAAU,GAC1B,SAAUA,EAAQ,UAAYI,EAAa,qBAC3C,eAAgBJ,EAAQ,gBAAkB,GAC1C,YAAaA,EAAQ,aAAe,CAAC,EACrC,YAAaA,EAAQ,YACrB,WAAYA,EAAQ,YAAc,GAClC,MAAOA,EAAQ,KACjB,EACO,IACT,CAKA,cAAcK,EAAcC,EAAsB,CAChD,YAAK,YAAY,KAAK,CAAE,KAAAD,EAAM,OAAAC,CAAO,CAAC,EAC/B,IACT,CAKA,QAAQD,EAAcE,EAAkBP,EAAwC,CAC9E,YAAK,MAAM,KAAK,CACd,KAAAK,EACA,KAAAE,EACA,SAAUP,GAAS,UAAY,EACjC,CAAC,EACM,IACT,CAKA,aAAaQ,EAA6B,CACxC,YAAK,UAAYA,EACV,IACT,CAKA,MAAc,cAA0E,CACtF,GAAM,CAAE,QAAAC,CAAQ,EAAI,KAAM,QAAO,QAAQ,EAEnCC,EAAuC,CAAC,EAC9C,QAAWC,KAAQ,KAAK,MACtBD,EAASC,EAAK,IAAI,EAAIA,EAAK,KAG7B,IAAMC,EAAWH,EAAQC,EAAU,CAAE,MAAO,CAAE,CAAC,EAGzCG,EAAyB,MAAM,QAAQ,IAC3C,KAAK,MAAM,IAAI,MAAOF,IAAU,CAC9B,KAAMA,EAAK,KACX,UAAW,OAAO,CAAC,EACnB,eAAgB,OAAO,CAAC,EACxB,iBAAkB,OAAOA,EAAK,KAAK,MAAM,EACzC,WAAYA,EAAK,SAAWG,EAAkB,QAAUA,EAAkB,KAC1E,UAAW,MAAMC,EAAiBJ,EAAK,IAAI,EAC3C,MAAO,MACT,EAAE,CACJ,EAEA,MAAO,CAAE,SAAAC,EAAU,MAAAC,CAAM,CAC3B,CAKQ,YAAYA,EAAmC,CACrD,MAAO,CACL,cAAe,KAAK,cACpB,aAAc,KAAK,aACnB,QAAS,KAAK,QACd,SAAU,KAAK,SACf,YAAa,KAAK,YAClB,MAAAA,EACA,UAAW,KAAK,UAChB,YAAa,OAAO,KAAK,IAAI,CAAC,CAChC,CACF,CAKA,MAAM,UAAgC,CACpC,GAAM,CAAE,SAAAD,EAAU,MAAAC,CAAM,EAAI,MAAM,KAAK,aAAa,EAC9CG,EAAS,KAAK,YAAYH,CAAK,EAC/BI,EAAcC,EAAU,OAAOF,CAAM,EAAE,OAAO,EAG9CG,EAAiB,KAAK,WAAa,IAAI,WAAW,CAAC,EACnDC,EACJC,EAAM,OACNC,EACAC,EACAN,EAAY,OACZM,EACAX,EAAS,OACTW,EACAJ,EAAe,OAEXK,EAAS,IAAI,WAAWJ,CAAS,EACjCK,EAAO,IAAI,SAASD,EAAO,MAAM,EACnCE,EAAS,EAGb,OAAAF,EAAO,IAAIH,EAAOK,CAAM,EACxBA,GAAUL,EAAM,OAGhBI,EAAK,UAAUC,EAAQ,KAAK,cAAe,EAAK,EAChDA,GAAUJ,EAGVG,EAAK,aAAaC,EAAQ,OAAOT,EAAY,MAAM,EAAG,EAAK,EAC3DS,GAAUH,EAGVC,EAAO,IAAIP,EAAaS,CAAM,EAC9BA,GAAUT,EAAY,OAGtBQ,EAAK,aAAaC,EAAQ,OAAOd,EAAS,MAAM,EAAG,EAAK,EACxDc,GAAUH,EAGVC,EAAO,IAAIZ,EAAUc,CAAM,EAC3BA,GAAUd,EAAS,OAGnBa,EAAK,aAAaC,EAAQ,OAAOP,EAAe,MAAM,EAAG,EAAK,EAC9DO,GAAUH,EAGNJ,EAAe,OAAS,GAC1BK,EAAO,IAAIL,EAAgBO,CAAM,EAG5BF,CACT,CACF,EIpOA,IAAMG,EAAY,IAAI,WAAW,CAAC,GAAM,GAAM,EAAM,CAAI,CAAC,EAK7CC,OAEVA,EAAA,IAAM,MAENA,EAAA,IAAM,MAENA,EAAA,QAAU,UANAA,OAAA,IAYCC,EAAe,CAI1B,OAAAD,EAQA,OAAOE,EAA4B,CAEjC,GAAIA,EAAO,QAAUC,EAAM,OAAQ,CACjC,IAAIC,EAAQ,GACZ,QAASC,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChC,GAAIH,EAAOG,CAAC,IAAMF,EAAME,CAAC,EAAG,CAC1BD,EAAQ,GACR,KACF,CAEF,GAAIA,EACF,MAAO,KAEX,CAGA,GAAIF,EAAO,QAAUH,EAAU,OAAQ,CACrC,IAAIO,EAAQ,GACZ,QAASD,EAAI,EAAGA,EAAIN,EAAU,OAAQM,IACpC,GAAIH,EAAOG,CAAC,IAAMN,EAAUM,CAAC,EAAG,CAC9BC,EAAQ,GACR,KACF,CAEF,GAAIA,EACF,MAAO,KAEX,CAEA,MAAO,SACT,EAQA,MAAMJ,EAA6B,CACjC,GAAIA,EAAO,OAASC,EAAM,OACxB,MAAO,GAET,QAASE,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChC,GAAIH,EAAOG,CAAC,IAAMF,EAAME,CAAC,EACvB,MAAO,GAGX,MAAO,EACT,EAQA,MAAMH,EAA6B,CACjC,GAAIA,EAAO,OAASH,EAAU,OAC5B,MAAO,GAET,QAASM,EAAI,EAAGA,EAAIN,EAAU,OAAQM,IACpC,GAAIH,EAAOG,CAAC,IAAMN,EAAUM,CAAC,EAC3B,MAAO,GAGX,MAAO,EACT,CACF,ECpFO,IAAME,EAAN,KAAuB,CACpB,aAAc,CACpB,MAAM,IAAI,MAAM,gEAAgE,CAClF,CAQA,OAAO,OAAOC,EAAsC,CAClD,OAAO,IAAIC,EAAUD,CAAO,CAC9B,CASA,OAAO,OAAOE,EAAoBF,EAAuC,CACvE,OAAOG,EAAU,WAAWD,EAAQF,CAAO,CAC7C,CASA,OAAO,sBAAsBE,EAAqBF,EAAuC,CACvF,OAAOG,EAAU,gBAAgBD,EAAQF,CAAO,CAClD,CAOA,OAAO,kBAA2B,CAChC,OAAOI,CACT,CAOA,OAAO,UAAuB,CAC5B,OAAOC,CACT,CAKA,OAAgB,OAASC,EAqBzB,OAAO,OAAOJ,EAA4B,CACxC,OAAOK,EAAa,OAAOL,CAAM,CACnC,CAQA,OAAO,MAAMA,EAA6B,CACxC,OAAOK,EAAa,MAAML,CAAM,CAClC,CAQA,OAAO,MAAMA,EAA6B,CACxC,OAAOK,EAAa,MAAML,CAAM,CAClC,CAOA,OAAO,eAAwB,CAC7B,OAAOM,EAAc,CACvB,CACF",
  "names": ["MAGIC", "MAGIC_STRING", "MAGIC_SIZE", "FORMAT_VERSION", "VERSION_SIZE", "LENGTH_SIZE", "HEADER_SIZE", "AITError", "message", "AITFormatError", "AITVersionError", "AITBundle", "AITReader", "_AITReader", "buffer", "options", "FORMAT_VERSION", "MAGIC_SIZE", "VERSION_SIZE", "LENGTH_SIZE", "AITFormatError", "magic", "MAGIC", "AITVersionError", "bundleLenOffset", "bundleLen", "bundleOffset", "bundleBytes", "AITBundle", "a", "b", "i", "name", "unzipSync", "zipBlob", "entry", "sigLenOffset", "sigLen", "sigOffset", "result", "p", "meta", "AITBundle", "CompressionMethod", "PlatformType", "generateUUID7", "timestamp", "randomBytes", "i", "hex", "n", "len", "byteToHex", "b", "timeHigh", "timeLow", "timeHighHex", "timeLowHex", "versionAndRandom", "versionHex", "variantAndRandom", "variantHex", "nodeHex", "isValidUUID", "uuid", "parts", "hexPattern", "part", "computeSha256Hex", "data", "hashBuffer", "b", "AITWriter", "options", "generateUUID7", "isValidUUID", "FORMAT_VERSION", "PlatformType", "name", "access", "data", "signature", "zipSync", "zipInput", "file", "zipBytes", "index", "CompressionMethod", "computeSha256Hex", "bundle", "bundleBytes", "AITBundle", "signatureBytes", "totalSize", "MAGIC", "VERSION_SIZE", "LENGTH_SIZE", "buffer", "view", "offset", "ZIP_MAGIC", "Format", "BundleFormat", "buffer", "MAGIC", "isAIT", "i", "isZIP", "AppsInTossBundle", "options", "AITWriter", "buffer", "AITReader", "FORMAT_VERSION", "MAGIC", "Format", "BundleFormat", "generateUUID7"]
}
