{"version":3,"sources":["../src/uuid.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomBytes } from \"crypto\"\nimport { newError } from \"./index\"\n\nconst invalidName = \"options.name must be either a string or a Buffer\"\n\n// Node ID according to rfc4122#section-4.5\nconst randomHost = randomBytes(16)\nrandomHost[0] = randomHost[0] | 0x01\n\n// lookup table hex to byte\nconst hex2byte: any = {}\n\n// lookup table byte to hex\nconst byte2hex: Array = []\n// populate lookup tables\nfor (let i = 0; i < 256; i++) {\n const hex = (i + 0x100).toString(16).substr(1)\n hex2byte[hex] = i\n byte2hex[i] = hex\n}\n\n// UUID class\nexport class UUID {\n private ascii: string | null = null\n private readonly binary: Buffer | null = null\n private readonly version: number\n\n // from rfc4122#appendix-C\n static readonly OID = UUID.parse(\"6ba7b812-9dad-11d1-80b4-00c04fd430c8\")\n\n constructor(uuid: Buffer | string) {\n const check = UUID.check(uuid)\n if (!check) {\n throw new Error(\"not a UUID\")\n }\n\n this.version = check.version!!\n\n if (check.format === \"ascii\") {\n this.ascii = uuid as string\n }\n else {\n this.binary = uuid as Buffer\n }\n }\n\n static v5(name: string | Buffer, namespace: Buffer) {\n return uuidNamed(name, \"sha1\", 0x50, namespace)\n }\n\n toString() {\n if (this.ascii == null) {\n this.ascii = stringify(this.binary!!)\n }\n return this.ascii\n }\n\n inspect() {\n return `UUID v${this.version} ${this.toString()}`\n }\n\n static check(uuid: Buffer | string, offset: number = 0) {\n if (typeof uuid === \"string\") {\n uuid = uuid.toLowerCase()\n\n if (!/^[a-f0-9]{8}(-[a-f0-9]{4}){3}-([a-f0-9]{12})$/.test(uuid)) {\n return false\n }\n\n if (uuid === \"00000000-0000-0000-0000-000000000000\") {\n return {version: undefined, variant: \"nil\", format: \"ascii\"}\n }\n\n return {\n version: (hex2byte[uuid[14] + uuid[15]] & 0xf0) >> 4,\n variant: getVariant((hex2byte[uuid[19] + uuid[20]] & 0xe0) >> 5),\n format: \"ascii\"\n }\n }\n\n if (Buffer.isBuffer(uuid)) {\n if (uuid.length < offset + 16) {\n return false\n }\n\n let i = 0\n for (; i < 16; i++) {\n if (uuid[offset + i] !== 0) {\n break\n }\n }\n if (i === 16) {\n return {version: undefined, variant: \"nil\", format: \"binary\"}\n }\n\n return {\n version: (uuid[offset + 6] & 0xf0) >> 4,\n variant: getVariant((uuid[offset + 8] & 0xe0) >> 5),\n format: \"binary\"\n }\n }\n\n throw newError(\"Unknown type of uuid\", \"ERR_UNKNOWN_UUID_TYPE\")\n }\n\n // read stringified uuid into a Buffer\n static parse(input: string) {\n const buffer = Buffer.allocUnsafe(16)\n let j = 0\n for (let i = 0; i < 16; i++) {\n buffer[i] = hex2byte[input[j++] + input[j++]]\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n j += 1\n }\n }\n return buffer\n }\n}\n\n// according to rfc4122#section-4.1.1\nfunction getVariant(bits: number) {\n switch (bits) {\n case 0:\n case 1:\n case 3:\n return \"ncs\"\n case 4:\n case 5:\n return \"rfc4122\"\n case 6:\n return \"microsoft\"\n default:\n return \"future\"\n }\n}\n\nenum UuidEncoding {\n ASCII, BINARY, OBJECT\n}\n\n// v3 + v5\nfunction uuidNamed(name: string | Buffer, hashMethod: string, version: number, namespace: Buffer, encoding: UuidEncoding = UuidEncoding.ASCII) {\n const hash = createHash(hashMethod)\n\n const nameIsNotAString = typeof name !== \"string\"\n if (nameIsNotAString && !Buffer.isBuffer(name)) {\n throw newError(invalidName, \"ERR_INVALID_UUID_NAME\")\n }\n\n hash.update(namespace)\n hash.update(name)\n\n const buffer = hash.digest()\n let result: any\n switch (encoding) {\n case UuidEncoding.BINARY:\n buffer[6] = (buffer[6] & 0x0f) | version\n buffer[8] = (buffer[8] & 0x3f) | 0x80\n result = buffer\n break\n case UuidEncoding.OBJECT:\n buffer[6] = (buffer[6] & 0x0f) | version\n buffer[8] = (buffer[8] & 0x3f) | 0x80\n result = new UUID(buffer)\n break\n default:\n result = byte2hex[buffer[0]] + byte2hex[buffer[1]] +\n byte2hex[buffer[2]] + byte2hex[buffer[3]] + \"-\" +\n byte2hex[buffer[4]] + byte2hex[buffer[5]] + \"-\" +\n byte2hex[(buffer[6] & 0x0f) | version] +\n byte2hex[buffer[7]] + \"-\" +\n byte2hex[(buffer[8] & 0x3f) | 0x80] +\n byte2hex[buffer[9]] + \"-\" +\n byte2hex[buffer[10]] + byte2hex[buffer[11]] +\n byte2hex[buffer[12]] + byte2hex[buffer[13]] +\n byte2hex[buffer[14]] + byte2hex[buffer[15]]\n break\n }\n return result\n}\n\nfunction stringify(buffer: Buffer) {\n return byte2hex[buffer[0]] + byte2hex[buffer[1]] +\n byte2hex[buffer[2]] + byte2hex[buffer[3]] + \"-\" +\n byte2hex[buffer[4]] + byte2hex[buffer[5]] + \"-\" +\n byte2hex[buffer[6]] + byte2hex[buffer[7]] + \"-\" +\n byte2hex[buffer[8]] + byte2hex[buffer[9]] + \"-\" +\n byte2hex[buffer[10]] + byte2hex[buffer[11]] +\n byte2hex[buffer[12]] + byte2hex[buffer[13]] +\n byte2hex[buffer[14]] + byte2hex[buffer[15]]\n}\n\n// according to rfc4122#section-4.1.7\nexport const nil = new UUID(\"00000000-0000-0000-0000-000000000000\")\n\n// UUID.v4 = uuidRandom\n\n// UUID.v4fast = uuidRandomFast\n\n// UUID.v3 = function(options, callback) {\n// return uuidNamed(\"md5\", 0x30, options, callback)\n// }"],"sourceRoot":""}