@vibeorm/extensions 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -493,7 +493,7 @@ function search(options = {}) {
493
493
  if (fields.length === 0) {
494
494
  return { error: "@@search requires a field list, e.g. @@search([title, body])" };
495
495
  }
496
- const missing = fields.find((name2) => !fieldNames.includes(name2));
496
+ const missing = fields.find((name) => !fieldNames.includes(name));
497
497
  if (missing !== undefined) {
498
498
  return { error: `@@search references unknown field "${missing}"` };
499
499
  }
@@ -627,7 +627,6 @@ function search(options = {}) {
627
627
  }
628
628
  });
629
629
  }
630
-
631
630
  // packages/extensions/src/vector/index.ts
632
631
  import { VibeError as VibeError3, defineExtension as defineExtension2, unsupportedCapability as unsupportedCapability2 } from "@vibeorm/schema";
633
632
  import { ParamCollector as ParamCollector2, getSqlDialect as getSqlDialect2, renderExpr as renderExpr2 } from "@vibeorm/sql";
@@ -939,7 +938,6 @@ function vector(options = {}) {
939
938
  }
940
939
  });
941
940
  }
942
-
943
941
  // packages/extensions/src/trgm/index.ts
944
942
  import { VibeError as VibeError4, defineExtension as defineExtension3, unsupportedCapability as unsupportedCapability3 } from "@vibeorm/schema";
945
943
  import { getSqlDialect as getSqlDialect3 } from "@vibeorm/sql";
@@ -1120,12 +1118,12 @@ function trgm(options = {}) {
1120
1118
  });
1121
1119
  }
1122
1120
  export {
1123
- vector,
1124
- trgm,
1125
- search,
1126
- resolveSearchEngine,
1121
+ createSearchDelegate,
1127
1122
  createVectorNamespace,
1128
- createSearchDelegate
1123
+ resolveSearchEngine,
1124
+ search,
1125
+ trgm,
1126
+ vector
1129
1127
  };
1130
1128
 
1131
- //# debugId=02443E6D9865955B64756E2164756E21
1129
+ //# debugId=CB654FBC580AA6A164756E2164756E21
package/dist/index.js.map CHANGED
@@ -7,7 +7,7 @@
7
7
  "/**\n * `vector` — pgvector similarity search (extensions.md §5).\n *\n * Schema: `embedding Vector(1536)` (field type) + `@@vector([embedding],\n * metric: \"cosine\", index: \"hnsw\")` (index declaration). Client surface is a\n * namespace (D9): `db.doc.vector.nearest({ by, to, take })` and\n * `db.doc.vector.set({ where, by, to })`. Postgres AND pglite (on pglite’s\n * current 0.5 line pgvector loads from @electric-sql/pglite-pgvector — the\n * 0.3 line bundled it as @electric-sql/pglite/vector); sqlite/mysql →\n * VIBE_UNSUPPORTED_CAPABILITY at generate time.\n */\n\nimport { VibeError, defineExtension, unsupportedCapability } from \"@vibeorm/schema\";\nimport type {\n ExtensionArtifact,\n ExtensionSchemaContext,\n VibeExtension,\n} from \"@vibeorm/schema\";\nimport { ParamCollector, getSqlDialect, renderExpr } from \"@vibeorm/sql\";\nimport type { ExtensionMountContext } from \"@vibeorm/runtime\";\nimport {\n finiteNumber,\n columnNameOf,\n declString,\n declStringArray,\n isSafeSqlName,\n pgExtensionCheck,\n primaryKeyFieldOf,\n tableNameOf,\n} from \"../shared.ts\";\n\n// ─── Options & types ──────────────────────────────────────────────\n\nexport type VectorOptions = Record<string, never>;\n\nexport type VectorMetric = \"cosine\" | \"l2\" | \"ip\";\n\n/** One nearest-neighbour hit. */\nexport type VectorHit<T> = {\n readonly row: T;\n /** Distance under the query's metric — smaller is closer (ip is negated inner product). */\n readonly distance: number;\n};\n\nconst VERSION = \"2.0.0-alpha.0\";\n\nconst METRIC_OPERATOR: Readonly<Record<VectorMetric, string>> = {\n cosine: \"<=>\",\n l2: \"<->\",\n ip: \"<#>\",\n};\n\nconst METRIC_OPCLASS: Readonly<Record<VectorMetric, string>> = {\n cosine: \"vector_cosine_ops\",\n l2: \"vector_l2_ops\",\n ip: \"vector_ip_ops\",\n};\n\nconst METRICS: readonly VectorMetric[] = [\"cosine\", \"l2\", \"ip\"];\nconst INDEX_KINDS: readonly string[] = [\"hnsw\", \"ivfflat\"];\nconst DISTANCE_ALIAS = \"_vibe_distance\";\n\n// pgvector v0.8.2 src/hnsw.h and src/ivfflat.h reloption bounds.\nconst INDEX_BOUNDS: Readonly<Record<string, readonly [number, number]>> = {\n m: [2, 100],\n efConstruction: [4, 1000],\n lists: [1, 32768],\n};\n\nfunction indexOptionError(params: { declaration: Readonly<Record<string, unknown>> }): string | undefined {\n for (const [key, [min, max]] of Object.entries(INDEX_BOUNDS)) {\n const value = params.declaration[key];\n if (value !== undefined && (typeof value !== \"number\" || !Number.isInteger(value) || value < min || value > max)) {\n return `${key} must be an integer between ${min} and ${max}`;\n }\n }\n return undefined;\n}\n\n// ─── Declaration helpers ──────────────────────────────────────────\n\ntype VectorColumnDecl = { readonly column: string; readonly dims: number };\n\nfunction vectorColumnsOf(params: {\n declaration: Readonly<Record<string, unknown>>;\n}): Readonly<Record<string, { readonly dims: number }>> {\n const columns = params.declaration[\"columns\"];\n if (columns === null || typeof columns !== \"object\" || Array.isArray(columns)) return {};\n const out: Record<string, { dims: number }> = {};\n for (const [field, spec] of Object.entries(columns as Record<string, unknown>)) {\n if (spec === null || typeof spec !== \"object\") continue;\n const dims = (spec as { dims?: unknown }).dims;\n if (typeof dims === \"number\") out[field] = { dims };\n }\n return out;\n}\n\n// ─── Artifacts ────────────────────────────────────────────────────\n\nfunction vectorArtifacts(ctx: ExtensionSchemaContext): readonly ExtensionArtifact[] {\n if (ctx.dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect: ctx.dialect,\n feature: \"the vector extension (pgvector)\",\n hint: \"pgvector exists on postgres/pglite only (sqlite-vec/mysql are post-2.0)\",\n });\n }\n const dialect = getSqlDialect({ dialect: ctx.dialect });\n const quote = (name: string): string => dialect.quoteIdent({ name });\n\n const artifacts: ExtensionArtifact[] = [\n {\n id: \"vector:extension\",\n owns: { kind: \"postgresExtension\", name: \"vector\" },\n create: [\"CREATE EXTENSION IF NOT EXISTS vector;\"],\n drop: [\"DROP EXTENSION IF EXISTS vector;\"],\n },\n ];\n\n for (const [modelName, declaration] of Object.entries(ctx.declarations)) {\n const model = ctx.schema.models.find((candidate) => candidate.name === modelName);\n if (model === undefined) continue;\n const invalidOption = indexOptionError({ declaration });\n if (invalidOption !== undefined) {\n throw new VibeError({ code: \"VIBE_SCHEMA_INVALID\", message: invalidOption, meta: { model: modelName } });\n }\n const table = tableNameOf({ model });\n const columns = vectorColumnsOf({ declaration });\n\n const indexFields = declStringArray(declaration, \"fields\") ?? [];\n const kindRaw = declString(declaration, \"index\") ?? \"hnsw\";\n const metricRaw = declString(declaration, \"metric\") ?? \"cosine\";\n const metric = METRICS.find((candidate) => candidate === metricRaw) ?? \"cosine\";\n\n for (const field of indexFields) {\n if (columns[field] === undefined) {\n throw new VibeError({\n code: \"VIBE_SCHEMA_INVALID\",\n message: `@@vector on \"${modelName}\" indexes \"${field}\", which is not a Vector(n) column`,\n meta: { model: modelName, field },\n });\n }\n const column = columnNameOf({ model, field });\n // Adoption override (validated single-field-only at parse): consumers\n // with a live index keep its name instead of a rename migration.\n const nameOverride = indexFields.length === 1 ? declString(declaration, \"indexName\") : undefined;\n const indexName = nameOverride ?? `${table}_${column}_${kindRaw}_idx`;\n const withOptions: string[] = [];\n const m = declaration[\"m\"];\n const efConstruction = declaration[\"efConstruction\"];\n const lists = declaration[\"lists\"];\n if (kindRaw === \"hnsw\") {\n if (typeof m === \"number\") withOptions.push(`m = ${m}`);\n if (typeof efConstruction === \"number\") withOptions.push(`ef_construction = ${efConstruction}`);\n } else if (typeof lists === \"number\") {\n withOptions.push(`lists = ${lists}`);\n }\n const withClause = withOptions.length === 0 ? \"\" : ` WITH (${withOptions.join(\", \")})`;\n artifacts.push({\n id: `vector:${modelName}:${field}`,\n owns: { kind: \"index\", table, name: indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(indexName)} ON ${quote(table)} USING ${kindRaw} (${quote(column)} ${METRIC_OPCLASS[metric]})${withClause};`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(indexName)};`],\n });\n }\n }\n return artifacts;\n}\n\n// ─── Runtime namespace (generated-glue target) ────────────────────\n\n/** Baked per-model config the generator writes into the client. */\nexport type VectorNamespaceConfig = {\n readonly table: string;\n /** Field name → column + dims. */\n readonly columns: Readonly<Record<string, VectorColumnDecl>>;\n /** Default metric from the schema declaration. */\n readonly metric: VectorMetric;\n};\n\nexport type VectorNearestArgs = {\n readonly by: string;\n readonly to: readonly number[];\n readonly metric?: VectorMetric;\n readonly take?: number;\n readonly where?: Record<string, unknown>;\n readonly maxDistance?: number;\n};\n\nexport type VectorSetArgs = {\n readonly where: Record<string, unknown>;\n readonly by: string;\n readonly to: readonly number[];\n};\n\nexport type VectorNamespace = {\n readonly nearest: (args: VectorNearestArgs) => Promise<VectorHit<Record<string, unknown>>[]>;\n readonly set: (args: VectorSetArgs) => Promise<number>;\n};\n\nfunction resolveColumn(params: {\n config: VectorNamespaceConfig;\n args: { by: string; to: readonly number[] };\n}): { column: string; literal: string } {\n const { config, args } = params;\n const spec = config.columns[args.by];\n if (spec === undefined) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `\"${args.by}\" is not a Vector(n) column — declared: ${Object.keys(config.columns).join(\", \")}`,\n meta: { by: args.by },\n });\n }\n if (!Array.isArray(args.to) || args.to.some((entry) => typeof entry !== \"number\" || !Number.isFinite(entry))) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `vector \"to\" must be an array of finite numbers`,\n meta: { by: args.by },\n });\n }\n if (args.to.length !== spec.dims) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `vector \"to\" has ${args.to.length} dimensions, \"${args.by}\" expects ${spec.dims}`,\n meta: { by: args.by, dims: spec.dims },\n });\n }\n return { column: spec.column, literal: `[${args.to.join(\",\")}]` };\n}\n\n/**\n * The generated client's glue target: bakes per-model config at generate time,\n * mounts as the `vector` namespace at runtime (D9).\n */\nexport function createVectorNamespace(\n config: VectorNamespaceConfig,\n): (ctx: ExtensionMountContext) => VectorNamespace {\n return (ctx: ExtensionMountContext): VectorNamespace => {\n const dialect = ctx.dialect;\n const quote = (name: string): string => dialect.quoteIdent({ name });\n const t = quote(\"t\");\n\n return {\n nearest: async (args: VectorNearestArgs): Promise<VectorHit<Record<string, unknown>>[]> => {\n const take = finiteNumber({ value: args.take === undefined ? 10 : args.take, name: \"take\", integer: true, min: 1 });\n if (args.maxDistance !== undefined) finiteNumber({ value: args.maxDistance, name: \"maxDistance\" });\n const { column, literal } = resolveColumn({ config, args });\n const metric = args.metric ?? config.metric;\n const op = METRIC_OPERATOR[metric];\n const col = `${t}.${quote(column)}`;\n const collector = new ParamCollector(dialect);\n\n let text = `SELECT ${t}.*, (${col} ${op} ${collector.add(literal)}) AS ${quote(DISTANCE_ALIAS)}`;\n text += ` FROM ${quote(config.table)} AS ${t}`;\n text += ` WHERE ${col} IS NOT NULL`;\n if (args.where !== undefined) {\n const expr = ctx.compileWhere({ where: args.where, qualify: \"t\" });\n if (expr !== undefined) text += ` AND (${renderExpr({ dialect, expr, collector })})`;\n }\n if (args.maxDistance !== undefined) {\n text += ` AND (${col} ${op} ${collector.add(literal)}) < ${collector.add(args.maxDistance)}`;\n }\n text += ` ORDER BY ${col} ${op} ${collector.add(literal)} LIMIT ${take}`;\n\n const rows = await ctx.executeRows({\n text,\n values: collector.values,\n method: \"vector.nearest\",\n });\n return rows.map((row) => {\n const { [DISTANCE_ALIAS]: distance, ...rest } = row;\n return { row: rest, distance: Number(distance) };\n });\n },\n\n set: async (args: VectorSetArgs): Promise<number> => {\n const { column, literal } = resolveColumn({ config, args });\n const collector = new ParamCollector(dialect);\n let text = `UPDATE ${quote(config.table)} SET ${quote(column)} = ${collector.add(literal)}`;\n const expr = ctx.compileWhere({ where: args.where });\n if (expr !== undefined) text += ` WHERE ${renderExpr({ dialect, expr, collector })}`;\n text += ` RETURNING 1 AS ${quote(\"_vibe_set\")}`;\n const rows = await ctx.executeRows({ text, values: collector.values, method: \"vector.set\" });\n return rows.length;\n },\n };\n };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\n/**\n * pgvector similarity search.\n *\n * @example schema\n * // embedding Vector(1536)\n * // @@vector([embedding], metric: \"cosine\", index: \"hnsw\")\n * const near = await db.doc.vector.nearest({ by: \"embedding\", to: queryVec, take: 10 });\n */\nexport function vector(options: VectorOptions = {}): VibeExtension {\n return defineExtension({\n name: \"vector\",\n version: VERSION,\n options: { ...options },\n requires: { postgresql: { extension: \"vector\" }, pglite: { extension: \"vector\" } },\n\n schema: {\n fieldTypes: [\n {\n name: \"Vector\",\n lower: ({ field, args }) => {\n const dims = Number(args[0]);\n if (!Number.isInteger(dims) || dims <= 0) {\n return { error: \"Vector(n) requires a positive integer dimension, e.g. Vector(1536)\" };\n }\n return {\n nativeType: `vector(${dims})`,\n declaration: { columns: { [field]: { dims } } },\n };\n },\n },\n ],\n modelAttributes: [\n {\n name: \"vector\",\n parse: ({ args, fieldNames }) => {\n const fields = args.fields ?? [];\n if (fields.length === 0) {\n return { error: \"@@vector requires a field list, e.g. @@vector([embedding])\" };\n }\n const missing = fields.find((name) => !fieldNames.includes(name));\n if (missing !== undefined) {\n return { error: `@@vector references unknown field \"${missing}\"` };\n }\n const metric = args.named[\"metric\"];\n if (metric !== undefined && !METRICS.includes(metric as VectorMetric)) {\n return { error: `metric must be one of ${METRICS.join(\", \")}` };\n }\n const kind = args.named[\"index\"];\n if (kind !== undefined && !INDEX_KINDS.includes(String(kind))) {\n return { error: `index must be one of ${INDEX_KINDS.join(\", \")}` };\n }\n const invalidOption = indexOptionError({ declaration: args.named });\n if (invalidOption !== undefined) return { error: invalidOption };\n const indexName = args.named[\"indexName\"];\n if (indexName !== undefined) {\n if (typeof indexName !== \"string\" || !isSafeSqlName({ name: indexName })) {\n return { error: `indexName must be a plain identifier` };\n }\n if (fields.length !== 1) {\n return {\n error: `indexName needs exactly one indexed field — split @@vector declarations to name each index`,\n };\n }\n }\n return { declaration: { fields, ...args.named } };\n },\n },\n ],\n indexKinds: [\"hnsw\", \"ivfflat\"],\n },\n\n migrate: { artifacts: vectorArtifacts },\n\n client: {\n model: ({ model, dialect, declaration, typeNames }) => {\n const columns = vectorColumnsOf({ declaration });\n const fieldNames = Object.keys(columns);\n if (fieldNames.length === 0) return null;\n if (dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect,\n feature: `the vector extension (declared on model \"${model.name}\")`,\n hint: \"pgvector exists on postgres/pglite only\",\n });\n }\n const metricRaw = declString(declaration, \"metric\");\n const metric = METRICS.find((candidate) => candidate === metricRaw) ?? \"cosine\";\n const config: VectorNamespaceConfig = {\n table: tableNameOf({ model }),\n columns: Object.fromEntries(\n fieldNames.map((field) => [\n field,\n { column: columnNameOf({ model, field }), dims: columns[field]!.dims },\n ]),\n ),\n metric,\n };\n const byUnion = fieldNames.map((name) => JSON.stringify(name)).join(\" | \");\n return {\n kind: \"namespace\",\n // `nearest` reads; `set` issues an UPDATE, so it is NOT classified and\n // a $readOnly client neither declares nor forwards it.\n readOnly: [\"nearest\"],\n runtimeGlue: `createVectorNamespace(${JSON.stringify(config)})`,\n imports: [{ from: \"@vibeorm/extensions/vector\", names: [\"createVectorNamespace\"] }],\n dtsImports: [{ from: \"@vibeorm/extensions/vector\", names: [\"VectorHit\", \"VectorMetric\"] }],\n dts: [\n `readonly vector: {`,\n ` readonly nearest: (args: {`,\n ` readonly by: ${byUnion};`,\n ` readonly to: readonly number[];`,\n ` readonly metric?: VectorMetric;`,\n ` readonly take?: number;`,\n ` readonly where?: ${typeNames.whereInput};`,\n ` readonly maxDistance?: number;`,\n ` }) => Promise<VectorHit<${typeNames.payload}>[]>;`,\n ` readonly set: (args: {`,\n ` readonly where: ${typeNames.whereInput};`,\n ` readonly by: ${byUnion};`,\n ` readonly to: readonly number[];`,\n ` }) => Promise<number>;`,\n `};`,\n ],\n };\n },\n },\n\n doctor: async ({ execute, dialect }) => {\n if (dialect !== \"postgres\") {\n return { checks: [{ name: \"vector dialect\", ok: false, note: \"postgres/pglite only\" }] };\n }\n return { checks: [await pgExtensionCheck({ execute, name: \"vector\" })] };\n },\n });\n}\n",
