{"version":3,"file":"string-hash-fnv.cjs","names":[],"sources":["../../../src/common/data/string-hash-fnv.ts"],"sourcesContent":["// Why FNV-1a (32-bit) https://softwareengineering.stackexchange.com/a/250750/366573\n// A simple implementation https://gist.github.com/vaiorabbit/5657561\n// This implementation  https://github.com/tjwebb/fnv-plus/blob/master/index.js#L341\n// Alternative implementation https://github.com/sindresorhus/fnv1a\n\nexport function stringHashFNV1a(str: string): number {\n  const l = str.length\n  let c: number\n  let i: number\n  let t0 = 0\n  let v0 = 0x9DC5\n  let t1 = 0\n  let v1 = 0x811C\n\n  for (i = 0; i < l; i++) {\n    c = str.charCodeAt(i)\n    if (c < 128) {\n      v0 ^= c\n    }\n    else if (c < 2048) {\n      v0 ^= (c >> 6) | 192\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= (c & 63) | 128\n    }\n    else if (((c & 64512) === 55296) && (i + 1) < l && ((str.charCodeAt(i + 1) & 64512) === 56320)) {\n      c = 65536 + ((c & 1023) << 10) + (str.charCodeAt(++i) & 1023)\n      v0 ^= (c >> 18) | 240\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= ((c >> 12) & 63) | 128\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= ((c >> 6) & 63) | 128\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= (c & 63) | 128\n    }\n    else {\n      v0 ^= (c >> 12) | 224\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= ((c >> 6) & 63) | 128\n      t0 = v0 * 403\n      t1 = v1 * 403\n      t1 += v0 << 8\n      v1 = (t1 + (t0 >>> 16)) & 65535\n      v0 = t0 & 65535\n      v0 ^= (c & 63) | 128\n    }\n    t0 = v0 * 403\n    t1 = v1 * 403\n    t1 += v0 << 8\n    v1 = (t1 + (t0 >>> 16)) & 65535\n    v0 = t0 & 65535\n  }\n\n  return ((v1 << 16) >>> 0) + v0\n}\n"],"mappings":";;;AAKA,SAAgB,gBAAgB,KAAqB;CACnD,MAAM,IAAI,IAAI;CACd,IAAI;CACJ,IAAI;CACJ,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;AAET,MAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,MAAI,IAAI,WAAW,EAAE;AACrB,MAAI,IAAI,IACN,OAAM;WAEC,IAAI,MAAM;AACjB,SAAO,KAAK,IAAK;AACjB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAO,IAAI,KAAM;cAER,IAAI,WAAW,SAAW,IAAI,IAAK,MAAO,IAAI,WAAW,IAAI,EAAE,GAAG,WAAW,OAAQ;AAC9F,OAAI,UAAU,IAAI,SAAS,OAAO,IAAI,WAAW,EAAE,EAAE,GAAG;AACxD,SAAO,KAAK,KAAM;AAClB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAQ,KAAK,KAAM,KAAM;AACzB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAQ,KAAK,IAAK,KAAM;AACxB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAO,IAAI,KAAM;SAEd;AACH,SAAO,KAAK,KAAM;AAClB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAQ,KAAK,IAAK,KAAM;AACxB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,MAAM;AACZ,QAAM,MAAM,OAAO,MAAO;AAC1B,QAAK,KAAK;AACV,SAAO,IAAI,KAAM;;AAEnB,OAAK,KAAK;AACV,OAAK,KAAK;AACV,QAAM,MAAM;AACZ,OAAM,MAAM,OAAO,MAAO;AAC1B,OAAK,KAAK;;AAGZ,SAAS,MAAM,OAAQ,KAAK"}