{"version":3,"file":"query-name-generator.cjs","names":["is","Placeholder"],"sources":["../src/query-name-generator.ts"],"sourcesContent":["import { is } from './entity.ts';\nimport { Placeholder } from './sql/sql.ts';\n\nfunction isBinary(value: unknown): boolean {\n\tif (\n\t\ttypeof Buffer !== 'undefined'\n\t\t&& typeof Buffer.isBuffer === 'function'\n\t\t&& Buffer.isBuffer(value)\n\t) return true;\n\t// oxlint-disable-next-line drizzle-internal/no-instanceof\n\tif (value instanceof ArrayBuffer) return true;\n\tif (ArrayBuffer.isView(value)) return true;\n\treturn false;\n}\n\nfunction arrayTypeId(arr: readonly unknown[]) {\n\tif (!arr.length) return 'array<void>';\n\tlet elementId: string | undefined;\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tconst id = jsTypeId(arr[i]);\n\n\t\tif (!elementId) {\n\t\t\telementId = id;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (elementId !== id) {\n\t\t\telementId = `${elementId},${id}`;\n\t\t\tcontinue;\n\t\t}\n\n\t\telementId = id;\n\t}\n\treturn `array<${elementId}>`;\n}\n\n// replacement for type OID\nfunction jsTypeId(value: unknown): string {\n\tif (value === null) return 'null';\n\tif (is(value, Placeholder)) return 'placeholder';\n\t// oxlint-disable-next-line drizzle-internal/no-instanceof\n\tif (value instanceof Date) return 'date';\n\tif (Array.isArray(value)) return arrayTypeId(value);\n\tif (isBinary(value)) return 'binary';\n\treturn typeof value;\n}\n\nfunction rotl(x: number, r: number): number {\n\treturn (x << r) | (x >>> (32 - r));\n}\n\nfunction fmix32(h: number): number {\n\th ^= h >>> 16;\n\th = Math.imul(h, 0x85ebca6b);\n\th ^= h >>> 13;\n\th = Math.imul(h, 0xc2b2ae35);\n\th ^= h >>> 16;\n\treturn h >>> 0;\n}\n\nconst safeChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_';\nfunction encodeLane(h: number): string {\n\tlet result = '';\n\tfor (let i = 0; i < 6; i++) {\n\t\tresult += safeChars[h % 62];\n\t\th = (h / 62) | 0;\n\t}\n\treturn result;\n}\n\n// `encodeLane` starting with letter to emit valid identifier\nfunction encodeLeadLane(h: number): string {\n\tlet result = safeChars[h % 52]!;\n\th = (h / 52) | 0;\n\tfor (let i = 0; i < 5; i++) {\n\t\tresult += safeChars[h % 62];\n\t\th = (h / 62) | 0;\n\t}\n\treturn result;\n}\n\nexport function preparedStatementName(\n\tsql: string,\n\tparams: readonly unknown[] = [],\n): string {\n\tlet paramIds = '';\n\tfor (let i = 0; i < params.length; i++) {\n\t\tif (i) paramIds += ',';\n\t\tparamIds += jsTypeId(params[i]);\n\t}\n\n\tlet h1 = 0x9e3779b1;\n\tlet h2 = 0x85ebca77;\n\tlet h3 = 0xc2b2ae3d;\n\tlet total = 0;\n\n\tfor (let s = 0; s < 2; s++) {\n\t\tconst str = s === 0 ? sql : paramIds;\n\t\tconst len = str.length;\n\t\ttotal += len;\n\n\t\tlet i = 0;\n\t\tfor (; i + 1 < len; i += 2) {\n\t\t\tconst k = (str.charCodeAt(i) | (str.charCodeAt(i + 1) << 16)) >>> 0;\n\t\t\th1 = (Math.imul(rotl(h1 ^ k, 13), 5) + 0xe6546b64) | 0;\n\t\t\th2 = (Math.imul(rotl(h2 ^ k, 17), 3) + 0x9e3779b9) | 0;\n\t\t\th3 = (Math.imul(rotl(h3 ^ k, 19), 7) + 0x85ebca6b) | 0;\n\t\t}\n\t\tif (i < len) {\n\t\t\tconst k = str.charCodeAt(i);\n\t\t\th1 = (Math.imul(rotl(h1 ^ k, 13), 5) + 0xe6546b64) | 0;\n\t\t\th2 = (Math.imul(rotl(h2 ^ k, 17), 3) + 0x9e3779b9) | 0;\n\t\t\th3 = (Math.imul(rotl(h3 ^ k, 19), 7) + 0x85ebca6b) | 0;\n\t\t}\n\n\t\th1 = (h1 ^ 0x2545f491) | 0;\n\t\th3 = (h3 ^ 0x14057b7d) | 0;\n\t}\n\n\th1 ^= total;\n\th2 ^= total;\n\th3 ^= total;\n\th1 = (h1 + h2 + h3) | 0;\n\th2 = (h2 + h1) | 0;\n\th3 = (h3 + h1) | 0;\n\th1 = fmix32(h1);\n\th2 = fmix32(h2);\n\th3 = fmix32(h3);\n\th2 = (h2 + h1) >>> 0;\n\th3 = (h3 + h2) >>> 0;\n\n\treturn encodeLeadLane(h1) + encodeLane(h2) + encodeLane(h3);\n}\n"],"mappings":"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"}