8
8
  "/**\n * `trgm` — pg_trgm fuzzy matching (extensions.md §6). Operators-only: it\n * claims NO client surface. `where: { name: { similarTo: \"jon\" } }` compiles\n * to a bound predicate plus `gin_trgm_ops` indexes over the fields declared\n * in `@@trgm([...])`. Postgres/pglite only; anywhere else →\n * VIBE_UNSUPPORTED_CAPABILITY.\n *\n * INDEXABILITY (SQL review M8 + PG-1): a bare `similarity(col, $q) >= $t` is\n * a guaranteed full scan — GIN/GiST trigram indexes serve the `%` operator,\n * not the function. The predicate compiles as\n * `(col % $q AND similarity(col, $q) >= $t)` only when the effective\n * threshold is ≥ max(configured threshold, 0.3): `%` prunes at the\n * CONNECTION's `pg_trgm.similarity_threshold`, and pooled connections that\n * `onConnect` never touched keep the server default 0.3 — so the gate floor\n * must assume 0.3 even when a lower threshold was configured. Below the\n * floor, the predicate falls back to the full-scan form — correct on every\n * connection. A postgresql.conf value raised ABOVE the floor can still\n * prune; the doctor's similarity_threshold check surfaces it.\n */\n\nimport { VibeError, defineExtension, unsupportedCapability } from \"@vibeorm/schema\";\nimport type {\n ExtensionArtifact,\n ExtensionSchemaContext,\n VibeExtension,\n} from \"@vibeorm/schema\";\nimport { getSqlDialect } from \"@vibeorm/sql\";\nimport { columnNameOf, declStringArray, pgExtensionCheck, tableNameOf } from \"../shared.ts\";\n\n// ─── Options ──────────────────────────────────────────────────────\n\nexport type TrgmOptions = {\n /**\n * Similarity threshold for `similarTo` (default 0.3). Also applied to the\n * session's `pg_trgm.similarity_threshold` on `$connect()` so raw `%`\n * queries agree with the operator.\n */\n readonly threshold?: number;\n};\n\n/** Operand of `similarTo`: the text, or text plus a per-use threshold. */\nexport type SimilarToOperand = string | { readonly text: string; readonly threshold?: number };\n\nconst DEFAULT_THRESHOLD = 0.3;\nconst VERSION = \"2.0.0-alpha.0\";\n\nfunction validThreshold(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 && value <= 1;\n}\n\n// ─── Artifacts ────────────────────────────────────────────────────\n\nfunction trgmArtifacts(ctx: ExtensionSchemaContext): readonly ExtensionArtifact[] {\n if (ctx.dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect: ctx.dialect,\n feature: \"the trgm extension (pg_trgm)\",\n hint: \"pg_trgm exists on postgres/pglite only\",\n });\n }\n const dialect = getSqlDialect({ dialect: ctx.dialect });\n const quote = (name: string): string => dialect.quoteIdent({ name });\n\n const artifacts: ExtensionArtifact[] = [\n {\n id: \"trgm:extension\",\n owns: { kind: \"postgresExtension\", name: \"pg_trgm\" },\n create: [\"CREATE EXTENSION IF NOT EXISTS pg_trgm;\"],\n drop: [\"DROP EXTENSION IF EXISTS pg_trgm;\"],\n },\n ];\n\n for (const [modelName, declaration] of Object.entries(ctx.declarations)) {\n const model = ctx.schema.models.find((candidate) => candidate.name === modelName);\n if (model === undefined) continue;\n const table = tableNameOf({ model });\n for (const field of declStringArray(declaration, \"fields\") ?? []) {\n const column = columnNameOf({ model, field });\n const indexName = `${table}_${column}_trgm_idx`;\n artifacts.push({\n id: `trgm:${modelName}:${field}`,\n owns: { kind: \"index\", table, name: indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(indexName)} ON ${quote(table)} USING gin (${quote(column)} gin_trgm_ops);`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(indexName)};`],\n });\n }\n }\n return artifacts;\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\n/**\n * pg_trgm fuzzy matching.\n *\n * @example vibeorm.config.ts / VibeClient\n * extensions: [trgm({ threshold: 0.3 })]\n *\n * @example schema\n * // @@trgm([name]) → gin_trgm_ops index on \"name\"\n * await db.user.findMany({ where: { name: { similarTo: \"jon\" } } });\n */\nexport function trgm(options: TrgmOptions = {}): VibeExtension {\n const threshold = options.threshold === undefined ? DEFAULT_THRESHOLD : options.threshold;\n if (!validThreshold(threshold)) {\n throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"trgm threshold must be a finite number between 0 and 1\", meta: { argument: \"threshold\" } });\n }\n\n return defineExtension({\n name: \"trgm\",\n version: VERSION,\n options: { ...options },\n requires: { postgresql: { extension: \"pg_trgm\" }, pglite: { extension: \"pg_trgm\" } },\n\n schema: {\n modelAttributes: [\n {\n name: \"trgm\",\n parse: ({ args, fieldNames }) => {\n const fields = args.fields ?? [];\n if (fields.length === 0) {\n return { error: \"@@trgm requires a field list, e.g. @@trgm([name])\" };\n }\n const missing = fields.find((name) => !fieldNames.includes(name));\n if (missing !== undefined) {\n return { error: `@@trgm references unknown field \"${missing}\"` };\n }\n return { declaration: { fields } };\n },\n },\n ],\n indexKinds: [\"gin_trgm\"],\n },\n\n migrate: { artifacts: trgmArtifacts },\n\n sql: {\n whereOperators: [\n {\n name: \"similarTo\",\n compile: ({ column, operand, dialect, options: extOptions }) => {\n if (dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect,\n feature: 'the \"similarTo\" operator (pg_trgm)',\n hint: \"pg_trgm exists on postgres/pglite only\",\n });\n }\n const text =\n typeof operand === \"string\"\n ? operand\n : typeof operand === \"object\" && operand !== null && \"text\" in operand\n ? (operand as { text: unknown }).text\n : undefined;\n if (typeof text !== \"string\") {\n return { error: 'expects a string or { text, threshold? }' };\n }\n const perUse =\n typeof operand === \"object\" && operand !== null && \"threshold\" in operand\n ? (operand as { threshold: unknown }).threshold\n : undefined;\n const configured = extOptions[\"threshold\"];\n if ((configured !== undefined && !validThreshold(configured)) || (perUse !== undefined && !validThreshold(perUse))) {\n return { error: \"threshold must be a finite number between 0 and 1\" };\n }\n const sessionThreshold = typeof configured === \"number\" ? configured : DEFAULT_THRESHOLD;\n const effective = typeof perUse === \"number\" ? perUse : sessionThreshold;\n // PG-1 (SQL review round 2): `%` prunes at the CONNECTION's\n // pg_trgm.similarity_threshold. onConnect SETs the configured\n // value only on connections `$connect` touches — POOLED\n // connections keep the server default 0.3 (live-proven dropped\n // rows: configured 0.2, similarity 0.273, `%` pruned at 0.3).\n // Gate the index route on effective >= max(configured, 0.3): a\n // connection whose actual GUC is LOWER than effective only widens\n // the prefilter (safe). A postgresql.conf value RAISED above the\n // effective threshold can still prune — the doctor's\n // similarity_threshold check surfaces exactly that (documented in\n // docs/dialect-notes.md).\n if (effective >= Math.max(sessionThreshold, DEFAULT_THRESHOLD)) {\n // M8: `%` walks the gin_trgm_ops index; similarity() enforces\n // the exact bound.\n return {\n fragment: {\n parts: [\n \"(\",\n { ident: column },\n \" % \",\n { param: text },\n \" AND similarity(\",\n { ident: column },\n \", \",\n { param: text },\n \") >= \",\n { param: effective },\n \")\",\n ],\n },\n };\n }\n // Effective threshold below the `%` gate floor (max(configured,\n // 0.3)): on a pooled connection the GUC may still be 0.3, so `%`\n // would prune matches the caller asked for — honest full scan.\n return {\n fragment: {\n parts: [\n \"similarity(\",\n { ident: column },\n \", \",\n { param: text },\n \") >= \",\n { param: effective },\n ],\n },\n };\n },\n },\n ],\n },\n\n runtime: {\n onConnect: async ({ execute, dialect, options: extOptions }) => {\n // Session default for raw `%` queries; the operator itself never\n // depends on it. Only meaningful when explicitly configured.\n if (dialect !== \"postgres\" || typeof extOptions[\"threshold\"] !== \"number\") return;\n await execute({\n text: `SET pg_trgm.similarity_threshold = ${Number(threshold)}`,\n });\n },\n },\n\n doctor: async ({ execute, dialect }) => {\n if (dialect !== \"postgres\") {\n return { checks: [{ name: \"trgm dialect\", ok: false, note: \"postgres/pglite only\" }] };\n }\n const checks = [await pgExtensionCheck({ execute, name: \"pg_trgm\" })];\n // PG-1: the `%` route assumes the connection's GUC is ≤ the gate floor\n // (max(configured, 0.3)). A postgresql.conf value raised ABOVE it makes\n // `%` prune rows the similarity() bound would keep — surface it here.\n // current_setting(…, true) returns NULL instead of ERRORING when the\n // pg_trgm library is not session-loaded yet (SHOW errors there — a\n // false alarm on healthy setups, closure item 3); NULL means no value\n // is configured anywhere, so the 0.3 default (≤ floor) applies.\n const floor = Math.max(threshold, DEFAULT_THRESHOLD);\n try {\n const rows = await execute({\n text: `SELECT current_setting('pg_trgm.similarity_threshold', true) AS \"threshold\"`,\n });\n const raw = rows[0]?.[\"threshold\"];\n if (raw === undefined || raw === null || raw === \"\") {\n checks.push({\n name: \"trgm similarity_threshold\",\n ok: true,\n note: `not set in this session — the 0.3 default applies (≤ gate floor ${floor})`,\n });\n return { checks };\n }\n const server = Number(raw);\n checks.push(\n Number.isNaN(server)\n ? { name: \"trgm similarity_threshold\", ok: false, note: \"could not read pg_trgm.similarity_threshold\" }\n : server <= floor\n ? { name: \"trgm similarity_threshold\", ok: true, note: `server ${server} ≤ gate floor ${floor}` }\n : {\n name: \"trgm similarity_threshold\",\n ok: false,\n note: `server pg_trgm.similarity_threshold=${server} exceeds the %-gate floor ${floor} — indexed similarTo queries can drop rows; lower the GUC or raise the extension threshold`,\n },\n );\n } catch {\n checks.push({\n name: \"trgm similarity_threshold\",\n ok: false,\n note: \"reading pg_trgm.similarity_threshold failed\",\n });\n }\n return { checks };\n },\n });\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "02443E6D9865955B64756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "CB654FBC580AA6A164756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -493,7 +493,7 @@ function search(options = {}) {
493
493
  if (fields.length === 0) {
494
494
  return { error: "@@search requires a field list, e.g. @@search([title, body])" };
495
495
  }
