Files
dbx/apps/desktop/src/lib/sql/sqlTextFingerprint.ts
T

15 lines
500 B
TypeScript

function fnv1a(value: string, seed: number): number {
let hash = seed >>> 0;
for (let index = 0; index < value.length; index += 1) {
hash ^= value.charCodeAt(index);
hash = Math.imul(hash, 0x01000193);
}
return hash >>> 0;
}
export function sqlTextFingerprint(sql: string): string {
const first = fnv1a(sql, 0x811c9dc5).toString(16).padStart(8, "0");
const second = fnv1a(sql, 0x9e3779b9).toString(16).padStart(8, "0");
return `${sql.length.toString(16)}:${first}${second}`;
}