{
  "version": 3,
  "sources": ["../src/base64.ts", "../src/utils.ts", "../src/ydke.ts", "../src/ygom.ts", "../index.ts"],
  "sourcesContent": ["export function toBase64Url(bytes: Uint8Array): string {\n  const base64 = typeof Buffer !== 'undefined'\n    ? Buffer.from(bytes).toString('base64')\n    : btoa(String.fromCharCode(...bytes));\n\n  return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nexport function fromBase64Url(encoded: string): Uint8Array {\n  const base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n  const padded = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, '=');\n\n  if (typeof Buffer !== 'undefined') {\n    return Uint8Array.from(Buffer.from(padded, 'base64'));\n  }\n\n  const binary = atob(padded);\n  const bytes = new Uint8Array(binary.length);\n  for (let i = 0; i < binary.length; i++) {\n    bytes[i] = binary.charCodeAt(i);\n  }\n  return bytes;\n}\n", "export function countItems<T>(arr: T[]) {\n  const map = new Map<T, number>();\n  for (const item of arr) {\n    map.set(item, (map.get(item) || 0) + 1);\n  }\n  const blocks: { item: T; count: number }[] = [];\n  for (const [item, count] of map.entries()) {\n    blocks.push({ item, count });\n  }\n  return blocks;\n}\n\nexport function countConsecutiveItems<T>(arr: T[]) {\n  const result: { item: T; count: number }[] = [];\n\n  if (arr.length === 0) return result;\n\n  let currentItem = arr[0];\n  let count = 1;\n\n  for (let i = 1; i < arr.length; i++) {\n    if (arr[i] === currentItem) {\n      count++;\n    } else {\n      result.push({ item: currentItem, count });\n      currentItem = arr[i];\n      count = 1;\n    }\n  }\n\n  // \u63A8\u5165\u6700\u540E\u4E00\u7EC4\n  result.push({ item: currentItem, count });\n\n  return result;\n}\n\nabstract class BufferCursor {\n  buffer: Uint8Array;\n  pointer = 0;\n\n  constructor(bufOrLength: Uint8Array | number) {\n    if (typeof bufOrLength === 'number') {\n      this.buffer = new Uint8Array(bufOrLength);\n    } else {\n      this.buffer = bufOrLength;\n    }\n  }\n\n  /**\n   * \u5B89\u5168\u5730\u5C06 pointer \u5411\u524D\u79FB\u52A8\u6307\u5B9A\u5B57\u8282\u6570\u3002\n   * @param bytes \u8981\u79FB\u52A8\u7684\u5B57\u8282\u6570\n   * @returns \u539F\u6765 pointer \u7684\u503C\n   * @throws RangeError \u5982\u679C\u8D8A\u754C\n   */\n  protected increasePointer(bytes: number): number {\n    const old = this.pointer;\n    const next = old + bytes;\n    if (next > this.buffer.length) {\n      throw new RangeError(\n        `Pointer overflow: tried to move to ${next}, but buffer length is ${this.buffer.length}`,\n      );\n    }\n    this.pointer = next;\n    return old;\n  }\n}\n\nexport class BufferWriter extends BufferCursor {\n  constructor(length: number) {\n    super(length);\n  }\n\n  writeUint32LE(value: number) {\n    const idx = this.increasePointer(4);\n    this.buffer[idx] = value & 0xff;\n    this.buffer[idx + 1] = (value >>> 8) & 0xff;\n    this.buffer[idx + 2] = (value >>> 16) & 0xff;\n    this.buffer[idx + 3] = (value >>> 24) & 0xff;\n    return this;\n  }\n\n  writeUint32BE(value: number) {\n    const idx = this.increasePointer(4);\n    this.buffer[idx] = (value >>> 24) & 0xff;\n    this.buffer[idx + 1] = (value >>> 16) & 0xff;\n    this.buffer[idx + 2] = (value >>> 8) & 0xff;\n    this.buffer[idx + 3] = value & 0xff;\n    return this;\n  }\n\n  writeUint16LE(value: number) {\n    const idx = this.increasePointer(2);\n    this.buffer[idx] = value & 0xff;\n    this.buffer[idx + 1] = (value >>> 8) & 0xff;\n    return this;\n  }\n\n  writeUint16BE(value: number) {\n    const idx = this.increasePointer(2);\n    this.buffer[idx] = (value >>> 8) & 0xff;\n    this.buffer[idx + 1] = value & 0xff;\n    return this;\n  }\n\n  writeUint8(value: number) {\n    const idx = this.increasePointer(1);\n    this.buffer[idx] = value & 0xff;\n    return this;\n  }\n\n  writeString(str: string) {\n    for (let i = 0; i < str.length; i++) {\n      const idx = this.increasePointer(1);\n      this.buffer[idx] = str.charCodeAt(i);\n    }\n    return this;\n  }\n}\n\nexport class BufferReader extends BufferCursor {\n  constructor(buf: Uint8Array) {\n    super(buf);\n  }\n\n  readUint32LE(): number {\n    const idx = this.increasePointer(4);\n    const b = this.buffer;\n    // >>>0 \u4FDD\u8BC1\u65E0\u7B26\u53F7\u8F93\u51FA\n    return (\n      (b[idx] | (b[idx + 1] << 8) | (b[idx + 2] << 16) | (b[idx + 3] << 24)) >>>\n      0\n    );\n  }\n\n  readUint32BE(): number {\n    const idx = this.increasePointer(4);\n    const b = this.buffer;\n    return (\n      ((b[idx] << 24) | (b[idx + 1] << 16) | (b[idx + 2] << 8) | b[idx + 3]) >>>\n      0\n    );\n  }\n\n  readUint16LE(): number {\n    const idx = this.increasePointer(2);\n    const b = this.buffer;\n    return b[idx] | (b[idx + 1] << 8);\n  }\n\n  readUint16BE(): number {\n    const idx = this.increasePointer(2);\n    const b = this.buffer;\n    return (b[idx] << 8) | b[idx + 1];\n  }\n\n  readUint8(): number {\n    const idx = this.increasePointer(1);\n    return this.buffer[idx];\n  }\n\n  readString(length: number): string {\n    let s = '';\n    for (let i = 0; i < length; i++) {\n      const idx = this.increasePointer(1);\n      s += String.fromCharCode(this.buffer[idx]);\n    }\n    return s;\n  }\n\n  readRemaining(): Uint8Array {\n    const remaining = this.buffer.length - this.pointer;\n    const idx = this.increasePointer(remaining);\n    return this.buffer.subarray(idx, this.buffer.length);\n  }\n}\n\nexport const arrayEquals = <T>(a: T[], b: T[]): boolean => {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n};\n", "// ydke.ts\n\nexport interface TypedDeck {\n  main: number[];\n  extra: number[];\n  side: number[];\n}\n\nfunction decodeBase64(base64: string): Uint8Array {\n  if (typeof Buffer !== 'undefined') {\n    return Uint8Array.from(Buffer.from(base64, 'base64'));\n  }\n\n  const binary = atob(base64);\n  const bytes = new Uint8Array(binary.length);\n  for (let i = 0; i < binary.length; i++) {\n    bytes[i] = binary.charCodeAt(i);\n  }\n  return bytes;\n}\n\nfunction encodeBase64(bytes: Uint8Array): string {\n  if (typeof Buffer !== 'undefined') {\n    return Buffer.from(bytes).toString('base64');\n  }\n\n  let binary = '';\n  for (let i = 0; i < bytes.length; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return btoa(binary);\n}\n\nfunction base64ToUint32Array(base64: string): number[] {\n  const bytes = decodeBase64(base64);\n  const view = new DataView(bytes.buffer);\n  const result: number[] = [];\n  for (let i = 0; i < bytes.length; i += 4) {\n    result.push(view.getUint32(i, true)); // little-endian\n  }\n  return result;\n}\n\nfunction uint32ArrayToBase64(data: number[]): string {\n  const buffer = new ArrayBuffer(data.length * 4);\n  const view = new DataView(buffer);\n  data.forEach((val, i) => view.setUint32(i * 4, val, true));\n  return encodeBase64(new Uint8Array(buffer));\n}\n\nexport function toYdkeURL(deck: TypedDeck): string {\n  return (\n    'ydke://' +\n    uint32ArrayToBase64(deck.main) +\n    '!' +\n    uint32ArrayToBase64(deck.extra) +\n    '!' +\n    uint32ArrayToBase64(deck.side) +\n    '!'\n  );\n}\n\nexport function fromYdkeURL(ydke: string): TypedDeck {\n  if (!ydke.startsWith('ydke://')) {\n    throw new Error('Invalid ydke:// URI');\n  }\n  const [mainStr, extraStr, sideStr] = ydke.slice(7).split('!');\n  if (mainStr === undefined || extraStr === undefined || sideStr === undefined) {\n    throw new Error('Incomplete ydke:// URI');\n  }\n  return {\n    main: base64ToUint32Array(mainStr),\n    extra: base64ToUint32Array(extraStr),\n    side: base64ToUint32Array(sideStr),\n  };\n}\n", "import { fromBase64Url, toBase64Url } from \"./base64\";\n\n// === \u5E38\u91CF ===\nconst QUERY_YGO_TYPE = 'ygotype';\nconst QUERY_VERSION = 'v';\nconst ARG_DECK = 'deck';\nconst QUERY_DECK = 'd';\nconst QUERY_NAME = 'name';\nconst URL_SCHEME_HTTP = 'http';\nconst URL_HOST_DECK = 'deck.ourygo.top';\n\n// === BitWriter \u7C7B ===\nclass BitWriter {\n  private buffer: number[] = [];\n  private current = 0;\n  private bitPos = 0;\n\n  writeBits(value: number, length: number) {\n    while (length > 0) {\n      const remain = 8 - this.bitPos;\n      const take = Math.min(remain, length);\n      const shift = length - take;\n      this.current |= ((value >>> shift) & ((1 << take) - 1)) << (remain - take);\n      this.bitPos += take;\n      length -= take;\n\n      if (this.bitPos === 8) {\n        this.buffer.push(this.current);\n        this.current = 0;\n        this.bitPos = 0;\n      }\n    }\n  }\n\n  finish(): Uint8Array {\n    if (this.bitPos > 0) this.buffer.push(this.current);\n    return new Uint8Array(this.buffer);\n  }\n}\n\n// === BitReader \u7C7B ===\nclass BitReader {\n  private index = 0;\n  private bitPos = 0;\n\n  constructor(private bytes: Uint8Array) {}\n\n  readBits(length: number): number {\n    let result = 0;\n    while (length > 0) {\n      const remain = 8 - this.bitPos;\n      const take = Math.min(remain, length);\n      const bits = (this.bytes[this.index] >>> (remain - take)) & ((1 << take) - 1);\n      result = (result << take) | bits;\n      this.bitPos += take;\n      length -= take;\n\n      if (this.bitPos === 8) {\n        this.bitPos = 0;\n        this.index++;\n      }\n    }\n    return result;\n  }\n}\n\n// === \u5DE5\u5177\u51FD\u6570 ===\nfunction countUnique(cards: number[]): number {\n  let count = 0;\n  for (let i = 0; i < cards.length; ) {\n    const id = cards[i];\n    count++;\n    while (i < cards.length && cards[i] === id) i++;\n  }\n  return count;\n}\n\n// === \u4E3B\u51FD\u6570\uFF1A\u7F16\u7801 ===\nexport function toYGOMobileDeckURL(\n  main: number[],\n  extra: number[],\n  side: number[],\n  customParams: Record<string, string> = {},\n): string {\n  const mNum = countUnique(main);\n  const eNum = countUnique(extra);\n  const sNum = countUnique(side);\n\n  const writer = new BitWriter();\n  writer.writeBits(mNum, 8);\n  writer.writeBits(eNum, 4);\n  writer.writeBits(sNum, 4);\n\n  const encodeSection = (cards: number[]) => {\n    for (let i = 0; i < cards.length; ) {\n      const id = cards[i];\n      let count = 1;\n      while (i + count < cards.length && cards[i + count] === id && count < 3) count++;\n      const prefix = count === 2 ? 0b10 : count === 3 ? 0b11 : 0b01;\n      writer.writeBits(prefix, 2);\n      writer.writeBits(id, 27);\n      i += count;\n    }\n  };\n\n  encodeSection(main);\n  encodeSection(extra);\n  encodeSection(side);\n\n  const encoded = toBase64Url(writer.finish());\n\n  const searchParams = new URLSearchParams();\n  for (const [k, v] of Object.entries(customParams)) {\n    searchParams.set(k, v);\n  }\n  searchParams.set(QUERY_YGO_TYPE, ARG_DECK);\n  searchParams.set(QUERY_VERSION, '1');\n  searchParams.set(QUERY_DECK, encoded);\n\n  return `${URL_SCHEME_HTTP}://${URL_HOST_DECK}?${searchParams.toString()}`;\n}\n\n// === \u4E3B\u51FD\u6570\uFF1A\u89E3\u7801 ===\nexport function fromYGOMobileDeckURL(uri: string): {\n  main: number[];\n  extra: number[];\n  side: number[];\n  name?: string;\n} {\n  const url = new URL(uri);\n  if (url.searchParams.get(QUERY_YGO_TYPE) !== ARG_DECK) {\n    throw new Error('Invalid deck URL');\n  }\n\n  const encoded = url.searchParams.get(QUERY_DECK);\n  if (!encoded) throw new Error('Missing deck data');\n\n  const bytes = fromBase64Url(encoded);\n  const reader = new BitReader(bytes);\n\n  const mNum = reader.readBits(8);\n  const eNum = reader.readBits(4);\n  const sNum = reader.readBits(4);\n  const total = mNum + eNum + sNum;\n\n  const result = {\n    main: [] as number[],\n    extra: [] as number[],\n    side: [] as number[],\n  };\n\n  for (let i = 0; i < total; i++) {\n    const prefix = reader.readBits(2);\n    const count = prefix === 0b10 ? 2 : prefix === 0b11 ? 3 : 1;\n    const id = reader.readBits(27);\n    const target =\n      i < mNum ? result.main : i < mNum + eNum ? result.extra : result.side;\n    for (let j = 0; j < count; j++) {\n      target.push(id);\n    }\n  }\n\n  return {\n    ...result,\n    name: url.searchParams.get(QUERY_NAME) ?? undefined,\n  };\n}\n", "import { fromBase64Url, toBase64Url } from './src/base64';\nimport {\n  arrayEquals,\n  BufferReader,\n  BufferWriter,\n  countConsecutiveItems,\n  countItems,\n} from './src/utils';\nimport { fromYdkeURL, toYdkeURL } from './src/ydke';\nimport { fromYGOMobileDeckURL, toYGOMobileDeckURL } from './src/ygom';\n\nexport interface YGOProDeckLike {\n  main: number[];\n  extra: number[];\n  side: number[];\n  name?: string;\n}\n\nexport default class YGOProDeck implements YGOProDeckLike {\n  main: number[] = [];\n  extra: number[] = [];\n  side: number[] = [];\n  name?: string;\n\n  constructor(init: Partial<YGOProDeckLike> = {}) {\n    this.main = init.main ? [...init.main] : [];\n    this.extra = init.extra ? [...init.extra] : [];\n    this.side = init.side ? [...init.side] : [];\n    this.name = init.name;\n  }\n\n  bufferLength(noCompact = false) {\n    const counted = [this.main, this.extra, this.side].map(\n      noCompact ? countConsecutiveItems : countItems,\n    );\n    return counted.reduce((a, b) => a + b.length * 4, 0);\n  }\n\n  toUint8Array(noCompact = false) {\n    const counted = [this.main, this.extra, this.side].map(\n      noCompact ? countConsecutiveItems : countItems,\n    );\n    const writer = new BufferWriter(\n      counted.reduce((a, b) => a + b.length * 4, 0),\n    );\n    const writeCards = (\n      countMap: { item: number; count: number }[],\n      type: number,\n    ) => {\n      // each card: 28 bits for id, 2 bits(0, 1, 2, 3) for type(0: main, 1: extra, 2: side, 3: unknown), 2 bits for count (0: 1, 1: 2, 2: 3, 3: 4)\n      for (const { item, count } of countMap) {\n        if (count > 4) {\n          throw new Error(`Too many cards: ${item}`);\n        }\n        const value = (item & 0xfffffff) | (type << 28) | ((count - 1) << 30);\n        writer.writeUint32LE(value);\n      }\n    };\n    counted.forEach(writeCards);\n    return writer.buffer;\n  }\n\n  toEncodedString(noCompact = false) {\n    return toBase64Url(this.toUint8Array(noCompact));\n  }\n\n  toString(noCompact = false) {\n    return this.toEncodedString(noCompact);\n  }\n\n  fromUint8Array(buf: Uint8Array) {\n    for (let i = 0; i < buf.length - 3; i += 4) {\n      const value =\n        buf[i] | (buf[i + 1] << 8) | (buf[i + 2] << 16) | (buf[i + 3] << 24);\n      const id = value & 0xfffffff;\n      const type = (value >>> 28) & 0x3;\n      const count = ((value >>> 30) & 0x3) + 1;\n      const cards = [this.main, this.extra, this.side][type];\n      for (let j = 0; j < count; j++) {\n        cards.push(id);\n      }\n    }\n    return this;\n  }\n\n  static fromUint8Array(buf: Uint8Array) {\n    return new YGOProDeck().fromUint8Array(buf);\n  }\n\n  fromEncodedString(str: string) {\n    return this.fromUint8Array(fromBase64Url(str));\n  }\n\n  static fromEncodedString(str: string) {\n    return new YGOProDeck().fromEncodedString(str);\n  }\n\n  toYdkString() {\n    return [\n      '#created by ygopro-deck-encode',\n      '#main',\n      ...this.main.map((id) => id.toString()),\n      '#extra',\n      ...this.extra.map((id) => id.toString()),\n      '!side',\n      ...this.side.map((id) => id.toString()),\n    ].join('\\n');\n  }\n\n  fromYdkString(str: string) {\n    const lines = str.split(/\\r?\\n/);\n    let current = this.main;\n    for (const _line of lines) {\n      const line = _line.trim();\n      if (line === '#main') {\n        current = this.main;\n      }\n      if (line === '#extra') {\n        current = this.extra;\n      }\n      if (line === '!side') {\n        current = this.side;\n      }\n      if (line.match(/^\\d+$/)) {\n        current.push(parseInt(line, 10));\n      }\n    }\n    return this;\n  }\n\n  static fromYdkString(str: string) {\n    return new YGOProDeck().fromYdkString(str);\n  }\n\n  fromUpdateDeckPayload(\n    buf: Uint8Array,\n    isExtraDeckCard: (code: number, i: number, mainc: number) => boolean = () =>\n      false,\n  ) {\n    const reader = new BufferReader(buf);\n    const mainc = reader.readUint32LE();\n    const sidec = reader.readUint32LE();\n    this.main = [];\n    this.extra = [];\n    this.side = [];\n    for (let i = 0; i < mainc; i++) {\n      const id = reader.readUint32LE();\n      if (isExtraDeckCard(id, i, mainc)) {\n        this.extra.push(id);\n      } else {\n        this.main.push(id);\n      }\n    }\n    for (let i = 0; i < sidec; i++) {\n      const id = reader.readUint32LE();\n      this.side.push(id);\n    }\n    return this;\n  }\n\n  static fromUpdateDeckPayload(\n    buf: Uint8Array,\n    isExtraDeckCard: (code: number, i: number, mainc: number) => boolean = () =>\n      false,\n  ) {\n    return new YGOProDeck().fromUpdateDeckPayload(buf, isExtraDeckCard);\n  }\n\n  toUpdateDeckPayload() {\n    const cards = [...this.main, ...this.extra, ...this.side];\n    const writer = new BufferWriter(cards.length * 4 + 8)\n      .writeUint32LE(this.main.length + this.extra.length)\n      .writeUint32LE(this.side.length);\n    cards.forEach((id) => writer.writeUint32LE(id));\n    return writer.buffer;\n  }\n\n  fromYGOMobileDeckURL(uri: string): YGOProDeck {\n    const parsed = fromYGOMobileDeckURL(uri);\n    this.main = parsed.main;\n    this.extra = parsed.extra;\n    this.side = parsed.side;\n    this.name = parsed.name;\n    return this;\n  }\n\n  static fromYGOMobileDeckURL(uri: string): YGOProDeck {\n    return new YGOProDeck().fromYGOMobileDeckURL(uri);\n  }\n\n  toYGOMobileDeckURL(): string {\n    return toYGOMobileDeckURL(\n      this.main,\n      this.extra,\n      this.side,\n      this.name && {\n        name: this.name,\n      },\n    );\n  }\n\n  fromYdkeURL(uri: string): YGOProDeck {\n    const parsed = fromYdkeURL(uri);\n    this.main = parsed.main;\n    this.extra = parsed.extra;\n    this.side = parsed.side;\n    return this;\n  }\n\n  static fromYdkeURL(uri: string): YGOProDeck {\n    return new YGOProDeck().fromYdkeURL(uri);\n  }\n\n  toYdkeURL(): string {\n    return toYdkeURL({\n      main: this.main,\n      extra: this.extra,\n      side: this.side,\n    });\n  }\n\n  isEqual(\n    other: YGOProDeckLike,\n    options: {\n      ignoreOrder?: boolean;\n    } = {},\n  ): boolean {\n    const { ignoreOrder = false } = options;\n    const fields = ['main', 'extra', 'side'] as const;\n    const getField = (o: YGOProDeckLike, field: (typeof fields)[number]) =>\n      o[field] || [];\n    if (\n      fields.some(\n        (field) =>\n          getField(this, field).length !== getField(other, field).length,\n      )\n    ) {\n      return false;\n    }\n    const normalize = (arr: number[]) =>\n      ignoreOrder ? [...arr].sort((a, b) => a - b) : arr;\n    return fields.every((field) =>\n      arrayEquals(\n        normalize(getField(this, field)),\n        normalize(getField(other, field)),\n      ),\n    );\n  }\n}\n"],
  "mappings": "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",
  "names": []
}