496
- const missing = fields.find((name2) => !fieldNames.includes(name2));
496
+ const missing = fields.find((name) => !fieldNames.includes(name));
497
497
  if (missing !== undefined) {
498
498
  return { error: `@@search references unknown field "${missing}"` };
499
499
  }
@@ -628,9 +628,9 @@ function search(options = {}) {
628
628
  });
629
629
  }
630
630
  export {
631
- search,
631
+ createSearchDelegate,
632
632
  resolveSearchEngine,
633
- createSearchDelegate
633
+ search
634
634
  };
635
635
 
636
- //# debugId=632D624588224DB664756E2164756E21
636
+ //# debugId=A857A83B928F63C964756E2164756E21
@@ -5,7 +5,7 @@
5
5
  "/**\n * `search` — unified full-text search (extensions.md §4).\n *\n * One API, four engines resolved per dialect at GENERATE time:\n * - `tsvector` (postgres/pglite): generated STORED tsvector column + GIN,\n * websearch_to_tsquery / ts_rank_cd / ts_headline.\n * - `bm25` (postgres + ParadeDB pg_search, opt-in via `engine: \"bm25\"`):\n * bm25 index + `@@@` + paradedb.score/snippet.\n * - `fts5` (sqlite): external-content virtual table + sync triggers,\n * MATCH / bm25() / snippet().\n * - `fulltext` (mysql): FULLTEXT index + MATCH … AGAINST; highlights are\n * typed `null` (mysql has none).\n *\n * `engine: \"auto\"` picks the dialect's native engine (never bm25 — ParadeDB\n * availability is unknowable at generate time; opt in explicitly).\n *\n * `prefix: true` (per query) turns the text into per-token prefix matching\n * for type-ahead boxes: unicode letter/number tokens, each matched as a\n * prefix (tsvector `tok:*` via to_tsquery, fts5 `\"tok\"*`, fulltext BOOLEAN\n * MODE `+tok*`). Refused on bm25 — prefix behavior there is decided by the\n * index tokenizer, which this extension does not configure.\n */\n\nimport { VibeError, defineExtension, unsupportedCapability } from \"@vibeorm/schema\";\nimport type {\n Dialect,\n ExtensionArtifact,\n ExtensionSchemaContext,\n ModelIR,\n Provider,\n VibeExtension,\n} from \"@vibeorm/schema\";\nimport { finiteNumber } from \"../shared.ts\";\nimport { ParamCollector, getSqlDialect, renderExpr } from \"@vibeorm/sql\";\nimport type { SqlDialect } from \"@vibeorm/sql\";\nimport type { ExtensionMountContext } from \"@vibeorm/runtime\";\nimport {\n columnNameOf,\n declNumberArray,\n declString,\n declStringArray,\n isSafeSqlName,\n pgExtensionCheck,\n primaryKeyFieldOf,\n tableNameOf,\n} from \"../shared.ts\";\n\n// ─── Options & types ──────────────────────────────────────────────\n\nexport type SearchEngine = \"bm25\" | \"tsvector\" | \"fts5\" | \"fulltext\";\n\nexport type SearchOptions = {\n /** Engine choice; `\"auto\"` (default) resolves per dialect. */\n readonly engine?: SearchEngine | \"auto\";\n /** Default text-search language for the tsvector engine (default \"english\"). */\n readonly language?: string;\n /**\n * Ranking function for the tsvector engine (default `\"ts_rank_cd\"`).\n * `ts_rank` ignores cover density, so the two order results differently —\n * consumers migrating hand-written `ts_rank` queries keep their ordering by\n * setting this. A per-model `rank:` declaration overrides the default.\n */\n readonly rank?: \"ts_rank\" | \"ts_rank_cd\";\n};\n\n/** One search hit. `highlights` is `null` on engines without highlighting. */\nexport type SearchHit<T> = {\n readonly row: T;\n readonly score: number;\n readonly highlights: readonly string[] | null;\n};\n\nconst VERSION = \"2.0.0-alpha.1\";\nconst SCORE_ALIAS = \"_vibe_score\";\nconst HIGHLIGHT_ALIAS = \"_vibe_highlight\";\nconst WEIGHT_LETTERS = [\"A\", \"B\", \"C\", \"D\"] as const;\n\n// ─── Engine resolution (generate/migrate time) ────────────────────\n\n/** Resolve the engine for a dialect; throws on impossible explicit choices. */\nexport function resolveSearchEngine(params: {\n dialect: Dialect;\n provider: Provider;\n requested: SearchEngine | \"auto\";\n}): SearchEngine {\n const { dialect, provider, requested } = params;\n const native: SearchEngine = dialect === \"postgres\" ? \"tsvector\" : dialect === \"sqlite\" ? \"fts5\" : \"fulltext\";\n if (requested === \"auto\") return native;\n if (requested === native) return native;\n if (requested === \"bm25\" && dialect === \"postgres\") {\n if (provider === \"pglite\") {\n throw unsupportedCapability({\n dialect,\n feature: 'the search engine \"bm25\" (ParadeDB pg_search)',\n hint: 'pglite does not bundle pg_search — use engine \"auto\"/\"tsvector\"',\n });\n }\n return \"bm25\";\n }\n throw unsupportedCapability({\n dialect,\n feature: `the search engine \"${requested}\"`,\n hint: `this dialect supports \"${native}\"${dialect === \"postgres\" ? ' and \"bm25\"' : \"\"}`,\n });\n}\n\n// ─── Declaration ──────────────────────────────────────────────────\n\ntype SearchDecl = {\n readonly fields: readonly string[];\n readonly weights: readonly number[] | undefined;\n readonly base: string;\n readonly language: string | undefined;\n /** Override for the tsvector column name (adopt-existing; tsvector engine only). */\n readonly columnName: string | undefined;\n /** Override for the index name (tsvector / bm25 / fulltext engines). */\n readonly indexName: string | undefined;\n /** Ranking function override (tsvector engine only). */\n readonly rank: \"ts_rank\" | \"ts_rank_cd\" | undefined;\n};\n\nfunction declRank(\n declaration: Readonly<Record<string, unknown>>,\n): \"ts_rank\" | \"ts_rank_cd\" | undefined {\n const value = declaration[\"rank\"];\n return value === \"ts_rank\" || value === \"ts_rank_cd\" ? value : undefined;\n}\n\nfunction readDeclaration(params: {\n model: ModelIR;\n declaration: Readonly<Record<string, unknown>>;\n}): SearchDecl | null {\n const fields = declStringArray(params.declaration, \"fields\");\n if (fields === undefined || fields.length === 0) return null;\n if (params.declaration[\"weights\"] !== undefined && (\n !Array.isArray(params.declaration[\"weights\"]) ||\n params.declaration[\"weights\"].length !== fields.length ||\n params.declaration[\"weights\"].some((weight: unknown) => typeof weight !== \"number\" || !Number.isFinite(weight))\n )) {\n throw new VibeError({ code: \"VIBE_SCHEMA_INVALID\", message: \"weights must be a finite number list matching the field list\", meta: { model: params.model.name } });\n }\n return {\n fields,\n weights: declNumberArray(params.declaration, \"weights\"),\n base: declString(params.declaration, \"name\") ?? `${tableNameOf({ model: params.model })}_search`,\n language: declString(params.declaration, \"language\"),\n columnName: declString(params.declaration, \"columnName\"),\n indexName: declString(params.declaration, \"indexName\"),\n rank: declRank(params.declaration),\n };\n}\n\n/** Weight letter per field: highest weight → 'A', capped at 'D'. */\nfunction weightLetters(params: { decl: SearchDecl }): readonly string[] | null {\n const { decl } = params;\n if (decl.weights === undefined || decl.weights.length !== decl.fields.length) return null;\n const ranked = [...new Set(decl.weights)].sort((a, b) => b - a);\n return decl.weights.map(\n (weight) => WEIGHT_LETTERS[Math.min(ranked.indexOf(weight), WEIGHT_LETTERS.length - 1)] as string,\n );\n}\n\n/**\n * Artifact names with the adoption overrides applied (`columnName:` /\n * `indexName:` — declared independently so a consumer with LIVE objects can\n * adopt them without a rename migration). Engines without the named object\n * refuse the override instead of silently ignoring it.\n */\nfunction resolveArtifactNames(params: {\n decl: SearchDecl;\n engine: SearchEngine;\n dialect: Dialect;\n}): { tsvColumn: string; indexName: string } {\n const { decl, engine, dialect } = params;\n if (engine === \"fts5\" && (decl.columnName !== undefined || decl.indexName !== undefined)) {\n throw unsupportedCapability({\n dialect,\n feature: \"@@search columnName/indexName overrides on the fts5 engine\",\n hint: \"fts5 emits a shadow table + triggers — there is no column or index to rename; use name: to change the table base\",\n });\n }\n if (decl.columnName !== undefined && engine !== \"tsvector\") {\n throw unsupportedCapability({\n dialect,\n feature: `@@search columnName on the ${engine} engine`,\n hint: \"only the tsvector engine materializes a generated column — drop columnName or target tsvector\",\n });\n }\n return {\n tsvColumn: decl.columnName ?? `${decl.base}_tsv`,\n indexName: decl.indexName ?? `${decl.base}_idx`,\n };\n}\n\n/**\n * Ranking function for the tsvector engine: the model's `rank:` declaration\n * wins over the factory-level default. A DECLARED rank on any other engine is\n * refused (it names postgres ranking functions); the factory default is just\n * a default and stays inert off tsvector.\n */\nfunction resolveRank(params: {\n decl: SearchDecl;\n options: Readonly<Record<string, unknown>>;\n engine: SearchEngine;\n dialect: Dialect;\n}): \"ts_rank\" | \"ts_rank_cd\" | undefined {\n const { decl, options, engine, dialect } = params;\n if (decl.weights !== undefined && engine !== \"tsvector\") {\n throw unsupportedCapability({\n dialect,\n feature: `@@search weights on the ${engine} engine`,\n hint: \"weights are supported only by tsvector; omit weights for this engine\",\n });\n }\n if (decl.rank !== undefined && engine !== \"tsvector\") {\n throw unsupportedCapability({\n dialect,\n feature: `@@search rank on the ${engine} engine`,\n hint: \"rank chooses between the postgres ranking functions ts_rank and ts_rank_cd — a tsvector-only concept\",\n });\n }\n if (engine !== \"tsvector\") return undefined;\n const fallback = options[\"rank\"];\n return decl.rank ?? (fallback === \"ts_rank\" || fallback === \"ts_rank_cd\" ? fallback : undefined);\n}\n\nfunction tsvectorExpression(params: {\n dialect: SqlDialect;\n model: ModelIR;\n decl: SearchDecl;\n language: string;\n}): string {\n const { dialect, model, decl, language } = params;\n const quote = (name: string): string => dialect.quoteIdent({ name });\n const letters = weightLetters({ decl });\n const parts = decl.fields.map((field, index) => {\n const vector = `to_tsvector('${language}', coalesce(${quote(columnNameOf({ model, field }))}, ''))`;\n return letters === null ? vector : `setweight(${vector}, '${letters[index]}')`;\n });\n return letters === null && parts.length > 1\n ? `to_tsvector('${language}', ${decl.fields\n .map((field) => `coalesce(${quote(columnNameOf({ model, field }))}, '')`)\n .join(\" || ' ' || \")})`\n : parts.join(\" || \");\n}\n\n// ─── Artifacts ────────────────────────────────────────────────────\n\nfunction searchArtifacts(ctx: ExtensionSchemaContext): readonly ExtensionArtifact[] {\n const requested = (ctx.options[\"engine\"] as SearchEngine | \"auto\" | undefined) ?? \"auto\";\n const engine = resolveSearchEngine({ dialect: ctx.dialect, provider: ctx.provider, requested });\n const dialect = getSqlDialect({ dialect: ctx.dialect });\n const quote = (name: string): string => dialect.quoteIdent({ name });\n const artifacts: ExtensionArtifact[] = [];\n\n if (engine === \"bm25\") {\n artifacts.push({\n id: \"search:extension:pg_search\",\n owns: { kind: \"postgresExtension\", name: \"pg_search\" },\n create: [\"CREATE EXTENSION IF NOT EXISTS pg_search;\"],\n drop: [\"DROP EXTENSION IF EXISTS pg_search;\"],\n });\n }\n\n for (const [modelName, declaration] of Object.entries(ctx.declarations)) {\n const model = ctx.schema.models.find((candidate) => candidate.name === modelName);\n if (model === undefined) continue;\n const decl = readDeclaration({ model, declaration });\n if (decl === null) continue;\n const table = tableNameOf({ model });\n const columns = decl.fields.map((field) => columnNameOf({ model, field }));\n resolveRank({ decl, options: ctx.options, engine, dialect: ctx.dialect });\n\n if (engine === \"tsvector\") {\n const language = decl.language ?? (ctx.options[\"language\"] as string | undefined) ?? \"english\";\n const { tsvColumn, indexName } = resolveArtifactNames({ decl, engine, dialect: ctx.dialect });\n const expression = tsvectorExpression({ dialect, model, decl, language });\n artifacts.push(\n {\n id: `search:${modelName}:column`,\n owns: { kind: \"column\", table, column: tsvColumn },\n create: [\n `ALTER TABLE ${quote(table)} ADD COLUMN IF NOT EXISTS ${quote(tsvColumn)} tsvector GENERATED ALWAYS AS (${expression}) STORED;`,\n ],\n drop: [`ALTER TABLE ${quote(table)} DROP COLUMN IF EXISTS ${quote(tsvColumn)};`],\n },\n {\n id: `search:${modelName}:index`,\n owns: { kind: \"index\", table, name: indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(indexName)} ON ${quote(table)} USING gin (${quote(tsvColumn)});`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(indexName)};`],\n },\n );\n continue;\n }\n\n if (engine === \"bm25\") {\n const pkField = primaryKeyFieldOf({ model });\n if (pkField === null) {\n throw new VibeError({\n code: \"VIBE_SCHEMA_INVALID\",\n message: `@@search with engine \"bm25\" needs a single-column primary key on \"${modelName}\" (key_field)`,\n meta: { model: modelName },\n });\n }\n const pkColumn = columnNameOf({ model, field: pkField });\n const bm25Names = resolveArtifactNames({ decl, engine, dialect: ctx.dialect });\n artifacts.push({\n id: `search:${modelName}:index`,\n owns: { kind: \"index\", table, name: bm25Names.indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(bm25Names.indexName)} ON ${quote(table)} USING bm25 (${[pkColumn, ...columns]\n .map((column) => quote(column))\n .join(\", \")}) WITH (key_field='${pkColumn}');`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(bm25Names.indexName)};`],\n });\n continue;\n }\n\n if (engine === \"fts5\") {\n resolveArtifactNames({ decl, engine, dialect: ctx.dialect });\n // N7 (SQL review): the external-content table and its sync triggers key\n // on the host's ROWID. Only a single Int/BigInt @id aliases (and pins)\n // the rowid; any other primary key leaves an IMPLICIT rowid that VACUUM\n // may renumber — a documented sqlite non-guarantee — after which the\n // shadow table silently points at the WRONG rows. Refuse at generate\n // time (earliest-moment rule); recovery for a database that already\n // drifted is `INSERT INTO <fts>(<fts>) VALUES('rebuild')`.\n const pkName = primaryKeyFieldOf({ model });\n const pkField = pkName === null ? undefined : model.fields.find((field) => field.name === pkName);\n const pkIsRowidAlias =\n pkField !== undefined && !pkField.isList && (pkField.type === \"Int\" || pkField.type === \"BigInt\");\n if (!pkIsRowidAlias) {\n throw unsupportedCapability({\n dialect: \"sqlite\",\n feature: `@@search (fts5) on \"${modelName}\", whose primary key is not a single INTEGER column`,\n hint: \"fts5 external-content tables key on the rowid; only an Int/BigInt @id aliases and PINS it — any other key's implicit rowid can be renumbered by VACUUM, silently mis-linking search hits. Give the searched model an Int/BigInt @id.\",\n });\n }\n const fts = `${decl.base}_fts`;\n const columnList = columns.map((column) => quote(column)).join(\", \");\n const newList = columns.map((column) => `new.${quote(column)}`).join(\", \");\n const oldList = columns.map((column) => `old.${quote(column)}`).join(\", \");\n artifacts.push(\n {\n id: `search:${modelName}:fts5-table`,\n owns: {\n kind: \"table\",\n name: fts,\n auxiliaryPrefixes: [`${fts}_`],\n },\n create: [\n `CREATE VIRTUAL TABLE IF NOT EXISTS ${quote(fts)} USING fts5(${columnList}, content='${table}');`,\n ],\n drop: [`DROP TABLE IF EXISTS ${quote(fts)};`],\n },\n {\n id: `search:${modelName}:fts5-triggers`,\n owns: { kind: \"trigger\", table, name: `${fts}_ai` },\n create: [\n `CREATE TRIGGER IF NOT EXISTS ${quote(`${fts}_ai`)} AFTER INSERT ON ${quote(table)} BEGIN\\n INSERT INTO ${quote(fts)}(rowid, ${columnList}) VALUES (new.rowid, ${newList});\\nEND;`,\n `CREATE TRIGGER IF NOT EXISTS ${quote(`${fts}_ad`)} AFTER DELETE ON ${quote(table)} BEGIN\\n INSERT INTO ${quote(fts)}(${quote(fts)}, rowid, ${columnList}) VALUES ('delete', old.rowid, ${oldList});\\nEND;`,\n `CREATE TRIGGER IF NOT EXISTS ${quote(`${fts}_au`)} AFTER UPDATE ON ${quote(table)} BEGIN\\n INSERT INTO ${quote(fts)}(${quote(fts)}, rowid, ${columnList}) VALUES ('delete', old.rowid, ${oldList});\\n INSERT INTO ${quote(fts)}(rowid, ${columnList}) VALUES (new.rowid, ${newList});\\nEND;`,\n // Installation runs in the migration transaction after synchronization is installed.\n `INSERT INTO ${quote(fts)}(${quote(fts)}) VALUES ('rebuild');`,\n ],\n drop: [\n `DROP TRIGGER IF EXISTS ${quote(`${fts}_ai`)};`,\n `DROP TRIGGER IF EXISTS ${quote(`${fts}_ad`)};`,\n `DROP TRIGGER IF EXISTS ${quote(`${fts}_au`)};`,\n ],\n },\n );\n continue;\n }\n\n // fulltext (mysql): no IF NOT EXISTS form exists — migrate's presence\n // check (introspected index name) decides whether the create runs.\n const fulltextNames = resolveArtifactNames({ decl, engine, dialect: ctx.dialect });\n artifacts.push({\n id: `search:${modelName}:index`,\n owns: { kind: \"index\", table, name: fulltextNames.indexName },\n create: [\n `CREATE FULLTEXT INDEX ${quote(fulltextNames.indexName)} ON ${quote(table)} (${columns\n .map((column) => quote(column))\n .join(\", \")});`,\n ],\n drop: [`DROP INDEX ${quote(fulltextNames.indexName)} ON ${quote(table)};`],\n });\n }\n return artifacts;\n}\n\n// ─── Runtime delegate (generated-glue target) ─────────────────────\n\n/** Baked per-model config the generator writes into the client. */\nexport type SearchDelegateConfig = {\n readonly engine: SearchEngine;\n readonly table: string;\n /** Searched fields in declaration order → column names. */\n readonly fields: readonly { readonly name: string; readonly column: string }[];\n /** tsvector engine: the generated column. */\n readonly tsvColumn?: string;\n /** fts5 engine: the shadow table. */\n readonly ftsTable?: string;\n /** tsvector engine: regconfig name (validated identifier). */\n readonly language?: string;\n /** tsvector engine: ranking function (default `ts_rank_cd`). */\n readonly rank?: \"ts_rank\" | \"ts_rank_cd\";\n /** Single-column primary key: bm25's key_field and the `select: \"id\"` projection. */\n readonly pkColumn?: string;\n};\n\nexport type SearchArgs = {\n readonly query: string;\n readonly where?: Record<string, unknown>;\n readonly take?: number;\n readonly skip?: number;\n readonly minScore?: number;\n readonly highlight?: { readonly field: string };\n /**\n * Type-ahead prefix matching. The query is split into unicode\n * letter/number tokens (punctuation separates and never matches) and every\n * token matches as a prefix — \"piz\" finds \"Pizza\". Per engine: tsvector\n * builds `to_tsquery('lang', 'piz:*')` (lexemes are STEMMED, so a stemming\n * `language` can miss mid-stem prefixes — declare `language: \"simple\"` for\n * type-ahead columns), fts5 `\"piz\"*`, fulltext `+piz*` in BOOLEAN MODE\n * (InnoDB ignores tokens under `innodb_ft_min_token_size`, default 3). A\n * query with no tokens resolves to `[]` without touching the database.\n * Refused on the bm25 engine (`VIBE_UNSUPPORTED_CAPABILITY`) — ParadeDB\n * prefix behavior is index-tokenizer-dependent.\n */\n readonly prefix?: boolean;\n /**\n * Projection: `\"row\"` (default) returns full rows; `\"id\"` returns only the\n * primary key — for repositories that re-read hits through their own typed\n * queries (full rows are wasted bandwidth there).\n */\n readonly select?: \"row\" | \"id\";\n};\n\nexport type SearchMethod = (args: SearchArgs) => Promise<SearchHit<Record<string, unknown>>[]>;\n\nfunction highlightColumn(params: { config: SearchDelegateConfig; args: SearchArgs }): string | null {\n const { config, args } = params;\n if (args.highlight === undefined) return null;\n const field = config.fields.find((candidate) => candidate.name === args.highlight?.field);\n if (field === undefined) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `highlight.field \"${args.highlight.field}\" is not searched — declared: ${config.fields\n .map((candidate) => candidate.name)\n .join(\", \")}`,\n meta: { field: args.highlight.field },\n });\n }\n return field.column;\n}\n\nfunction shapeHits(params: {\n rows: readonly Record<string, unknown>[];\n strip: readonly string[];\n highlightsRequested: boolean;\n engineHasHighlights: boolean;\n}): SearchHit<Record<string, unknown>>[] {\n const { rows, strip, highlightsRequested, engineHasHighlights } = params;\n return rows.map((raw) => {\n const row: Record<string, unknown> = { ...raw };\n const score = Number(row[SCORE_ALIAS]);\n const highlight = row[HIGHLIGHT_ALIAS];\n delete row[SCORE_ALIAS];\n delete row[HIGHLIGHT_ALIAS];\n for (const name of strip) delete row[name];\n const highlights =\n engineHasHighlights && highlightsRequested && highlight !== null && highlight !== undefined\n ? [String(highlight)]\n : null;\n return { row, score, highlights };\n });\n}\n\n/**\n * The generated client's glue target: bakes engine + names at generate time,\n * mounts as the `search` method at runtime (D9).\n */\nexport function createSearchDelegate(\n config: SearchDelegateConfig,\n): (ctx: ExtensionMountContext) => SearchMethod {\n return (ctx: ExtensionMountContext): SearchMethod => {\n const dialect = ctx.dialect;\n const quote = (name: string): string => dialect.quoteIdent({ name });\n const t = quote(\"t\");\n\n return async (args: SearchArgs): Promise<SearchHit<Record<string, unknown>>[]> => {\n if (typeof args.query !== \"string\" || args.query.trim().length === 0) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: \"search requires a non-empty query string\",\n meta: { table: config.table },\n });\n }\n const take = finiteNumber({ value: args.take === undefined ? 10 : args.take, name: \"take\", integer: true, min: 1 });\n const skip = args.skip === undefined ? null : finiteNumber({ value: args.skip, name: \"skip\", integer: true, min: 0 });\n if (args.minScore !== undefined) finiteNumber({ value: args.minScore, name: \"minScore\" });\n const prefix = args.prefix === true;\n if (prefix && config.engine === \"bm25\") {\n throw unsupportedCapability({\n dialect: \"postgres\",\n feature: 'search prefix mode on the \"bm25\" engine',\n hint: \"ParadeDB prefix behavior is decided by the index tokenizer (ngram/edge-ngram) — configure the index instead, or use the tsvector engine\",\n });\n }\n let matchText = args.query;\n if (prefix) {\n const tokens = args.query.match(/[\\p{L}\\p{N}]+/gu) ?? [];\n if (tokens.length === 0) return [];\n matchText =\n config.engine === \"tsvector\"\n ? tokens.map((token) => `${token}:*`).join(\" & \")\n : config.engine === \"fts5\"\n ? tokens.map((token) => `\"${token}\"*`).join(\" \")\n : tokens.map((token) => `+${token}*`).join(\" \");\n }\n const hlColumn = highlightColumn({ config, args });\n const idOnly = args.select === \"id\";\n if (idOnly && config.pkColumn === undefined) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `select: \"id\" needs a single-column primary key baked into the client — ${config.table} has none, or the client predates the projection (run vibeorm generate)`,\n meta: { table: config.table },\n });\n }\n const projection = idOnly ? `${t}.${quote(config.pkColumn ?? \"\")}` : `${t}.*`;\n const collector = new ParamCollector(dialect);\n\n const userWhere = (qualify: string): string | null => {\n if (args.where === undefined) return null;\n const expr = ctx.compileWhere({ where: args.where, qualify });\n return expr === undefined ? null : renderExpr({ dialect, expr, collector });\n };\n\n let text: string;\n let strip: readonly string[] = [];\n let engineHasHighlights = true;\n\n if (config.engine === \"tsvector\") {\n const language = config.language ?? \"english\";\n const ranker: \"ts_rank\" | \"ts_rank_cd\" = config.rank ?? \"ts_rank_cd\";\n const tsv = `${t}.${quote(config.tsvColumn ?? \"\")}`;\n const tsquery = (): string =>\n prefix\n ? `to_tsquery('${language}', ${collector.add(matchText)})`\n : `websearch_to_tsquery('${language}', ${collector.add(matchText)})`;\n text = `SELECT ${projection}, ${ranker}(${tsv}, ${tsquery()}) AS ${quote(SCORE_ALIAS)}`;\n if (hlColumn !== null) {\n text += `, ts_headline('${language}', ${t}.${quote(hlColumn)}, ${tsquery()}) AS ${quote(HIGHLIGHT_ALIAS)}`;\n }\n text += ` FROM ${quote(config.table)} AS ${t} WHERE ${tsv} @@ ${tsquery()}`;\n const where = userWhere(\"t\");\n if (where !== null) text += ` AND (${where})`;\n if (args.minScore !== undefined) {\n text += ` AND ${ranker}(${tsv}, ${tsquery()}) >= ${collector.add(args.minScore)}`;\n }\n text += ` ORDER BY ${quote(SCORE_ALIAS)} DESC`;\n strip = idOnly ? [] : [config.tsvColumn ?? \"\"];\n } else if (config.engine === \"fts5\") {\n const fts = quote(config.ftsTable ?? \"\");\n text = `SELECT ${projection}, -bm25(${fts}) AS ${quote(SCORE_ALIAS)}`;\n if (hlColumn !== null) {\n const index = config.fields.findIndex((field) => field.column === hlColumn);\n text += `, snippet(${fts}, ${index}, '<b>', '</b>', '…', 16) AS ${quote(HIGHLIGHT_ALIAS)}`;\n }\n text += ` FROM ${fts} JOIN ${quote(config.table)} AS ${t} ON ${t}.rowid = ${fts}.rowid`;\n text += ` WHERE ${fts} MATCH ${collector.add(matchText)}`;\n const where = userWhere(\"t\");\n if (where !== null) text += ` AND (${where})`;\n if (args.minScore !== undefined) {\n text += ` AND -bm25(${fts}) >= ${collector.add(args.minScore)}`;\n }\n text += ` ORDER BY ${quote(SCORE_ALIAS)} DESC`;\n } else if (config.engine === \"fulltext\") {\n engineHasHighlights = false;\n const mode = prefix ? \"IN BOOLEAN MODE\" : \"IN NATURAL LANGUAGE MODE\";\n const match = (): string =>\n `MATCH (${config.fields.map((field) => `${t}.${quote(field.column)}`).join(\", \")}) AGAINST (${collector.add(matchText)} ${mode})`;\n text = `SELECT ${projection}, ${match()} AS ${quote(SCORE_ALIAS)} FROM ${quote(config.table)} AS ${t}`;\n text += ` WHERE ${match()}`;\n const where = userWhere(\"t\");\n if (where !== null) text += ` AND (${where})`;\n if (args.minScore !== undefined) {\n text += ` AND ${match()} >= ${collector.add(args.minScore)}`;\n }\n text += ` ORDER BY ${quote(SCORE_ALIAS)} DESC`;\n } else {\n // bm25 (ParadeDB). minScore filters client-side (paradedb.score is not\n // reliably WHERE-safe); highlights via paradedb.snippet.\n const pk = `${t}.${quote(config.pkColumn ?? \"\")}`;\n text = `SELECT ${projection}, paradedb.score(${pk}) AS ${quote(SCORE_ALIAS)}`;\n if (hlColumn !== null) {\n text += `, paradedb.snippet(${t}.${quote(hlColumn)}) AS ${quote(HIGHLIGHT_ALIAS)}`;\n }\n text += ` FROM ${quote(config.table)} AS ${t} WHERE (${config.fields\n .map((field) => `${t}.${quote(field.column)} @@@ ${collector.add(args.query)}`)\n .join(\" OR \")})`;\n const where = userWhere(\"t\");\n if (where !== null) text += ` AND (${where})`;\n text += ` ORDER BY ${quote(SCORE_ALIAS)} DESC`;\n }\n\n text += ` LIMIT ${take}`;\n if (skip !== null) text += ` OFFSET ${skip}`;\n\n const rows = await ctx.executeRows({ text, values: collector.values, method: \"search\" });\n let hits = shapeHits({\n rows,\n strip,\n highlightsRequested: args.highlight !== undefined,\n engineHasHighlights,\n });\n if (config.engine === \"bm25\" && args.minScore !== undefined) {\n const min = args.minScore;\n hits = hits.filter((hit) => hit.score >= min);\n }\n return hits;\n };\n };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\n/**\n * Unified full-text search.\n *\n * @example schema\n * // @@search([title, body], name: \"post_search\", weights: [2, 1])\n * const hits = await db.post.search({ query: \"sqlite full text\", take: 20 });\n * // → [{ row, score, highlights }]\n */\nexport function search(options: SearchOptions = {}): VibeExtension {\n return defineExtension({\n name: \"search\",\n version: VERSION,\n options: { ...options },\n requires: { postgresql: null, pglite: null, sqlite: null, mysql: null },\n\n schema: {\n modelAttributes: [\n {\n name: \"search\",\n parse: ({ args, fieldNames }) => {\n const fields = args.fields ?? [];\n if (fields.length === 0) {\n return { error: \"@@search requires a field list, e.g. @@search([title, body])\" };\n }\n const missing = fields.find((name) => !fieldNames.includes(name));\n if (missing !== undefined) {\n return { error: `@@search references unknown field \"${missing}\"` };\n }\n const name = args.named[\"name\"];\n if (name !== undefined && (typeof name !== \"string\" || !isSafeSqlName({ name }))) {\n return { error: `name must be a plain identifier` };\n }\n const weights = args.named[\"weights\"];\n if (weights !== undefined) {\n if (\n !Array.isArray(weights) ||\n weights.length !== fields.length ||\n weights.some((weight) => typeof weight !== \"number\" || !Number.isFinite(weight))\n ) {\n return { error: `weights must be a number list matching the field list` };\n }\n }\n const language = args.named[\"language\"];\n if (language !== undefined && (typeof language !== \"string\" || !isSafeSqlName({ name: language }))) {\n return { error: `language must be a plain text-search config name` };\n }\n for (const key of [\"columnName\", \"indexName\"] as const) {\n const value = args.named[key];\n if (value !== undefined && (typeof value !== \"string\" || !isSafeSqlName({ name: value }))) {\n return { error: `${key} must be a plain identifier` };\n }\n }\n const rank = args.named[\"rank\"];\n if (rank !== undefined && rank !== \"ts_rank\" && rank !== \"ts_rank_cd\") {\n return { error: `rank must be \"ts_rank\" or \"ts_rank_cd\"` };\n }\n return { declaration: { fields, ...args.named } };\n },\n },\n ],\n indexKinds: [\"bm25\", \"fts5\", \"fulltext\", \"gin\"],\n },\n\n migrate: { artifacts: searchArtifacts },\n\n client: {\n model: ({ model, dialect, provider, options: extOptions, declaration, typeNames }) => {\n const decl = readDeclaration({ model, declaration });\n if (decl === null) return null;\n const requested = (extOptions[\"engine\"] as SearchEngine | \"auto\" | undefined) ?? \"auto\";\n const engine = resolveSearchEngine({ dialect, provider, requested });\n const language =\n decl.language ?? (extOptions[\"language\"] as string | undefined) ?? \"english\";\n if (!isSafeSqlName({ name: language })) {\n throw new VibeError({\n code: \"VIBE_SCHEMA_INVALID\",\n message: `search language \"${language}\" is not a plain text-search config name`,\n meta: { model: model.name, language },\n });\n }\n\n const pkField = primaryKeyFieldOf({ model });\n const rank = resolveRank({ decl, options: extOptions, engine, dialect });\n const names = resolveArtifactNames({ decl, engine, dialect });\n const config: SearchDelegateConfig = {\n engine,\n table: tableNameOf({ model }),\n fields: decl.fields.map((field) => ({\n name: field,\n column: columnNameOf({ model, field }),\n })),\n ...(engine === \"tsvector\"\n ? { tsvColumn: names.tsvColumn, language, ...(rank === undefined ? {} : { rank }) }\n : {}),\n ...(engine === \"fts5\" ? { ftsTable: `${decl.base}_fts` } : {}),\n ...(pkField !== null ? { pkColumn: columnNameOf({ model, field: pkField }) } : {}),\n };\n\n const fieldUnion = decl.fields.map((field) => JSON.stringify(field)).join(\" | \");\n const argLines: string[] = [\n ` readonly query: string;`,\n ` readonly where?: ${typeNames.whereInput};`,\n ` readonly take?: number;`,\n ` readonly skip?: number;`,\n ` readonly minScore?: number;`,\n ` readonly highlight?: { readonly field: ${fieldUnion} };`,\n ` readonly prefix?: boolean;`,\n ];\n // With a single-column pk the id projection is offered as an overload:\n // `select: \"id\"` narrows the hit row to the pk.\n const dts: string[] =\n pkField === null\n ? [\n `readonly search: (args: {`,\n ...argLines,\n `}) => Promise<SearchHit<${typeNames.payload}>[]>;`,\n ]\n : [\n `readonly search: {`,\n ` (args: {`,\n ...argLines.map((line) => ` ${line}`),\n ` readonly select: \"id\";`,\n ` }): Promise<SearchHit<Pick<${typeNames.payload}, ${JSON.stringify(pkField)}>>[]>;`,\n ` (args: {`,\n ...argLines.map((line) => ` ${line}`),\n ` readonly select?: \"row\";`,\n ` }): Promise<SearchHit<${typeNames.payload}>[]>;`,\n `};`,\n ];\n return {\n kind: \"method\",\n // Verified read: the mount issues exactly one SELECT per call (the\n // index-maintenance DDL lives in `migrate.artifacts`, not here), so it\n // is available on a $readOnly client.\n readOnly: true,\n runtimeGlue: `createSearchDelegate(${JSON.stringify(config)})`,\n imports: [{ from: \"@vibeorm/extensions/search\", names: [\"createSearchDelegate\"] }],\n dtsImports: [{ from: \"@vibeorm/extensions/search\", names: [\"SearchHit\"] }],\n dts,\n };\n },\n },\n\n doctor: async ({ execute, dialect, options: extOptions }) => {\n if (dialect === \"postgres\") {\n const requested = (extOptions[\"engine\"] as SearchEngine | \"auto\" | undefined) ?? \"auto\";\n if (requested === \"bm25\") {\n return { checks: [await pgExtensionCheck({ execute, name: \"pg_search\" })] };\n }\n return { checks: [{ name: \"tsvector\", ok: true, note: \"built in\" }] };\n }\n if (dialect === \"sqlite\") {\n try {\n const rows = await execute({\n text: \"SELECT 1 AS ok FROM pragma_compile_options WHERE compile_options = 'ENABLE_FTS5'\",\n });\n return {\n checks: [\n rows.length > 0\n ? { name: \"fts5\", ok: true, note: \"compiled in\" }\n : { name: \"fts5\", ok: false, note: \"sqlite built without FTS5\" },\n ],\n };\n } catch (error) {\n return {\n checks: [\n {\n name: \"fts5\",\n ok: false,\n note: `check failed: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n };\n }\n }\n return { checks: [{ name: \"fulltext\", ok: true, note: \"built in (InnoDB FULLTEXT)\" }] };\n },\n });\n}\n",
