@nicia-ai/typegraph 0.58.0 → 0.60.0

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.
Files changed (179) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +15 -0
  3. package/dist/{atomic-mutation-program-CPcn0ZPu.d.ts → atomic-mutation-program-BNvJ13bq.d.ts} +1 -1
  4. package/dist/{atomic-mutation-program-AqOe51XD.d.cts → atomic-mutation-program-DOVE147J.d.cts} +1 -1
  5. package/dist/backend/drizzle/engine/index.cjs +8 -8
  6. package/dist/backend/drizzle/engine/index.d.cts +9 -9
  7. package/dist/backend/drizzle/engine/index.d.ts +9 -9
  8. package/dist/backend/drizzle/engine/index.js +3 -3
  9. package/dist/backend/drizzle/indexes.cjs +6 -6
  10. package/dist/backend/drizzle/indexes.d.cts +1 -1
  11. package/dist/backend/drizzle/indexes.d.ts +1 -1
  12. package/dist/backend/drizzle/indexes.js +2 -2
  13. package/dist/backend/index.d.cts +7 -7
  14. package/dist/backend/index.d.ts +7 -7
  15. package/dist/backend/postgres/index.cjs +17 -17
  16. package/dist/backend/postgres/index.d.cts +8 -8
  17. package/dist/backend/postgres/index.d.ts +8 -8
  18. package/dist/backend/postgres/index.js +3 -3
  19. package/dist/backend/postgres/pglite-store.cjs +1 -1
  20. package/dist/backend/postgres/pglite-store.d.cts +6 -6
  21. package/dist/backend/postgres/pglite-store.d.ts +6 -6
  22. package/dist/backend/postgres/pglite-store.js +1 -1
  23. package/dist/backend/postgres/pglite.cjs +5 -5
  24. package/dist/backend/postgres/pglite.d.cts +3 -3
  25. package/dist/backend/postgres/pglite.d.ts +3 -3
  26. package/dist/backend/postgres/pglite.js +4 -4
  27. package/dist/backend/sqlite/index.cjs +16 -16
  28. package/dist/backend/sqlite/index.d.cts +7 -7
  29. package/dist/backend/sqlite/index.d.ts +7 -7
  30. package/dist/backend/sqlite/index.js +3 -3
  31. package/dist/backend/sqlite/libsql.cjs +7 -7
  32. package/dist/backend/sqlite/libsql.d.cts +3 -3
  33. package/dist/backend/sqlite/libsql.d.ts +3 -3
  34. package/dist/backend/sqlite/libsql.js +3 -3
  35. package/dist/backend/sqlite/local-store.cjs +1 -1
  36. package/dist/backend/sqlite/local-store.d.cts +6 -6
  37. package/dist/backend/sqlite/local-store.d.ts +6 -6
  38. package/dist/backend/sqlite/local-store.js +1 -1
  39. package/dist/backend/sqlite/local.cjs +5 -5
  40. package/dist/backend/sqlite/local.d.cts +3 -3
  41. package/dist/backend/sqlite/local.d.ts +3 -3
  42. package/dist/backend/sqlite/local.js +4 -4
  43. package/dist/{chunk-7JUD57B4.js → chunk-2DKIJP2R.js} +1044 -84
  44. package/dist/chunk-2DKIJP2R.js.map +1 -0
  45. package/dist/{chunk-QIKO6DL5.js → chunk-2QNFFAMF.js} +3 -3
  46. package/dist/{chunk-QIKO6DL5.js.map → chunk-2QNFFAMF.js.map} +1 -1
  47. package/dist/{chunk-6BVZHDAZ.js → chunk-43DOTETB.js} +3 -3
  48. package/dist/{chunk-6BVZHDAZ.js.map → chunk-43DOTETB.js.map} +1 -1
  49. package/dist/{chunk-US3BLFWM.js → chunk-7GNPCBS2.js} +3 -3
  50. package/dist/{chunk-US3BLFWM.js.map → chunk-7GNPCBS2.js.map} +1 -1
  51. package/dist/{chunk-IV5W7LKW.cjs → chunk-A22XPVBQ.cjs} +2 -2
  52. package/dist/chunk-A22XPVBQ.cjs.map +1 -0
  53. package/dist/{chunk-CVO2ZPW5.js → chunk-B4P4DAW3.js} +4 -4
  54. package/dist/{chunk-CVO2ZPW5.js.map → chunk-B4P4DAW3.js.map} +1 -1
  55. package/dist/{chunk-FHFPUORN.cjs → chunk-CNFKFE5L.cjs} +1375 -415
  56. package/dist/chunk-CNFKFE5L.cjs.map +1 -0
  57. package/dist/{chunk-4MZQVVPX.cjs → chunk-D5CHUSW7.cjs} +33 -2
  58. package/dist/chunk-D5CHUSW7.cjs.map +1 -0
  59. package/dist/{chunk-TKEJR2UL.cjs → chunk-DWO6WZP5.cjs} +6 -6
  60. package/dist/{chunk-TKEJR2UL.cjs.map → chunk-DWO6WZP5.cjs.map} +1 -1
  61. package/dist/{chunk-GUMNJJFP.cjs → chunk-EHDLHPMK.cjs} +9 -9
  62. package/dist/{chunk-GUMNJJFP.cjs.map → chunk-EHDLHPMK.cjs.map} +1 -1
  63. package/dist/{chunk-DV24YZHG.js → chunk-FTDRMXIJ.js} +6 -6
  64. package/dist/{chunk-DV24YZHG.js.map → chunk-FTDRMXIJ.js.map} +1 -1
  65. package/dist/{chunk-BYBMDK6X.js → chunk-GYOQAV6R.js} +3 -3
  66. package/dist/{chunk-BYBMDK6X.js.map → chunk-GYOQAV6R.js.map} +1 -1
  67. package/dist/{chunk-GTW5YKFV.js → chunk-HCNC53MU.js} +3 -3
  68. package/dist/{chunk-GTW5YKFV.js.map → chunk-HCNC53MU.js.map} +1 -1
  69. package/dist/{chunk-M7TRJXFE.js → chunk-ILVXUOQY.js} +3 -3
  70. package/dist/{chunk-M7TRJXFE.js.map → chunk-ILVXUOQY.js.map} +1 -1
  71. package/dist/{chunk-FGKWXSHF.cjs → chunk-KGQVK2II.cjs} +40 -40
  72. package/dist/{chunk-FGKWXSHF.cjs.map → chunk-KGQVK2II.cjs.map} +1 -1
  73. package/dist/{chunk-BMATB57B.cjs → chunk-KW3ON5IU.cjs} +11 -11
  74. package/dist/{chunk-BMATB57B.cjs.map → chunk-KW3ON5IU.cjs.map} +1 -1
  75. package/dist/{chunk-GK62U3S5.js → chunk-LOFUF6L7.js} +3 -3
  76. package/dist/{chunk-GK62U3S5.js.map → chunk-LOFUF6L7.js.map} +1 -1
  77. package/dist/{chunk-BPYZUJX5.cjs → chunk-MTJAT6UO.cjs} +5 -5
  78. package/dist/{chunk-BPYZUJX5.cjs.map → chunk-MTJAT6UO.cjs.map} +1 -1
  79. package/dist/{chunk-YTYB5KCQ.js → chunk-OH7QRGPQ.js} +33 -2
  80. package/dist/chunk-OH7QRGPQ.js.map +1 -0
  81. package/dist/{chunk-U53HFE4L.cjs → chunk-OKA6H3B3.cjs} +22 -22
  82. package/dist/{chunk-U53HFE4L.cjs.map → chunk-OKA6H3B3.cjs.map} +1 -1
  83. package/dist/{chunk-QR6V2BXA.cjs → chunk-PTFO3JI5.cjs} +114 -114
  84. package/dist/{chunk-QR6V2BXA.cjs.map → chunk-PTFO3JI5.cjs.map} +1 -1
  85. package/dist/{chunk-C3CN2C2T.cjs → chunk-Q6ZVQWH7.cjs} +38 -38
  86. package/dist/{chunk-C3CN2C2T.cjs.map → chunk-Q6ZVQWH7.cjs.map} +1 -1
  87. package/dist/{chunk-WAG3NVD7.cjs → chunk-QBQ465OX.cjs} +12 -12
  88. package/dist/{chunk-WAG3NVD7.cjs.map → chunk-QBQ465OX.cjs.map} +1 -1
  89. package/dist/{chunk-CRROO6PK.cjs → chunk-QHP2BCBJ.cjs} +4 -4
  90. package/dist/{chunk-CRROO6PK.cjs.map → chunk-QHP2BCBJ.cjs.map} +1 -1
  91. package/dist/{chunk-HWWPL2YL.js → chunk-QWIR5533.js} +2 -2
  92. package/dist/chunk-QWIR5533.js.map +1 -0
  93. package/dist/{chunk-ZHLWPHNT.cjs → chunk-RJ3GVX73.cjs} +6 -6
  94. package/dist/{chunk-ZHLWPHNT.cjs.map → chunk-RJ3GVX73.cjs.map} +1 -1
  95. package/dist/{chunk-SYKR6MVR.cjs → chunk-T2M2S5YZ.cjs} +59 -59
  96. package/dist/{chunk-SYKR6MVR.cjs.map → chunk-T2M2S5YZ.cjs.map} +1 -1
  97. package/dist/{chunk-OESX3T5K.js → chunk-TNNDNSNH.js} +4 -4
  98. package/dist/{chunk-OESX3T5K.js.map → chunk-TNNDNSNH.js.map} +1 -1
  99. package/dist/{chunk-5C4OYYDD.js → chunk-UVQMUBZ6.js} +6 -6
  100. package/dist/{chunk-5C4OYYDD.js.map → chunk-UVQMUBZ6.js.map} +1 -1
  101. package/dist/{chunk-IV3FENV2.js → chunk-W6K6NSRT.js} +5 -5
  102. package/dist/{chunk-IV3FENV2.js.map → chunk-W6K6NSRT.js.map} +1 -1
  103. package/dist/core/index.d.cts +3 -3
  104. package/dist/core/index.d.ts +3 -3
  105. package/dist/{ddl-wlEdaCQK.d.cts → ddl-B9lzB8Zi.d.cts} +3 -3
  106. package/dist/{ddl-DkFrUTn_.d.ts → ddl-DuZWvxBb.d.ts} +3 -3
  107. package/dist/graph-extension/index.d.cts +2 -2
  108. package/dist/graph-extension/index.d.ts +2 -2
  109. package/dist/graph-merge/index.cjs +122 -122
  110. package/dist/graph-merge/index.d.cts +7 -6
  111. package/dist/graph-merge/index.d.ts +7 -6
  112. package/dist/graph-merge/index.js +10 -10
  113. package/dist/{graph-templates-B4gkXVqg.d.ts → graph-templates-ClBhrXiA.d.ts} +2 -2
  114. package/dist/{graph-templates-6zTU7bNe.d.cts → graph-templates-DfmKDARd.d.cts} +2 -2
  115. package/dist/index.cjs +73 -73
  116. package/dist/index.d.cts +10 -10
  117. package/dist/index.d.ts +10 -10
  118. package/dist/index.js +11 -11
  119. package/dist/indexes/index.cjs +8 -8
  120. package/dist/indexes/index.d.cts +4 -4
  121. package/dist/indexes/index.d.ts +4 -4
  122. package/dist/indexes/index.js +3 -3
  123. package/dist/{ingestion-import-target-im9wEB00.d.cts → ingestion-import-target-BSgJagqI.d.cts} +1 -1
  124. package/dist/{ingestion-import-target-SopMSm-T.d.ts → ingestion-import-target-PNw10V4T.d.ts} +1 -1
  125. package/dist/interchange/index.cjs +29 -29
  126. package/dist/interchange/index.d.cts +7 -6
  127. package/dist/interchange/index.d.ts +7 -6
  128. package/dist/interchange/index.js +6 -6
  129. package/dist/{local-store-impl-ARNXBBSF.cjs → local-store-impl-QGSRYFZF.cjs} +17 -17
  130. package/dist/{local-store-impl-ARNXBBSF.cjs.map → local-store-impl-QGSRYFZF.cjs.map} +1 -1
  131. package/dist/{local-store-impl-FTGRP2V7.js → local-store-impl-VEVK2VGA.js} +14 -14
  132. package/dist/{local-store-impl-FTGRP2V7.js.map → local-store-impl-VEVK2VGA.js.map} +1 -1
  133. package/dist/{pglite-store-impl-CNQZYRBC.cjs → pglite-store-impl-33CI3P3M.cjs} +17 -17
  134. package/dist/{pglite-store-impl-CNQZYRBC.cjs.map → pglite-store-impl-33CI3P3M.cjs.map} +1 -1
  135. package/dist/{pglite-store-impl-NULC2IHH.js → pglite-store-impl-RDPTOOP3.js} +14 -14
  136. package/dist/{pglite-store-impl-NULC2IHH.js.map → pglite-store-impl-RDPTOOP3.js.map} +1 -1
  137. package/dist/{postgres-Dd3TrFku.d.ts → postgres-2FBMdOE_.d.ts} +3 -3
  138. package/dist/{postgres-cLQPlKtp.d.cts → postgres-BR3AeXm9.d.ts} +1 -1
  139. package/dist/{postgres-CLPfTNYN.d.ts → postgres-CRatyTVL.d.cts} +1 -1
  140. package/dist/{postgres-B4VD_rVy.d.cts → postgres-lbZf0zyg.d.cts} +3 -3
  141. package/dist/{profile-Co154QBx.d.ts → profile-BipG05-8.d.ts} +2 -2
  142. package/dist/{profile-BqThShR_.d.cts → profile-DKtvxVyA.d.cts} +2 -2
  143. package/dist/profiler/index.d.cts +8 -7
  144. package/dist/profiler/index.d.ts +8 -7
  145. package/dist/provenance/index.cjs +15 -15
  146. package/dist/provenance/index.cjs.map +1 -1
  147. package/dist/provenance/index.d.cts +6 -5
  148. package/dist/provenance/index.d.ts +6 -5
  149. package/dist/provenance/index.js +2 -2
  150. package/dist/provenance/index.js.map +1 -1
  151. package/dist/{repair-validity-windows-BLoClfCq.d.cts → repair-validity-windows-BnSHFIsR.d.cts} +1 -1
  152. package/dist/{repair-validity-windows-C__28ckL.d.ts → repair-validity-windows-DfRb4gZm.d.ts} +1 -1
  153. package/dist/{resolve-DgFSIK99.d.ts → resolve-BbjZDYTw.d.ts} +1 -1
  154. package/dist/{resolve-DSUxNIqw.d.cts → resolve-mLksuBg2.d.cts} +1 -1
  155. package/dist/schema/index.cjs +36 -36
  156. package/dist/schema/index.d.cts +7 -7
  157. package/dist/schema/index.d.ts +7 -7
  158. package/dist/schema/index.js +6 -6
  159. package/dist/{searchable-CZKn12eY.d.cts → searchable-BEAN91Ce.d.cts} +1 -1
  160. package/dist/{searchable-CUWWphQI.d.ts → searchable-Bg2lMPRm.d.ts} +1 -1
  161. package/dist/{sqlite-mSd_eVk4.d.ts → sqlite-Cal3rHgZ.d.ts} +3 -3
  162. package/dist/{sqlite-RdH7w-ix.d.cts → sqlite-CvajLABd.d.cts} +1 -1
  163. package/dist/{sqlite-qXLIybR2.d.cts → sqlite-DQxKoWAH.d.cts} +3 -3
  164. package/dist/{sqlite-CoBmhiFd.d.ts → sqlite-jH5J-Jb8.d.ts} +1 -1
  165. package/dist/{store-BzmMsCcw.d.ts → store-B5WZ8E5m.d.ts} +313 -177
  166. package/dist/{store-CL6uTm_W.d.cts → store-DdhFpX53.d.cts} +313 -177
  167. package/dist/{types-BUoh7cc3.d.cts → types-BUA3dZ99.d.cts} +1 -1
  168. package/dist/{types-ClC0IFIS.d.ts → types-CPtb7KNf.d.ts} +1 -1
  169. package/dist/{types-Blq8PG_N.d.cts → types-Dky3sCFz.d.cts} +9 -0
  170. package/dist/{types-Blq8PG_N.d.ts → types-Dky3sCFz.d.ts} +9 -0
  171. package/dist/{where-61C-QoM8.d.ts → where-BReEkAiy.d.ts} +1 -1
  172. package/dist/{where-o3Me5iJx.d.cts → where-Cz11nPRu.d.cts} +1 -1
  173. package/package.json +2 -2
  174. package/dist/chunk-4MZQVVPX.cjs.map +0 -1
  175. package/dist/chunk-7JUD57B4.js.map +0 -1
  176. package/dist/chunk-FHFPUORN.cjs.map +0 -1
  177. package/dist/chunk-HWWPL2YL.js.map +0 -1
  178. package/dist/chunk-IV5W7LKW.cjs.map +0 -1
  179. package/dist/chunk-YTYB5KCQ.js.map +0 -1
