{"version":3,"file":"address.cjs","sources":["../../../../../../src/mods/tor/binary/address.ts"],"sourcesContent":["import { Cursor } from \"@hazae41/cursor\"\n\nexport class TypedAddress {\n\n  static readonly types = {\n    IPv4: 4,\n    IPv6: 6\n  } as const\n\n  constructor(\n    readonly type: number,\n    readonly value: Uint8Array\n  ) { }\n\n  sizeOrThrow() {\n    return 1 + 1 + this.value.length\n  }\n\n  writeOrThrow(cursor: Cursor) {\n    cursor.writeUint8OrThrow(this.type)\n    cursor.writeUint8OrThrow(this.value.length)\n    cursor.writeOrThrow(this.value)\n  }\n\n  static readOrThrow(cursor: Cursor) {\n    const type = cursor.readUint8OrThrow()\n    const length = cursor.readUint8OrThrow()\n    const value = cursor.readAndCopyOrThrow(length)\n\n    return new TypedAddress(type, value)\n  }\n\n}\n\nexport class Address4 {\n\n  /**\n   * IPv4 address\n   * @param address xxx.xxx.xxx.xxx\n   */\n  constructor(\n    readonly address: string\n  ) { }\n\n  sizeOrThrow() {\n    return 4\n  }\n\n  writeOrThrow(cursor: Cursor) {\n    const parts = this.address.split(\".\")\n\n    for (let i = 0; i < 4; i++)\n      cursor.writeUint8OrThrow(Number(parts[i]))\n\n    return\n  }\n\n  static readOrThrow(cursor: Cursor) {\n    const parts = new Array<string>(4)\n\n    for (let i = 0; i < 4; i++)\n      parts[i] = String(cursor.readUint8OrThrow())\n\n    return new Address4(parts.join(\".\"))\n  }\n\n}\n\nexport class Address6 {\n\n  /**\n   * IPv6 address\n   * @param address [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]\n   */\n  constructor(\n    readonly address: `[${string}]`\n  ) { }\n\n  sizeOrThrow() {\n    return 16\n  }\n\n  writeOrThrow(cursor: Cursor) {\n    const parts = this.address.slice(1, -1).split(\":\")\n\n    for (let i = 0; i < 8; i++)\n      cursor.writeUint16OrThrow(Number(parts[i]))\n\n    return\n  }\n\n  static readOrThrow(cursor: Cursor) {\n    const parts = new Array<string>(8)\n\n    for (let i = 0; i < 8; i++)\n      parts[i] = String(cursor.readUint16OrThrow())\n\n    return new Address6(`[${parts.join(\":\")}]`)\n  }\n\n}"],"names":[],"mappings":"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"}