6
6
  "/**\n * Helpers shared by the tier-1 extensions. Nothing here is privileged —\n * userland extensions can do everything these do with the same public hooks.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type {\n ExtensionDoctorCheck,\n ExtensionSqlExecutor,\n ModelIR,\n} from \"@vibeorm/schema\";\n\n// ─── Numeric admission ────────────────────────────────────────────\n\n/** Refuse non-finite extension arguments before compilation or execution. */\nexport function finiteNumber(params: { value: unknown; name: string; integer?: boolean; min?: number }): number {\n const { value, name, integer, min } = params;\n if (typeof value !== \"number\" || !Number.isFinite(value) ||\n (integer === true && !Number.isSafeInteger(value)) || (min !== undefined && value < min)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${name} must be a finite ${integer === true ? \"safe integer\" : \"number\"}${min === undefined ? \"\" : ` >= ${min}`}`,\n meta: { argument: name },\n });\n }\n return value;\n}\n\n// ─── IR lookups ───────────────────────────────────────────────────\n\n/** Table name of a model (`dbName ?? name`). */\nexport function tableNameOf(params: { model: ModelIR }): string {\n return params.model.dbName ?? params.model.name;\n}\n\n/** Column name of a field (`dbName ?? name`); the field must exist. */\nexport function columnNameOf(params: { model: ModelIR; field: string }): string {\n const found = params.model.fields.find((candidate) => candidate.name === params.field);\n if (found === undefined) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension referenced unknown field \"${params.field}\" on model \"${params.model.name}\"`,\n meta: { model: params.model.name, field: params.field },\n });\n }\n return found.dbName ?? found.name;\n}\n\n/** The model's single primary-key field name, for key_field-style options. */\nexport function primaryKeyFieldOf(params: { model: ModelIR }): string | null {\n const { model } = params;\n if (model.primaryKey !== undefined && model.primaryKey.fields.length === 1) {\n return model.primaryKey.fields[0] ?? null;\n }\n const idField = model.fields.find((field) => field.isId);\n return idField?.name ?? null;\n}\n\n// ─── Declaration readers (ExtensionDeclIR.options are untyped JSON) ─\n\nexport function declString(decl: Readonly<Record<string, unknown>>, key: string): string | undefined {\n const value = decl[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function declStringArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly string[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is string => typeof entry === \"string\") ? value : undefined;\n}\n\nexport function declNumberArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly number[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is number => typeof entry === \"number\") ? value : undefined;\n}\n\n// ─── Identifier safety ────────────────────────────────────────────\n\nconst SQL_LITERAL_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\n/**\n * Names an extension splices as SQL LITERALS (regconfig names, key_field\n * options) must be plain identifiers — everything else is rejected at parse\n * time so no schema-borne text ever reaches SQL unquoted.\n */\nexport function isSafeSqlName(params: { name: string }): boolean {\n return SQL_LITERAL_NAME.test(params.name);\n}\n\n// ─── Doctor helpers ───────────────────────────────────────────────\n\n/** Availability of a postgres extension, per pg_available_extensions. */\nexport async function pgExtensionCheck(params: {\n execute: ExtensionSqlExecutor;\n name: string;\n}): Promise<ExtensionDoctorCheck> {\n const { execute, name } = params;\n try {\n const rows = await execute({\n text: \"SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name = $1\",\n values: [name],\n });\n const row = rows[0];\n if (row === undefined) {\n return { name: `extension ${name}`, ok: false, note: \"not available on this server\" };\n }\n const installed = row[\"installed_version\"];\n return {\n name: `extension ${name}`,\n ok: true,\n note: installed === null || installed === undefined ? \"available, not installed\" : `installed ${String(installed)}`,\n };\n } catch (error) {\n return {\n name: `extension ${name}`,\n ok: false,\n note: `check failed: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "632D624588224DB664756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "A857A83B928F63C964756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -5,7 +5,7 @@