@@ -60,6 +60,11 @@ var postgresDialect = {
60
60
  setTransactionWorkingMemory(workingMemory) {
61
61
  return sql`SELECT set_config('work_mem', ${workingMemory}, true)`;
62
62
  },
63
+ orderedRowsJsonArray(rowAlias, _columns, orderColumn) {
64
+ const row = sql.identifier(rowAlias);
65
+ const order = sql`${row}.${sql.identifier(orderColumn)}`;
66
+ return sql`(SELECT COALESCE(jsonb_agg(to_jsonb(${row}) - ${orderColumn} ORDER BY ${order}), '[]'::jsonb) FROM ${row})`;
67
+ },
63
68
  // ============================================================
64
69
  // JSON Path Operations
65
70
  // ============================================================
@@ -241,6 +246,13 @@ function toSqliteObjectPropertyPath(property) {
241
246
  return `$.${JSON.stringify(property)}`;
242
247
  }
243
248
  var JSON_SET_REPLACEMENTS_PER_CALL = 50;
249
+ var JSON_OBJECT_PAIRS_PER_CALL = 40;
250
+ function mergeJsonObjects(parts) {
251
+ const [first, ...rest] = parts;
252
+ if (first === void 0) return sql`json('{}')`;
253
+ if (rest.length === 0) return first;
254
+ return sql`json_patch(${first}, ${mergeJsonObjects(rest)})`;
255
+ }
244
256
  function isArrayIndex(segment) {
245
257
  return /^\d+$/.test(segment);
246
258
  }
@@ -266,6 +278,25 @@ var sqliteDialect = {
266
278
  setTransactionWorkingMemory() {
267
279
  return;
268
280
  },
281
+ orderedRowsJsonArray(rowAlias, columns, orderColumn) {
282
+ const row = sql.identifier(rowAlias);
283
+ const objectParts = Array.from(
284
+ { length: Math.ceil(columns.length / JSON_OBJECT_PAIRS_PER_CALL) },
285
+ (_, index) => {
286
+ const slice = columns.slice(
287
+ index * JSON_OBJECT_PAIRS_PER_CALL,
288
+ (index + 1) * JSON_OBJECT_PAIRS_PER_CALL
289
+ );
290
+ const pairs = slice.flatMap((column) => [
291
+ sql`${column}`,
292
+ sql`${row}.${sql.identifier(column)}`
293
+ ]);
294
+ return sql`json_object(${sql.join(pairs, sql`, `)})`;
295
+ }
296
+ );
297
+ const object = mergeJsonObjects(objectParts);
298
+ return sql`COALESCE((SELECT json_group_array(json(batch_json)) FROM (SELECT ${object} AS batch_json FROM ${row} ORDER BY ${row}.${sql.identifier(orderColumn)})), json('[]'))`;
299
+ },
269
300
  // ============================================================
270
301
  // JSON Path Operations
271
302
  // ============================================================
@@ -700,5 +731,5 @@ function escapeStringLiteral(value) {
700
731
  }
701
732
 
702
733
  export { compileEdgeIndexKeys, compileIndexWhere, compileNodeIndexFieldKeys, compileNodeIndexKeys, getDialect, getNodeScopeColumns };
703
- //# sourceMappingURL=chunk-YTYB5KCQ.js.map
704
- //# sourceMappingURL=chunk-YTYB5KCQ.js.map
734
+ //# sourceMappingURL=chunk-OH7QRGPQ.js.map
735
+ //# sourceMappingURL=chunk-OH7QRGPQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/query/dialect/postgres.ts","../src/query/dialect/sqlite.ts","../src/query/dialect/index.ts","../src/indexes/compiler.ts"],"names":[],"mappings":"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","file":"chunk-OH7QRGPQ.js","sourcesContent":["/**\n * PostgreSQL Dialect Adapter\n *\n * Implements dialect-specific SQL generation for PostgreSQL databases.\n * Uses PostgreSQL's native JSONB operators for JSON operations.\n */\nimport { type ValueType } from \"../ast\";\nimport { type JsonPointer, parseJsonPointer } from \"../json-pointer\";\nimport { sql, type SqlFragment } from \"../sql-fragment\";\nimport { tsvectorStrategy } from \"./fulltext-strategy\";\nimport { likeEscapeClause } from \"./like-escape\";\nimport {\n getSqlDialectProfile,\n inlineSqlStringLiteral,\n packSqlListValue,\n} from \"./profile\";\nimport { type DialectAdapter } from \"./types\";\n\n/**\n * Escapes a string for use in a PostgreSQL string literal, independent of\n * server configuration.\n *\n * A plain `'…'` literal is only safe when the value contains no backslash:\n * under the legacy `standard_conforming_strings = off` setting, backslashes\n * act as escape characters inside regular literals, so a value ending in\n * `\\` could swallow the closing quote and change how the statement parses.\n * Values containing a backslash therefore use the `E'…'` form — where\n * backslash is an escape character under BOTH settings — with backslashes\n * and quotes doubled. Backslash-free values keep the plain form so the\n * emitted SQL text (which callers rely on being identical across clauses)\n * is unchanged for the common case.\n */\n/**\n * Converts a JSON pointer to PostgreSQL's text array path.\n *\n * Uses raw SQL (non-parameterized) to ensure the same expression text\n * is generated when the same field is used in multiple clauses (SELECT, GROUP BY).\n * Pointers usually come from schema definitions, but some (e.g. a weighted\n * traversal's `weightProperty`) are runtime strings — safe either way\n * because the shared PostgreSQL literal renderer escapes independently of server\n * configuration.\n *\n * @example\n * \"/name\" → ARRAY['name']\n * \"/items/0\" → ARRAY['items', '0']\n * \"/a/b/c\" → ARRAY['a', 'b', 'c']\n */\nfunction toPostgresPath(pointer: JsonPointer): SqlFragment {\n if (!pointer || pointer === \"\" || pointer === \"/\") {\n return sql.raw(\"ARRAY[]::text[]\");\n }\n\n const segments = parseJsonPointer(pointer);\n if (segments.length === 0) {\n return sql.raw(\"ARRAY[]::text[]\");\n }\n\n // Use raw SQL for path segments to ensure identical SQL text\n // when the same field is used in multiple clauses (e.g., SELECT and GROUP BY)\n const escapedSegments = segments\n .map((segment) => inlineSqlStringLiteral(segment, \"postgres\"))\n .join(\", \");\n return sql.raw(`ARRAY[${escapedSegments}]`);\n}\n\n/**\n * The cast that turns a text element of a list-valued `IN` parameter into the\n * type its left operand was extracted as. Mirrors the `jsonExtract*` casts:\n * `jsonExtractNumber` yields numeric, `jsonExtractBoolean` boolean,\n * `jsonExtractDate` timestamptz, and everything else stays text.\n */\nfunction postgresElementCast(elementType: ValueType | undefined): SqlFragment {\n switch (elementType) {\n case \"number\": {\n return sql.raw(\"::numeric\");\n }\n case \"boolean\": {\n return sql.raw(\"::boolean\");\n }\n case \"date\": {\n return sql.raw(\"::timestamptz\");\n }\n // `jsonExtractText` leaves these as text, so the elements must stay text\n // too. The compiler rejects array/object/embedding before reaching here.\n case \"string\":\n case \"array\":\n case \"object\":\n case \"embedding\":\n case \"unknown\":\n case undefined: {\n return sql.empty();\n }\n }\n}\n\n/**\n * PostgreSQL dialect adapter implementation.\n */\nexport const postgresDialect: DialectAdapter = {\n name: \"postgres\",\n capabilities: {\n standardQueryStrategy: \"cte_project\",\n recursiveQueryStrategy: \"recursive_cte\",\n materializeIntermediateTraversalCtes: false,\n emitNotMaterializedHint: true,\n forceRecursiveWorktableOuterJoinOrder: false,\n vectorPredicateStrategy: \"native\",\n vectorMetrics: [\"cosine\", \"l2\", \"inner_product\"] as const,\n supportsFulltext: true,\n subgraphMembershipStrategy: \"materialized-ids\",\n },\n\n binaryText(expression) {\n return sql`${expression} COLLATE \"C\"`;\n },\n\n analyzeTemporaryTable(table) {\n return sql`ANALYZE ${table}`;\n },\n\n setTransactionWorkingMemory(workingMemory) {\n // The parameterizable form of `SET LOCAL work_mem`: is_local => true\n // scopes the override to the current transaction, matching the pgvector\n // iterative-scan GUC handling elsewhere in the backend.\n return sql`SELECT set_config('work_mem', ${workingMemory}, true)`;\n },\n\n orderedRowsJsonArray(rowAlias, _columns, orderColumn) {\n const row = sql.identifier(rowAlias);\n const order = sql`${row}.${sql.identifier(orderColumn)}`;\n return sql`(SELECT COALESCE(jsonb_agg(to_jsonb(${row}) - ${orderColumn} ORDER BY ${order}), '[]'::jsonb) FROM ${row})`;\n },\n\n // ============================================================\n // JSON Path Operations\n // ============================================================\n\n compilePath(pointer) {\n return toPostgresPath(pointer);\n },\n\n jsonExtract(column, pointer) {\n // #> returns JSONB value at path\n const path = toPostgresPath(pointer);\n return sql`${column} #> ${path}`;\n },\n\n jsonExtractText(column, pointer) {\n // #>> returns text value at path\n const path = toPostgresPath(pointer);\n return sql`${column} #>> ${path}`;\n },\n\n jsonExtractNumber(column, pointer) {\n // Extract as text then cast to numeric\n const path = toPostgresPath(pointer);\n return sql`(${column} #>> ${path})::numeric`;\n },\n\n jsonExtractDouble(column, pointer) {\n // float8, not ::numeric — decimal arithmetic would diverge from\n // SQLite's binary doubles when values accumulate.\n const path = toPostgresPath(pointer);\n return sql`(${column} #>> ${path})::double precision`;\n },\n\n jsonExtractBoolean(column, pointer) {\n // Extract as text then cast to boolean\n const path = toPostgresPath(pointer);\n return sql`(${column} #>> ${path})::boolean`;\n },\n\n jsonExtractDate(column, pointer) {\n // Extract as text then cast to timestamptz\n const path = toPostgresPath(pointer);\n return sql`(${column} #>> ${path})::timestamptz`;\n },\n\n // ============================================================\n // JSON Array Operations\n // ============================================================\n\n jsonArrayLength(column) {\n return sql`jsonb_array_length(${column})`;\n },\n\n jsonArrayContains(column, value) {\n // @> checks if left contains right\n const jsonValue = JSON.stringify([value]);\n return sql`${column} @> ${jsonValue}::jsonb`;\n },\n\n jsonArrayContainsAll(column, values) {\n if (values.length === 0) {\n return sql.raw(\"1=1\");\n }\n\n // @> with full array checks all values\n const jsonValue = JSON.stringify(values);\n return sql`${column} @> ${jsonValue}::jsonb`;\n },\n\n jsonArrayContainsAny(column, values) {\n if (values.length === 0) {\n return sql.raw(\"1=0\");\n }\n\n // Check each value with @> and OR them together\n // PostgreSQL doesn't have a native \"overlaps\" for jsonb arrays\n const conditions = values.map((value) => {\n const jsonValue = JSON.stringify([value]);\n return sql`${column} @> ${jsonValue}::jsonb`;\n });\n return sql`(${sql.join(conditions, sql` OR `)})`;\n },\n\n // ============================================================\n // JSON Object Operations\n // ============================================================\n\n jsonHasPath(column, pointer) {\n const path = toPostgresPath(pointer);\n return sql`${column} #> ${path} IS NOT NULL`;\n },\n\n jsonPathIsNull(column, pointer) {\n const path = toPostgresPath(pointer);\n // Type-based, not the `#>> path = 'null'` text comparison this used to\n // be: `#>>` renders a JSON null as SQL NULL (making the old form\n // three-valued, so `.pathIsNull()` silently missed stored JSON nulls) and\n // renders the JSON *string* \"null\" as the same text 'null' (falsely\n // matching it). jsonb_typeof distinguishes both, and COALESCE maps a\n // missing path to TRUE, keeping the predicate two-valued.\n return sql`COALESCE(jsonb_typeof(${column} #> ${path}) = 'null', TRUE)`;\n },\n\n jsonPathIsNumber(column, pointer) {\n const path = toPostgresPath(pointer);\n // jsonb_typeof returns NULL for a missing path; COALESCE keeps the\n // predicate two-valued so negations don't silently drop rows.\n return sql`COALESCE(jsonb_typeof(${column} #> ${path}) = 'number', FALSE)`;\n },\n\n jsonPathIsNotNull(column, pointer) {\n const path = toPostgresPath(pointer);\n // Mirror image of jsonPathIsNull; COALESCE maps a missing path to FALSE.\n return sql`COALESCE(jsonb_typeof(${column} #> ${path}) <> 'null', FALSE)`;\n },\n\n jsonScalarPathEquals(column, pointer, value) {\n const path = toPostgresPath(pointer);\n return sql`${column} #> ${path} = CAST(${JSON.stringify(value)} AS jsonb)`;\n },\n\n jsonSetProperties(column, patch, unsetProperties = []) {\n const withReplacements =\n Object.keys(patch).length === 0 ?\n column\n : sql`${column} || ${JSON.stringify(patch)}::jsonb`;\n if (unsetProperties.length === 0) return withReplacements;\n const properties = unsetProperties.map((property) => sql`${property}`);\n return sql`(${withReplacements}) - ARRAY[${sql.join(properties, sql`, `)}]::text[]`;\n },\n\n // ============================================================\n // Comparison Operations\n // ============================================================\n\n nullSafeEquals(left, right) {\n return sql`${left} IS NOT DISTINCT FROM ${right}`;\n },\n\n inList(left, values, negated) {\n const operator = negated ? sql.raw(\"NOT IN\") : sql.raw(\"IN\");\n const placeholders = values.map((value) => sql`${value}`);\n return sql`${left} ${operator} (${sql.join(placeholders, sql`, `)})`;\n },\n\n inListParameter(left, packedValues, { negated, elementType }) {\n const operator = negated ? sql.raw(\"NOT IN\") : sql.raw(\"IN\");\n // One placeholder for the whole list: the binding is JSON text, cast to\n // jsonb and expanded into a one-column relation, so arity never reaches\n // the SQL text. Elements arrive as text (`jsonb_array_elements_text`) and\n // are cast to whatever type the left operand was extracted as, mirroring\n // the jsonExtract* casts above.\n const element = sql`in_list_element.value${postgresElementCast(elementType)}`;\n return sql`${left} ${operator} (SELECT ${element} FROM jsonb_array_elements_text(${packedValues}::jsonb) AS in_list_element(value))`;\n },\n\n packListValue(values) {\n return packSqlListValue(values, \"postgres\");\n },\n\n // ============================================================\n // String Operations\n // ============================================================\n\n ilike(column, pattern) {\n // PostgreSQL has native ILIKE operator. Declaring backslash as the escape\n // character is a no-op (it is the LIKE default) but keeps the emitted SQL\n // identical in intent to SQLite, which has no default escape character.\n return sql`${column} ILIKE ${pattern} ${likeEscapeClause}`;\n },\n\n // ============================================================\n // Set Operations\n // ============================================================\n\n wrapSetOperationOperand(inner) {\n // PostgreSQL allows a complete SELECT (incl. its own WITH) as a\n // parenthesized compound operand.\n return sql`(${inner})`;\n },\n\n // ============================================================\n // Recursive CTE Path Operations\n // ============================================================\n\n initializePath(nodeId) {\n // PostgreSQL uses text arrays: ARRAY[id]\n return sql`ARRAY[${nodeId}]`;\n },\n\n extendPath(currentPath, nodeId) {\n // Array concatenation: path || id\n return sql`${currentPath} || ${nodeId}`;\n },\n\n cycleCheck(nodeId, path) {\n // Check that id is NOT in array path\n // Returns TRUE if no cycle (id not in array)\n return sql`${nodeId} != ALL(${path})`;\n },\n\n // ============================================================\n // Value Binding & Literals\n // ============================================================\n\n bindValue(value) {\n return getSqlDialectProfile(\"postgres\").bindValue(value);\n },\n\n booleanLiteral(value) {\n return sql.raw(\n getSqlDialectProfile(\"postgres\").booleanLiteralString(value),\n );\n },\n\n booleanLiteralString(value) {\n return getSqlDialectProfile(\"postgres\").booleanLiteralString(value);\n },\n\n quoteIdentifier(name) {\n // PostgreSQL uses double quotes, escape embedded quotes by doubling\n return `\"${name.replaceAll('\"', '\"\"')}\"`;\n },\n\n // ============================================================\n // Vector Operations\n // ============================================================\n\n // Compile-time gate for `field.similarTo(...)`; the active\n // `VectorStrategy` (pgvector) owns the distance SQL.\n supportsVectors: true,\n\n // ============================================================\n // Fulltext Operations\n // ============================================================\n\n fulltext: tsvectorStrategy,\n};\n","/**\n * SQLite Dialect Adapter\n *\n * Implements dialect-specific SQL generation for SQLite databases.\n * Uses SQLite's JSON1 extension for JSON operations.\n */\nimport { type JsonPointer, parseJsonPointer } from \"../json-pointer\";\nimport { sql, type SqlFragment } from \"../sql-fragment\";\nimport { fts5Strategy } from \"./fulltext-strategy\";\nimport { likeEscapeClause } from \"./like-escape\";\nimport { getSqlDialectProfile, packSqlListValue } from \"./profile\";\nimport { type DialectAdapter } from \"./types\";\n\n/**\n * Escapes a string for use in a SQLite string literal.\n * SQLite uses single quotes and escapes embedded single quotes by doubling them.\n */\nfunction escapeSqliteLiteral(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n\n/**\n * Converts a JSON pointer to SQLite's JSON path syntax.\n *\n * @example\n * \"/name\" → \"$.\\\"name\\\"\"\n * \"/items/0\" → \"$.\\\"items\\\"[0]\"\n * \"/a/b/c\" → \"$.\\\"a\\\".\\\"b\\\".\\\"c\\\"\"\n */\nfunction toSqlitePath(pointer: JsonPointer): string {\n if (!pointer || pointer === \"\" || pointer === \"/\") {\n return \"$\";\n }\n\n const segments = parseJsonPointer(pointer);\n const parts: string[] = [\"$\"];\n\n for (const segment of segments) {\n if (isArrayIndex(segment)) {\n parts.push(`[${segment}]`);\n } else {\n // Quote the key to handle special characters\n parts.push(`.${JSON.stringify(segment)}`);\n }\n }\n\n return parts.join(\"\");\n}\n\n/**\n * Returns a JSON path for an object property, even when the property name is a\n * numeric string. `toSqlitePath()` interprets numeric pointer segments as\n * array indexes, which is correct for query pointers but not for the\n * top-level object keys accepted by set-based patches.\n */\nfunction toSqliteObjectPropertyPath(property: string): string {\n return `$.${JSON.stringify(property)}`;\n}\n\n// SQLite builds before 3.48 default to 127 function arguments. Each json_set\n// replacement consumes a path/value pair in addition to the input document, so\n// compose bounded calls instead of making schema breadth an engine-version\n// dependency.\nconst JSON_SET_REPLACEMENTS_PER_CALL = 50;\nconst JSON_OBJECT_PAIRS_PER_CALL = 40;\n\nfunction mergeJsonObjects(parts: readonly SqlFragment[]): SqlFragment {\n const [first, ...rest] = parts;\n if (first === undefined) return sql`json('{}')`;\n if (rest.length === 0) return first;\n return sql`json_patch(${first}, ${mergeJsonObjects(rest)})`;\n}\n\n/**\n * Checks if a JSON pointer segment is an array index.\n */\nfunction isArrayIndex(segment: string): boolean {\n return /^\\d+$/.test(segment);\n}\n\n/**\n * SQLite dialect adapter implementation.\n */\nexport const sqliteDialect: DialectAdapter = {\n name: \"sqlite\",\n capabilities: {\n standardQueryStrategy: \"cte_project\",\n recursiveQueryStrategy: \"recursive_cte\",\n materializeIntermediateTraversalCtes: true,\n emitNotMaterializedHint: false,\n forceRecursiveWorktableOuterJoinOrder: true,\n vectorPredicateStrategy: \"native\",\n vectorMetrics: [\"cosine\", \"l2\"] as const,\n supportsFulltext: true,\n subgraphMembershipStrategy: \"inline-cte\",\n },\n\n binaryText(expression) {\n return expression;\n },\n\n analyzeTemporaryTable(): undefined {\n return;\n },\n\n setTransactionWorkingMemory(): undefined {\n // SQLite has no per-transaction working-memory budget to raise.\n return;\n },\n\n orderedRowsJsonArray(rowAlias, columns, orderColumn) {\n const row = sql.identifier(rowAlias);\n const objectParts = Array.from(\n { length: Math.ceil(columns.length / JSON_OBJECT_PAIRS_PER_CALL) },\n (_, index) => {\n const slice = columns.slice(\n index * JSON_OBJECT_PAIRS_PER_CALL,\n (index + 1) * JSON_OBJECT_PAIRS_PER_CALL,\n );\n const pairs = slice.flatMap((column) => [\n sql`${column}`,\n sql`${row}.${sql.identifier(column)}`,\n ]);\n return sql`json_object(${sql.join(pairs, sql`, `)})`;\n },\n );\n const object = mergeJsonObjects(objectParts);\n return sql`COALESCE((SELECT json_group_array(json(batch_json)) FROM (SELECT ${object} AS batch_json FROM ${row} ORDER BY ${row}.${sql.identifier(orderColumn)})), json('[]'))`;\n },\n\n // ============================================================\n // JSON Path Operations\n // ============================================================\n\n compilePath(pointer) {\n // Use raw SQL to ensure the path is a literal, which allows expression\n // indexes on json_extract(...) to be used by the query planner.\n return sql.raw(escapeSqliteLiteral(toSqlitePath(pointer)));\n },\n\n jsonExtract(column, pointer) {\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n jsonExtractText(column, pointer) {\n // SQLite's json_extract returns the native JSON type, which works\n // for text comparisons. For explicit text, we use the same function.\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n jsonExtractNumber(column, pointer) {\n // SQLite json_extract returns numbers natively when the value is numeric\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n jsonExtractDouble(column, pointer) {\n // json_extract already yields INTEGER/REAL affinity for JSON numbers,\n // and SQLite arithmetic on those values is IEEE 754 double.\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n jsonExtractBoolean(column, pointer) {\n // SQLite json_extract returns 0/1 for boolean values\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n jsonExtractDate(column, pointer) {\n // SQLite stores dates as ISO strings, json_extract returns them as text\n const path = toSqlitePath(pointer);\n return sql`json_extract(${column}, ${sql.raw(escapeSqliteLiteral(path))})`;\n },\n\n // ============================================================\n // JSON Array Operations\n // ============================================================\n\n jsonArrayLength(column) {\n return sql`json_array_length(${column})`;\n },\n\n jsonArrayContains(column, value) {\n return sql`EXISTS (SELECT 1 FROM json_each(${column}) WHERE json_each.value = ${value})`;\n },\n\n jsonArrayContainsAll(column, values) {\n if (values.length === 0) {\n return sql.raw(\"1=1\");\n }\n const packedValues = JSON.stringify(values);\n return sql`\n NOT EXISTS (\n SELECT 1 FROM json_each(${packedValues}) AS tg_required\n WHERE NOT EXISTS (\n SELECT 1 FROM json_each(${column}) AS tg_actual\n WHERE tg_actual.value = tg_required.value\n )\n )\n `;\n },\n\n jsonArrayContainsAny(column, values) {\n if (values.length === 0) {\n return sql.raw(\"1=0\");\n }\n const packedValues = JSON.stringify(values);\n return sql`\n EXISTS (\n SELECT 1\n FROM json_each(${column}) AS tg_actual\n JOIN json_each(${packedValues}) AS tg_wanted\n ON tg_actual.value = tg_wanted.value\n )\n `;\n },\n\n // ============================================================\n // JSON Object Operations\n // ============================================================\n\n jsonHasPath(column, pointer) {\n const path = toSqlitePath(pointer);\n return sql`json_type(${column}, ${sql.raw(escapeSqliteLiteral(path))}) IS NOT NULL`;\n },\n\n jsonPathIsNull(column, pointer) {\n const path = toSqlitePath(pointer);\n const pathSql = sql.raw(escapeSqliteLiteral(path));\n return sql`COALESCE(json_type(${column}, ${pathSql}) = 'null', 1)`;\n },\n\n jsonPathIsNumber(column, pointer) {\n const path = toSqlitePath(pointer);\n const pathSql = sql.raw(escapeSqliteLiteral(path));\n // json_type returns NULL for a missing path; COALESCE keeps the\n // predicate two-valued so negations don't silently drop rows.\n return sql`COALESCE(json_type(${column}, ${pathSql}) IN ('integer', 'real'), 0)`;\n },\n\n jsonPathIsNotNull(column, pointer) {\n const path = toSqlitePath(pointer);\n const pathSql = sql.raw(escapeSqliteLiteral(path));\n return sql`COALESCE(json_type(${column}, ${pathSql}) <> 'null', 0)`;\n },\n\n jsonScalarPathEquals(column, pointer, value) {\n const path = toSqlitePath(pointer);\n const pathSql = sql.raw(escapeSqliteLiteral(path));\n if (value === null) {\n return sql`json_type(${column}, ${pathSql}) = 'null'`;\n }\n if (typeof value === \"boolean\") {\n return sql`json_type(${column}, ${pathSql}) IN ('true', 'false') AND json_extract(${column}, ${pathSql}) = ${value ? 1 : 0}`;\n }\n if (typeof value === \"number\") {\n return sql`json_type(${column}, ${pathSql}) IN ('integer', 'real') AND json_extract(${column}, ${pathSql}) = ${value}`;\n }\n return sql`json_type(${column}, ${pathSql}) = 'text' AND json_extract(${column}, ${pathSql}) = ${value}`;\n },\n\n jsonSetProperties(column, patch, unsetProperties = []) {\n const entries = Object.entries(patch);\n let patchedColumn = column;\n for (\n let offset = 0;\n offset < entries.length;\n offset += JSON_SET_REPLACEMENTS_PER_CALL\n ) {\n const replacements = entries\n .slice(offset, offset + JSON_SET_REPLACEMENTS_PER_CALL)\n .flatMap(([property, value]) => [\n sql.raw(escapeSqliteLiteral(toSqliteObjectPropertyPath(property))),\n sql`json(${JSON.stringify(value)})`,\n ]);\n patchedColumn = sql`json_set(${patchedColumn}, ${sql.join(replacements, sql`, `)})`;\n }\n if (unsetProperties.length === 0) return patchedColumn;\n const removalPaths = unsetProperties.map((property) =>\n sql.raw(escapeSqliteLiteral(toSqliteObjectPropertyPath(property))),\n );\n return sql`json_remove(${patchedColumn}, ${sql.join(removalPaths, sql`, `)})`;\n },\n\n // ============================================================\n // Comparison Operations\n // ============================================================\n\n nullSafeEquals(left, right) {\n // SQLite's IS operator is null-safe equality (equivalent to = for\n // non-null operands, TRUE when both sides are NULL).\n return sql`${left} IS ${right}`;\n },\n\n inList(left, values, negated) {\n const operator = negated ? sql.raw(\"NOT IN\") : sql.raw(\"IN\");\n const packedValues = JSON.stringify(values);\n return sql`${left} ${operator} (SELECT value FROM json_each(${packedValues}))`;\n },\n\n inListParameter(left, packedValues, { negated }) {\n const operator = negated ? sql.raw(\"NOT IN\") : sql.raw(\"IN\");\n // Same packed shape as the literal `inList` above, with the JSON text\n // supplied by the caller's binding instead of baked in. SQLite's dynamic\n // typing makes `json_each.value` compare correctly against every extracted\n // column type, so the element type needs no cast here.\n return sql`${left} ${operator} (SELECT value FROM json_each(${packedValues}))`;\n },\n\n packListValue(values) {\n return packSqlListValue(values, \"sqlite\");\n },\n\n // ============================================================\n // String Operations\n // ============================================================\n\n ilike(column, pattern) {\n // SQLite LIKE is case-insensitive for ASCII by default, but we use\n // LOWER() for consistency with non-ASCII characters. SQLite has no default\n // LIKE escape character, so declare backslash explicitly to honor the\n // escaping the compiler applies to the pattern (parity with Postgres).\n return sql`LOWER(${column}) LIKE LOWER(${pattern}) ${likeEscapeClause}`;\n },\n\n // ============================================================\n // Set Operations\n // ============================================================\n\n wrapSetOperationOperand(inner) {\n // SQLite forbids parenthesized compound operands, but a FROM-subquery may\n // carry its own WITH clause, so wrap each operand as a subquery.\n return sql`SELECT * FROM (${inner})`;\n },\n\n // ============================================================\n // Recursive CTE Path Operations\n // ============================================================\n\n initializePath(nodeId) {\n // SQLite uses string-based paths with delimiters: '|id|'\n return sql`'|' || ${nodeId} || '|'`;\n },\n\n extendPath(currentPath, nodeId) {\n // Append: path || id || '|'\n return sql`${currentPath} || ${nodeId} || '|'`;\n },\n\n cycleCheck(nodeId, path) {\n // Check that id is NOT in path using INSTR\n // Returns TRUE if no cycle (id not found in path)\n return sql`INSTR(${path}, '|' || ${nodeId} || '|') = 0`;\n },\n\n // ============================================================\n // Value Binding & Literals\n // ============================================================\n\n bindValue(value) {\n return getSqlDialectProfile(\"sqlite\").bindValue(value);\n },\n\n booleanLiteral(value) {\n return sql.raw(getSqlDialectProfile(\"sqlite\").booleanLiteralString(value));\n },\n\n booleanLiteralString(value) {\n return getSqlDialectProfile(\"sqlite\").booleanLiteralString(value);\n },\n\n quoteIdentifier(name) {\n // SQLite uses double quotes (or backticks), escape embedded quotes by doubling\n return `\"${name.replaceAll('\"', '\"\"')}\"`;\n },\n\n // ============================================================\n // Vector Operations\n // ============================================================\n\n // Compile-time gate for `field.similarTo(...)`; the active\n // `VectorStrategy` (sqlite-vec / libSQL-native) owns the distance SQL.\n supportsVectors: true,\n\n // ============================================================\n // Fulltext Operations\n // ============================================================\n\n fulltext: fts5Strategy,\n};\n","/**\n * SQL Dialect Module\n *\n * Provides dialect adapters for different SQL databases.\n * Use `getDialect()` to get the appropriate adapter for a dialect name.\n */\n\nexport type { FulltextStrategy } from \"./fulltext-strategy\";\nexport {\n ALL_FULLTEXT_MODES,\n buildFulltextCapabilities,\n fts5Strategy,\n tsvectorStrategy,\n} from \"./fulltext-strategy\";\nexport { postgresDialect } from \"./postgres\";\nexport { sqliteDialect } from \"./sqlite\";\nexport type {\n DialectAdapter,\n DialectCapabilities,\n DialectRecursiveQueryStrategy,\n DialectStandardQueryStrategy,\n DialectSubgraphMembershipStrategy,\n DialectVectorPredicateStrategy,\n InListParameterOptions,\n SqlDialect,\n} from \"./types\";\nexport {\n buildVectorCapabilities,\n type VectorSlot,\n type VectorStrategy,\n} from \"./vector-strategy\";\n\nimport { postgresDialect } from \"./postgres\";\nimport { sqliteDialect } from \"./sqlite\";\nimport { type DialectAdapter, type SqlDialect } from \"./types\";\n\n/**\n * Map of dialect names to their adapters.\n */\nconst DIALECT_ADAPTERS: Record<SqlDialect, DialectAdapter> = {\n sqlite: sqliteDialect,\n postgres: postgresDialect,\n};\n\n/**\n * Gets the dialect adapter for a given dialect name.\n *\n * @param dialect - The dialect name (\"sqlite\" or \"postgres\")\n * @returns The dialect adapter\n *\n * @example\n * ```typescript\n * const adapter = getDialect(\"postgres\");\n * const sql = adapter.jsonExtract(column, \"/name\");\n * ```\n */\nexport function getDialect(dialect: SqlDialect): DialectAdapter {\n return DIALECT_ADAPTERS[dialect];\n}\n\n/**\n * Default dialect used when none is specified.\n */\nexport const DEFAULT_DIALECT: SqlDialect = \"sqlite\";\n","import { type ValueType } from \"../query/ast\";\nimport { getDialect } from \"../query/dialect\";\nimport { type SqlDialect } from \"../query/dialect/types\";\nimport { type JsonPointer, jsonPointer } from \"../query/json-pointer\";\nimport { sql, type SqlFragment } from \"../query/sql-fragment\";\nimport {\n type EdgeIndexDeclaration,\n type IndexWhereExpression,\n type IndexWhereLiteral,\n type IndexWhereOp,\n type IndexWhereOperand,\n type NodeIndexDeclaration,\n type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// Public Types\n// ============================================================\n\nexport type IndexCompilationContext = Readonly<{\n dialect: SqlDialect;\n propsColumn: SqlFragment;\n systemColumn: (column: SystemColumnName) => SqlFragment;\n}>;\n\ntype CompiledIndexKeys = Readonly<{\n /** SQL expressions in index key order */\n keys: readonly SqlFragment[];\n}>;\n\n// ============================================================\n// Index Key Compilation\n// ============================================================\n\nexport function compileNodeIndexKeys(\n index: NodeIndexDeclaration,\n dialect: SqlDialect,\n propsColumn: SqlFragment,\n systemColumn: (column: SystemColumnName) => SqlFragment,\n): CompiledIndexKeys {\n const adapter = getDialect(dialect);\n const keys: SqlFragment[] = [];\n\n const systemColumns = [\n ...getNodeScopeColumns(index.scope),\n ...(index.keySystemColumns ?? []),\n ];\n for (const column of systemColumns) {\n keys.push(systemColumn(column));\n }\n\n const allPointers = [...index.fields, ...index.coveringFields];\n const allValueTypes = [\n ...index.fieldValueTypes,\n ...index.coveringFieldValueTypes,\n ];\n\n for (const [pointerIndex, pointer] of allPointers.entries()) {\n const valueType = allValueTypes[pointerIndex];\n const extracted = compileIndexKeyValue(\n adapter,\n propsColumn,\n pointer,\n valueType,\n );\n keys.push(sql`(${extracted})`);\n }\n\n return { keys };\n}\n\nexport function compileEdgeIndexKeys(\n index: EdgeIndexDeclaration,\n dialect: SqlDialect,\n propsColumn: SqlFragment,\n systemColumn: (column: SystemColumnName) => SqlFragment,\n): CompiledIndexKeys {\n const adapter = getDialect(dialect);\n const keys: SqlFragment[] = [];\n\n for (const column of getEdgeScopeColumns(index.scope, index.direction)) {\n keys.push(systemColumn(column));\n }\n\n const allPointers = [...index.fields, ...index.coveringFields];\n const allValueTypes = [\n ...index.fieldValueTypes,\n ...index.coveringFieldValueTypes,\n ];\n\n for (const [pointerIndex, pointer] of allPointers.entries()) {\n const valueType = allValueTypes[pointerIndex];\n const extracted = compileIndexKeyValue(\n adapter,\n propsColumn,\n pointer,\n valueType,\n );\n keys.push(sql`(${extracted})`);\n }\n\n return { keys };\n}\n\n/**\n * Compiles the per-field key-extraction expressions for a node index's\n * **lookup keys** — `index.fields` only, excluding scope columns and\n * `coveringFields` (which are index payload, not part of the lookup key).\n *\n * Each expression is the exact extraction the index DDL builds for that\n * field (via the shared {@link compileIndexKeyValue}), so a runtime lookup\n * predicate stays byte-identical to the materialized index expression —\n * the single source of truth that lets the planner use the physical index.\n */\nexport function compileNodeIndexFieldKeys(\n index: NodeIndexDeclaration,\n ctx: IndexCompilationContext,\n): readonly SqlFragment[] {\n const adapter = getDialect(ctx.dialect);\n const keys: SqlFragment[] = [];\n for (const [position, pointer] of index.fields.entries()) {\n const extracted = compileIndexKeyValue(\n adapter,\n ctx.propsColumn,\n pointer,\n index.fieldValueTypes[position],\n );\n keys.push(sql`(${extracted})`);\n }\n return keys;\n}\n\nfunction compileIndexKeyValue(\n dialect: ReturnType<typeof getDialect>,\n propsColumn: SqlFragment,\n pointer: JsonPointer,\n valueType: ValueType | undefined,\n): SqlFragment {\n switch (valueType) {\n case \"number\": {\n return dialect.jsonExtractNumber(propsColumn, pointer);\n }\n case \"boolean\": {\n return dialect.jsonExtractBoolean(propsColumn, pointer);\n }\n case \"date\": {\n return dialect.jsonExtractDate(propsColumn, pointer);\n }\n case \"string\":\n case \"unknown\":\n case undefined: {\n return dialect.jsonExtractText(propsColumn, pointer);\n }\n case \"array\":\n case \"object\":\n case \"embedding\": {\n // For advanced index types (GIN/json), callers should use dialect.jsonExtract\n // or index the props column directly. We keep this as a conservative fallback.\n return dialect.jsonExtract(propsColumn, pointer);\n }\n }\n}\n\nexport function getNodeScopeColumns(\n scope: NodeIndexDeclaration[\"scope\"],\n): readonly SystemColumnName[] {\n switch (scope) {\n case \"graphAndKind\": {\n return [\"graph_id\", \"kind\"];\n }\n case \"graph\": {\n return [\"graph_id\"];\n }\n case \"none\": {\n return [];\n }\n }\n}\n\nfunction getEdgeScopeColumns(\n scope: EdgeIndexDeclaration[\"scope\"],\n direction: EdgeIndexDeclaration[\"direction\"],\n): readonly SystemColumnName[] {\n const base =\n scope === \"graphAndKind\" ? ([\"graph_id\", \"kind\"] as const)\n : scope === \"graph\" ? ([\"graph_id\"] as const)\n : ([] as const);\n\n if (direction === \"out\") {\n return [...base, \"from_id\"];\n }\n if (direction === \"in\") {\n return [...base, \"to_id\"];\n }\n return [...base];\n}\n\n// ============================================================\n// WHERE Clause Compilation\n// ============================================================\n\nfunction isIndexWhereLiteralList(\n value: IndexWhereLiteral | readonly IndexWhereLiteral[],\n): value is readonly IndexWhereLiteral[] {\n return Array.isArray(value);\n}\n\nexport function compileIndexWhere(\n ctx: IndexCompilationContext,\n expression: IndexWhereExpression,\n): SqlFragment {\n switch (expression.__type) {\n case \"index_where_and\": {\n return sql`(${sql.join(\n expression.predicates.map((p) => compileIndexWhere(ctx, p)),\n sql` AND `,\n )})`;\n }\n case \"index_where_or\": {\n return sql`(${sql.join(\n expression.predicates.map((p) => compileIndexWhere(ctx, p)),\n sql` OR `,\n )})`;\n }\n case \"index_where_not\": {\n return sql`(NOT ${compileIndexWhere(ctx, expression.predicate)})`;\n }\n case \"index_where_null_check\": {\n const operand = compileIndexWhereOperand(ctx, expression.operand);\n return expression.op === \"isNull\" ?\n sql`${operand} IS NULL`\n : sql`${operand} IS NOT NULL`;\n }\n case \"index_where_comparison\": {\n const left = compileIndexWhereOperand(ctx, expression.left);\n\n const right = expression.right;\n if (isIndexWhereLiteralList(right)) {\n if (expression.op !== \"in\" && expression.op !== \"notIn\") {\n throw new Error(\n `Operator \"${expression.op}\" does not support list comparison in index WHERE clause`,\n );\n }\n const values = right.map((literal) =>\n compileIndexWhereLiteral(ctx.dialect, literal),\n );\n const operator = expression.op === \"in\" ? sql`IN` : sql`NOT IN`;\n return sql`${left} ${operator} (${sql.join(values, sql`, `)})`;\n }\n\n if (expression.op === \"in\" || expression.op === \"notIn\") {\n throw new Error(\n `Operator \"${expression.op}\" requires a list of values in index WHERE clause`,\n );\n }\n\n const rightLiteral = compileIndexWhereLiteral(ctx.dialect, right);\n const opSql = compileComparisonOperator(expression.op);\n return sql`${left} ${opSql} ${rightLiteral}`;\n }\n }\n}\n\nfunction compileIndexWhereOperand(\n ctx: IndexCompilationContext,\n operand: IndexWhereOperand,\n): SqlFragment {\n if (operand.__type === \"index_operand_system\") {\n return ctx.systemColumn(operand.column);\n }\n\n const adapter = getDialect(ctx.dialect);\n const pointer = jsonPointer([operand.field]);\n\n switch (operand.valueType) {\n case \"number\": {\n return adapter.jsonExtractNumber(ctx.propsColumn, pointer);\n }\n case \"boolean\": {\n return adapter.jsonExtractBoolean(ctx.propsColumn, pointer);\n }\n case \"date\": {\n return adapter.jsonExtractDate(ctx.propsColumn, pointer);\n }\n case \"array\":\n case \"object\":\n case \"embedding\": {\n return adapter.jsonExtract(ctx.propsColumn, pointer);\n }\n case \"string\":\n case \"unknown\":\n case undefined: {\n return adapter.jsonExtractText(ctx.propsColumn, pointer);\n }\n }\n}\n\nfunction compileIndexWhereLiteral(\n dialect: SqlDialect,\n literal: IndexWhereLiteral,\n): SqlFragment {\n switch (literal.valueType) {\n case \"string\":\n case \"date\": {\n return sql.raw(escapeStringLiteral(literal.value.toString()));\n }\n case \"number\": {\n return sql.raw(literal.value.toString());\n }\n case \"boolean\": {\n return getDialect(dialect).booleanLiteral(literal.value as boolean);\n }\n case \"array\":\n case \"object\":\n case \"embedding\":\n case \"unknown\": {\n return sql.raw(escapeStringLiteral(literal.value.toString()));\n }\n }\n}\n\ntype ComparisonIndexWhereOp = Exclude<IndexWhereOp, \"in\" | \"notIn\">;\n\nfunction compileComparisonOperator(op: ComparisonIndexWhereOp): SqlFragment {\n switch (op) {\n case \"eq\": {\n return sql`=`;\n }\n case \"neq\": {\n return sql`<>`;\n }\n case \"gt\": {\n return sql`>`;\n }\n case \"gte\": {\n return sql`>=`;\n }\n case \"lt\": {\n return sql`<`;\n }\n case \"lte\": {\n return sql`<=`;\n }\n }\n}\n\nfunction escapeStringLiteral(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n"]}
@@ -2,14 +2,14 @@
2
2
 
3
3
  var chunk6YKISECL_cjs = require('./chunk-6YKISECL.cjs');
4
4
  var chunkUVVDQGOY_cjs = require('./chunk-UVVDQGOY.cjs');
5
- var chunkC3CN2C2T_cjs = require('./chunk-C3CN2C2T.cjs');
6
- var chunkIV5W7LKW_cjs = require('./chunk-IV5W7LKW.cjs');
5
+ var chunkQ6ZVQWH7_cjs = require('./chunk-Q6ZVQWH7.cjs');
6
+ var chunkA22XPVBQ_cjs = require('./chunk-A22XPVBQ.cjs');
7
7
  var chunkWEXAMJTA_cjs = require('./chunk-WEXAMJTA.cjs');
8
8
  var chunkEOLNL35G_cjs = require('./chunk-EOLNL35G.cjs');
9
9
  var chunk6ODVH5SA_cjs = require('./chunk-6ODVH5SA.cjs');
10
10
  var chunkFSSQ4YNU_cjs = require('./chunk-FSSQ4YNU.cjs');
11
11
  var chunkNWJV4UVW_cjs = require('./chunk-NWJV4UVW.cjs');
12
- var chunkCRROO6PK_cjs = require('./chunk-CRROO6PK.cjs');
12
+ var chunkQHP2BCBJ_cjs = require('./chunk-QHP2BCBJ.cjs');
13
13
  var chunkZY4GXIVN_cjs = require('./chunk-ZY4GXIVN.cjs');
14
14
  var chunkMAYQDOZB_cjs = require('./chunk-MAYQDOZB.cjs');
15
15
  var chunkHAHNRASW_cjs = require('./chunk-HAHNRASW.cjs');
@@ -1826,7 +1826,7 @@ function compileGraphExtensionRelationalIndexes(documents, nodeKinds, mergedEdge
1826
1826
  suggestion: "Declare the kind under `nodes` in this graph extension, or remove the index from `indexes`."
1827
1827
  });
1828
1828
  }