5
5
  "/**\n * `trgm` — pg_trgm fuzzy matching (extensions.md §6). Operators-only: it\n * claims NO client surface. `where: { name: { similarTo: \"jon\" } }` compiles\n * to a bound predicate plus `gin_trgm_ops` indexes over the fields declared\n * in `@@trgm([...])`. Postgres/pglite only; anywhere else →\n * VIBE_UNSUPPORTED_CAPABILITY.\n *\n * INDEXABILITY (SQL review M8 + PG-1): a bare `similarity(col, $q) >= $t` is\n * a guaranteed full scan — GIN/GiST trigram indexes serve the `%` operator,\n * not the function. The predicate compiles as\n * `(col % $q AND similarity(col, $q) >= $t)` only when the effective\n * threshold is ≥ max(configured threshold, 0.3): `%` prunes at the\n * CONNECTION's `pg_trgm.similarity_threshold`, and pooled connections that\n * `onConnect` never touched keep the server default 0.3 — so the gate floor\n * must assume 0.3 even when a lower threshold was configured. Below the\n * floor, the predicate falls back to the full-scan form — correct on every\n * connection. A postgresql.conf value raised ABOVE the floor can still\n * prune; the doctor's similarity_threshold check surfaces it.\n */\n\nimport { VibeError, defineExtension, unsupportedCapability } from \"@vibeorm/schema\";\nimport type {\n ExtensionArtifact,\n ExtensionSchemaContext,\n VibeExtension,\n} from \"@vibeorm/schema\";\nimport { getSqlDialect } from \"@vibeorm/sql\";\nimport { columnNameOf, declStringArray, pgExtensionCheck, tableNameOf } from \"../shared.ts\";\n\n// ─── Options ──────────────────────────────────────────────────────\n\nexport type TrgmOptions = {\n /**\n * Similarity threshold for `similarTo` (default 0.3). Also applied to the\n * session's `pg_trgm.similarity_threshold` on `$connect()` so raw `%`\n * queries agree with the operator.\n */\n readonly threshold?: number;\n};\n\n/** Operand of `similarTo`: the text, or text plus a per-use threshold. */\nexport type SimilarToOperand = string | { readonly text: string; readonly threshold?: number };\n\nconst DEFAULT_THRESHOLD = 0.3;\nconst VERSION = \"2.0.0-alpha.0\";\n\nfunction validThreshold(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 && value <= 1;\n}\n\n// ─── Artifacts ────────────────────────────────────────────────────\n\nfunction trgmArtifacts(ctx: ExtensionSchemaContext): readonly ExtensionArtifact[] {\n if (ctx.dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect: ctx.dialect,\n feature: \"the trgm extension (pg_trgm)\",\n hint: \"pg_trgm exists on postgres/pglite only\",\n });\n }\n const dialect = getSqlDialect({ dialect: ctx.dialect });\n const quote = (name: string): string => dialect.quoteIdent({ name });\n\n const artifacts: ExtensionArtifact[] = [\n {\n id: \"trgm:extension\",\n owns: { kind: \"postgresExtension\", name: \"pg_trgm\" },\n create: [\"CREATE EXTENSION IF NOT EXISTS pg_trgm;\"],\n drop: [\"DROP EXTENSION IF EXISTS pg_trgm;\"],\n },\n ];\n\n for (const [modelName, declaration] of Object.entries(ctx.declarations)) {\n const model = ctx.schema.models.find((candidate) => candidate.name === modelName);\n if (model === undefined) continue;\n const table = tableNameOf({ model });\n for (const field of declStringArray(declaration, \"fields\") ?? []) {\n const column = columnNameOf({ model, field });\n const indexName = `${table}_${column}_trgm_idx`;\n artifacts.push({\n id: `trgm:${modelName}:${field}`,\n owns: { kind: \"index\", table, name: indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(indexName)} ON ${quote(table)} USING gin (${quote(column)} gin_trgm_ops);`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(indexName)};`],\n });\n }\n }\n return artifacts;\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\n/**\n * pg_trgm fuzzy matching.\n *\n * @example vibeorm.config.ts / VibeClient\n * extensions: [trgm({ threshold: 0.3 })]\n *\n * @example schema\n * // @@trgm([name]) → gin_trgm_ops index on \"name\"\n * await db.user.findMany({ where: { name: { similarTo: \"jon\" } } });\n */\nexport function trgm(options: TrgmOptions = {}): VibeExtension {\n const threshold = options.threshold === undefined ? DEFAULT_THRESHOLD : options.threshold;\n if (!validThreshold(threshold)) {\n throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"trgm threshold must be a finite number between 0 and 1\", meta: { argument: \"threshold\" } });\n }\n\n return defineExtension({\n name: \"trgm\",\n version: VERSION,\n options: { ...options },\n requires: { postgresql: { extension: \"pg_trgm\" }, pglite: { extension: \"pg_trgm\" } },\n\n schema: {\n modelAttributes: [\n {\n name: \"trgm\",\n parse: ({ args, fieldNames }) => {\n const fields = args.fields ?? [];\n if (fields.length === 0) {\n return { error: \"@@trgm requires a field list, e.g. @@trgm([name])\" };\n }\n const missing = fields.find((name) => !fieldNames.includes(name));\n if (missing !== undefined) {\n return { error: `@@trgm references unknown field \"${missing}\"` };\n }\n return { declaration: { fields } };\n },\n },\n ],\n indexKinds: [\"gin_trgm\"],\n },\n\n migrate: { artifacts: trgmArtifacts },\n\n sql: {\n whereOperators: [\n {\n name: \"similarTo\",\n compile: ({ column, operand, dialect, options: extOptions }) => {\n if (dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect,\n feature: 'the \"similarTo\" operator (pg_trgm)',\n hint: \"pg_trgm exists on postgres/pglite only\",\n });\n }\n const text =\n typeof operand === \"string\"\n ? operand\n : typeof operand === \"object\" && operand !== null && \"text\" in operand\n ? (operand as { text: unknown }).text\n : undefined;\n if (typeof text !== \"string\") {\n return { error: 'expects a string or { text, threshold? }' };\n }\n const perUse =\n typeof operand === \"object\" && operand !== null && \"threshold\" in operand\n ? (operand as { threshold: unknown }).threshold\n : undefined;\n const configured = extOptions[\"threshold\"];\n if ((configured !== undefined && !validThreshold(configured)) || (perUse !== undefined && !validThreshold(perUse))) {\n return { error: \"threshold must be a finite number between 0 and 1\" };\n }\n const sessionThreshold = typeof configured === \"number\" ? configured : DEFAULT_THRESHOLD;\n const effective = typeof perUse === \"number\" ? perUse : sessionThreshold;\n // PG-1 (SQL review round 2): `%` prunes at the CONNECTION's\n // pg_trgm.similarity_threshold. onConnect SETs the configured\n // value only on connections `$connect` touches — POOLED\n // connections keep the server default 0.3 (live-proven dropped\n // rows: configured 0.2, similarity 0.273, `%` pruned at 0.3).\n // Gate the index route on effective >= max(configured, 0.3): a\n // connection whose actual GUC is LOWER than effective only widens\n // the prefilter (safe). A postgresql.conf value RAISED above the\n // effective threshold can still prune — the doctor's\n // similarity_threshold check surfaces exactly that (documented in\n // docs/dialect-notes.md).\n if (effective >= Math.max(sessionThreshold, DEFAULT_THRESHOLD)) {\n // M8: `%` walks the gin_trgm_ops index; similarity() enforces\n // the exact bound.\n return {\n fragment: {\n parts: [\n \"(\",\n { ident: column },\n \" % \",\n { param: text },\n \" AND similarity(\",\n { ident: column },\n \", \",\n { param: text },\n \") >= \",\n { param: effective },\n \")\",\n ],\n },\n };\n }\n // Effective threshold below the `%` gate floor (max(configured,\n // 0.3)): on a pooled connection the GUC may still be 0.3, so `%`\n // would prune matches the caller asked for — honest full scan.\n return {\n fragment: {\n parts: [\n \"similarity(\",\n { ident: column },\n \", \",\n { param: text },\n \") >= \",\n { param: effective },\n ],\n },\n };\n },\n },\n ],\n },\n\n runtime: {\n onConnect: async ({ execute, dialect, options: extOptions }) => {\n // Session default for raw `%` queries; the operator itself never\n // depends on it. Only meaningful when explicitly configured.\n if (dialect !== \"postgres\" || typeof extOptions[\"threshold\"] !== \"number\") return;\n await execute({\n text: `SET pg_trgm.similarity_threshold = ${Number(threshold)}`,\n });\n },\n },\n\n doctor: async ({ execute, dialect }) => {\n if (dialect !== \"postgres\") {\n return { checks: [{ name: \"trgm dialect\", ok: false, note: \"postgres/pglite only\" }] };\n }\n const checks = [await pgExtensionCheck({ execute, name: \"pg_trgm\" })];\n // PG-1: the `%` route assumes the connection's GUC is ≤ the gate floor\n // (max(configured, 0.3)). A postgresql.conf value raised ABOVE it makes\n // `%` prune rows the similarity() bound would keep — surface it here.\n // current_setting(…, true) returns NULL instead of ERRORING when the\n // pg_trgm library is not session-loaded yet (SHOW errors there — a\n // false alarm on healthy setups, closure item 3); NULL means no value\n // is configured anywhere, so the 0.3 default (≤ floor) applies.\n const floor = Math.max(threshold, DEFAULT_THRESHOLD);\n try {\n const rows = await execute({\n text: `SELECT current_setting('pg_trgm.similarity_threshold', true) AS \"threshold\"`,\n });\n const raw = rows[0]?.[\"threshold\"];\n if (raw === undefined || raw === null || raw === \"\") {\n checks.push({\n name: \"trgm similarity_threshold\",\n ok: true,\n note: `not set in this session — the 0.3 default applies (≤ gate floor ${floor})`,\n });\n return { checks };\n }\n const server = Number(raw);\n checks.push(\n Number.isNaN(server)\n ? { name: \"trgm similarity_threshold\", ok: false, note: \"could not read pg_trgm.similarity_threshold\" }\n : server <= floor\n ? { name: \"trgm similarity_threshold\", ok: true, note: `server ${server} ≤ gate floor ${floor}` }\n : {\n name: \"trgm similarity_threshold\",\n ok: false,\n note: `server pg_trgm.similarity_threshold=${server} exceeds the %-gate floor ${floor} — indexed similarTo queries can drop rows; lower the GUC or raise the extension threshold`,\n },\n );\n } catch {\n checks.push({\n name: \"trgm similarity_threshold\",\n ok: false,\n note: \"reading pg_trgm.similarity_threshold failed\",\n });\n }\n return { checks };\n },\n });\n}\n",
6
6
  "/**\n * Helpers shared by the tier-1 extensions. Nothing here is privileged —\n * userland extensions can do everything these do with the same public hooks.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type {\n ExtensionDoctorCheck,\n ExtensionSqlExecutor,\n ModelIR,\n} from \"@vibeorm/schema\";\n\n// ─── Numeric admission ────────────────────────────────────────────\n\n/** Refuse non-finite extension arguments before compilation or execution. */\nexport function finiteNumber(params: { value: unknown; name: string; integer?: boolean; min?: number }): number {\n const { value, name, integer, min } = params;\n if (typeof value !== \"number\" || !Number.isFinite(value) ||\n (integer === true && !Number.isSafeInteger(value)) || (min !== undefined && value < min)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${name} must be a finite ${integer === true ? \"safe integer\" : \"number\"}${min === undefined ? \"\" : ` >= ${min}`}`,\n meta: { argument: name },\n });\n }\n return value;\n}\n\n// ─── IR lookups ───────────────────────────────────────────────────\n\n/** Table name of a model (`dbName ?? name`). */\nexport function tableNameOf(params: { model: ModelIR }): string {\n return params.model.dbName ?? params.model.name;\n}\n\n/** Column name of a field (`dbName ?? name`); the field must exist. */\nexport function columnNameOf(params: { model: ModelIR; field: string }): string {\n const found = params.model.fields.find((candidate) => candidate.name === params.field);\n if (found === undefined) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension referenced unknown field \"${params.field}\" on model \"${params.model.name}\"`,\n meta: { model: params.model.name, field: params.field },\n });\n }\n return found.dbName ?? found.name;\n}\n\n/** The model's single primary-key field name, for key_field-style options. */\nexport function primaryKeyFieldOf(params: { model: ModelIR }): string | null {\n const { model } = params;\n if (model.primaryKey !== undefined && model.primaryKey.fields.length === 1) {\n return model.primaryKey.fields[0] ?? null;\n }\n const idField = model.fields.find((field) => field.isId);\n return idField?.name ?? null;\n}\n\n// ─── Declaration readers (ExtensionDeclIR.options are untyped JSON) ─\n\nexport function declString(decl: Readonly<Record<string, unknown>>, key: string): string | undefined {\n const value = decl[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function declStringArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly string[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is string => typeof entry === \"string\") ? value : undefined;\n}\n\nexport function declNumberArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly number[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is number => typeof entry === \"number\") ? value : undefined;\n}\n\n// ─── Identifier safety ────────────────────────────────────────────\n\nconst SQL_LITERAL_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\n/**\n * Names an extension splices as SQL LITERALS (regconfig names, key_field\n * options) must be plain identifiers — everything else is rejected at parse\n * time so no schema-borne text ever reaches SQL unquoted.\n */\nexport function isSafeSqlName(params: { name: string }): boolean {\n return SQL_LITERAL_NAME.test(params.name);\n}\n\n// ─── Doctor helpers ───────────────────────────────────────────────\n\n/** Availability of a postgres extension, per pg_available_extensions. */\nexport async function pgExtensionCheck(params: {\n execute: ExtensionSqlExecutor;\n name: string;\n}): Promise<ExtensionDoctorCheck> {\n const { execute, name } = params;\n try {\n const rows = await execute({\n text: \"SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name = $1\",\n values: [name],\n });\n const row = rows[0];\n if (row === undefined) {\n return { name: `extension ${name}`, ok: false, note: \"not available on this server\" };\n }\n const installed = row[\"installed_version\"];\n return {\n name: `extension ${name}`,\n ok: true,\n note: installed === null || installed === undefined ? \"available, not installed\" : `installed ${String(installed)}`,\n };\n } catch (error) {\n return {\n name: `extension ${name}`,\n ok: false,\n note: `check failed: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n}\n"
7
7
  ],