1829
- const declaration2 = chunkCRROO6PK_cjs.defineNodeIndex(
1829
+ const declaration2 = chunkQHP2BCBJ_cjs.defineNodeIndex(
1830
1830
  node,
1831
1831
  toNodeIndexConfig(document)
1832
1832
  );
@@ -1840,7 +1840,7 @@ function compileGraphExtensionRelationalIndexes(documents, nodeKinds, mergedEdge
1840
1840
  suggestion: "Declare the edge under `edges` in this graph extension, or remove the index from `indexes`."
1841
1841
  });
1842
1842
  }
1843
- const declaration = chunkCRROO6PK_cjs.defineEdgeIndex(
1843
+ const declaration = chunkQHP2BCBJ_cjs.defineEdgeIndex(
1844
1844
  edgeRegistration.type,
1845
1845
  toEdgeIndexConfig(document)
1846
1846
  );
@@ -2224,7 +2224,7 @@ async function ensureIdentitySchemaStorage(backend, schema, options) {
2224
2224
  const separationMissing = missingTables.includes(
2225
2225
  IDENTITY_SEPARATION_RELATION
2226
2226
  );
2227
- const rebuildRequired = await chunkC3CN2C2T_cjs.separationRebuildRequired(
2227
+ const rebuildRequired = await chunkQ6ZVQWH7_cjs.separationRebuildRequired(
2228
2228
  backend,
2229
2229
  schema,
2230
2230
  options.graphId,
@@ -2362,7 +2362,7 @@ async function identityKindCascadeNeeded(backend, schema, graphId, droppedNodeKi
2362
2362
  provisionMissing: false
2363
2363
  });
2364
2364
  if (missingTables.length > 0) return false;
2365
- return chunkC3CN2C2T_cjs.hasAssertionsTouchingKinds(backend, schema, graphId, droppedNodeKinds);
2365
+ return chunkQ6ZVQWH7_cjs.hasAssertionsTouchingKinds(backend, schema, graphId, droppedNodeKinds);
2366
2366
  }
2367
2367
  function assertIdentityStoragePresent(graphId, missingTables) {
2368
2368
  if (missingTables.length === 0) return;
@@ -2385,13 +2385,13 @@ function identitySchemaCommitPreflight(ctx, options) {
2385
2385
  ctx.graphId,
2386
2386
  options.provisionDerivedRelations ?? []
2387
2387
  );
2388
- await chunkIV5W7LKW_cjs.lockRecordedGraphWrite(target, ctx.graphId);
2389
- await chunkC3CN2C2T_cjs.lockIdentityGraph(target, ctx.graphId);
2388
+ await chunkA22XPVBQ_cjs.lockRecordedGraphWrite(target, ctx.graphId);
2389
+ await chunkQ6ZVQWH7_cjs.lockIdentityGraph(target, ctx.graphId);
2390
2390
  if (options.enablement) {
2391
- await chunkC3CN2C2T_cjs.lockIdentityEnablementNodes(target, ctx.schema);
2392
- await chunkIV5W7LKW_cjs.withRecordedIdentityMutationTarget(
2391
+ await chunkQ6ZVQWH7_cjs.lockIdentityEnablementNodes(target, ctx.schema);
2392
+ await chunkA22XPVBQ_cjs.withRecordedIdentityMutationTarget(
2393
2393
  target,
2394
- (rawTarget, touch) => chunkC3CN2C2T_cjs.purgeAssertionsWithUnregisteredKinds(
2394
+ (rawTarget, touch) => chunkQ6ZVQWH7_cjs.purgeAssertionsWithUnregisteredKinds(
2395
2395
  rawTarget,
2396
2396
  ctx.schema,
2397
2397
  ctx.graphId,
@@ -2402,9 +2402,9 @@ function identitySchemaCommitPreflight(ctx, options) {
2402
2402
  }
2403
2403
  const droppedNodeKinds = options.droppedNodeKinds ?? [];
2404
2404
  if (droppedNodeKinds.length > 0) {
2405
- await chunkIV5W7LKW_cjs.withRecordedIdentityMutationTarget(
2405
+ await chunkA22XPVBQ_cjs.withRecordedIdentityMutationTarget(
2406
2406
  target,
2407
- (rawTarget, touch) => chunkC3CN2C2T_cjs.deleteAssertionsTouchingKinds(
2407
+ (rawTarget, touch) => chunkQ6ZVQWH7_cjs.deleteAssertionsTouchingKinds(
2408
2408
  rawTarget,
2409
2409
  ctx.schema,
2410
2410
  ctx.graphId,
@@ -2413,7 +2413,7 @@ function identitySchemaCommitPreflight(ctx, options) {
2413
2413
  )
2414
2414
  );
2415
2415
  }
2416
- await chunkC3CN2C2T_cjs.rebuildIdentityClosureForContext({ ...ctx, backend: target });
2416
+ await chunkQ6ZVQWH7_cjs.rebuildIdentityClosureForContext({ ...ctx, backend: target });
2417
2417
  };
2418
2418
  }
2419
2419
  async function provisionDerivedRelationsInCommit(target, graphId, ddl) {
@@ -2427,11 +2427,11 @@ async function provisionDerivedRelationsInCommit(target, graphId, ddl) {
2427
2427
  }
2428
2428
  function identityKindCascadePreflight(ctx, droppedNodeKinds) {
2429
2429
  return async (target) => {
2430
- await chunkIV5W7LKW_cjs.lockRecordedGraphWrite(target, ctx.graphId);
2431
- await chunkC3CN2C2T_cjs.lockIdentityGraph(target, ctx.graphId);
2432
- await chunkIV5W7LKW_cjs.withRecordedIdentityMutationTarget(
2430
+ await chunkA22XPVBQ_cjs.lockRecordedGraphWrite(target, ctx.graphId);
2431
+ await chunkQ6ZVQWH7_cjs.lockIdentityGraph(target, ctx.graphId);
2432
+ await chunkA22XPVBQ_cjs.withRecordedIdentityMutationTarget(
2433
2433
  target,
2434
- (rawTarget, touch) => chunkC3CN2C2T_cjs.deleteAssertionsTouchingKinds(
2434
+ (rawTarget, touch) => chunkQ6ZVQWH7_cjs.deleteAssertionsTouchingKinds(
2435
2435
  rawTarget,
2436
2436
  ctx.schema,
2437
2437
  ctx.graphId,
@@ -3495,7 +3495,7 @@ function assertGraphEdgeMatchIdentitySupport(backend, graph) {
3495
3495
  for (const [kind, registration] of Object.entries(graph.edges)) {
3496
3496
  const identity = registration.matchIdentity;
3497
3497
  if (identity === void 0) continue;
3498
- chunkC3CN2C2T_cjs.assertEdgeMatchIdentityBackendSupport(identity, backend.capabilities, kind);
3498
+ chunkQ6ZVQWH7_cjs.assertEdgeMatchIdentityBackendSupport(identity, backend.capabilities, kind);
3499
3499
  }
3500
3500
  }
3501
3501
  function edgeKindsRequiringMatchIdentityMaterialization(target, storedSchema) {
@@ -3779,5 +3779,5 @@ exports.serializeSchema = serializeSchema;
3779
3779
  exports.serializeSchemaProperties = serializeSchemaProperties;
3780
3780
  exports.stripGraphExtension = stripGraphExtension;
3781
3781
  exports.subClassOf = subClassOf;
3782
- //# sourceMappingURL=chunk-U53HFE4L.cjs.map
3783
- //# sourceMappingURL=chunk-U53HFE4L.cjs.map
3782
+ //# sourceMappingURL=chunk-OKA6H3B3.cjs.map
3783
+ //# sourceMappingURL=chunk-OKA6H3B3.cjs.map