8
- "mappings": ";;AAoBA,sBAAS;AAMT;;;ACrBA;AAUO,SAAS,YAAY,CAAC,QAAmF;AAAA,EAC9G,QAAQ,OAAO,MAAM,SAAS,QAAQ;AAAA,EACtC,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAClD,YAAY,QAAQ,CAAC,OAAO,cAAc,KAAK,KAAO,QAAQ,aAAa,QAAQ,KAAM;AAAA,IAC5F,MAAM,IAAI,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,GAAG,yBAAyB,YAAY,OAAO,iBAAiB,WAAW,QAAQ,YAAY,KAAK,OAAO;AAAA,MACpH,MAAM,EAAE,UAAU,KAAK;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,WAAW,CAAC,QAAoC;AAAA,EAC9D,OAAO,OAAO,MAAM,UAAU,OAAO,MAAM;AAAA;AAItC,SAAS,YAAY,CAAC,QAAmD;AAAA,EAC9E,MAAM,QAAQ,OAAO,MAAM,OAAO,KAAK,CAAC,cAAc,UAAU,SAAS,OAAO,KAAK;AAAA,EACrF,IAAI,UAAU,WAAW;AAAA,IACvB,MAAM,IAAI,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,uCAAuC,OAAO,oBAAoB,OAAO,MAAM;AAAA,MACxF,MAAM,EAAE,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,MAAM;AAAA,IACxD,CAAC;AAAA,EACH;AAAA,EACA,OAAO,MAAM,UAAU,MAAM;AAAA;AAIxB,SAAS,iBAAiB,CAAC,QAA2C;AAAA,EAC3E,QAAQ,UAAU;AAAA,EAClB,IAAI,MAAM,eAAe,aAAa,MAAM,WAAW,OAAO,WAAW,GAAG;AAAA,IAC1E,OAAO,MAAM,WAAW,OAAO,MAAM;AAAA,EACvC;AAAA,EACA,MAAM,UAAU,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,IAAI;AAAA,EACvD,OAAO,SAAS,QAAQ;AAAA;AAKnB,SAAS,UAAU,CAAC,MAAyC,KAAiC;AAAA,EACnG,MAAM,QAAQ,KAAK;AAAA,EACnB,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAGtC,SAAS,eAAe,CAC7B,MACA,KAC+B;AAAA,EAC/B,MAAM,QAAQ,KAAK;AAAA,EACnB,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG;AAAA,EAC3B,OAAO,MAAM,MAAM,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAAI,QAAQ;AAAA;AAG/E,SAAS,eAAe,CAC7B,MACA,KAC+B;AAAA,EAC/B,MAAM,QAAQ,KAAK;AAAA,EACnB,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG;AAAA,EAC3B,OAAO,MAAM,MAAM,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAAI,QAAQ;AAAA;AAKtF,IAAM,mBAAmB;AAOlB,SAAS,aAAa,CAAC,QAAmC;AAAA,EAC/D,OAAO,iBAAiB,KAAK,OAAO,IAAI;AAAA;AAM1C,eAAsB,gBAAgB,CAAC,QAGL;AAAA,EAChC,QAAQ,SAAS,SAAS;AAAA,EAC1B,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,QAAQ;AAAA,MACzB,MAAM;AAAA,MACN,QAAQ,CAAC,IAAI;AAAA,IACf,CAAC;AAAA,IACD,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ,WAAW;AAAA,MACrB,OAAO,EAAE,MAAM,aAAa,QAAQ,IAAI,OAAO,MAAM,+BAA+B;AAAA,IACtF;AAAA,IACA,MAAM,YAAY,IAAI;AAAA,IACtB,OAAO;AAAA,MACL,MAAM,aAAa;AAAA,MACnB,IAAI;AAAA,MACJ,MAAM,cAAc,QAAQ,cAAc,YAAY,6BAA6B,aAAa,OAAO,SAAS;AAAA,IAClH;AAAA,IACA,OAAO,OAAO;AAAA,IACd,OAAO;AAAA,MACL,MAAM,aAAa;AAAA,MACnB,IAAI;AAAA,MACJ,MAAM,iBAAiB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9E;AAAA;AAAA;;;ADjFJ,IAAM,oBAAoB;AAC1B,IAAM,UAAU;AAEhB,SAAS,cAAc,CAAC,OAAiC;AAAA,EACvD,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA;AAKvF,SAAS,aAAa,CAAC,KAA2D;AAAA,EAChF,IAAI,IAAI,YAAY,YAAY;AAAA,IAC9B,MAAM,sBAAsB;AAAA,MAC1B,SAAS,IAAI;AAAA,MACb,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU,cAAc,EAAE,SAAS,IAAI,QAAQ,CAAC;AAAA,EACtD,MAAM,QAAQ,CAAC,SAAyB,QAAQ,WAAW,EAAE,KAAK,CAAC;AAAA,EAEnE,MAAM,YAAiC;AAAA,IACrC;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,MACnD,QAAQ,CAAC,yCAAyC;AAAA,MAClD,MAAM,CAAC,mCAAmC;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,YAAY,WAAW,gBAAgB,OAAO,QAAQ,IAAI,YAAY,GAAG;AAAA,IACvE,MAAM,QAAQ,IAAI,OAAO,OAAO,KAAK,CAAC,cAAc,UAAU,SAAS,SAAS;AAAA,IAChF,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,QAAQ,YAAY,EAAE,MAAM,CAAC;AAAA,IACnC,WAAW,SAAS,gBAAgB,aAAa,QAAQ,KAAK,CAAC,GAAG;AAAA,MAChE,MAAM,SAAS,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA,MAC5C,MAAM,YAAY,GAAG,SAAS;AAAA,MAC9B,UAAU,KAAK;AAAA,QACb,IAAI,QAAQ,aAAa;AAAA,QACzB,MAAM,EAAE,MAAM,SAAS,OAAO,MAAM,UAAU;AAAA,QAC9C,QAAQ;AAAA,UACN,8BAA8B,MAAM,SAAS,QAAQ,MAAM,KAAK,gBAAgB,MAAM,MAAM;AAAA,QAC9F;AAAA,QACA,MAAM,CAAC,wBAAwB,MAAM,SAAS,IAAI;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAeF,SAAS,IAAI,CAAC,UAAuB,CAAC,GAAkB;AAAA,EAC7D,MAAM,YAAY,QAAQ,cAAc,YAAY,oBAAoB,QAAQ;AAAA,EAChF,IAAI,CAAC,eAAe,SAAS,GAAG;AAAA,IAC9B,MAAM,IAAI,WAAU,EAAE,MAAM,mBAAmB,SAAS,0DAA0D,MAAM,EAAE,UAAU,YAAY,EAAE,CAAC;AAAA,EACrJ;AAAA,EAEA,OAAO,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,KAAK,QAAQ;AAAA,IACtB,UAAU,EAAE,YAAY,EAAE,WAAW,UAAU,GAAG,QAAQ,EAAE,WAAW,UAAU,EAAE;AAAA,IAEnF,QAAQ;AAAA,MACN,iBAAiB;AAAA,QACf;AAAA,UACE,MAAM;AAAA,UACN,OAAO,GAAG,MAAM,iBAAiB;AAAA,YAC/B,MAAM,SAAS,KAAK,UAAU,CAAC;AAAA,YAC/B,IAAI,OAAO,WAAW,GAAG;AAAA,cACvB,OAAO,EAAE,OAAO,oDAAoD;AAAA,YACtE;AAAA,YACA,MAAM,UAAU,OAAO,KAAK,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC;AAAA,YAChE,IAAI,YAAY,WAAW;AAAA,cACzB,OAAO,EAAE,OAAO,oCAAoC,WAAW;AAAA,YACjE;AAAA,YACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE;AAAA;AAAA,QAErC;AAAA,MACF;AAAA,MACA,YAAY,CAAC,UAAU;AAAA,IACzB;AAAA,IAEA,SAAS,EAAE,WAAW,cAAc;AAAA,IAEpC,KAAK;AAAA,MACH,gBAAgB;AAAA,QACd;AAAA,UACE,MAAM;AAAA,UACN,SAAS,GAAG,QAAQ,SAAS,SAAS,SAAS,iBAAiB;AAAA,YAC9D,IAAI,YAAY,YAAY;AAAA,cAC1B,MAAM,sBAAsB;AAAA,gBAC1B;AAAA,gBACA,SAAS;AAAA,gBACT,MAAM;AAAA,cACR,CAAC;AAAA,YACH;AAAA,YACA,MAAM,OACJ,OAAO,YAAY,WACf,UACA,OAAO,YAAY,YAAY,YAAY,SAAQ,UAAU,WAC1D,QAA8B,OAC/B;AAAA,YACR,IAAI,OAAO,SAAS,UAAU;AAAA,cAC5B,OAAO,EAAE,OAAO,2CAA2C;AAAA,YAC7D;AAAA,YACA,MAAM,SACJ,OAAO,YAAY,YAAY,YAAY,QAAQ,eAAe,UAC7D,QAAmC,YACpC;AAAA,YACN,MAAM,aAAa,WAAW;AAAA,YAC9B,IAAK,eAAe,aAAa,CAAC,eAAe,UAAU,KAAO,WAAW,aAAa,CAAC,eAAe,MAAM,GAAI;AAAA,cAClH,OAAO,EAAE,OAAO,oDAAoD;AAAA,YACtE;AAAA,YACA,MAAM,mBAAmB,OAAO,eAAe,WAAW,aAAa;AAAA,YACvE,MAAM,YAAY,OAAO,WAAW,WAAW,SAAS;AAAA,YAYxD,IAAI,aAAa,KAAK,IAAI,kBAAkB,iBAAiB,GAAG;AAAA,cAG9D,OAAO;AAAA,gBACL,UAAU;AAAA,kBACR,OAAO;AAAA,oBACL;AAAA,oBACA,EAAE,OAAO,OAAO;AAAA,oBAChB;AAAA,oBACA,EAAE,OAAO,KAAK;AAAA,oBACd;AAAA,oBACA,EAAE,OAAO,OAAO;AAAA,oBAChB;AAAA,oBACA,EAAE,OAAO,KAAK;AAAA,oBACd;AAAA,oBACA,EAAE,OAAO,UAAU;AAAA,oBACnB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,YAIA,OAAO;AAAA,cACL,UAAU;AAAA,gBACR,OAAO;AAAA,kBACL;AAAA,kBACA,EAAE,OAAO,OAAO;AAAA,kBAChB;AAAA,kBACA,EAAE,OAAO,KAAK;AAAA,kBACd;AAAA,kBACA,EAAE,OAAO,UAAU;AAAA,gBACrB;AAAA,cACF;AAAA,YACF;AAAA;AAAA,QAEJ;AAAA,MACF;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,WAAW,SAAS,SAAS,SAAS,SAAS,iBAAiB;AAAA,QAG9D,IAAI,YAAY,cAAc,OAAO,WAAW,iBAAiB;AAAA,UAAU;AAAA,QAC3E,MAAM,QAAQ;AAAA,UACZ,MAAM,sCAAsC,OAAO,SAAS;AAAA,QAC9D,CAAC;AAAA;AAAA,IAEL;AAAA,IAEA,QAAQ,SAAS,SAAS,cAAc;AAAA,MACtC,IAAI,YAAY,YAAY;AAAA,QAC1B,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,gBAAgB,IAAI,OAAO,MAAM,uBAAuB,CAAC,EAAE;AAAA,MACvF;AAAA,MACA,MAAM,SAAS,CAAC,MAAM,iBAAiB,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAQpE,MAAM,QAAQ,KAAK,IAAI,WAAW,iBAAiB;AAAA,MACnD,IAAI;AAAA,QACF,MAAM,OAAO,MAAM,QAAQ;AAAA,UACzB,MAAM;AAAA,QACR,CAAC;AAAA,QACD,MAAM,MAAM,KAAK,KAAK;AAAA,QACtB,IAAI,QAAQ,aAAa,QAAQ,QAAQ,QAAQ,IAAI;AAAA,UACnD,OAAO,KAAK;AAAA,YACV,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,MAAM,6EAAkE;AAAA,UAC1E,CAAC;AAAA,UACD,OAAO,EAAE,OAAO;AAAA,QAClB;AAAA,QACA,MAAM,SAAS,OAAO,GAAG;AAAA,QACzB,OAAO,KACL,OAAO,MAAM,MAAM,IACf,EAAE,MAAM,6BAA6B,IAAI,OAAO,MAAM,8CAA8C,IACpG,UAAU,QACR,EAAE,MAAM,6BAA6B,IAAI,MAAM,MAAM,UAAU,4BAAsB,QAAQ,IAC7F;AAAA,UACE,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM,uCAAuC,mCAAmC;AAAA,QAClF,CACR;AAAA,QACA,MAAM;AAAA,QACN,OAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM;AAAA,QACR,CAAC;AAAA;AAAA,MAEH,OAAO,EAAE,OAAO;AAAA;AAAA,EAEpB,CAAC;AAAA;",
8
+ "mappings": "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",
9
9
  "debugId": "E480DE9887540E3A64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -394,8 +394,8 @@ function vector(options = {}) {
394
394
  });
395
395
  }
396
396
  export {
397
- vector,
398
- createVectorNamespace
397
+ createVectorNamespace,
398
+ vector
399
399
  };
400
400
 
401
- //# debugId=2DC1A4431B41BB6B64756E2164756E21
401
+ //# debugId=F61AFCC4E8D2903364756E2164756E21
@@ -5,7 +5,7 @@
5
5
  "/**\n * `vector` — pgvector similarity search (extensions.md §5).\n *\n * Schema: `embedding Vector(1536)` (field type) + `@@vector([embedding],\n * metric: \"cosine\", index: \"hnsw\")` (index declaration). Client surface is a\n * namespace (D9): `db.doc.vector.nearest({ by, to, take })` and\n * `db.doc.vector.set({ where, by, to })`. Postgres AND pglite (on pglite’s\n * current 0.5 line pgvector loads from @electric-sql/pglite-pgvector — the\n * 0.3 line bundled it as @electric-sql/pglite/vector); sqlite/mysql →\n * VIBE_UNSUPPORTED_CAPABILITY at generate time.\n */\n\nimport { VibeError, defineExtension, unsupportedCapability } from \"@vibeorm/schema\";\nimport type {\n ExtensionArtifact,\n ExtensionSchemaContext,\n VibeExtension,\n} from \"@vibeorm/schema\";\nimport { ParamCollector, getSqlDialect, renderExpr } from \"@vibeorm/sql\";\nimport type { ExtensionMountContext } from \"@vibeorm/runtime\";\nimport {\n finiteNumber,\n columnNameOf,\n declString,\n declStringArray,\n isSafeSqlName,\n pgExtensionCheck,\n primaryKeyFieldOf,\n tableNameOf,\n} from \"../shared.ts\";\n\n// ─── Options & types ──────────────────────────────────────────────\n\nexport type VectorOptions = Record<string, never>;\n\nexport type VectorMetric = \"cosine\" | \"l2\" | \"ip\";\n\n/** One nearest-neighbour hit. */\nexport type VectorHit<T> = {\n readonly row: T;\n /** Distance under the query's metric — smaller is closer (ip is negated inner product). */\n readonly distance: number;\n};\n\nconst VERSION = \"2.0.0-alpha.0\";\n\nconst METRIC_OPERATOR: Readonly<Record<VectorMetric, string>> = {\n cosine: \"<=>\",\n l2: \"<->\",\n ip: \"<#>\",\n};\n\nconst METRIC_OPCLASS: Readonly<Record<VectorMetric, string>> = {\n cosine: \"vector_cosine_ops\",\n l2: \"vector_l2_ops\",\n ip: \"vector_ip_ops\",\n};\n\nconst METRICS: readonly VectorMetric[] = [\"cosine\", \"l2\", \"ip\"];\nconst INDEX_KINDS: readonly string[] = [\"hnsw\", \"ivfflat\"];\nconst DISTANCE_ALIAS = \"_vibe_distance\";\n\n// pgvector v0.8.2 src/hnsw.h and src/ivfflat.h reloption bounds.\nconst INDEX_BOUNDS: Readonly<Record<string, readonly [number, number]>> = {\n m: [2, 100],\n efConstruction: [4, 1000],\n lists: [1, 32768],\n};\n\nfunction indexOptionError(params: { declaration: Readonly<Record<string, unknown>> }): string | undefined {\n for (const [key, [min, max]] of Object.entries(INDEX_BOUNDS)) {\n const value = params.declaration[key];\n if (value !== undefined && (typeof value !== \"number\" || !Number.isInteger(value) || value < min || value > max)) {\n return `${key} must be an integer between ${min} and ${max}`;\n }\n }\n return undefined;\n}\n\n// ─── Declaration helpers ──────────────────────────────────────────\n\ntype VectorColumnDecl = { readonly column: string; readonly dims: number };\n\nfunction vectorColumnsOf(params: {\n declaration: Readonly<Record<string, unknown>>;\n}): Readonly<Record<string, { readonly dims: number }>> {\n const columns = params.declaration[\"columns\"];\n if (columns === null || typeof columns !== \"object\" || Array.isArray(columns)) return {};\n const out: Record<string, { dims: number }> = {};\n for (const [field, spec] of Object.entries(columns as Record<string, unknown>)) {\n if (spec === null || typeof spec !== \"object\") continue;\n const dims = (spec as { dims?: unknown }).dims;\n if (typeof dims === \"number\") out[field] = { dims };\n }\n return out;\n}\n\n// ─── Artifacts ────────────────────────────────────────────────────\n\nfunction vectorArtifacts(ctx: ExtensionSchemaContext): readonly ExtensionArtifact[] {\n if (ctx.dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect: ctx.dialect,\n feature: \"the vector extension (pgvector)\",\n hint: \"pgvector exists on postgres/pglite only (sqlite-vec/mysql are post-2.0)\",\n });\n }\n const dialect = getSqlDialect({ dialect: ctx.dialect });\n const quote = (name: string): string => dialect.quoteIdent({ name });\n\n const artifacts: ExtensionArtifact[] = [\n {\n id: \"vector:extension\",\n owns: { kind: \"postgresExtension\", name: \"vector\" },\n create: [\"CREATE EXTENSION IF NOT EXISTS vector;\"],\n drop: [\"DROP EXTENSION IF EXISTS vector;\"],\n },\n ];\n\n for (const [modelName, declaration] of Object.entries(ctx.declarations)) {\n const model = ctx.schema.models.find((candidate) => candidate.name === modelName);\n if (model === undefined) continue;\n const invalidOption = indexOptionError({ declaration });\n if (invalidOption !== undefined) {\n throw new VibeError({ code: \"VIBE_SCHEMA_INVALID\", message: invalidOption, meta: { model: modelName } });\n }\n const table = tableNameOf({ model });\n const columns = vectorColumnsOf({ declaration });\n\n const indexFields = declStringArray(declaration, \"fields\") ?? [];\n const kindRaw = declString(declaration, \"index\") ?? \"hnsw\";\n const metricRaw = declString(declaration, \"metric\") ?? \"cosine\";\n const metric = METRICS.find((candidate) => candidate === metricRaw) ?? \"cosine\";\n\n for (const field of indexFields) {\n if (columns[field] === undefined) {\n throw new VibeError({\n code: \"VIBE_SCHEMA_INVALID\",\n message: `@@vector on \"${modelName}\" indexes \"${field}\", which is not a Vector(n) column`,\n meta: { model: modelName, field },\n });\n }\n const column = columnNameOf({ model, field });\n // Adoption override (validated single-field-only at parse): consumers\n // with a live index keep its name instead of a rename migration.\n const nameOverride = indexFields.length === 1 ? declString(declaration, \"indexName\") : undefined;\n const indexName = nameOverride ?? `${table}_${column}_${kindRaw}_idx`;\n const withOptions: string[] = [];\n const m = declaration[\"m\"];\n const efConstruction = declaration[\"efConstruction\"];\n const lists = declaration[\"lists\"];\n if (kindRaw === \"hnsw\") {\n if (typeof m === \"number\") withOptions.push(`m = ${m}`);\n if (typeof efConstruction === \"number\") withOptions.push(`ef_construction = ${efConstruction}`);\n } else if (typeof lists === \"number\") {\n withOptions.push(`lists = ${lists}`);\n }\n const withClause = withOptions.length === 0 ? \"\" : ` WITH (${withOptions.join(\", \")})`;\n artifacts.push({\n id: `vector:${modelName}:${field}`,\n owns: { kind: \"index\", table, name: indexName },\n create: [\n `CREATE INDEX IF NOT EXISTS ${quote(indexName)} ON ${quote(table)} USING ${kindRaw} (${quote(column)} ${METRIC_OPCLASS[metric]})${withClause};`,\n ],\n drop: [`DROP INDEX IF EXISTS ${quote(indexName)};`],\n });\n }\n }\n return artifacts;\n}\n\n// ─── Runtime namespace (generated-glue target) ────────────────────\n\n/** Baked per-model config the generator writes into the client. */\nexport type VectorNamespaceConfig = {\n readonly table: string;\n /** Field name → column + dims. */\n readonly columns: Readonly<Record<string, VectorColumnDecl>>;\n /** Default metric from the schema declaration. */\n readonly metric: VectorMetric;\n};\n\nexport type VectorNearestArgs = {\n readonly by: string;\n readonly to: readonly number[];\n readonly metric?: VectorMetric;\n readonly take?: number;\n readonly where?: Record<string, unknown>;\n readonly maxDistance?: number;\n};\n\nexport type VectorSetArgs = {\n readonly where: Record<string, unknown>;\n readonly by: string;\n readonly to: readonly number[];\n};\n\nexport type VectorNamespace = {\n readonly nearest: (args: VectorNearestArgs) => Promise<VectorHit<Record<string, unknown>>[]>;\n readonly set: (args: VectorSetArgs) => Promise<number>;\n};\n\nfunction resolveColumn(params: {\n config: VectorNamespaceConfig;\n args: { by: string; to: readonly number[] };\n}): { column: string; literal: string } {\n const { config, args } = params;\n const spec = config.columns[args.by];\n if (spec === undefined) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `\"${args.by}\" is not a Vector(n) column — declared: ${Object.keys(config.columns).join(\", \")}`,\n meta: { by: args.by },\n });\n }\n if (!Array.isArray(args.to) || args.to.some((entry) => typeof entry !== \"number\" || !Number.isFinite(entry))) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `vector \"to\" must be an array of finite numbers`,\n meta: { by: args.by },\n });\n }\n if (args.to.length !== spec.dims) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `vector \"to\" has ${args.to.length} dimensions, \"${args.by}\" expects ${spec.dims}`,\n meta: { by: args.by, dims: spec.dims },\n });\n }\n return { column: spec.column, literal: `[${args.to.join(\",\")}]` };\n}\n\n/**\n * The generated client's glue target: bakes per-model config at generate time,\n * mounts as the `vector` namespace at runtime (D9).\n */\nexport function createVectorNamespace(\n config: VectorNamespaceConfig,\n): (ctx: ExtensionMountContext) => VectorNamespace {\n return (ctx: ExtensionMountContext): VectorNamespace => {\n const dialect = ctx.dialect;\n const quote = (name: string): string => dialect.quoteIdent({ name });\n const t = quote(\"t\");\n\n return {\n nearest: async (args: VectorNearestArgs): Promise<VectorHit<Record<string, unknown>>[]> => {\n const take = finiteNumber({ value: args.take === undefined ? 10 : args.take, name: \"take\", integer: true, min: 1 });\n if (args.maxDistance !== undefined) finiteNumber({ value: args.maxDistance, name: \"maxDistance\" });\n const { column, literal } = resolveColumn({ config, args });\n const metric = args.metric ?? config.metric;\n const op = METRIC_OPERATOR[metric];\n const col = `${t}.${quote(column)}`;\n const collector = new ParamCollector(dialect);\n\n let text = `SELECT ${t}.*, (${col} ${op} ${collector.add(literal)}) AS ${quote(DISTANCE_ALIAS)}`;\n text += ` FROM ${quote(config.table)} AS ${t}`;\n text += ` WHERE ${col} IS NOT NULL`;\n if (args.where !== undefined) {\n const expr = ctx.compileWhere({ where: args.where, qualify: \"t\" });\n if (expr !== undefined) text += ` AND (${renderExpr({ dialect, expr, collector })})`;\n }\n if (args.maxDistance !== undefined) {\n text += ` AND (${col} ${op} ${collector.add(literal)}) < ${collector.add(args.maxDistance)}`;\n }\n text += ` ORDER BY ${col} ${op} ${collector.add(literal)} LIMIT ${take}`;\n\n const rows = await ctx.executeRows({\n text,\n values: collector.values,\n method: \"vector.nearest\",\n });\n return rows.map((row) => {\n const { [DISTANCE_ALIAS]: distance, ...rest } = row;\n return { row: rest, distance: Number(distance) };\n });\n },\n\n set: async (args: VectorSetArgs): Promise<number> => {\n const { column, literal } = resolveColumn({ config, args });\n const collector = new ParamCollector(dialect);\n let text = `UPDATE ${quote(config.table)} SET ${quote(column)} = ${collector.add(literal)}`;\n const expr = ctx.compileWhere({ where: args.where });\n if (expr !== undefined) text += ` WHERE ${renderExpr({ dialect, expr, collector })}`;\n text += ` RETURNING 1 AS ${quote(\"_vibe_set\")}`;\n const rows = await ctx.executeRows({ text, values: collector.values, method: \"vector.set\" });\n return rows.length;\n },\n };\n };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\n/**\n * pgvector similarity search.\n *\n * @example schema\n * // embedding Vector(1536)\n * // @@vector([embedding], metric: \"cosine\", index: \"hnsw\")\n * const near = await db.doc.vector.nearest({ by: \"embedding\", to: queryVec, take: 10 });\n */\nexport function vector(options: VectorOptions = {}): VibeExtension {\n return defineExtension({\n name: \"vector\",\n version: VERSION,\n options: { ...options },\n requires: { postgresql: { extension: \"vector\" }, pglite: { extension: \"vector\" } },\n\n schema: {\n fieldTypes: [\n {\n name: \"Vector\",\n lower: ({ field, args }) => {\n const dims = Number(args[0]);\n if (!Number.isInteger(dims) || dims <= 0) {\n return { error: \"Vector(n) requires a positive integer dimension, e.g. Vector(1536)\" };\n }\n return {\n nativeType: `vector(${dims})`,\n declaration: { columns: { [field]: { dims } } },\n };\n },\n },\n ],\n modelAttributes: [\n {\n name: \"vector\",\n parse: ({ args, fieldNames }) => {\n const fields = args.fields ?? [];\n if (fields.length === 0) {\n return { error: \"@@vector requires a field list, e.g. @@vector([embedding])\" };\n }\n const missing = fields.find((name) => !fieldNames.includes(name));\n if (missing !== undefined) {\n return { error: `@@vector references unknown field \"${missing}\"` };\n }\n const metric = args.named[\"metric\"];\n if (metric !== undefined && !METRICS.includes(metric as VectorMetric)) {\n return { error: `metric must be one of ${METRICS.join(\", \")}` };\n }\n const kind = args.named[\"index\"];\n if (kind !== undefined && !INDEX_KINDS.includes(String(kind))) {\n return { error: `index must be one of ${INDEX_KINDS.join(\", \")}` };\n }\n const invalidOption = indexOptionError({ declaration: args.named });\n if (invalidOption !== undefined) return { error: invalidOption };\n const indexName = args.named[\"indexName\"];\n if (indexName !== undefined) {\n if (typeof indexName !== \"string\" || !isSafeSqlName({ name: indexName })) {\n return { error: `indexName must be a plain identifier` };\n }\n if (fields.length !== 1) {\n return {\n error: `indexName needs exactly one indexed field — split @@vector declarations to name each index`,\n };\n }\n }\n return { declaration: { fields, ...args.named } };\n },\n },\n ],\n indexKinds: [\"hnsw\", \"ivfflat\"],\n },\n\n migrate: { artifacts: vectorArtifacts },\n\n client: {\n model: ({ model, dialect, declaration, typeNames }) => {\n const columns = vectorColumnsOf({ declaration });\n const fieldNames = Object.keys(columns);\n if (fieldNames.length === 0) return null;\n if (dialect !== \"postgres\") {\n throw unsupportedCapability({\n dialect,\n feature: `the vector extension (declared on model \"${model.name}\")`,\n hint: \"pgvector exists on postgres/pglite only\",\n });\n }\n const metricRaw = declString(declaration, \"metric\");\n const metric = METRICS.find((candidate) => candidate === metricRaw) ?? \"cosine\";\n const config: VectorNamespaceConfig = {\n table: tableNameOf({ model }),\n columns: Object.fromEntries(\n fieldNames.map((field) => [\n field,\n { column: columnNameOf({ model, field }), dims: columns[field]!.dims },\n ]),\n ),\n metric,\n };\n const byUnion = fieldNames.map((name) => JSON.stringify(name)).join(\" | \");\n return {\n kind: \"namespace\",\n // `nearest` reads; `set` issues an UPDATE, so it is NOT classified and\n // a $readOnly client neither declares nor forwards it.\n readOnly: [\"nearest\"],\n runtimeGlue: `createVectorNamespace(${JSON.stringify(config)})`,\n imports: [{ from: \"@vibeorm/extensions/vector\", names: [\"createVectorNamespace\"] }],\n dtsImports: [{ from: \"@vibeorm/extensions/vector\", names: [\"VectorHit\", \"VectorMetric\"] }],\n dts: [\n `readonly vector: {`,\n ` readonly nearest: (args: {`,\n ` readonly by: ${byUnion};`,\n ` readonly to: readonly number[];`,\n ` readonly metric?: VectorMetric;`,\n ` readonly take?: number;`,\n ` readonly where?: ${typeNames.whereInput};`,\n ` readonly maxDistance?: number;`,\n ` }) => Promise<VectorHit<${typeNames.payload}>[]>;`,\n ` readonly set: (args: {`,\n ` readonly where: ${typeNames.whereInput};`,\n ` readonly by: ${byUnion};`,\n ` readonly to: readonly number[];`,\n ` }) => Promise<number>;`,\n `};`,\n ],\n };\n },\n },\n\n doctor: async ({ execute, dialect }) => {\n if (dialect !== \"postgres\") {\n return { checks: [{ name: \"vector dialect\", ok: false, note: \"postgres/pglite only\" }] };\n }\n return { checks: [await pgExtensionCheck({ execute, name: \"vector\" })] };\n },\n });\n}\n",
6
6
  "/**\n * Helpers shared by the tier-1 extensions. Nothing here is privileged —\n * userland extensions can do everything these do with the same public hooks.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type {\n ExtensionDoctorCheck,\n ExtensionSqlExecutor,\n ModelIR,\n} from \"@vibeorm/schema\";\n\n// ─── Numeric admission ────────────────────────────────────────────\n\n/** Refuse non-finite extension arguments before compilation or execution. */\nexport function finiteNumber(params: { value: unknown; name: string; integer?: boolean; min?: number }): number {\n const { value, name, integer, min } = params;\n if (typeof value !== \"number\" || !Number.isFinite(value) ||\n (integer === true && !Number.isSafeInteger(value)) || (min !== undefined && value < min)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${name} must be a finite ${integer === true ? \"safe integer\" : \"number\"}${min === undefined ? \"\" : ` >= ${min}`}`,\n meta: { argument: name },\n });\n }\n return value;\n}\n\n// ─── IR lookups ───────────────────────────────────────────────────\n\n/** Table name of a model (`dbName ?? name`). */\nexport function tableNameOf(params: { model: ModelIR }): string {\n return params.model.dbName ?? params.model.name;\n}\n\n/** Column name of a field (`dbName ?? name`); the field must exist. */\nexport function columnNameOf(params: { model: ModelIR; field: string }): string {\n const found = params.model.fields.find((candidate) => candidate.name === params.field);\n if (found === undefined) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension referenced unknown field \"${params.field}\" on model \"${params.model.name}\"`,\n meta: { model: params.model.name, field: params.field },\n });\n }\n return found.dbName ?? found.name;\n}\n\n/** The model's single primary-key field name, for key_field-style options. */\nexport function primaryKeyFieldOf(params: { model: ModelIR }): string | null {\n const { model } = params;\n if (model.primaryKey !== undefined && model.primaryKey.fields.length === 1) {\n return model.primaryKey.fields[0] ?? null;\n }\n const idField = model.fields.find((field) => field.isId);\n return idField?.name ?? null;\n}\n\n// ─── Declaration readers (ExtensionDeclIR.options are untyped JSON) ─\n\nexport function declString(decl: Readonly<Record<string, unknown>>, key: string): string | undefined {\n const value = decl[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function declStringArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly string[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is string => typeof entry === \"string\") ? value : undefined;\n}\n\nexport function declNumberArray(\n decl: Readonly<Record<string, unknown>>,\n key: string,\n): readonly number[] | undefined {\n const value = decl[key];\n if (!Array.isArray(value)) return undefined;\n return value.every((entry): entry is number => typeof entry === \"number\") ? value : undefined;\n}\n\n// ─── Identifier safety ────────────────────────────────────────────\n\nconst SQL_LITERAL_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\n/**\n * Names an extension splices as SQL LITERALS (regconfig names, key_field\n * options) must be plain identifiers — everything else is rejected at parse\n * time so no schema-borne text ever reaches SQL unquoted.\n */\nexport function isSafeSqlName(params: { name: string }): boolean {\n return SQL_LITERAL_NAME.test(params.name);\n}\n\n// ─── Doctor helpers ───────────────────────────────────────────────\n\n/** Availability of a postgres extension, per pg_available_extensions. */\nexport async function pgExtensionCheck(params: {\n execute: ExtensionSqlExecutor;\n name: string;\n}): Promise<ExtensionDoctorCheck> {\n const { execute, name } = params;\n try {\n const rows = await execute({\n text: \"SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name = $1\",\n values: [name],\n });\n const row = rows[0];\n if (row === undefined) {\n return { name: `extension ${name}`, ok: false, note: \"not available on this server\" };\n }\n const installed = row[\"installed_version\"];\n return {\n name: `extension ${name}`,\n ok: true,\n note: installed === null || installed === undefined ? \"available, not installed\" : `installed ${String(installed)}`,\n };\n } catch (error) {\n return {\n name: `extension ${name}`,\n ok: false,\n note: `check failed: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "2DC1A4431B41BB6B64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "F61AFCC4E8D2903364756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeorm/extensions",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Tier-1 VibeORM extensions — full-text search, pgvector similarity and pg_trgm fuzzy matching",
5
5
  "keywords": [
6
6
  "orm",
@@ -54,9 +54,9 @@
54
54
  "bun": ">=1.2.0"
55
55
  },
56
56
  "dependencies": {
57
- "@vibeorm/runtime": "2.3.0",
58
- "@vibeorm/schema": "2.2.0",
59
- "@vibeorm/sql": "2.2.0"
57
+ "@vibeorm/runtime": "2.3.1",
58
+ "@vibeorm/schema": "2.3.0",
59
+ "@vibeorm/sql": "2.3.0"
60
60
  },
61
61
  "publishConfig": {
62
62
  "access": "public"