@jaepil/uqa 0.1.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 (233) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +788 -0
  3. package/dist/types/src/analysis/analyzer.d.ts +27 -0
  4. package/dist/types/src/analysis/analyzer.d.ts.map +1 -0
  5. package/dist/types/src/analysis/char-filter.d.ts +27 -0
  6. package/dist/types/src/analysis/char-filter.d.ts.map +1 -0
  7. package/dist/types/src/analysis/token-filter.d.ts +73 -0
  8. package/dist/types/src/analysis/token-filter.d.ts.map +1 -0
  9. package/dist/types/src/analysis/tokenizer.d.ts +42 -0
  10. package/dist/types/src/analysis/tokenizer.d.ts.map +1 -0
  11. package/dist/types/src/api/query-builder.d.ts +103 -0
  12. package/dist/types/src/api/query-builder.d.ts.map +1 -0
  13. package/dist/types/src/cli/repl.d.ts +42 -0
  14. package/dist/types/src/cli/repl.d.ts.map +1 -0
  15. package/dist/types/src/core/functor.d.ts +38 -0
  16. package/dist/types/src/core/functor.d.ts.map +1 -0
  17. package/dist/types/src/core/hierarchical.d.ts +24 -0
  18. package/dist/types/src/core/hierarchical.d.ts.map +1 -0
  19. package/dist/types/src/core/posting-list.d.ts +43 -0
  20. package/dist/types/src/core/posting-list.d.ts.map +1 -0
  21. package/dist/types/src/core/types.d.ts +116 -0
  22. package/dist/types/src/core/types.d.ts.map +1 -0
  23. package/dist/types/src/engine.d.ts +130 -0
  24. package/dist/types/src/engine.d.ts.map +1 -0
  25. package/dist/types/src/execution/batch.d.ts +144 -0
  26. package/dist/types/src/execution/batch.d.ts.map +1 -0
  27. package/dist/types/src/execution/physical.d.ts +18 -0
  28. package/dist/types/src/execution/physical.d.ts.map +1 -0
  29. package/dist/types/src/execution/relational.d.ts +174 -0
  30. package/dist/types/src/execution/relational.d.ts.map +1 -0
  31. package/dist/types/src/execution/scan.d.ts +41 -0
  32. package/dist/types/src/execution/scan.d.ts.map +1 -0
  33. package/dist/types/src/execution/spill.d.ts +39 -0
  34. package/dist/types/src/execution/spill.d.ts.map +1 -0
  35. package/dist/types/src/fdw/arrow-handler.d.ts +28 -0
  36. package/dist/types/src/fdw/arrow-handler.d.ts.map +1 -0
  37. package/dist/types/src/fdw/duckdb-handler.d.ts +32 -0
  38. package/dist/types/src/fdw/duckdb-handler.d.ts.map +1 -0
  39. package/dist/types/src/fdw/foreign-table.d.ts +47 -0
  40. package/dist/types/src/fdw/foreign-table.d.ts.map +1 -0
  41. package/dist/types/src/fdw/handler.d.ts +52 -0
  42. package/dist/types/src/fdw/handler.d.ts.map +1 -0
  43. package/dist/types/src/fusion/attention.d.ts +23 -0
  44. package/dist/types/src/fusion/attention.d.ts.map +1 -0
  45. package/dist/types/src/fusion/boolean.d.ts +6 -0
  46. package/dist/types/src/fusion/boolean.d.ts.map +1 -0
  47. package/dist/types/src/fusion/learned.d.ts +12 -0
  48. package/dist/types/src/fusion/learned.d.ts.map +1 -0
  49. package/dist/types/src/fusion/log-odds.d.ts +87 -0
  50. package/dist/types/src/fusion/log-odds.d.ts.map +1 -0
  51. package/dist/types/src/fusion/query-features.d.ts +8 -0
  52. package/dist/types/src/fusion/query-features.d.ts.map +1 -0
  53. package/dist/types/src/graph/centrality.d.ts +35 -0
  54. package/dist/types/src/graph/centrality.d.ts.map +1 -0
  55. package/dist/types/src/graph/cross-paradigm.d.ts +68 -0
  56. package/dist/types/src/graph/cross-paradigm.d.ts.map +1 -0
  57. package/dist/types/src/graph/cypher/ast.d.ts +175 -0
  58. package/dist/types/src/graph/cypher/ast.d.ts.map +1 -0
  59. package/dist/types/src/graph/cypher/compiler.d.ts +60 -0
  60. package/dist/types/src/graph/cypher/compiler.d.ts.map +1 -0
  61. package/dist/types/src/graph/cypher/lexer.d.ts +82 -0
  62. package/dist/types/src/graph/cypher/lexer.d.ts.map +1 -0
  63. package/dist/types/src/graph/cypher/parser.d.ts +50 -0
  64. package/dist/types/src/graph/cypher/parser.d.ts.map +1 -0
  65. package/dist/types/src/graph/delta.d.ts +31 -0
  66. package/dist/types/src/graph/delta.d.ts.map +1 -0
  67. package/dist/types/src/graph/graph-embedding.d.ts +13 -0
  68. package/dist/types/src/graph/graph-embedding.d.ts.map +1 -0
  69. package/dist/types/src/graph/incremental-match.d.ts +16 -0
  70. package/dist/types/src/graph/incremental-match.d.ts.map +1 -0
  71. package/dist/types/src/graph/index.d.ts +58 -0
  72. package/dist/types/src/graph/index.d.ts.map +1 -0
  73. package/dist/types/src/graph/join.d.ts +18 -0
  74. package/dist/types/src/graph/join.d.ts.map +1 -0
  75. package/dist/types/src/graph/message-passing.d.ts +17 -0
  76. package/dist/types/src/graph/message-passing.d.ts.map +1 -0
  77. package/dist/types/src/graph/operators.d.ts +81 -0
  78. package/dist/types/src/graph/operators.d.ts.map +1 -0
  79. package/dist/types/src/graph/pattern.d.ts +63 -0
  80. package/dist/types/src/graph/pattern.d.ts.map +1 -0
  81. package/dist/types/src/graph/posting-list.d.ts +24 -0
  82. package/dist/types/src/graph/posting-list.d.ts.map +1 -0
  83. package/dist/types/src/graph/rpq-optimizer.d.ts +25 -0
  84. package/dist/types/src/graph/rpq-optimizer.d.ts.map +1 -0
  85. package/dist/types/src/graph/store.d.ts +61 -0
  86. package/dist/types/src/graph/store.d.ts.map +1 -0
  87. package/dist/types/src/graph/temporal-filter.d.ts +12 -0
  88. package/dist/types/src/graph/temporal-filter.d.ts.map +1 -0
  89. package/dist/types/src/graph/temporal-pattern-match.d.ts +26 -0
  90. package/dist/types/src/graph/temporal-pattern-match.d.ts.map +1 -0
  91. package/dist/types/src/graph/temporal-traverse.d.ts +25 -0
  92. package/dist/types/src/graph/temporal-traverse.d.ts.map +1 -0
  93. package/dist/types/src/graph/versioned-store.d.ts +64 -0
  94. package/dist/types/src/graph/versioned-store.d.ts.map +1 -0
  95. package/dist/types/src/index.d.ts +20 -0
  96. package/dist/types/src/index.d.ts.map +1 -0
  97. package/dist/types/src/joins/base.d.ts +18 -0
  98. package/dist/types/src/joins/base.d.ts.map +1 -0
  99. package/dist/types/src/joins/cross-paradigm.d.ts +46 -0
  100. package/dist/types/src/joins/cross-paradigm.d.ts.map +1 -0
  101. package/dist/types/src/joins/cross.d.ts +9 -0
  102. package/dist/types/src/joins/cross.d.ts.map +1 -0
  103. package/dist/types/src/joins/index.d.ts +7 -0
  104. package/dist/types/src/joins/index.d.ts.map +1 -0
  105. package/dist/types/src/joins/inner.d.ts +7 -0
  106. package/dist/types/src/joins/inner.d.ts.map +1 -0
  107. package/dist/types/src/joins/outer.d.ts +16 -0
  108. package/dist/types/src/joins/outer.d.ts.map +1 -0
  109. package/dist/types/src/joins/semi.d.ts +22 -0
  110. package/dist/types/src/joins/semi.d.ts.map +1 -0
  111. package/dist/types/src/joins/sort-merge.d.ts +7 -0
  112. package/dist/types/src/joins/sort-merge.d.ts.map +1 -0
  113. package/dist/types/src/math/linalg.d.ts +27 -0
  114. package/dist/types/src/math/linalg.d.ts.map +1 -0
  115. package/dist/types/src/math/random.d.ts +15 -0
  116. package/dist/types/src/math/random.d.ts.map +1 -0
  117. package/dist/types/src/operators/aggregation.d.ts +65 -0
  118. package/dist/types/src/operators/aggregation.d.ts.map +1 -0
  119. package/dist/types/src/operators/attention.d.ts +16 -0
  120. package/dist/types/src/operators/attention.d.ts.map +1 -0
  121. package/dist/types/src/operators/backend.d.ts +52 -0
  122. package/dist/types/src/operators/backend.d.ts.map +1 -0
  123. package/dist/types/src/operators/base.d.ts +32 -0
  124. package/dist/types/src/operators/base.d.ts.map +1 -0
  125. package/dist/types/src/operators/boolean.d.ts +23 -0
  126. package/dist/types/src/operators/boolean.d.ts.map +1 -0
  127. package/dist/types/src/operators/calibrated-vector.d.ts +56 -0
  128. package/dist/types/src/operators/calibrated-vector.d.ts.map +1 -0
  129. package/dist/types/src/operators/deep-fusion.d.ts +104 -0
  130. package/dist/types/src/operators/deep-fusion.d.ts.map +1 -0
  131. package/dist/types/src/operators/deep-learn.d.ts +87 -0
  132. package/dist/types/src/operators/deep-learn.d.ts.map +1 -0
  133. package/dist/types/src/operators/hierarchical.d.ts +44 -0
  134. package/dist/types/src/operators/hierarchical.d.ts.map +1 -0
  135. package/dist/types/src/operators/hybrid.d.ts +75 -0
  136. package/dist/types/src/operators/hybrid.d.ts.map +1 -0
  137. package/dist/types/src/operators/learned-fusion.d.ts +15 -0
  138. package/dist/types/src/operators/learned-fusion.d.ts.map +1 -0
  139. package/dist/types/src/operators/multi-field.d.ts +13 -0
  140. package/dist/types/src/operators/multi-field.d.ts.map +1 -0
  141. package/dist/types/src/operators/multi-stage.d.ts +12 -0
  142. package/dist/types/src/operators/multi-stage.d.ts.map +1 -0
  143. package/dist/types/src/operators/primitive.d.ts +75 -0
  144. package/dist/types/src/operators/primitive.d.ts.map +1 -0
  145. package/dist/types/src/operators/progressive-fusion.d.ts +13 -0
  146. package/dist/types/src/operators/progressive-fusion.d.ts.map +1 -0
  147. package/dist/types/src/operators/sparse.d.ts +12 -0
  148. package/dist/types/src/operators/sparse.d.ts.map +1 -0
  149. package/dist/types/src/planner/cardinality.d.ts +110 -0
  150. package/dist/types/src/planner/cardinality.d.ts.map +1 -0
  151. package/dist/types/src/planner/cost-model.d.ts +16 -0
  152. package/dist/types/src/planner/cost-model.d.ts.map +1 -0
  153. package/dist/types/src/planner/executor.d.ts +48 -0
  154. package/dist/types/src/planner/executor.d.ts.map +1 -0
  155. package/dist/types/src/planner/join-enumerator.d.ts +76 -0
  156. package/dist/types/src/planner/join-enumerator.d.ts.map +1 -0
  157. package/dist/types/src/planner/join-graph.d.ts +61 -0
  158. package/dist/types/src/planner/join-graph.d.ts.map +1 -0
  159. package/dist/types/src/planner/join-order.d.ts +24 -0
  160. package/dist/types/src/planner/join-order.d.ts.map +1 -0
  161. package/dist/types/src/planner/optimizer.d.ts +62 -0
  162. package/dist/types/src/planner/optimizer.d.ts.map +1 -0
  163. package/dist/types/src/planner/parallel.d.ts +43 -0
  164. package/dist/types/src/planner/parallel.d.ts.map +1 -0
  165. package/dist/types/src/scoring/bayesian-bm25.d.ts +22 -0
  166. package/dist/types/src/scoring/bayesian-bm25.d.ts.map +1 -0
  167. package/dist/types/src/scoring/bm25.d.ts +20 -0
  168. package/dist/types/src/scoring/bm25.d.ts.map +1 -0
  169. package/dist/types/src/scoring/calibration.d.ts +68 -0
  170. package/dist/types/src/scoring/calibration.d.ts.map +1 -0
  171. package/dist/types/src/scoring/external-prior.d.ts +55 -0
  172. package/dist/types/src/scoring/external-prior.d.ts.map +1 -0
  173. package/dist/types/src/scoring/fusion-wand.d.ts +19 -0
  174. package/dist/types/src/scoring/fusion-wand.d.ts.map +1 -0
  175. package/dist/types/src/scoring/multi-field.d.ts +10 -0
  176. package/dist/types/src/scoring/multi-field.d.ts.map +1 -0
  177. package/dist/types/src/scoring/parameter-learner.d.ts +42 -0
  178. package/dist/types/src/scoring/parameter-learner.d.ts.map +1 -0
  179. package/dist/types/src/scoring/vector.d.ts +42 -0
  180. package/dist/types/src/scoring/vector.d.ts.map +1 -0
  181. package/dist/types/src/scoring/wand.d.ts +51 -0
  182. package/dist/types/src/scoring/wand.d.ts.map +1 -0
  183. package/dist/types/src/sql/compiler.d.ts +551 -0
  184. package/dist/types/src/sql/compiler.d.ts.map +1 -0
  185. package/dist/types/src/sql/expr-evaluator.d.ts +43 -0
  186. package/dist/types/src/sql/expr-evaluator.d.ts.map +1 -0
  187. package/dist/types/src/sql/fts-query.d.ts +60 -0
  188. package/dist/types/src/sql/fts-query.d.ts.map +1 -0
  189. package/dist/types/src/sql/table.d.ts +72 -0
  190. package/dist/types/src/sql/table.d.ts.map +1 -0
  191. package/dist/types/src/storage/abc/document-store.d.ts +44 -0
  192. package/dist/types/src/storage/abc/document-store.d.ts.map +1 -0
  193. package/dist/types/src/storage/abc/graph-store.d.ts +109 -0
  194. package/dist/types/src/storage/abc/graph-store.d.ts.map +1 -0
  195. package/dist/types/src/storage/abc/inverted-index.d.ts +118 -0
  196. package/dist/types/src/storage/abc/inverted-index.d.ts.map +1 -0
  197. package/dist/types/src/storage/block-max-index.d.ts +45 -0
  198. package/dist/types/src/storage/block-max-index.d.ts.map +1 -0
  199. package/dist/types/src/storage/btree-index.d.ts +18 -0
  200. package/dist/types/src/storage/btree-index.d.ts.map +1 -0
  201. package/dist/types/src/storage/catalog.d.ts +87 -0
  202. package/dist/types/src/storage/catalog.d.ts.map +1 -0
  203. package/dist/types/src/storage/document-store.d.ts +20 -0
  204. package/dist/types/src/storage/document-store.d.ts.map +1 -0
  205. package/dist/types/src/storage/index-abc.d.ts +16 -0
  206. package/dist/types/src/storage/index-abc.d.ts.map +1 -0
  207. package/dist/types/src/storage/index-manager.d.ts +19 -0
  208. package/dist/types/src/storage/index-manager.d.ts.map +1 -0
  209. package/dist/types/src/storage/index-types.d.ts +10 -0
  210. package/dist/types/src/storage/index-types.d.ts.map +1 -0
  211. package/dist/types/src/storage/inverted-index.d.ts +55 -0
  212. package/dist/types/src/storage/inverted-index.d.ts.map +1 -0
  213. package/dist/types/src/storage/ivf-index.d.ts +57 -0
  214. package/dist/types/src/storage/ivf-index.d.ts.map +1 -0
  215. package/dist/types/src/storage/managed-connection.d.ts +64 -0
  216. package/dist/types/src/storage/managed-connection.d.ts.map +1 -0
  217. package/dist/types/src/storage/spatial-index.d.ts +18 -0
  218. package/dist/types/src/storage/spatial-index.d.ts.map +1 -0
  219. package/dist/types/src/storage/sqlite-document-store.d.ts +54 -0
  220. package/dist/types/src/storage/sqlite-document-store.d.ts.map +1 -0
  221. package/dist/types/src/storage/sqlite-graph-store.d.ts +59 -0
  222. package/dist/types/src/storage/sqlite-graph-store.d.ts.map +1 -0
  223. package/dist/types/src/storage/sqlite-inverted-index.d.ts +75 -0
  224. package/dist/types/src/storage/sqlite-inverted-index.d.ts.map +1 -0
  225. package/dist/types/src/storage/transaction.d.ts +15 -0
  226. package/dist/types/src/storage/transaction.d.ts.map +1 -0
  227. package/dist/types/src/storage/vector-index.d.ts +23 -0
  228. package/dist/types/src/storage/vector-index.d.ts.map +1 -0
  229. package/dist/uqa.es.js +16156 -0
  230. package/dist/uqa.es.js.map +1 -0
  231. package/dist/uqa.umd.js +11 -0
  232. package/dist/uqa.umd.js.map +1 -0
  233. package/package.json +73 -0
@@ -0,0 +1,11 @@
1
+ (function($,W){typeof exports=="object"&&typeof module<"u"?W(exports,require("bayesian-bm25"),require("libpg-query")):typeof define=="function"&&define.amd?define(["exports","bayesian-bm25","libpg-query"],W):($=typeof globalThis<"u"?globalThis:$||self,W($.uqa={},$.BayesianBM25,$.libpgQuery))})(this,(function($,W,Je){"use strict";var Uo=Object.defineProperty;var Wo=($,W,Je)=>W in $?Uo($,W,{enumerable:!0,configurable:!0,writable:!0,value:Je}):$[W]=Je;var b=($,W,Je)=>Wo($,typeof W!="symbol"?W+"":W,Je);function Vt(h,e){const t=Math.min(h.length,e.length);for(let n=0;n<t;n++){if(h[n]<e[n])return-1;if(h[n]>e[n])return 1}return h.length-e.length}function Rr(h,e){if(h.length!==e.length)return!1;for(let t=0;t<h.length;t++)if(h[t]!==e[t])return!1;return!0}function Sn(h){return h.join("\0")}class j{constructor(e){b(this,"_entries");b(this,"_docIdsCache",null);if(e&&e.length>0){const t=e.slice().sort((s,o)=>s.docId-o.docId),n=[t[0]],r=new Set([t[0].docId]);for(let s=1;s<t.length;s++){const o=t[s];r.has(o.docId)||(r.add(o.docId),n.push(o))}this._entries=n}else this._entries=[]}static fromSorted(e){const t=Object.create(j.prototype);return t._entries=e,t._docIdsCache=null,t}union(e){const t=this._entries,n=e._entries,r=[];let s=0,o=0;for(;s<t.length&&o<n.length;){const i=t[s],a=n[o];i.docId===a.docId?(r.push({docId:i.docId,payload:j.mergePayloads(i.payload,a.payload)}),s++,o++):i.docId<a.docId?(r.push(i),s++):(r.push(a),o++)}for(;s<t.length;)r.push(t[s]),s++;for(;o<n.length;)r.push(n[o]),o++;return j.fromSorted(r)}intersect(e){const t=this._entries,n=e._entries,r=[];let s=0,o=0;for(;s<t.length&&o<n.length;){const i=t[s],a=n[o];i.docId===a.docId?(r.push({docId:i.docId,payload:j.mergePayloads(i.payload,a.payload)}),s++,o++):i.docId<a.docId?s++:o++}return j.fromSorted(r)}difference(e){const t=e.docIds,n=this._entries.filter(r=>!t.has(r.docId));return j.fromSorted(n)}complement(e){return e.difference(this)}static mergePayloads(e,t){const r=[...new Set([...e.positions,...t.positions])].sort((i,a)=>i-a),s=e.score+t.score,o={...e.fields,...t.fields};return{positions:r,score:s,fields:o}}get docIds(){return this._docIdsCache===null&&(this._docIdsCache=new Set(this._entries.map(e=>e.docId))),this._docIdsCache}get entries(){return this._entries}getEntry(e){let t=0,n=this._entries.length-1;for(;t<=n;){const r=t+n>>>1,s=this._entries[r].docId;if(s===e)return this._entries[r];s<e?t=r+1:n=r-1}return null}topK(e){if(e>=this._entries.length)return j.fromSorted(this._entries.slice());const n=this._entries.slice().sort((r,s)=>s.payload.score-r.payload.score).slice(0,e);return new j(n)}withScores(e){const t=[];for(const n of this._entries){const r=e(n);t.push({docId:n.docId,payload:{positions:n.payload.positions,score:r,fields:n.payload.fields}})}return j.fromSorted(t)}get length(){return this._entries.length}[Symbol.iterator](){return this._entries[Symbol.iterator]()}equals(e){if(this._entries.length!==e._entries.length)return!1;for(let t=0;t<this._entries.length;t++)if(this._entries[t].docId!==e._entries[t].docId)return!1;return!0}toString(){return`PostingList([${this._entries.map(t=>String(t.docId)).join(", ")}])`}and(e){return this.intersect(e)}or(e){return this.union(e)}sub(e){return this.difference(e)}}class ye{constructor(e){b(this,"_entries");this._entries=(e??[]).slice().sort((t,n)=>Vt(t.docIds,n.docIds))}static fromSorted(e){const t=Object.create(ye.prototype);return t._entries=e,t}get entries(){return this._entries.slice()}get length(){return this._entries.length}[Symbol.iterator](){return this._entries[Symbol.iterator]()}union(e){const t=this._entries,n=e._entries,r=[];let s=0,o=0;for(;s<t.length&&o<n.length;){const i=t[s],a=n[o],l=Vt(i.docIds,a.docIds);l===0?(r.push(i),s++,o++):l<0?(r.push(i),s++):(r.push(a),o++)}for(;s<t.length;)r.push(t[s]),s++;for(;o<n.length;)r.push(n[o]),o++;return ye.fromSorted(r)}intersect(e){const t=this._entries,n=e._entries,r=[];let s=0,o=0;for(;s<t.length&&o<n.length;){const i=t[s],a=n[o],l=Vt(i.docIds,a.docIds);l===0?(r.push(i),s++,o++):l<0?s++:o++}return ye.fromSorted(r)}difference(e){const t=e.docIdsSet,n=this._entries.filter(r=>!t.has(Sn(r.docIds)));return ye.fromSorted(n)}complement(e){return e.difference(this)}get docIdsSet(){return new Set(this._entries.map(e=>Sn(e.docIds)))}equals(e){if(this._entries.length!==e._entries.length)return!1;for(let t=0;t<this._entries.length;t++)if(!Rr(this._entries[t].docIds,e._entries[t].docIds))return!1;return!0}toString(){return`GeneralizedPostingList([${this._entries.map(t=>`(${t.docIds.join(", ")})`).join(", ")}])`}and(e){return this.intersect(e)}or(e){return this.union(e)}sub(e){return this.difference(e)}}function B(h){return{positions:(h==null?void 0:h.positions)??[],score:(h==null?void 0:h.score)??0,fields:(h==null?void 0:h.fields)??{}}}function ae(h,e){return{docId:h,payload:B(e)}}class En{constructor(e=0,t=0,n=0){b(this,"totalDocs");b(this,"avgDocLength");b(this,"dimensions");b(this,"_docFreqs");this.totalDocs=e,this.avgDocLength=t,this.dimensions=n,this._docFreqs=new Map}docFreq(e,t){return this._docFreqs.get(`${e}\0${t}`)??0}setDocFreq(e,t,n){this._docFreqs.set(`${e}\0${t}`,n)}}class fe{}class zt extends fe{constructor(e){super(),this.target=e}evaluate(e){return e===this.target}}class In extends fe{constructor(e){super(),this.target=e}evaluate(e){return e!==this.target}}class Nn extends fe{constructor(e){super(),this.target=e}evaluate(e){return e>this.target}}class An extends fe{constructor(e){super(),this.target=e}evaluate(e){return e>=this.target}}class kn extends fe{constructor(e){super(),this.target=e}evaluate(e){return e<this.target}}class Mn extends fe{constructor(e){super(),this.target=e}evaluate(e){return e<=this.target}}class Gt extends fe{constructor(t){super();b(this,"_values");this._values=new Set(t)}get values(){return this._values}evaluate(t){return this._values.has(t)}}class Bt extends fe{constructor(e,t){super(),this.low=e,this.high=t}evaluate(e){const t=e;return t>=this.low&&t<=this.high}}class Ut extends fe{evaluate(e){return e==null}}class Wt extends fe{evaluate(e){return e!=null}}const st=new Map;function Tn(h){return h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function jr(h,e){const t=`${e?"s":"i"}:${h}`,n=st.get(t);if(n!==void 0)return n;if(st.size>=256){const i=st.keys().next().value;st.delete(i)}let r="^";for(let i=0;i<h.length;i++){const a=h[i];a==="%"?r+=".*":a==="_"?r+=".":a==="\\"&&i+1<h.length?(i++,r+=Tn(h[i])):r+=Tn(a)}r+="$";const s=e?"s":"is",o=new RegExp(r,s);return st.set(t,o),o}function xt(h,e,t){return jr(e,t).test(h)}class On extends fe{constructor(e){super(),this.pattern=e}evaluate(e){return xt(String(e),this.pattern,!0)}}class Pr extends fe{constructor(e){super(),this.pattern=e}evaluate(e){return!xt(String(e),this.pattern,!0)}}class Cn extends fe{constructor(e){super(),this.pattern=e}evaluate(e){return xt(String(e),this.pattern,!1)}}class Dr extends fe{constructor(e){super(),this.pattern=e}evaluate(e){return!xt(String(e),this.pattern,!1)}}function Fn(h){return h instanceof Ut||h instanceof Wt}class qr{constructor(e,t){b(this,"docId");b(this,"data");this.docId=e,this.data=t}evalPath(e){let t=this.data;for(const n of e){if(t==null)return;if(typeof n=="number"){if(!Array.isArray(t))return;t=t[n]}else if(Array.isArray(t))t=t.map(r=>r[n]);else if(typeof t=="object")t=t[n];else return}return t}}class St{static fromDict(e){const t=e.type;switch(t){case"html_strip":return Kt._fromDict(e);case"mapping":return Jt._fromDict(e);case"pattern_replace":return Ht._fromDict(e);default:throw new Error(`Unknown CharFilter type: ${t}`)}}}const $r=/<[^>]+>/g,Lr={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&apos;":"'","&nbsp;":" "};class Kt extends St{filter(e){let t=e.replace($r," ");for(const[n,r]of Object.entries(Lr))t=t.replaceAll(n,r);return t}toDict(){return{type:"html_strip"}}static _fromDict(e){return new Kt}}class Jt extends St{constructor(t){super();b(this,"_mapping");this._mapping=Object.entries(t).sort((n,r)=>r[0].length-n[0].length)}filter(t){let n=t;for(const[r,s]of this._mapping)n=n.replaceAll(r,s);return n}toDict(){const t={};for(const[n,r]of this._mapping)t[n]=r;return{type:"mapping",mapping:t}}static _fromDict(t){return new Jt(t.mapping)}}class Ht extends St{constructor(t,n=""){super();b(this,"_pattern");b(this,"_replacement");b(this,"_re");this._pattern=t,this._replacement=n,this._re=new RegExp(t,"g")}filter(t){return t.replace(this._re,this._replacement)}toDict(){return{type:"pattern_replace",pattern:this._pattern,replacement:this._replacement}}static _fromDict(t){return new Ht(t.pattern,t.replacement??"")}}class Me{static fromDict(e){const t=e.type;switch(t){case"lowercase":return He._fromDict(e);case"stop":return ot._fromDict(e);case"porter_stem":return it._fromDict(e);case"ascii_folding":return Ye._fromDict(e);case"synonym":return Xt._fromDict(e);case"ngram":return Et._fromDict(e);case"edge_ngram":return Qt._fromDict(e);case"length":return Zt._fromDict(e);default:throw new Error(`Unknown TokenFilter type: ${t}`)}}}class He extends Me{filter(e){return e.map(t=>t.toLowerCase())}toDict(){return{type:"lowercase"}}static _fromDict(e){return new He}}const Vr={english:new Set(["a","an","and","are","as","at","be","but","by","can","could","did","do","does","for","had","has","have","he","her","him","his","how","i","if","in","into","is","it","its","may","me","my","no","nor","not","of","on","or","our","own","she","should","so","some","such","than","that","the","their","then","there","these","they","this","to","too","us","very","was","we","were","what","when","which","who","whom","why","will","with","would","you","your"])};class ot extends Me{constructor(t="english",n){super();b(this,"_language");b(this,"_customWords");b(this,"_words");this._language=t,this._customWords=n??new Set;const r=Vr[t]??new Set;this._words=new Set([...r,...this._customWords])}filter(t){return t.filter(n=>!this._words.has(n))}toDict(){const t={type:"stop",language:this._language};return this._customWords.size>0&&(t.custom_words=[...this._customWords].sort()),t}static _fromDict(t){const n=t.custom_words?new Set(t.custom_words):null;return new ot(t.language??"english",n)}}function Te(h,e){const t=h[e];return t==="a"||t==="e"||t==="i"||t==="o"||t==="u"?!1:t==="y"?e===0||!Te(h,e-1):!0}function $e(h,e){let t=0,n=0;for(;n<=e&&Te(h,n);)n++;for(;n<=e;){for(;n<=e&&!Te(h,n);)n++;for(t++;n<=e&&Te(h,n);)n++}return t}function Yt(h,e){for(let t=0;t<=e;t++)if(!Te(h,t))return!0;return!1}function Rn(h,e){return e<1?!1:h[e]===h[e-1]&&Te(h,e)}function jn(h,e){if(e<2||!Te(h,e-2)||Te(h,e-1)||!Te(h,e))return!1;const t=h[e];return t!=="w"&&t!=="x"&&t!=="y"}function zr(h){if(h.length<=2)return h;let e=h;if(e.endsWith("sses")||e.endsWith("ies")?e=e.slice(0,-2):!e.endsWith("ss")&&e.endsWith("s")&&(e=e.slice(0,-1)),e.endsWith("eed")){const s=e.slice(0,-3);$e(e,s.length-1)>0&&(e=e.slice(0,-1))}else{let s=!1,o=0;e.endsWith("ed")?(o=e.length-2,s=Yt(e,o-1)):e.endsWith("ing")&&(o=e.length-3,s=Yt(e,o-1)),s&&(e=e.slice(0,o),e.endsWith("at")||e.endsWith("bl")||e.endsWith("iz")?e=e+"e":Rn(e,e.length-1)&&e[e.length-1]!=="l"&&e[e.length-1]!=="s"&&e[e.length-1]!=="z"?e=e.slice(0,-1):$e(e,e.length-1)===1&&jn(e,e.length-1)&&(e=e+"e"))}e.endsWith("y")&&Yt(e,e.length-2)&&(e=e.slice(0,-1)+"i");const t=[["ational","ate"],["tional","tion"],["enci","ence"],["anci","ance"],["izer","ize"],["abli","able"],["alli","al"],["entli","ent"],["eli","e"],["ousli","ous"],["ization","ize"],["ation","ate"],["ator","ate"],["alism","al"],["iveness","ive"],["fulness","ful"],["ousness","ous"],["aliti","al"],["iviti","ive"],["biliti","ble"]];for(const[s,o]of t)if(e.endsWith(s)){const i=e.slice(0,-s.length);$e(e,i.length-1)>0&&(e=i+o);break}const n=[["icate","ic"],["ative",""],["alize","al"],["iciti","ic"],["ical","ic"],["ful",""],["ness",""]];for(const[s,o]of n)if(e.endsWith(s)){const i=e.slice(0,-s.length);$e(e,i.length-1)>0&&(e=i+o);break}const r=["al","ance","ence","er","ic","able","ible","ant","ement","ment","ent","ion","ou","ism","ate","iti","ous","ive","ize"];for(const s of r)if(e.endsWith(s)){const o=e.slice(0,-s.length);if($e(e,o.length-1)>1)if(s==="ion"){const i=o[o.length-1];(i==="s"||i==="t")&&(e=o)}else e=o;break}if(e.endsWith("e")){const s=e.slice(0,-1),o=$e(e,s.length-1);(o>1||o===1&&!jn(e,s.length-1))&&(e=s)}return $e(e,e.length-1)>1&&Rn(e,e.length-1)&&e[e.length-1]==="l"&&(e=e.slice(0,-1)),e}class it extends Me{filter(e){return e.map(t=>zr(t))}toDict(){return{type:"porter_stem"}}static _fromDict(e){return new it}}function Gr(h){for(let e=0;e<h.length;e++)if(h.charCodeAt(e)>127)return!1;return!0}function Br(h){if(h.charCodeAt(0)<=127)return h;const e=h.normalize("NFKD");let t="";for(let n=0;n<e.length;n++)e.charCodeAt(n)<=127&&(t+=e.charAt(n));return t.length>0?t:h}class Ye extends Me{filter(e){return e.map(t=>Ye._fold(t))}static _fold(e){if(Gr(e))return e;let t="";for(let n=0;n<e.length;n++)t+=Br(e[n]);return t}toDict(){return{type:"ascii_folding"}}static _fromDict(e){return new Ye}}class Xt extends Me{constructor(t){super();b(this,"_synonyms");this._synonyms=t}filter(t){const n=[];for(const r of t){n.push(r);const s=this._synonyms[r];s&&n.push(...s)}return n}toDict(){return{type:"synonym",synonyms:this._synonyms}}static _fromDict(t){return new Xt(t.synonyms)}}class Et extends Me{constructor(t=2,n=3,r=!1){super();b(this,"_minGram");b(this,"_maxGram");b(this,"_keepShort");if(t<1)throw new Error("minGram must be >= 1");if(n<t)throw new Error("maxGram must be >= minGram");this._minGram=t,this._maxGram=n,this._keepShort=r}filter(t){const n=[];for(const r of t){if(r.length<this._minGram){this._keepShort&&n.push(r);continue}for(let s=this._minGram;s<=this._maxGram;s++)for(let o=0;o<=r.length-s;o++)n.push(r.substring(o,o+s))}return n}toDict(){const t={type:"ngram",min_gram:this._minGram,max_gram:this._maxGram};return this._keepShort&&(t.keep_short=!0),t}static _fromDict(t){return new Et(t.min_gram,t.max_gram,t.keep_short??!1)}}class Qt extends Me{constructor(t=1,n=20){super();b(this,"_minGram");b(this,"_maxGram");this._minGram=t,this._maxGram=n}filter(t){const n=[];for(const r of t){const s=Math.min(this._maxGram,r.length);for(let o=this._minGram;o<=s;o++)n.push(r.substring(0,o))}return n}toDict(){return{type:"edge_ngram",min_gram:this._minGram,max_gram:this._maxGram}}static _fromDict(t){return new Qt(t.min_gram,t.max_gram)}}class Zt extends Me{constructor(t=0,n=0){super();b(this,"_minLength");b(this,"_maxLength");this._minLength=t,this._maxLength=n}filter(t){return t.filter(n=>!(n.length<this._minLength||this._maxLength>0&&n.length>this._maxLength))}toDict(){return{type:"length",min_length:this._minLength,max_length:this._maxLength}}static _fromDict(t){return new Zt(t.min_length,t.max_length)}}class Le{static fromDict(e){const t=e.type;switch(t){case"whitespace":return at._fromDict(e);case"standard":return lt._fromDict(e);case"letter":return en._fromDict(e);case"ngram":return tn._fromDict(e);case"pattern":return nn._fromDict(e);case"keyword":return It._fromDict(e);default:throw new Error(`Unknown Tokenizer type: ${t}`)}}}class at extends Le{tokenize(e){return e.split(/\s+/).filter(t=>t.length>0)}toDict(){return{type:"whitespace"}}static _fromDict(e){return new at}}const Ur=/\w+/gu;class lt extends Le{tokenize(e){return[...e.matchAll(Ur)].map(t=>t[0])}toDict(){return{type:"standard"}}static _fromDict(e){return new lt}}const Wr=/[a-zA-Z]+/g;class en extends Le{tokenize(e){return[...e.matchAll(Wr)].map(t=>t[0])}toDict(){return{type:"letter"}}static _fromDict(e){return new en}}class tn extends Le{constructor(t=1,n=2){super();b(this,"_minGram");b(this,"_maxGram");if(t<1)throw new Error("minGram must be >= 1");if(n<t)throw new Error("maxGram must be >= minGram");this._minGram=t,this._maxGram=n}tokenize(t){const n=t.split(/\s+/).filter(s=>s.length>0),r=[];for(const s of n)for(let o=this._minGram;o<=this._maxGram;o++)for(let i=0;i<=s.length-o;i++)r.push(s.substring(i,i+o));return r}toDict(){return{type:"ngram",min_gram:this._minGram,max_gram:this._maxGram}}static _fromDict(t){return new tn(t.min_gram,t.max_gram)}}class nn extends Le{constructor(t="\\W+"){super();b(this,"_pattern");b(this,"_re");this._pattern=t,this._re=new RegExp(t)}tokenize(t){return t.split(this._re).filter(n=>n.length>0)}toDict(){return{type:"pattern",pattern:this._pattern}}static _fromDict(t){return new nn(t.pattern)}}class It extends Le{tokenize(e){return e.length>0?[e]:[]}toDict(){return{type:"keyword"}}static _fromDict(e){return new It}}class Oe{constructor(e,t,n){b(this,"_tokenizer");b(this,"_tokenFilters");b(this,"_charFilters");this._tokenizer=e??new at,this._tokenFilters=t??[],this._charFilters=n??[]}get tokenizer(){return this._tokenizer}get tokenFilters(){return this._tokenFilters}get charFilters(){return this._charFilters}analyze(e){let t=e;for(const r of this._charFilters)t=r.filter(t);let n=this._tokenizer.tokenize(t);for(const r of this._tokenFilters)n=r.filter(n);return n}toDict(){return{tokenizer:this._tokenizer.toDict(),token_filters:this._tokenFilters.map(e=>e.toDict()),char_filters:this._charFilters.map(e=>e.toDict())}}toJSON(){return JSON.stringify(this.toDict())}static fromDict(e){const t=Le.fromDict(e.tokenizer),n=e.token_filters.map(s=>Me.fromDict(s)),r=e.char_filters?e.char_filters.map(s=>St.fromDict(s)):[];return new Oe(t,n,r)}static fromJSON(e){return Oe.fromDict(JSON.parse(e))}}function Pn(){return new Oe(new at,[new He])}function rn(h="english"){return new Oe(new lt,[new He,new Ye,new ot(h),new it])}function Kr(h="english"){return new Oe(new lt,[new He,new Ye,new ot(h),new it,new Et(2,3,!0)])}function Dn(){return new Oe(new It,[])}const qn=rn(),sn={whitespace:Pn(),standard:rn(),standard_cjk:Kr(),keyword:Dn()},Nt=new Map;function Jr(h,e){if(h in sn)throw new Error(`Cannot override built-in analyzer: ${h}`);Nt.set(h,e)}function Hr(h){const e=Nt.get(h);if(e)return e;const t=sn[h];if(t)return t;throw new Error(`Unknown analyzer: ${h}`)}function Yr(h){if(h in sn)throw new Error(`Cannot drop built-in analyzer: ${h}`);if(!Nt.has(h))throw new Error(`Analyzer not found: ${h}`);Nt.delete(h)}class Xr{*iterAll(){const e=[...this.docIds].sort((t,n)=>t-n);for(const t of e){const n=this.get(t);n!==null&&(yield[t,n])}}}function Qr(h,e){let t=h;for(const n of e){if(t==null)return;if(typeof n=="number"){if(!Array.isArray(t))return;t=t[n]}else if(Array.isArray(t))t=t.map(r=>r[n]);else if(typeof t=="object")t=t[n];else return}return t}class $n extends Xr{constructor(){super();b(this,"_documents");this._documents=new Map}put(t,n){this._documents.set(t,n)}get(t){return this._documents.get(t)??null}delete(t){this._documents.delete(t)}clear(){this._documents.clear()}getField(t,n){const r=this._documents.get(t);if(r!==void 0)return r[n]}getFieldsBulk(t,n){const r=new Map;for(const s of t){const o=this._documents.get(s);r.set(s,o!==void 0?o[n]:void 0)}return r}hasValue(t,n){for(const r of this._documents.values())if(r[t]===n)return!0;return!1}evalPath(t,n){const r=this._documents.get(t);if(r!==void 0)return Qr(r,n)}get docIds(){return new Set(this._documents.keys())}get length(){return this._documents.size}maxDocId(){let t=-1;for(const n of this._documents.keys())n>t&&(t=n);return t}putBulk(t){for(const[n,r]of t)this._documents.set(n,r)}deleteBulk(t){for(const n of t)this._documents.delete(n)}}class Zr{}const es={analyze(h){return h.toLowerCase().split(/\s+/).filter(e=>e.length>0)}};class Ln extends Zr{constructor(t,n){super();b(this,"_analyzer");b(this,"_indexFieldAnalyzers");b(this,"_searchFieldAnalyzers");b(this,"_index");b(this,"_docTerms");b(this,"_docLengths");b(this,"_docCount");b(this,"_totalLength");b(this,"_cachedStats");b(this,"_termToKeys");if(this._analyzer=t??es,this._indexFieldAnalyzers=new Map,this._searchFieldAnalyzers=new Map,n)for(const[r,s]of Object.entries(n))this._indexFieldAnalyzers.set(r,s);this._index=new Map,this._docTerms=new Map,this._docLengths=new Map,this._docCount=0,this._totalLength=new Map,this._cachedStats=null,this._termToKeys=new Map}_key(t,n){return`${t}\0${n}`}_parseKey(t){const n=t.indexOf("\0");return[t.substring(0,n),t.substring(n+1)]}get analyzer(){return this._analyzer}get fieldAnalyzers(){const t={};for(const[n,r]of this._indexFieldAnalyzers)t[n]=r;return t}setFieldAnalyzer(t,n,r="both"){(r==="index"||r==="both")&&this._indexFieldAnalyzers.set(t,n),(r==="search"||r==="both")&&this._searchFieldAnalyzers.set(t,n)}getFieldAnalyzer(t){return this._indexFieldAnalyzers.get(t)??this._analyzer}getSearchAnalyzer(t){return this._searchFieldAnalyzers.get(t)??this._indexFieldAnalyzers.get(t)??this._analyzer}addDocument(t,n){this._cachedStats=null,this._docCount++,this._docLengths.set(t,new Map);let r=this._docTerms.get(t);r||(r=new Set,this._docTerms.set(t,r));const s={},o=new Map;for(const[i,a]of Object.entries(n)){const c=this.getFieldAnalyzer(i).analyze(a);this._docLengths.get(t).set(i,c.length),s[i]=c.length;const f=this._totalLength.get(i)??0;this._totalLength.set(i,f+c.length);const d=new Map;for(let p=0;p<c.length;p++){const m=c[p];let _=d.get(m);_||(_=[],d.set(m,_)),_.push(p)}for(const[p,m]of d){const _=this._key(i,p);let y=this._index.get(_);if(!y){y=new Map,this._index.set(_,y);let w=this._termToKeys.get(p);w||(w=[],this._termToKeys.set(p,w)),w.push(_)}const x={docId:t,payload:B({positions:m,score:0})};y.set(t,x),r.add(_),o.set(_,m)}}return{fieldLengths:s,postings:o}}addPosting(t,n,r){this._cachedStats=null;const s=this._key(t,n);let o=this._index.get(s);if(!o){o=new Map,this._index.set(s,o);let a=this._termToKeys.get(n);a||(a=[],this._termToKeys.set(n,a)),a.push(s)}o.set(r.docId,r);let i=this._docTerms.get(r.docId);i||(i=new Set,this._docTerms.set(r.docId,i)),i.add(s)}setDocLength(t,n){const r=new Map;for(const[s,o]of Object.entries(n))r.set(s,o);this._docLengths.set(t,r)}setDocCount(t){this._cachedStats=null,this._docCount=t}addTotalLength(t,n){this._cachedStats=null;const r=this._totalLength.get(t)??0;this._totalLength.set(t,r+n)}removeDocument(t){this._cachedStats=null;const n=this._docTerms.get(t);if(!n)return;for(const s of n){const o=this._index.get(s);if(o&&(o.delete(t),o.size===0)){this._index.delete(s);const[,i]=this._parseKey(s),a=this._termToKeys.get(i);if(a){const l=a.indexOf(s);l!==-1&&a.splice(l,1),a.length===0&&this._termToKeys.delete(i)}}}this._docTerms.delete(t);const r=this._docLengths.get(t);if(r){for(const[s,o]of r){const i=this._totalLength.get(s)??0;this._totalLength.set(s,i-o)}this._docLengths.delete(t),this._docCount--}}clear(){this._index.clear(),this._docTerms.clear(),this._docLengths.clear(),this._termToKeys.clear(),this._cachedStats=null,this._docCount=0,this._totalLength.clear()}getPostingList(t,n){const r=this._index.get(this._key(t,n));if(!r)return new j;const s=[...r.values()].sort((o,i)=>o.docId-i.docId);return j.fromSorted(s)}getPostingListAnyField(t){const n=this._termToKeys.get(t);if(!n||n.length===0)return new j;const r=new Set,s=[];for(const o of n){const i=this._index.get(o);if(i)for(const[a,l]of i)r.has(a)||(r.add(a),s.push(l))}return s.sort((o,i)=>o.docId-i.docId),j.fromSorted(s)}docFreq(t,n){const r=this._index.get(this._key(t,n));return r?r.size:0}docFreqAnyField(t){const n=this._termToKeys.get(t);if(!n||n.length===0)return 0;const r=new Set;for(const s of n){const o=this._index.get(s);if(o)for(const i of o.keys())r.add(i)}return r.size}getDocLength(t,n){const r=this._docLengths.get(t);return r?r.get(n)??0:0}getDocLengthsBulk(t,n){const r=new Map;for(const s of t)r.set(s,this.getDocLength(s,n));return r}getTotalDocLength(t){const n=this._docLengths.get(t);if(!n)return 0;let r=0;for(const s of n.values())r+=s;return r}getTermFreq(t,n,r){const s=this._index.get(this._key(n,r));if(!s)return 0;const o=s.get(t);return o?o.payload.positions.length:0}getTermFreqsBulk(t,n,r){const s=this._index.get(this._key(n,r)),o=new Map;for(const i of t)if(s){const a=s.get(i);o.set(i,a?a.payload.positions.length:0)}else o.set(i,0);return o}getTotalTermFreq(t,n){const r=this._termToKeys.get(n);if(!r)return 0;let s=0;for(const o of r){const i=this._index.get(o);if(i){const a=i.get(t);a&&(s+=a.payload.positions.length)}}return s}addDocuments(t){for(const[n,r]of t)this.addDocument(n,r)}removeDocuments(t){for(const n of t)this.removeDocument(n)}*terms(t){const n=this._key(t,"");for(const r of this._index.keys())if(r.startsWith(n)){const[,s]=this._parseKey(r);yield s}}*allTerms(){for(const t of this._index.keys())yield this._parseKey(t)}*fieldNames(){const t=new Set;for(const n of this._index.keys()){const[r]=this._parseKey(n);t.has(r)||(t.add(r),yield r)}}hasTerm(t,n){return this._index.has(this._key(t,n))}hasDoc(t){return this._docTerms.has(t)}avgDocLength(t){return this._docCount===0?0:(this._totalLength.get(t)??0)/this._docCount}totalDocCount(){return this._docCount}totalFieldLength(t){return this._totalLength.get(t)??0}getPositions(t,n,r){const s=this._index.get(this._key(n,r));if(!s)return[];const o=s.get(t);return o?o.payload.positions:[]}get stats(){if(this._cachedStats!==null)return this._cachedStats;let t=0;for(const s of this._totalLength.values())t+=s;const n=this._docCount>0?t/this._docCount:0,r=new En(this._docCount,n);for(const[s,o]of this._index){const[i,a]=this._parseKey(s);r.setDocFreq(i,a,o.size)}return this._cachedStats=r,r}}function Vn(h,e){if(h.length!==e.length)throw new Error(`dot: length mismatch (${String(h.length)} vs ${String(e.length)})`);let t=0;for(let n=0;n<h.length;n++)t+=h[n]*e[n];return t}function Xe(h){return Math.sqrt(Vn(h,h))}function Qe(h,e){const t=Xe(h),n=Xe(e);return t===0||n===0?0:Vn(h,e)/(t*n)}function ts(h){if(h.length===0)return new Float64Array(0);let e=h[0];for(let r=1;r<h.length;r++)h[r]>e&&(e=h[r]);const t=new Float64Array(h.length);let n=0;for(let r=0;r<h.length;r++)t[r]=Math.exp(h[r]-e),n+=t[r];for(let r=0;r<t.length;r++)t[r]=t[r]/n;return t}function ns(h,e,t,n){const[r,s]=e,[o,i]=n;if(s!==o)throw new Error(`matmul: inner dimension mismatch (${String(s)} vs ${String(o)})`);if(h.length!==r*s)throw new Error(`matmul: array a length (${String(h.length)}) does not match shape [${String(r)}, ${String(s)}]`);if(t.length!==o*i)throw new Error(`matmul: array b length (${String(t.length)}) does not match shape [${String(o)}, ${String(i)}]`);const a=new Float64Array(r*i);for(let l=0;l<r;l++)for(let c=0;c<s;c++){const u=h[l*s+c];for(let f=0;f<i;f++)a[l*i+f]=a[l*i+f]+u*t[c*i+f]}return{data:a,shape:[r,i]}}function rs(h,e,t){if(h.length!==e*t)throw new Error(`transpose: array length (${String(h.length)}) does not match shape [${String(e)}, ${String(t)}]`);const n=new Float64Array(h.length);for(let r=0;r<e;r++)for(let s=0;s<t;s++)n[s*e+r]=h[r*t+s];return n}class ss{}class zn extends ss{constructor(t){super();b(this,"dimensions");b(this,"_vectors");this.dimensions=t,this._vectors=new Map}add(t,n){if(n.length!==this.dimensions)throw new Error(`Vector dimension mismatch: expected ${String(this.dimensions)}, got ${String(n.length)}`);this._vectors.set(t,n)}delete(t){this._vectors.delete(t)}clear(){this._vectors.clear()}searchKnn(t,n){if(this._vectors.size===0)return new j;const r=[];for(const[i,a]of this._vectors){const l=Qe(t,a);r.push({docId:i,score:l})}r.sort((i,a)=>a.score-i.score);const o=r.slice(0,n).map(i=>({docId:i.docId,payload:B({score:i.score})}));return new j(o)}searchThreshold(t,n){const r=[];for(const[s,o]of this._vectors){const i=Qe(t,o);i>=n&&r.push({docId:s,payload:B({score:i})})}return new j(r)}count(){return this._vectors.size}}class os{}class is{constructor(){b(this,"vertexIds",new Set);b(this,"edgeIds",new Set);b(this,"adjOut",new Map);b(this,"adjIn",new Map);b(this,"labelIndex",new Map);b(this,"vertexLabelIndex",new Map)}addVertex(e,t){this.vertexIds.add(e),this.adjOut.has(e)||this.adjOut.set(e,new Set),this.adjIn.has(e)||this.adjIn.set(e,new Set);let n=this.vertexLabelIndex.get(t);n||(n=new Set,this.vertexLabelIndex.set(t,n)),n.add(e)}removeVertex(e,t){this.vertexIds.delete(e),this.adjOut.delete(e),this.adjIn.delete(e);for(const[,r]of this.adjOut)r.delete(e);for(const[,r]of this.adjIn)r.delete(e);const n=this.vertexLabelIndex.get(t);n&&(n.delete(e),n.size===0&&this.vertexLabelIndex.delete(t))}addEdge(e,t,n,r){this.edgeIds.add(e);let s=this.adjOut.get(t);s||(s=new Set,this.adjOut.set(t,s)),s.add(e);let o=this.adjIn.get(n);o||(o=new Set,this.adjIn.set(n,o)),o.add(e);let i=this.labelIndex.get(r);i||(i=new Set,this.labelIndex.set(r,i)),i.add(e)}removeEdge(e,t,n,r){this.edgeIds.delete(e);const s=this.adjOut.get(t);s&&s.delete(e);const o=this.adjIn.get(n);o&&o.delete(e);const i=this.labelIndex.get(r);i&&(i.delete(e),i.size===0&&this.labelIndex.delete(r))}neighbors(e,t,n,r){const s=[];if(r==="out"){const o=this.adjOut.get(e);if(o)for(const i of o){const a=t.get(i);a&&(n===null||a.label===n)&&s.push(a.targetId)}}else{const o=this.adjIn.get(e);if(o)for(const i of o){const a=t.get(i);a&&(n===null||a.label===n)&&s.push(a.sourceId)}}return s}verticesByLabel(e){return this.vertexLabelIndex.get(e)??new Set}}class Gn extends os{constructor(){super(...arguments);b(this,"_vertices",new Map);b(this,"_edges",new Map);b(this,"_graphs",new Map);b(this,"_vertexMembership",new Map);b(this,"_edgeMembership",new Map);b(this,"_nextVertexId",0);b(this,"_nextEdgeId",0)}createGraph(t){this._graphs.has(t)||this._graphs.set(t,new is)}dropGraph(t){const n=this._graphs.get(t);if(n){for(const r of n.vertexIds){const s=this._vertexMembership.get(r);s&&(s.delete(t),s.size===0&&this._vertexMembership.delete(r))}for(const r of n.edgeIds){const s=this._edgeMembership.get(r);s&&(s.delete(t),s.size===0&&this._edgeMembership.delete(r))}this._graphs.delete(t)}}graphNames(){return[...this._graphs.keys()]}hasGraph(t){return this._graphs.has(t)}unionGraphs(t,n,r){this.createGraph(r);const s=this._graphs.get(t),o=this._graphs.get(n);if(s){for(const i of s.vertexIds){const a=this._vertices.get(i);a&&this.addVertex(a,r)}for(const i of s.edgeIds){const a=this._edges.get(i);a&&this.addEdge(a,r)}}if(o){for(const i of o.vertexIds){const a=this._vertices.get(i);a&&this.addVertex(a,r)}for(const i of o.edgeIds){const a=this._edges.get(i);a&&this.addEdge(a,r)}}}intersectGraphs(t,n,r){this.createGraph(r);const s=this._graphs.get(t),o=this._graphs.get(n);if(!(!s||!o)){for(const i of s.vertexIds)if(o.vertexIds.has(i)){const a=this._vertices.get(i);a&&this.addVertex(a,r)}for(const i of s.edgeIds)if(o.edgeIds.has(i)){const a=this._edges.get(i);a&&this.addEdge(a,r)}}}differenceGraphs(t,n,r){this.createGraph(r);const s=this._graphs.get(t),o=this._graphs.get(n);if(!s)return;const i=o?o.vertexIds:new Set,a=o?o.edgeIds:new Set;for(const l of s.vertexIds)if(!i.has(l)){const c=this._vertices.get(l);c&&this.addVertex(c,r)}for(const l of s.edgeIds)if(!a.has(l)){const c=this._edges.get(l);c&&this.addEdge(c,r)}}copyGraph(t,n){this.createGraph(n);const r=this._graphs.get(t);if(r){for(const s of r.vertexIds){const o=this._vertices.get(s);o&&this.addVertex(o,n)}for(const s of r.edgeIds){const o=this._edges.get(s);o&&this.addEdge(o,n)}}}addVertex(t,n){this._vertices.set(t.vertexId,t),t.vertexId>=this._nextVertexId&&(this._nextVertexId=t.vertexId+1);const r=this._graphs.get(n);r&&r.addVertex(t.vertexId,t.label);let s=this._vertexMembership.get(t.vertexId);s||(s=new Set,this._vertexMembership.set(t.vertexId,s)),s.add(n)}addEdge(t,n){this._edges.set(t.edgeId,t),t.edgeId>=this._nextEdgeId&&(this._nextEdgeId=t.edgeId+1);const r=this._graphs.get(n);r&&r.addEdge(t.edgeId,t.sourceId,t.targetId,t.label);let s=this._edgeMembership.get(t.edgeId);s||(s=new Set,this._edgeMembership.set(t.edgeId,s)),s.add(n)}removeVertex(t,n){const r=this._vertices.get(t);if(!r)return;const s=this._graphs.get(n);if(s){const i=[],a=s.adjOut.get(t);if(a)for(const c of a)i.push(c);const l=s.adjIn.get(t);if(l)for(const c of l)i.push(c);for(const c of i)this.removeEdge(c,n);s.removeVertex(t,r.label)}const o=this._vertexMembership.get(t);o&&(o.delete(n),o.size===0&&(this._vertexMembership.delete(t),this._vertices.delete(t)))}removeEdge(t,n){const r=this._edges.get(t);if(!r)return;const s=this._graphs.get(n);s&&s.removeEdge(t,r.sourceId,r.targetId,r.label);const o=this._edgeMembership.get(t);o&&(o.delete(n),o.size===0&&(this._edgeMembership.delete(t),this._edges.delete(t)))}neighbors(t,n,r,s){const o=this._graphs.get(n);return o?o.neighbors(t,this._edges,r??null,s??"out"):[]}verticesByLabel(t,n){const r=this._graphs.get(n);if(!r)return[];const s=r.verticesByLabel(t),o=[];for(const i of s){const a=this._vertices.get(i);a&&o.push(a)}return o}verticesInGraph(t){const n=this._graphs.get(t);if(!n)return[];const r=[];for(const s of n.vertexIds){const o=this._vertices.get(s);o&&r.push(o)}return r}edgesInGraph(t){const n=this._graphs.get(t);if(!n)return[];const r=[];for(const s of n.edgeIds){const o=this._edges.get(s);o&&r.push(o)}return r}vertexGraphs(t){return this._vertexMembership.get(t)??new Set}outEdgeIds(t,n){const r=this._graphs.get(n);return r?r.adjOut.get(t)??new Set:new Set}inEdgeIds(t,n){const r=this._graphs.get(n);return r?r.adjIn.get(t)??new Set:new Set}edgeIdsByLabel(t,n){const r=this._graphs.get(n);return r?r.labelIndex.get(t)??new Set:new Set}vertexIdsInGraph(t){const n=this._graphs.get(t);return n?new Set(n.vertexIds):new Set}degreeDistribution(t){const n=this._graphs.get(t);if(!n)return new Map;const r=new Map;for(const s of n.vertexIds){const o=n.adjOut.get(s),i=n.adjIn.get(s),a=(o?o.size:0)+(i?i.size:0);r.set(a,(r.get(a)??0)+1)}return r}labelDegree(t,n){const r=this._graphs.get(n);if(!r)return 0;const s=r.labelIndex.get(t);return s?s.size:0}vertexLabelCounts(t){const n=this._graphs.get(t);if(!n)return new Map;const r=new Map;for(const[s,o]of n.vertexLabelIndex)r.set(s,o.size);return r}getVertex(t){return this._vertices.get(t)??null}getEdge(t){return this._edges.get(t)??null}nextVertexId(){return this._nextVertexId++}nextEdgeId(){return this._nextEdgeId++}clear(){this._vertices.clear(),this._edges.clear(),this._graphs.clear(),this._vertexMembership.clear(),this._edgeMembership.clear(),this._nextVertexId=0,this._nextEdgeId=0}get vertices(){return this._vertices}get edges(){return this._edges}get vertexCount(){return this._vertices.size}get edgeCount(){return this._edges.size}addVertices(t,n){for(const r of t)this.addVertex(r,n)}addEdges(t,n){for(const r of t)this.addEdge(r,n)}vertexProperty(t,n){const r=this._vertices.get(t);if(r!==void 0)return r.properties[n]}setVertexProperty(t,n,r){const s=this._vertices.get(t);if(s===void 0)throw new Error(`Vertex ${String(t)} not found`);s.properties[n]=r}edgeProperty(t,n){const r=this._edges.get(t);if(r!==void 0)return r.properties[n]}setEdgeProperty(t,n,r){const s=this._edges.get(t);if(s===void 0)throw new Error(`Edge ${String(t)} not found`);s.properties[n]=r}edgesByLabel(t,n){const r=[];if(!this._graphs.get(n))return r;for(const[o,i]of this._edges)if(i.label===t){const a=this._edgeMembership.get(o);a&&a.has(n)&&r.push(i)}return r}vertexLabels(t){const n=new Set;for(const r of this.verticesInGraph(t))r.label&&n.add(r.label);return n}edgeLabels(t){const n=new Set;for(const r of this.edgesInGraph(t))n.add(r.label);return n}outDegree(t,n){return this.outEdgeIds(t,n).size}inDegree(t,n){return this.inEdgeIds(t,n).size}edgesBetween(t,n,r,s){const o=[],i=this.outEdgeIds(t,r);for(const a of i){const l=this._edges.get(a);l&&l.targetId===n&&(s==null||l.label===s)&&o.push(l)}return o}subgraph(t,n,r){this._graphs.has(r)||this.createGraph(r);for(const s of t){const o=this._vertices.get(s);o&&this.addVertex(o,r)}for(const[s,o]of this._edges){const i=this._edgeMembership.get(s);i&&i.has(n)&&t.has(o.sourceId)&&t.has(o.targetId)&&this.addEdge(o,r)}}minTimestamp(t){let n=null;for(const r of this.edgesInGraph(t)){const s=r.properties.timestamp;typeof s=="number"&&(n===null||s<n)&&(n=s)}return n}maxTimestamp(t){let n=null;for(const r of this.edgesInGraph(t)){const s=r.properties.timestamp;typeof s=="number"&&(n===null||s>n)&&(n=s)}return n}edgesInTimeRange(t,n,r){const s=[];for(const o of this.edgesInGraph(t)){const i=o.properties.timestamp;typeof i=="number"&&i>=n&&i<=r&&s.push(o)}return s}}function At(h){return{k1:(h==null?void 0:h.k1)??1.2,b:(h==null?void 0:h.b)??.75,boost:(h==null?void 0:h.boost)??1}}class ct{constructor(e,t){b(this,"_params");b(this,"_totalDocs");b(this,"_avgDocLength");this._params=e,this._totalDocs=t.totalDocs,this._avgDocLength=t.avgDocLength}get params(){return this._params}idf(e){const t=this._totalDocs;return Math.log((t-e+.5)/(e+.5)+1)}score(e,t,n){return this.scoreWithIdf(e,t,this.idf(n))}scoreWithIdf(e,t,n){const{k1:r,b:s,boost:o}=this._params,i=o*n,a=this._avgDocLength>0?this._avgDocLength:1,l=1/(r*(1-s+s*t/a));return i-i/(1+e*l)}combineScores(e){let t=0;for(const n of e)t+=n;return t}upperBound(e){return this._params.boost*this.idf(e)}}function Ve(h){return{bm25:(h==null?void 0:h.bm25)??At(),alpha:(h==null?void 0:h.alpha)??1,beta:(h==null?void 0:h.beta)??0,baseRate:(h==null?void 0:h.baseRate)??.5}}class Ze{constructor(e,t){b(this,"_bm25");b(this,"_transform");this._bm25=new ct(e.bm25,t),this._transform=new W.BayesianProbabilityTransform(e.alpha,e.beta,e.baseRate===.5?null:e.baseRate)}get bm25(){return this._bm25}idf(e){return this._bm25.idf(e)}score(e,t,n){return this.scoreWithIdf(e,t,this._bm25.idf(n))}scoreWithIdf(e,t,n){const r=this._bm25.scoreWithIdf(e,t,n),s=this._bm25.params.k1>0?t:1,o=s>0?t/s:1;return this._transform.scoreToProbability(r,e,o)}combineScores(e){return e.length===0?.5:e.length===1?e[0]:W.logOddsConjunction(e,0)}upperBound(e){const t=this._bm25.upperBound(e);return this._transform.wandUpperBound(t)}}class L{compose(e){return new ze([this,e])}costEstimate(e){return e.totalDocs}}class ze extends L{constructor(t){super();b(this,"operators");this.operators=t}execute(t){let n=null;for(const r of this.operators)n=r.execute(t);return n===null?new j:n}costEstimate(t){let n=0;for(const r of this.operators)n+=r.costEstimate(t);return n}}const Bn=6371e3,as=111320;function ut(h){return h*Math.PI/180}function ls(h){return h*180/Math.PI}function Un(h,e,t,n){const r=ut(h),s=ut(t),o=ut(t-h),i=ut(n-e),a=Math.sin(o/2)**2+Math.cos(r)*Math.cos(s)*Math.sin(i/2)**2;return 2*Bn*Math.asin(Math.sqrt(a))}class cs{constructor(e,t){b(this,"_tableName");b(this,"_fieldName");b(this,"_points");this._tableName=e,this._fieldName=t,this._points=new Map}get tableName(){return this._tableName}get fieldName(){return this._fieldName}add(e,t,n){this._points.set(e,{x:t,y:n})}delete(e){this._points.delete(e)}clear(){this._points.clear()}searchWithin(e,t,n){if(n<=0)return new j;const r=n/as,s=n/Bn,o=Math.cos(ut(t));let i;if(o<1e-10||s>=Math.PI)i=180;else{const d=Math.sin(s)/o;d>=1?i=180:i=ls(Math.asin(d))}const a=e-i,l=e+i,c=t-r,u=t+r,f=[];for(const[d,p]of this._points){if(p.x<a||p.x>l||p.y<c||p.y>u)continue;const m=Un(t,e,p.y,p.x);if(m<=n){const _=1-m/n;f.push({docId:d,payload:B({score:_})})}}return f.sort((d,p)=>d.docId-p.docId),j.fromSorted(f)}count(){return this._points.size}close(){this._points.clear()}}function us(h,e,t,n){const r=h.documentStore;if(!r)return new j;if(Xe(t)===0)return new j;const o=[];for(const a of r.docIds){const l=r.getField(a,e);if(!l||!(l instanceof Float64Array)||Xe(l)===0)continue;const u=Qe(t,l);o.push({docId:a,score:u})}o.sort((a,l)=>l.score-a.score);const i=o.slice(0,n);return new j(i.map(a=>({docId:a.docId,payload:B({score:a.score})})))}function hs(h,e,t,n){const r=h.documentStore;if(!r)return new j;if(Xe(t)===0)return new j;const o=[];for(const i of r.docIds){const a=r.getField(i,e);if(!a||!(a instanceof Float64Array)||Xe(a)===0)continue;const c=Qe(t,a);c>=n&&o.push({docId:i,payload:B({score:c})})}return new j(o)}class de extends L{constructor(t,n){super();b(this,"term");b(this,"field");this.term=t,this.field=n??null}execute(t){const n=t.invertedIndex;if(!n)return new j;const s=(this.field?n.getSearchAnalyzer(this.field):n.analyzer).analyze(this.term);if(s.length===0)return new j;const o=s.map(a=>this.field?n.getPostingList(this.field,a):n.getPostingListAnyField(a));let i=o[0];for(let a=1;a<o.length;a++)i=i.union(o[a]);return i}costEstimate(t){return this.field?t.docFreq(this.field,this.term):t.totalDocs}}class be extends L{constructor(t,n,r="embedding"){super();b(this,"queryVector");b(this,"threshold");b(this,"field");this.queryVector=t,this.threshold=n,this.field=r}execute(t){var r;const n=(r=t.vectorIndexes)==null?void 0:r[this.field];return n?n.searchThreshold(this.queryVector,this.threshold):hs(t,this.field,this.queryVector,this.threshold)}costEstimate(t){return t.dimensions*Math.log2(t.totalDocs+1)}}class Ce extends L{constructor(t,n,r="embedding"){super();b(this,"queryVector");b(this,"k");b(this,"field");this.queryVector=t,this.k=n,this.field=r}execute(t){var r;const n=(r=t.vectorIndexes)==null?void 0:r[this.field];return n?n.searchKnn(this.queryVector,this.k):us(t,this.field,this.queryVector,this.k)}costEstimate(t){return t.dimensions*Math.log2(t.totalDocs+1)}}class fs extends L{constructor(t,n,r,s){super();b(this,"field");b(this,"centerX");b(this,"centerY");b(this,"distance");this.field=t,this.centerX=n,this.centerY=r,this.distance=s}execute(t){var r;const n=(r=t.spatialIndexes)==null?void 0:r[this.field];return n?n.searchWithin(this.centerX,this.centerY,this.distance):this._bruteForceScan(t)}_bruteForceScan(t){const n=t.documentStore;if(!n)return new j;const r=[],s=[...n.docIds].sort((o,i)=>o-i);for(const o of s){const i=n.getField(o,this.field);if(!i)continue;const a=Un(this.centerY,this.centerX,i[1],i[0]);if(a<=this.distance){const l=this.distance>0?1-a/this.distance:1;r.push({docId:o,payload:B({score:l})})}}return j.fromSorted(r)}costEstimate(t){return Math.log2(t.totalDocs+1)}}class z extends L{constructor(t,n,r){super();b(this,"field");b(this,"predicate");b(this,"source");this.field=t,this.predicate=n,this.source=r??null}execute(t){const n=t.documentStore;if(!n)return new j;const r=Fn(this.predicate),s=typeof n.getFieldsBulk=="function";if(this.source){const l=[...this.source.execute(t)];if(s&&l.length>1){const u=l.map(p=>p.docId),f=n.getFieldsBulk(u,this.field),d=[];for(const p of l){const m=f.get(p.docId);(r?this.predicate.evaluate(m):m!=null&&this.predicate.evaluate(m))&&d.push(p)}return j.fromSorted(d)}const c=[];for(const u of l){const f=n.getField(u.docId,this.field);(r?this.predicate.evaluate(f):f!=null&&this.predicate.evaluate(f))&&c.push(u)}return j.fromSorted(c)}const o=[...n.docIds].sort((a,l)=>a-l);if(s&&o.length>1){const a=n.getFieldsBulk(o,this.field),l=[];for(const c of o){const u=a.get(c);(r?this.predicate.evaluate(u):u!=null&&this.predicate.evaluate(u))&&l.push({docId:c,payload:B({score:0})})}return j.fromSorted(l)}const i=[];for(const a of o){const l=n.getField(a,this.field);!r&&l==null||this.predicate.evaluate(l)&&i.push({docId:a,payload:B({score:0})})}return j.fromSorted(i)}costEstimate(t){return t.totalDocs}}class ds extends L{constructor(t,n){super();b(this,"field");b(this,"source");this.field=t,this.source=n??null}execute(t){const n=t.documentStore;if(!n)return new j;let r;this.source?r=this.source.execute(t).entries.map(l=>l.docId):r=[...n.docIds].sort((a,l)=>a-l);const s=new Map;for(const a of r){const l=n.getField(a,this.field);if(l!=null){const c=String(l);s.set(c,(s.get(c)??0)+1)}}const i=[...s.entries()].sort((a,l)=>a[0].localeCompare(l[0])).map(([a,l],c)=>({docId:c,payload:B({score:l,fields:{_facet_field:this.field,_facet_value:a,_facet_count:l}})}));return j.fromSorted(i)}costEstimate(t){return t.totalDocs}}class ue extends L{constructor(t,n,r,s){super();b(this,"scorer");b(this,"source");b(this,"queryTerms");b(this,"field");this.scorer=t,this.source=n,this.queryTerms=r,this.field=s??null}execute(t){const n=this.source.execute(t),r=t.invertedIndex;if(!r)return n;const s=typeof this.scorer.idf=="function"&&typeof this.scorer.scoreWithIdf=="function",o=typeof this.scorer.combineScores=="function",i=[];if(s)for(const p of this.queryTerms){const m=this.field?r.docFreq(this.field,p):r.docFreqAnyField(p);i.push(this.scorer.idf(m))}const a=n.entries,l=a.map(p=>p.docId),c=typeof r.getDocLengthsBulk=="function";let u=null;c&&this.field!==null&&(u=r.getDocLengthsBulk(l,this.field));const f=[];if(c&&this.field!==null)for(const p of this.queryTerms)f.push(r.getTermFreqsBulk(l,this.field,p));const d=[];for(const p of a){const m=[];let _;u!==null?_=u.get(p.docId)??0:this.field!==null?_=r.getDocLength(p.docId,this.field):_=r.getTotalDocLength(p.docId);for(let x=0;x<this.queryTerms.length;x++){const w=this.queryTerms[x];let E;if(f.length>0?E=f[x].get(p.docId)??0:this.field!==null?E=r.getTermFreq(p.docId,this.field,w):E=r.getTotalTermFreq(p.docId,w),s)m.push(this.scorer.scoreWithIdf(E,_,i[x]));else{const I=this.field?r.docFreq(this.field,w):r.docFreqAnyField(w);m.push(this.scorer.score(E,_,I))}}const y=o?this.scorer.combineScores(m):m.reduce((x,w)=>x+w,0);d.push({docId:p.docId,payload:B({positions:p.payload.positions,score:y,fields:p.payload.fields})})}return j.fromSorted(d)}}class kt extends L{constructor(t,n,r){super();b(this,"index");b(this,"field");b(this,"predicate");this.index=t,this.field=n,this.predicate=r}execute(t){return this.index.scan(this.predicate)}costEstimate(t){return this.index.scanCost(this.predicate)}}class ee extends L{constructor(t){super();b(this,"operands");this.operands=t}execute(t){const n=this.operands.map(s=>s.execute(t));let r=new j;for(const s of n)r=r.union(s);return r}costEstimate(t){let n=0;for(const r of this.operands)n+=r.costEstimate(t);return n}}class U extends L{constructor(t){super();b(this,"operands");this.operands=t}execute(t){if(this.operands.length===0)return new j;let n=this.operands[0].execute(t);for(let r=1;r<this.operands.length;r++){if(n.length===0)return n;n=n.intersect(this.operands[r].execute(t))}return n}costEstimate(t){if(this.operands.length===0)return 0;let n=1/0;for(const r of this.operands){const s=r.costEstimate(t);s<n&&(n=s)}return n}}class ce extends L{constructor(t){super();b(this,"operand");this.operand=t}execute(t){const n=this.operand.execute(t),r=t.documentStore;if(!r)return new j;const s=j.fromSorted([...r.docIds].sort((o,i)=>o-i).map(o=>({docId:o,payload:B({score:0})})));return n.complement(s)}costEstimate(t){return t.totalDocs}}function ps(h,e,t=1){return e<=0?1:Math.pow(h/e,t)}function gs(h,e=.5){const t=h.length;if(t===0)return{calibrate(i){return i.map(()=>e)}};let n=0;for(let i=0;i<t;i++)n+=h[i];const r=n/t;let s=0;for(let i=0;i<t;i++){const a=h[i]-r;s+=a*a}const o=Math.max(Math.sqrt(s/t),1e-10);return{calibrate(i,a){const l=(a==null?void 0:a.bandwidthFactor)??1,c=(a==null?void 0:a.densityPrior)??null,u=1.06*o*Math.pow(t,-.2)*l;return i.map((f,d)=>{const p=(f-r)/Math.max(u,1e-10),m=Math.exp(-.5*p*p)/(Math.sqrt(2*Math.PI)*u),_=m*2;let y=e;c!==null&&d<c.length&&(y=Math.min(Math.max(c[d]*e,.01),.99));const x=_*y,w=x+m*(1-y);return w<=0?y:Math.min(Math.max(x/w,.001),.999)})}}}function ms(h,e,t,n){const r=h.length,s=new Array(r).fill(.01),o=e.invertedIndex;if(o==null||t===null)return s;const i=n??"",a=new Ze(Ve(),o.stats),l=t.toLowerCase().split(/\s+/).filter(p=>p.length>0);if(l.length===0)return s;const c=new de(t,i||null),f=new ue(a,c,l,i||null).execute(e),d=new Map;for(const p of f)d.set(p.docId,p.payload.score);for(let p=0;p<h.length;p++){const m=d.get(h[p].docId)??.01;s[p]=Math.min(Math.max(m,.01),.99)}return s}class Wn extends L{constructor(t,n,r="embedding",s="kde",o=.5,i="density_prior",a,l,c=1,u=1){super();b(this,"queryVector");b(this,"k");b(this,"field");b(this,"estimationMethod");b(this,"baseRate");b(this,"weightSource");b(this,"bm25Query");b(this,"bm25Field");b(this,"densityGamma");b(this,"bandwidthScale");this.queryVector=t,this.k=n,this.field=r,this.estimationMethod=s,this.baseRate=o,this.weightSource=i,this.bm25Query=a??null,this.bm25Field=l??null,this.densityGamma=c,this.bandwidthScale=u}execute(t){var x;const n=(x=t.vectorIndexes)==null?void 0:x[this.field];if(n===void 0)return new j;const r=n.searchKnn(this.queryVector,this.k);if(r.length===0)return r;const s=[],o=[],i=[];for(const w of r)s.push(w),o.push(w.docId),i.push(w.payload.score);const a=i.map(w=>1-w);let l=null,c=null;const u=n;if(typeof u.probedDistances=="function"){l=u;const w=u.probedDistances(this.queryVector);w!==null&&w.length>0&&(c=Array.isArray(w)?w:Array.from(w))}if((c===null||c.length===0)&&u.backgroundSamples!==null&&u.backgroundSamples!==void 0){l=u;const w=u.backgroundSamples;w.length>0&&(c=Array.isArray(w)?w:Array.from(w))}if(c===null||c.length===0)return r;const f=gs(c,this.baseRate),{weights:d,densityPrior:p,method:m}=this._resolveWeightsAndMethod(s,l,a,t),_=f.calibrate(a,{weights:d,method:m,bandwidthFactor:this.bandwidthScale,densityPrior:p}),y=o.map((w,E)=>({docId:w,payload:B({score:_[E],fields:{_raw_similarity:i[E],...s[E].payload.fields}})}));return new j(y)}_resolveWeightsAndMethod(t,n,r,s){if(this.weightSource==="bayesian_bm25")return{weights:ms(t,s,this.bm25Query,this.bm25Field),densityPrior:null,method:this.estimationMethod};if(this.weightSource==="density_prior"&&n!==null&&typeof n.cellPopulations=="function"){const o=n.cellPopulations(),i=(n.totalVectors??0)/Math.max(n.nlist??1,1);return{weights:null,densityPrior:t.map(l=>{const c=l.payload.fields._centroid_id??-1,u=o.get(c)??1;return ps(u,i,this.densityGamma)}),method:this.estimationMethod}}return this.weightSource==="distance_gap"?{weights:null,densityPrior:null,method:"auto"}:{weights:null,densityPrior:null,method:this.estimationMethod}}costEstimate(t){return t.dimensions*Math.log2(t.totalDocs+1)}}function _s(h){if(h>=0)return 1/(1+Math.exp(-h));const e=Math.exp(h);return e/(1+e)}function ys(h){const e=Math.max(1e-10,Math.min(.9999999999,h));return Math.log(e/(1-e))}function bs(h,e){if(e<=0)return .5;const t=h/e;return _s(ys(.5)-.5*t)}class Kn{constructor(e,t,n=.5,r=10,s){b(this,"_signalPostingLists");b(this,"_signalUpperBounds");b(this,"_alpha");b(this,"_k");b(this,"_gating");this._signalPostingLists=e,this._signalUpperBounds=t,this._alpha=n,this._k=r,this._gating=s??null}_computeFusedUpperBound(e){return W.logOddsConjunction(e,this._alpha,void 0,this._gating??"none")}scoreTopK(){const e=this._signalPostingLists.length,t=[],n=new Set;let r=0;for(let l=0;l<e;l++){const c=new Map;for(const u of this._signalPostingLists[l])c.set(u.docId,u.payload.score),n.add(u.docId);t.push(c),r=Math.max(r,c.size)}const s=t.map(l=>bs(l.size,r)),o=[];let i=0;for(const l of n){const c=[];for(let p=0;p<e;p++)t[p].has(l)?c.push(this._signalUpperBounds[p]):c.push(s[p]);const u=this._computeFusedUpperBound(c);if(o.length>=this._k&&u<=i)continue;const f=[];for(let p=0;p<e;p++)f.push(t[p].get(l)??s[p]);const d=W.logOddsConjunction(f,this._alpha,void 0,this._gating??"none");o.length<this._k?(o.push([d,l]),ws(o,o.length-1),o.length===this._k&&(i=o[0][0])):d>i&&(o[0]=[d,l],vs(o),i=o[0][0])}const a=o.map(([l,c])=>({docId:c,payload:B({score:l})}));return new j(a)}}function ws(h,e){for(;e>0;){const t=e-1>>>1;if(h[t][0]<=h[e][0])break;[h[t],h[e]]=[h[e],h[t]],e=t}}function vs(h){const e=h.length;let t=0;for(;;){let n=t;const r=2*t+1,s=2*t+2;if(r<e&&h[r][0]<h[n][0]&&(n=r),s<e&&h[s][0]<h[n][0]&&(n=s),n===t)break;[h[t],h[n]]=[h[n],h[t]],t=n}}function et(h,e,t=.01){if(e<=0)return .5;const n=h/e;return .5*(1-n)+t*n}class xs extends L{constructor(t,n,r){super();b(this,"_termOp");b(this,"_vectorOp");this._termOp=new de(t),this._vectorOp=new be(n,r)}execute(t){const n=this._termOp.execute(t),r=this._vectorOp.execute(t);return n.intersect(r)}costEstimate(t){return Math.min(this._termOp.costEstimate(t),this._vectorOp.costEstimate(t))}}class Ss extends L{constructor(t,n,r){super();b(this,"source");b(this,"_vectorOp");this.source=t,this._vectorOp=new be(n,r)}execute(t){const n=this.source.execute(t),r=this._vectorOp.execute(t);return n.intersect(r)}costEstimate(t){return Math.min(this.source.costEstimate(t),this._vectorOp.costEstimate(t))}}class Ie extends L{constructor(t,n=.5,r,s,o){super();b(this,"signals");b(this,"alpha");b(this,"topK");b(this,"gating");b(this,"gatingBeta");this.signals=t,this.alpha=n,this.topK=r??null,this.gating=s??null,this.gatingBeta=o??null}execute(t){const n=this.signals.map(f=>f.execute(t));if(this.topK!==null){const f=n.map(p=>{let m=0;for(const _ of p)_.payload.score>m&&(m=_.payload.score);return Math.max(m,.5)});return new Kn(n,f,this.alpha,this.topK,this.gating).scoreTopK()}const r=[],s=new Set;for(const f of n){const d=new Map;for(const p of f)d.set(p.docId,p.payload.score),s.add(p.docId);r.push(d)}const o=[...s].sort((f,d)=>f-d),i=o.length,a=r.length;if(i===0)return new j;const l=r.map(f=>et(f.size,i)),c=[],u=this.alpha;for(const f of o){const d=[];for(let m=0;m<a;m++)d.push(r[m].get(f)??l[m]);let p;a===1?p=d[0]:p=W.logOddsConjunction(d,u,void 0,this.gating??"none",this.gatingBeta??void 0),c.push({docId:f,payload:B({score:p})})}return j.fromSorted(c)}costEstimate(t){let n=0;for(const r of this.signals)n+=r.costEstimate(t);return n}}class Fe extends L{constructor(t,n="and"){super();b(this,"signals");b(this,"mode");this.signals=t,this.mode=n}execute(t){const n=this.signals.map(c=>c.execute(t)),r=[],s=new Set;for(const c of n){const u=new Map;for(const f of c)u.set(f.docId,f.payload.score),s.add(f.docId);r.push(u)}const o=[...s].sort((c,u)=>c-u),i=o.length,a=r.map(c=>et(c.size,i)),l=[];for(const c of o){const u=[];for(let d=0;d<r.length;d++)u.push(r[d].get(c)??a[d]);const f=this.mode==="and"?W.probAnd(u):W.probOr(u);l.push({docId:c,payload:B({score:f})})}return j.fromSorted(l)}costEstimate(t){let n=0;for(const r of this.signals)n+=r.costEstimate(t);return n}}class on extends L{constructor(t,n,r,s="embedding"){super();b(this,"positive");b(this,"_negativeOp");this.positive=t,this._negativeOp=new be(n,r,s)}execute(t){const n=this.positive.execute(t),r=this._negativeOp.execute(t),s=new Set;for(const i of r)s.add(i.docId);const o=[...n].filter(i=>!s.has(i.docId));return j.fromSorted(o)}costEstimate(t){return this.positive.costEstimate(t)+this._negativeOp.costEstimate(t)}}class Jn extends L{constructor(t,n,r,s){super();b(this,"facetField");b(this,"_vectorOp");b(this,"source");this.facetField=t,this._vectorOp=new be(n,r),this.source=s??null}execute(t){const n=this._vectorOp.execute(t),r=new Set;for(const l of n)r.add(l.docId);let s;this.source!==null?s=[...this.source.execute(t)].filter(c=>r.has(c.docId)).map(c=>c.docId):s=[...r].sort((l,c)=>l-c);const o=t.documentStore;if(!o)return new j;const i=new Map;for(const l of s){const c=o.getField(l,this.facetField);if(c!=null){const u=String(c);i.set(u,(i.get(u)??0)+1)}}const a=[...i.entries()].sort((l,c)=>l[0].localeCompare(c[0]));return j.fromSorted(a.map(([l,c],u)=>({docId:u,payload:B({score:c,fields:{_facet_field:this.facetField,_facet_value:l,_facet_count:c}})})))}costEstimate(t){let n=this._vectorOp.costEstimate(t);return this.source!==null&&(n+=this.source.costEstimate(t)),n}}class Mt extends L{constructor(t,n=.01){super();b(this,"signal");b(this,"defaultProb");this.signal=t,this.defaultProb=n}execute(t){const n=this.signal.execute(t),r=t.documentStore,s=new Map;for(const l of n)s.set(l.docId,l.payload.score);const o=new Set(s.keys());if(r)for(const l of r.docIds)o.add(l);const i=[...o].sort((l,c)=>l-c),a=[];for(const l of i){const u=1-(s.get(l)??this.defaultProb);a.push({docId:l,payload:B({score:u})})}return j.fromSorted(a)}costEstimate(t){return this.signal.costEstimate(t)}}class Es extends L{constructor(t,n=.5,r){super();b(this,"signals");b(this,"baseAlpha");b(this,"gating");this.signals=t,this.baseAlpha=n,this.gating=r??null}execute(t){const n=this.signals.map(u=>u.execute(t)),r=new Set,s=[];for(const u of n){const f=new Map;for(const d of u)f.set(d.docId,d.payload.score),r.add(d.docId);s.push(f)}const o=[...r].sort((u,f)=>u-f),i=o.length;if(i===0)return new j;const a=[];for(const u of s){const f=i>0?u.size/i:0,d=[...u.values()];let p=0;if(d.length>1){let y=0;for(const w of d)y+=w;y/=d.length;let x=0;for(const w of d)x+=(w-y)*(w-y);p=x/d.length}let m=.5;if(d.length>0){let y=0;for(const x of d)y+=x;m=y/d.length}const _=Math.abs(m-.5);a.push({coverageRatio:f,scoreVariance:p,calibrationError:_})}const l=s.map(u=>et(u.size,i)),c=[];for(const u of o){const f=[];for(let _=0;_<s.length;_++)f.push(s[_].get(u)??l[_]);const d=[];for(const _ of a){const y=_.coverageRatio*(1-_.calibrationError);d.push(this.baseAlpha*(.5+y))}let p=this.baseAlpha;if(d.length>0){let _=0;for(const y of d)_+=y;p=_/d.length}const m=W.logOddsConjunction(f,p,void 0,this.gating??"none");c.push({docId:u,payload:B({score:m})})}return j.fromSorted(c)}costEstimate(t){let n=0;for(const r of this.signals)n+=r.costEstimate(t);return n}}function Hn(h){return h===" "||h===" "||h===`
2
+ `||h==="\r"}function Yn(h){return!Hn(h)&&h!=="("&&h!==")"&&h!==":"&&h!=='"'&&h!=="["&&h!=="]"}const Is={and:"AND",or:"OR",not:"NOT"};function Ns(h){const e=[];let t=0;const n=h.length;for(;t<n;){const r=h[t];if(Hn(r)){t++;continue}if(r==="("){e.push({type:"LPAREN",value:"(",pos:t}),t++;continue}if(r===")"){e.push({type:"RPAREN",value:")",pos:t}),t++;continue}if(r===":"){e.push({type:"COLON",value:":",pos:t}),t++;continue}if(r==='"'){const s=t;t++;let o="";for(;t<n&&h[t]!=='"';)o+=h[t],t++;if(t>=n)throw new Error(`Unterminated quoted phrase starting at position ${String(s)}`);e.push({type:"PHRASE",value:o,pos:s}),t++;continue}if(r==="["){const s=t;t++;let o="";for(;t<n&&h[t]!=="]";)o+=h[t],t++;if(t>=n)throw new Error(`Unterminated vector literal starting at position ${String(s)}`);e.push({type:"VECTOR",value:o.trim(),pos:s}),t++;continue}if(Yn(r)){const s=t;let o="";for(;t<n&&Yn(h[t]);)o+=h[t],t++;const i=Is[o.toLowerCase()];i!==void 0?e.push({type:i,value:o,pos:s}):e.push({type:"TERM",value:o,pos:s});continue}throw new Error(`Unexpected character '${r}' at position ${String(t)}`)}return e.push({type:"EOF",value:"",pos:n}),e}class As{constructor(e){b(this,"_tokens");b(this,"_pos");this._tokens=e,this._pos=0}parse(){if(this._peek().type==="EOF")throw new Error("Empty query");const e=this._orExpr();if(this._peek().type!=="EOF"){const t=this._peek();throw new Error(`Unexpected token '${t.value}' at position ${String(t.pos)}`)}return e}_peek(){return this._tokens[this._pos]??{type:"EOF",value:"",pos:-1}}_advance(){const e=this._peek();return e.type!=="EOF"&&this._pos++,e}_expect(e){const t=this._advance();if(t.type!==e)throw new Error(`Expected ${e}, got ${t.type} ('${t.value}') at position ${String(t.pos)}`);return t}_orExpr(){let e=this._andExpr();for(;this._peek().type==="OR";){this._advance();const t=this._andExpr();e={type:"or",left:e,right:t}}return e}_andExpr(){let e=this._unary();for(;;){const t=this._peek();if(t.type==="AND"){this._advance();const n=this._unary();e={type:"and",left:e,right:n}}else if(t.type==="TERM"||t.type==="PHRASE"||t.type==="VECTOR"||t.type==="LPAREN"||t.type==="NOT"){const n=this._unary();e={type:"and",left:e,right:n}}else break}return e}_unary(){return this._peek().type==="NOT"?(this._advance(),{type:"not",operand:this._unary()}):this._primary()}_primary(){const e=this._peek();if(e.type==="LPAREN"){this._advance();const t=this._orExpr();return this._expect("RPAREN"),t}if(e.type==="PHRASE")return this._advance(),{type:"phrase",field:null,phrase:e.value};if(e.type==="VECTOR")return this._advance(),{type:"vector",field:null,values:Xn(e.value)};if(e.type==="TERM"){if(this._advance(),this._peek().type==="COLON"){this._advance();const t=this._peek();if(t.type==="PHRASE")return this._advance(),{type:"phrase",field:e.value,phrase:t.value};if(t.type==="VECTOR")return this._advance(),{type:"vector",field:e.value,values:Xn(t.value)};if(t.type==="TERM")return this._advance(),{type:"term",field:e.value,term:t.value};throw new Error(`Expected term, phrase, or vector after ':', got ${t.type} at position ${String(t.pos)}`)}return{type:"term",field:null,term:e.value}}throw new Error(`Unexpected token ${e.type} ('${e.value}') at position ${String(e.pos)}`)}}function Xn(h){const e=h.trim();if(e.length===0)throw new Error("Empty vector literal");return e.split(",").map(t=>{const n=Number(t.trim());if(Number.isNaN(n))throw new Error(`Malformed vector literal: invalid number '${t.trim()}'`);return n})}function tt(h,e){switch(e.type){case"term":return h.includes(e.term.toLowerCase());case"phrase":return h.includes(e.phrase.toLowerCase());case"and":return tt(h,e.left)&&tt(h,e.right);case"or":return tt(h,e.left)||tt(h,e.right);case"not":return!tt(h,e.operand);case"vector":return!1;default:return!1}}function Qn(h,e){try{const t=Ns(e),n=new As(t).parse();return tt(h.toLowerCase(),n)}catch{const t=e.toLowerCase().split(/\s+/).filter(n=>n.length>0);return t.length===0?!1:t.every(n=>h.toLowerCase().includes(n))}}function k(h){return typeof h=="string"?h:h==null?"":typeof h=="number"?h.toString(10):typeof h=="boolean"?h?"true":"false":typeof h=="bigint"?h.toString(10):JSON.stringify(h)}function ks(h){const e=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],t=[];for(let p=0;p<64;p++)t.push(Math.floor(Math.abs(Math.sin(p+1))*4294967296));const r=new TextEncoder().encode(h),s=r.length*8,o=r.length%64<56?56-r.length%64:120-r.length%64,i=new Uint8Array(r.length+o+8);i.set(r),i[r.length]=128;const a=new DataView(i.buffer);a.setUint32(i.length-8,s>>>0,!0),a.setUint32(i.length-4,Math.floor(s/4294967296),!0);let l=1732584193,c=4023233417,u=2562383102,f=271733878;for(let p=0;p<i.length;p+=64){const m=[];for(let E=0;E<16;E++)m.push(a.getUint32(p+E*4,!0));let _=l,y=c,x=u,w=f;for(let E=0;E<64;E++){let I,S;E<16?(I=y&x|~y&w,S=E):E<32?(I=w&y|~w&x,S=(5*E+1)%16):E<48?(I=y^x^w,S=(3*E+5)%16):(I=x^(y|~w),S=7*E%16),I=I+_+t[E]+m[S]>>>0,_=w,w=x,x=y,y=y+(I<<e[E]|I>>>32-e[E])>>>0}l=l+_>>>0,c=c+y>>>0,u=u+x>>>0,f=f+w>>>0}function d(p){let m="";for(let _=0;_<4;_++){const y=p>>>_*8&255;m+=(y<16?"0":"")+y.toString(16)}return m}return d(l)+d(c)+d(u)+d(f)}function Zn(h){if(h.endsWith("Z")||/[+-]\d{2}:\d{2}$/.test(h))return new Date(h);const e=/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/.exec(h);if(e){const t=parseInt(e[1],10),n=parseInt(e[2],10)-1,r=parseInt(e[3],10),s=e[4]!==void 0?parseInt(e[4],10):0,o=e[5]!==void 0?parseInt(e[5],10):0,i=e[6]!==void 0?parseInt(e[6],10):0,a=e[7]!==void 0?parseInt(e[7].padEnd(3,"0").slice(0,3),10):0;return new Date(t,n,r,s,o,i,a)}return new Date(h)}function er(h){const e=String(h.getFullYear()).padStart(4,"0"),t=String(h.getMonth()+1).padStart(2,"0"),n=String(h.getDate()).padStart(2,"0"),r=String(h.getHours()).padStart(2,"0"),s=String(h.getMinutes()).padStart(2,"0"),o=String(h.getSeconds()).padStart(2,"0"),i=String(h.getMilliseconds()).padStart(3,"0");return`${e}-${t}-${n}T${r}:${s}:${o}.${i}`}function an(h,e){var t;switch(h){case"upper":return e[0]===null?null:k(e[0]).toUpperCase();case"lower":return e[0]===null?null:k(e[0]).toLowerCase();case"length":case"char_length":case"character_length":return e[0]===null?null:k(e[0]).length;case"octet_length":return e[0]===null?null:new TextEncoder().encode(k(e[0])).length;case"trim":case"btrim":if(e[0]===null)return null;if(e.length>=2&&e[1]!==null&&e[1]!==void 0){const n=k(e[1]),r=k(e[0]);let s=0,o=r.length;for(;s<o&&n.includes(r[s]);)s++;for(;o>s&&n.includes(r[o-1]);)o--;return r.slice(s,o)}return k(e[0]).trim();case"ltrim":if(e[0]===null)return null;if(e.length>=2&&e[1]!==null&&e[1]!==void 0){const n=k(e[1]),r=k(e[0]);let s=0;for(;s<r.length&&n.includes(r[s]);)s++;return r.slice(s)}return k(e[0]).replace(/^\s+/,"");case"rtrim":if(e[0]===null)return null;if(e.length>=2&&e[1]!==null&&e[1]!==void 0){const n=k(e[1]),r=k(e[0]);let s=r.length;for(;s>0&&n.includes(r[s-1]);)s--;return r.slice(0,s)}return k(e[0]).replace(/\s+$/,"");case"replace":return e[0]===null?null:k(e[0]).split(k(e[1])).join(k(e[2]));case"substring":case"substr":{if(e[0]===null)return null;const n=k(e[0]),r=Number(e[1])-1;if(e.length>=3){const s=Number(e[2]);return n.slice(r,r+s)}return n.slice(r)}case"concat":return e.map(n=>n===null?"":k(n)).join("");case"concat_ws":{if(e[0]===null||e[0]===void 0)return null;const n=k(e[0]);return e.slice(1).filter(r=>r!=null).map(r=>k(r)).join(n)}case"left":return e[0]===null?null:k(e[0]).slice(0,Number(e[1]));case"right":return e[0]===null?null:k(e[0]).slice(-Number(e[1]));case"lpad":{if(e[0]===null)return null;const n=k(e[0]),r=Number(e[1]),s=e.length>=3?k(e[2]):" ";return n.length>=r?n.slice(0,r):s.repeat(Math.ceil((r-n.length)/s.length)).slice(0,r-n.length)+n}case"rpad":{if(e[0]===null)return null;const n=k(e[0]),r=Number(e[1]),s=e.length>=3?k(e[2]):" ";return n.length>=r?n.slice(0,r):n+s.repeat(Math.ceil((r-n.length)/s.length)).slice(0,r-n.length)}case"repeat":return e[0]===null?null:k(e[0]).repeat(Number(e[1]));case"reverse":return e[0]===null?null:Array.from(k(e[0])).reverse().join("");case"position":case"strpos":{if(e[0]===null||e[1]===null)return null;const n=k(e[0]).indexOf(k(e[1]));return n===-1?0:n+1}case"initcap":return e[0]===null?null:k(e[0]).replace(/\b\w/g,n=>n.toUpperCase());case"md5":return e[0]===null?null:ks(k(e[0]));case"encode":if(e[0]===null)return null;if(k(e[1]).toLowerCase()==="base64"&&typeof btoa=="function")return btoa(k(e[0]));throw new Error(`encode() format not supported: ${k(e[1])}`);case"decode":if(e[0]===null)return null;if(k(e[1]).toLowerCase()==="base64"&&typeof atob=="function")return atob(k(e[0]));throw new Error(`decode() format not supported: ${k(e[1])}`);case"abs":return e[0]===null?null:Math.abs(Number(e[0]));case"round":{if(e[0]===null)return null;const n=Number(e[0]);if(e.length>=2&&e[1]!==null&&e[1]!==void 0){const s=10**Number(e[1]);return Math.round(n*s)/s}return Math.round(n)}case"ceil":case"ceiling":return e[0]===null?null:Math.ceil(Number(e[0]));case"floor":return e[0]===null?null:Math.floor(Number(e[0]));case"trunc":case"truncate":{if(e[0]===null)return null;if(e.length>=2&&e[1]!==null&&e[1]!==void 0){const r=10**Number(e[1]);return Math.trunc(Number(e[0])*r)/r}return Math.trunc(Number(e[0]))}case"power":case"pow":return e[0]===null||e[1]===null?null:Math.pow(Number(e[0]),Number(e[1]));case"sqrt":return e[0]===null?null:Math.sqrt(Number(e[0]));case"cbrt":return e[0]===null?null:Math.cbrt(Number(e[0]));case"exp":return e[0]===null?null:Math.exp(Number(e[0]));case"ln":return e[0]===null?null:Math.log(Number(e[0]));case"log":return e[0]===null?null:e.length>=2&&e[1]!==null?Math.log(Number(e[1]))/Math.log(Number(e[0])):Math.log10(Number(e[0]));case"log10":case"log2":return e[0]===null?null:h==="log10"?Math.log10(Number(e[0])):Math.log2(Number(e[0]));case"mod":return e[0]===null||e[1]===null?null:Number(e[0])%Number(e[1]);case"sign":return e[0]===null?null:Math.sign(Number(e[0]));case"pi":return Math.PI;case"random":return Math.random();case"degrees":return e[0]===null?null:Number(e[0])*180/Math.PI;case"radians":return e[0]===null?null:Number(e[0])*Math.PI/180;case"sin":return e[0]===null?null:Math.sin(Number(e[0]));case"cos":return e[0]===null?null:Math.cos(Number(e[0]));case"tan":return e[0]===null?null:Math.tan(Number(e[0]));case"asin":return e[0]===null?null:Math.asin(Number(e[0]));case"acos":return e[0]===null?null:Math.acos(Number(e[0]));case"atan":return e[0]===null?null:Math.atan(Number(e[0]));case"atan2":return e[0]===null||e[1]===null?null:Math.atan2(Number(e[0]),Number(e[1]));case"div":return e[0]===null||e[1]===null||Number(e[1])===0?null:Math.trunc(Number(e[0])/Number(e[1]));case"gcd":{if(e[0]===null||e[1]===null)return null;let n=Math.abs(Math.trunc(Number(e[0]))),r=Math.abs(Math.trunc(Number(e[1])));for(;r;){const s=r;r=n%r,n=s}return n}case"lcm":{if(e[0]===null||e[1]===null)return null;const n=Math.abs(Math.trunc(Number(e[0]))),r=Math.abs(Math.trunc(Number(e[1])));if(n===0||r===0)return 0;let s=n,o=r;for(;o;){const i=o;o=s%o,s=i}return Math.abs(n*r)/s}case"width_bucket":{if(e.length<4||e.some(i=>i===null))return null;const n=Number(e[0]),r=Number(e[1]),s=Number(e[2]),o=Math.trunc(Number(e[3]));return s===r||o<=0?null:n<r?0:n>=s?o+1:Math.trunc((n-r)/((s-r)/o))+1}case"min_scale":{if(e[0]===null)return null;const n=String(e[0]),r=n.indexOf(".");if(r===-1)return 0;let s=n.length;for(;s>r+1&&n[s-1]==="0";)s--;return s-r-1}case"trim_scale":{if(e[0]===null)return null;const n=Number(e[0]);return Number.isInteger(n),n}case"translate":{if(e[0]===null||e[1]===null||e[2]===null)return null;const n=k(e[0]),r=k(e[1]),s=k(e[2]);let o="";for(const i of n){const a=r.indexOf(i);a===-1?o+=i:a<s.length&&(o+=s[a])}return o}case"ascii":return e[0]===null?null:k(e[0]).length>0?k(e[0]).charCodeAt(0):0;case"chr":return e[0]===null?null:String.fromCharCode(Math.trunc(Number(e[0])));case"starts_with":return e[0]===null||e[1]===null?null:k(e[0]).startsWith(k(e[1]));case"split_part":{if(e[0]===null||e[1]===null||e[2]===null)return null;const n=k(e[0]).split(k(e[1])),r=Math.trunc(Number(e[2]));return r>=1&&r<=n.length?n[r-1]:""}case"format":{if(e[0]===null)return null;let n=k(e[0]);n=n.replace(/%I/g,"%s").replace(/%L/g,"'%s'");let r=1;return n.replace(/%s/g,()=>r<e.length?k(e[r++]):"")}case"overlay":{if(e[0]===null||e[1]===null||e[2]===null)return null;const n=k(e[0]),r=k(e[1]),s=Math.trunc(Number(e[2]))-1,o=e.length>3&&e[3]!=null?Math.trunc(Number(e[3])):r.length;return n.slice(0,s)+r+n.slice(s+o)}case"regexp_match":{if(e[0]===null||e[1]===null)return null;const n=k(e[0]).match(new RegExp(k(e[1])));if(n===null)return null;const r=n.slice(1);return r.length>0?r:[n[0]]}case"regexp_matches":{if(e[0]===null||e[1]===null)return null;const n=e.length>2&&e[2]!=null?k(e[2]):"";let r="";if(n.includes("i")&&(r+="i"),n.includes("g")){const o=new RegExp(k(e[1]),r+"g"),i=[];let a;for(;(a=o.exec(k(e[0])))!==null;)i.push(a.slice(1).length>0?[...a.slice(1)]:[a[0]]);return i}const s=k(e[0]).match(new RegExp(k(e[1]),r));return s===null?null:[s.slice(1).length>0?[...s.slice(1)]:[s[0]]]}case"regexp_replace":{if(e[0]===null||e[1]===null)return null;const n=e.length>2&&e[2]!=null?k(e[2]):"",r=e.length>3&&e[3]!=null?k(e[3]):"";let s="";return r.includes("i")&&(s+="i"),r.includes("g")?s+="g":s.includes("g"),k(e[0]).replace(new RegExp(k(e[1]),s||void 0),n)}case"regexp_split_to_array":{if(e[0]===null||e[1]===null)return null;let n="";return e.length>2&&e[2]!=null&&k(e[2]).includes("i")&&(n="i"),k(e[0]).split(new RegExp(k(e[1]),n))}case"regexp_count":{if(e[0]===null||e[1]===null)return 0;let n="";e.length>2&&e[2]!=null&&(n=k(e[2]));const r=new RegExp(k(e[1]),"g"+(n.includes("i")?"i":"")),s=k(e[0]).match(r);return s!==null?s.length:0}case"string_to_array":{if(e[0]===null)return null;const n=e.length>1&&e[1]!=null?k(e[1]):",",r=e.length>2&&e[2]!=null?k(e[2]):null,s=k(e[0]).split(n);return r!==null?s.map(o=>o===r?null:o):s}case"array_to_string":{if(e[0]===null||!Array.isArray(e[0]))return null;const n=e.length>1&&e[1]!=null?k(e[1]):",",r=e.length>2&&e[2]!=null?k(e[2]):"";return e[0].map(s=>s==null?r:k(s)).join(n)}case"array_position":{if(e[0]===null||e[1]===null||!Array.isArray(e[0]))return null;const n=e[0].indexOf(e[1]);return n===-1?null:n+1}case"array_positions":{if(e[0]===null||e[1]===null||!Array.isArray(e[0]))return null;const n=[];for(let r=0;r<e[0].length;r++)e[0][r]===e[1]&&n.push(r+1);return n}case"array_replace":return e[0]===null||!Array.isArray(e[0])?null:e[0].map(n=>n===e[1]?e[2]:n);case"array_dims":return e[0]===null||!Array.isArray(e[0])?null:`[1:${String(e[0].length)}]`;case"array_fill":{if(e.length<2||e[1]===null)return null;const n=e[0],s=(Array.isArray(e[1])?e[1]:[Number(e[1])])[0]??0;return new Array(s).fill(n)}case"generate_series":{if(e.length<2||e[0]===null||e[1]===null)return[];const n=Number(e[0]),r=Number(e[1]),s=e.length>2&&e[2]!=null?Number(e[2]):1;if(s===0)return[];const o=[];if(s>0)for(let i=n;i<=r;i+=s)o.push(i);else for(let i=n;i>=r;i+=s)o.push(i);return o}case"generate_subscripts":{if(e[0]===null)return[];if(!Array.isArray(e[0]))return[];const n=e[0];return Array.from({length:n.length},(r,s)=>s+1)}case"hashtext":{if(e[0]===null)return null;let n=2166136261;const r=k(e[0]);for(let s=0;s<r.length;s++)n^=r.charCodeAt(s),n=Math.imul(n,16777619);return n>>>0}case"quote_ident":return e[0]===null?null:`"${k(e[0]).replace(/"/g,'""')}"`;case"quote_literal":return e[0]===null?"NULL":`'${k(e[0]).replace(/'/g,"''")}'`;case"quote_nullable":return e[0]===null?"NULL":`'${k(e[0]).replace(/'/g,"''")}'`;case"string_agg":return e[0]===null?null:k(e[0]);case"to_hex":{if(e[0]===null)return null;const n=Math.trunc(Number(e[0]));return n>=0?n.toString(16):(n>>>0).toString(16)}case"to_ascii":return e[0]===null?null:k(e[0]).replace(/[^\x00-\x7F]/g,"?");case"date_trunc":{if(e[0]===null||e[1]===null)return null;const n=k(e[0]).toLowerCase(),r=Zn(k(e[1]));return n==="year"?(r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0)):n==="month"?(r.setDate(1),r.setHours(0,0,0,0)):n==="day"?r.setHours(0,0,0,0):n==="hour"?r.setMinutes(0,0,0):n==="minute"?r.setSeconds(0,0):n==="second"&&r.setMilliseconds(0),er(r)}case"make_timestamp":{if(e.length<6||e.some(r=>r===null))return null;const n=new Date(Number(e[0]),Number(e[1])-1,Number(e[2]),Number(e[3]),Number(e[4]),Math.trunc(Number(e[5])));return er(n)}case"make_interval":{const n=e.length>0&&e[0]!=null?Number(e[0]):0,r=e.length>1&&e[1]!=null?Number(e[1]):0,s=e.length>2&&e[2]!=null?Number(e[2]):0,o=e.length>3&&e[3]!=null?Number(e[3]):0,i=e.length>4&&e[4]!=null?Number(e[4]):0,a=e.length>5&&e[5]!=null?Number(e[5]):0,l=e.length>6&&e[6]!=null?Number(e[6]):0,c=n*365+r*30+s*7+o,u=[];return n>0&&u.push(`${String(n)} year${n>1?"s":""}`),r>0&&u.push(`${String(r)} mon${r>1?"s":""}`),c>0&&u.push(`${String(c)} day${c!==1?"s":""}`),u.push(`${String(i).padStart(2,"0")}:${String(a).padStart(2,"0")}:${String(l).padStart(2,"0")}`),u.join(" ")}case"make_date":{if(e.length<3||e.some(o=>o===null))return null;const n=String(Number(e[0])).padStart(4,"0"),r=String(Number(e[1])).padStart(2,"0"),s=String(Number(e[2])).padStart(2,"0");return`${n}-${r}-${s}`}case"clock_timestamp":return new Date().toISOString();case"timeofday":return new Date().toUTCString();case"isfinite":return e[0]===null?null:!["infinity","-infinity"].includes(k(e[0]).trim().toLowerCase());case"overlaps":{if(e.length<4||e.some(i=>i===null))return null;const n=new Date(k(e[0])).getTime(),r=new Date(k(e[1])).getTime(),s=new Date(k(e[2])).getTime(),o=new Date(k(e[3])).getTime();return Math.min(n,r)<Math.max(s,o)&&Math.min(s,o)<Math.max(n,r)}case"typeof":case"pg_typeof":return e[0]===null?"null":typeof e[0]=="number"?Number.isInteger(e[0])?"integer":"real":typeof e[0]=="string"?"text":typeof e[0]=="boolean"?"boolean":"unknown";case"gen_random_uuid":return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)});case"array_remove":return e[0]===null?null:Array.isArray(e[0])?e[0].filter(n=>n!==e[1]):null;case"array_upper":return e[0]===null?null:Array.isArray(e[0])&&e[0].length>0?e[0].length:null;case"array_lower":return e[0]===null?null:Array.isArray(e[0])&&e[0].length>0?1:null;case"cardinality":return e[0]===null?null:Array.isArray(e[0])?e[0].length:null;case"json_extract_path":case"jsonb_extract_path":case"json_extract_path_text":case"jsonb_extract_path_text":{if(e[0]===null)return null;let n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];for(let r=1;r<e.length;r++){if(e[r]===null||n===null||n===void 0)return null;if(typeof n=="object"&&!Array.isArray(n))n=n[k(e[r])];else if(Array.isArray(n))n=n[Number(e[r])];else return null}return h.endsWith("_text")?n==null?null:typeof n=="object"?JSON.stringify(n):k(n):n??null}case"jsonb_set":case"jsonb_insert":{if(e.length<3||e[0]===null)return null;let n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];n=JSON.parse(JSON.stringify(n));const s=k(e[1]).replace(/^\{/,"").replace(/\}$/,"").split(",").map(l=>l.trim()),o=e[2];let i=n;for(let l=0;l<s.length-1;l++)if(typeof i=="object"&&i!==null&&!Array.isArray(i))i=i[s[l]];else if(Array.isArray(i))i=i[Number(s[l])];else return n;const a=s[s.length-1];return typeof i=="object"&&i!==null&&!Array.isArray(i)?i[a]=o:Array.isArray(i)&&(i[Number(a)]=o),n}case"json_each":case"jsonb_each":case"json_each_text":case"jsonb_each_text":{if(e[0]===null)return[];const n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];if(typeof n!="object"||Array.isArray(n)||n===null)return[];const r=h.endsWith("_text");return Object.entries(n).map(([s,o])=>({key:s,value:r?typeof o=="object"&&o!==null?JSON.stringify(o):o!=null?k(o):null:o}))}case"json_array_elements":case"jsonb_array_elements":case"json_array_elements_text":case"jsonb_array_elements_text":{if(e[0]===null)return[];const n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];return Array.isArray(n)?h.endsWith("_text")?n.map(r=>typeof r=="object"&&r!==null?JSON.stringify(r):r!=null?k(r):null):n:[]}case"json_object_keys":case"jsonb_object_keys":{if(e[0]===null)return null;const n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];return typeof n!="object"||Array.isArray(n)||n===null?null:Object.keys(n)}case"jsonb_strip_nulls":case"json_strip_nulls":{let n=function(s){if(typeof s=="object"&&s!==null&&!Array.isArray(s)){const o={};for(const[i,a]of Object.entries(s))a!==null&&(o[i]=n(a));return o}return s};if(e[0]===null)return null;const r=typeof e[0]=="string"?JSON.parse(e[0]):e[0];return n(r)}case"json_build_array":case"jsonb_build_array":return[...e];case"point":if(e.length!==2)throw new Error("POINT() requires exactly 2 arguments");return[Number(e[0]),Number(e[1])];case"st_distance":{if(e.length!==2||e[0]===null||e[1]===null)return null;const n=e[0],r=e[1];if(!Array.isArray(n)||!Array.isArray(r))return null;const s=6371e3,o=n[1]*Math.PI/180,i=r[1]*Math.PI/180,a=(r[1]-n[1])*Math.PI/180,l=(r[0]-n[0])*Math.PI/180,c=Math.sin(a/2)**2+Math.cos(o)*Math.cos(i)*Math.sin(l/2)**2;return s*2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c))}case"st_within":case"st_dwithin":{if(e.length!==3||e[0]===null||e[1]===null)return null;const n=an("st_distance",[e[0],e[1]]);return n===null?null:n<=Number(e[2])}case"coalesce":for(const n of e)if(n!=null)return n;return null;case"nullif":return e[0]===e[1]?null:e[0];case"greatest":{let n=null;for(const r of e)r!==null&&(n===null||r>n)&&(n=r);return n}case"least":{let n=null;for(const r of e)r!==null&&(n===null||r<n)&&(n=r);return n}case"current_date":case"current_timestamp":case"now":return new Date().toISOString();case"date_part":case"extract":{if(e[0]===null||e[1]===null)return null;const n=k(e[0]).toLowerCase(),r=Zn(k(e[1]));switch(n){case"year":return r.getFullYear();case"month":return r.getMonth()+1;case"day":return r.getDate();case"hour":return r.getHours();case"minute":return r.getMinutes();case"second":return r.getSeconds();case"dow":case"dayofweek":return r.getDay();case"doy":case"dayofyear":{const s=new Date(r.getFullYear(),0,0),o=r.getTime()-s.getTime();return Math.floor(o/864e5)}case"epoch":return Math.floor(r.getTime()/1e3);case"quarter":return Math.ceil((r.getMonth()+1)/3);case"week":{const s=new Date(r.getFullYear(),0,1),o=Math.floor((r.getTime()-s.getTime())/864e5)+1,i=s.getDay()||7;return Math.ceil((o+i-1)/7)}case"millisecond":case"milliseconds":return r.getSeconds()*1e3+r.getMilliseconds();case"microsecond":case"microseconds":return r.getSeconds()*1e6+r.getMilliseconds()*1e3;default:throw new Error(`Unknown date part: "${n}"`)}}case"age":{if(e[0]===null)return null;const n=new Date(k(e[0])),s=(e.length>=2&&e[1]!==null?new Date(k(e[1])):new Date).getTime()-n.getTime();return`${String(Math.floor(s/864e5))} days`}case"date_add":case"dateadd":{if(e.length<3||e.some(o=>o===null))return null;const n=k(e[0]).toLowerCase(),r=Number(e[1]),s=new Date(k(e[2]));return n==="year"?s.setFullYear(s.getFullYear()+r):n==="month"?s.setMonth(s.getMonth()+r):n==="day"?s.setDate(s.getDate()+r):n==="hour"?s.setHours(s.getHours()+r):n==="minute"?s.setMinutes(s.getMinutes()+r):n==="second"&&s.setSeconds(s.getSeconds()+r),s.toISOString()}case"date_subtract":case"datesub":{if(e.length<3||e.some(o=>o===null))return null;const n=k(e[0]).toLowerCase(),r=Number(e[1]),s=new Date(k(e[2]));return n==="year"?s.setFullYear(s.getFullYear()-r):n==="month"?s.setMonth(s.getMonth()-r):n==="day"?s.setDate(s.getDate()-r):n==="hour"?s.setHours(s.getHours()-r):n==="minute"?s.setMinutes(s.getMinutes()-r):n==="second"&&s.setSeconds(s.getSeconds()-r),s.toISOString()}case"date_diff":case"datediff":{if(e.length<3||e.some(i=>i===null))return null;const n=k(e[0]).toLowerCase(),r=new Date(k(e[1])),s=new Date(k(e[2])),o=s.getTime()-r.getTime();return n==="day"?Math.trunc(o/864e5):n==="hour"?Math.trunc(o/36e5):n==="minute"?Math.trunc(o/6e4):n==="second"?Math.trunc(o/1e3):n==="year"?s.getFullYear()-r.getFullYear():n==="month"?(s.getFullYear()-r.getFullYear())*12+(s.getMonth()-r.getMonth()):Math.trunc(o/1e3)}case"justify_days":return e[0]===null?null:e[0];case"justify_hours":return e[0]===null?null:e[0];case"justify_interval":return e[0]===null?null:e[0];case"statement_timestamp":case"transaction_timestamp":return new Date().toISOString();case"to_char":{if(e[0]===null)return null;if(e.length>=2&&e[1]!=null){const n=e[0],r=k(e[1]);if(typeof n=="number"){if(r.includes("FM"))return String(n);if(r.includes("9")||r.includes("0")){const s=(((t=r.match(/\.([09]+)/))==null?void 0:t[1])??"").length;return n.toFixed(s)}}if(typeof n=="string"||n instanceof Date){const s=new Date(k(n));let o=r;return o=o.replace(/YYYY/g,String(s.getFullYear())),o=o.replace(/MM/g,String(s.getMonth()+1).padStart(2,"0")),o=o.replace(/DD/g,String(s.getDate()).padStart(2,"0")),o=o.replace(/HH24/g,String(s.getHours()).padStart(2,"0")),o=o.replace(/HH/g,String(s.getHours()%12||12).padStart(2,"0")),o=o.replace(/MI/g,String(s.getMinutes()).padStart(2,"0")),o=o.replace(/SS/g,String(s.getSeconds()).padStart(2,"0")),o}}return k(e[0])}case"to_number":{if(e[0]===null)return null;const n=k(e[0]).replace(/[^0-9eE.+-]/g,"");return Number(n)}case"to_date":case"to_timestamp":return e[0]===null?null:new Date(k(e[0])).toISOString();case"array_length":return e[0]===null?null:Array.isArray(e[0])?e[0].length:null;case"unnest":return e[0];case"array_agg":return e;case"array_cat":return e[0]===null||e[1]===null?null:[...e[0],...e[1]];case"array_append":return e[0]===null?null:[...e[0],e[1]];case"array_prepend":return e[1]===null?null:[e[0],...e[1]];case"json_build_object":case"jsonb_build_object":{const n={};for(let r=0;r+1<e.length;r+=2)n[k(e[r])]=e[r+1]??null;return n}case"json_array_length":case"jsonb_array_length":if(e[0]===null)return null;if(Array.isArray(e[0]))return e[0].length;if(typeof e[0]=="string"){const n=JSON.parse(e[0]);return Array.isArray(n)?n.length:null}return null;case"json_typeof":case"jsonb_typeof":return e[0]===null?"null":Array.isArray(e[0])?"array":typeof e[0]=="object"?"object":typeof e[0];case"row_to_json":return e[0];case"to_json":case"to_jsonb":return e[0];case"jsonb_pretty":{if(e[0]===null)return null;const n=typeof e[0]=="string"?JSON.parse(e[0]):e[0];return JSON.stringify(n,null,2)}case"jsonb_agg":case"json_agg":return e;case"jsonb_object_agg":case"json_object_agg":if(e.length>=2){const n={};return n[k(e[0])]=e[1],n}return{};case"jsonb_concat":{if(e[0]===null||e[1]===null)return null;const n=typeof e[0]=="string"?JSON.parse(e[0]):e[0],r=typeof e[1]=="string"?JSON.parse(e[1]):e[1];return Array.isArray(n)&&Array.isArray(r)?[...n,...r]:typeof n=="object"&&typeof r=="object"&&!Array.isArray(n)&&!Array.isArray(r)?{...n,...r}:n}case"jsonb_delete_path":{if(e[0]===null||e[1]===null)return null;const n=typeof e[0]=="string"?JSON.parse(e[0]):JSON.parse(JSON.stringify(e[0])),r=Array.isArray(e[1])?e[1]:k(e[1]).replace(/^\{/,"").replace(/\}$/,"").split(",").map(i=>i.trim());if(r.length===0)return n;let s=n;for(let i=0;i<r.length-1;i++)if(typeof s=="object"&&s!==null&&!Array.isArray(s))s=s[r[i]];else if(Array.isArray(s))s=s[Number(r[i])];else return n;const o=r[r.length-1];return typeof s=="object"&&s!==null&&!Array.isArray(s)?delete s[o]:Array.isArray(s)&&s.splice(Number(o),1),n}case"current_schema":case"current_schemas":return"public";case"current_database":return"uqa";case"current_user":case"session_user":return"uqa_user";case"version":return"UQA 1.0";case"has_table_privilege":case"has_schema_privilege":case"has_column_privilege":return!0;case"txid_current":return 1;case"text_match":case"bayesian_match":{if(e.length<2)return!1;const n=e[0],r=e[1];return n===null||r===null?!1:Qn(String(n),String(r))}default:throw new Error(`Unknown SQL function: ${h}`)}}function P(h,e){return h[e]??null}function X(h,e){const t=h[e];return t==null?"":k(t)}function Ko(h){return h}function te(h){return Array.isArray(h)?h:[]}function Tt(h,e){if(e==null)return!0;if(h==null)return!1;if(typeof e!="object")return h===e;if(Array.isArray(e)){if(!Array.isArray(h))return!1;for(const t of e)if(!h.some(n=>Tt(n,t)))return!1;return!0}if(typeof h!="object"||Array.isArray(h))return!1;for(const[t,n]of Object.entries(e))if(!(t in h)||!Tt(h[t],n))return!1;return!0}function ht(h,e){let t="^";for(let n=0;n<h.length;n++){const r=h[n];r==="%"?t+=".*":r==="_"?t+=".":r==="\\"&&n+1<h.length?(n++,t+=h[n].replace(/[.*+?^${}()|[\]\\]/g,"\\$&")):t+=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}return t+="$",new RegExp(t,e?"is":"s")}function Ms(h,e){if(h===null)return null;const t=e.toLowerCase();if(t==="integer"||t==="int"||t==="int4"||t==="bigint"||t==="int8"||t==="smallint"||t==="int2")return Math.trunc(Number(h));if(t==="float"||t==="float4"||t==="float8"||t==="double precision"||t==="real"||t==="numeric"||t==="decimal")return Number(h);if(t==="text"||t==="varchar"||t==="char"||t==="character varying")return k(h);if(t==="boolean"||t==="bool"){if(typeof h=="string"){const n=h.toLowerCase();return n==="true"||n==="t"||n==="1"||n==="yes"}return!!h}return t==="json"||t==="jsonb"?typeof h=="string"?JSON.parse(h):h:t==="date"||t==="timestamp"||t==="timestamptz"?new Date(k(h)).toISOString():h}class ne{constructor(e){b(this,"_params");b(this,"_sequences");b(this,"_outerRow");b(this,"_subqueryExecutor");this._params=(e==null?void 0:e.params)??[],this._sequences=(e==null?void 0:e.sequences)??null,this._outerRow=(e==null?void 0:e.outerRow)??null,this._subqueryExecutor=(e==null?void 0:e.subqueryExecutor)??null}evaluate(e,t){const n=Object.keys(e);if(n.length===0)return null;const r=n[0],s=e[r];switch(r){case"ColumnRef":return this._evalColumnRef(s,t);case"A_Const":return this._evalConst(s);case"A_Expr":return this._evalAExpr(s,t);case"BoolExpr":return this._evalBoolExpr(s,t);case"FuncCall":return this._evalFuncCall(s,t);case"NullTest":return this._evalNullTest(s,t);case"CaseExpr":return this._evalCaseExpr(s,t);case"NamedArgExpr":{const o=P(s,"arg");return o!=null?this.evaluate(o,t):null}case"TypeCast":return this._evalTypeCast(s,t);case"ParamRef":return this._evalParamRef(s);case"SubLink":return this._evalSubLink(s,t);case"CoalesceExpr":return this._evalCoalesceExpr(s,t);case"MinMaxExpr":return this._evalMinMaxExpr(s,t);case"BooleanTest":return this._evalBooleanTest(s,t);case"SQLValueFunction":return this._evalSQLValueFunction(s);case"A_ArrayExpr":return te(P(s,"elements")).map(o=>this.evaluate(o,t));case"List":return te(P(s,"items")).map(o=>this.evaluate(o,t));case"String":case"str":return X(s,"sval")||X(s,"str");case"Integer":return P(s,"ival")??0;case"Float":return Number(X(s,"fval")||X(s,"str"));default:return"ival"in e?e.ival:"fval"in e?Number(e.fval):"sval"in e?e.sval:"boolval"in e?e.boolval:"bsval"in e?e.bsval:e}}_evalColumnRef(e,t){const n=te(P(e,"fields"));if(n.length===0)return null;const r=[];for(const s of n){const o=P(s,"String")??P(s,"str");if(o!==null&&typeof o=="object"){const i=X(o,"sval")||X(o,"str");i&&r.push(i)}else if(typeof o=="string")r.push(o);else if(typeof s=="object"){const i=X(s,"sval")||X(s,"str");i&&r.push(i)}}if(r.length===1){const s=r[0];return s in t?t[s]:this._outerRow!==null&&s in this._outerRow?this._outerRow[s]:null}if(r.length===2){const s=`${r[0]}.${r[1]}`;if(s in t)return t[s];if(this._outerRow!==null&&s in this._outerRow)return this._outerRow[s];const o=r[1];return o in t?t[o]:this._outerRow!==null&&o in this._outerRow?this._outerRow[o]:null}return null}_evalConst(e){if(P(e,"isnull")===!0)return null;const t=P(e,"ival");if(t!=null){if(typeof t=="object"){const u=P(t,"ival");return u??(typeof t=="object"&&Object.keys(t).length===0?0:t)}return t}const n=P(e,"fval");if(n!=null)return Number(typeof n=="object"?P(n,"fval")??n:n);const r=P(e,"sval");if(r!=null)return typeof r=="object"?P(r,"sval")??r:r;const s=P(e,"boolval");if(s!=null)return typeof s=="object"?P(s,"boolval")??s:s;const o=P(e,"bsval");if(o!=null)return typeof o=="object"?P(o,"bsval")??o:o;const i=P(e,"Integer");if(i!=null)return P(i,"ival")??0;const a=P(e,"Float");if(a!=null)return Number(X(a,"fval")||X(a,"str"));const l=P(e,"String");if(l!=null)return X(l,"sval")||X(l,"str");const c=P(e,"Null");return c!=null,null}_evalAExpr(e,t){const n=P(e,"kind");let r;typeof n=="number"?r=n:typeof n=="string"?r={AEXPR_OP:0,AEXPR_OP_ANY:1,AEXPR_OP_ALL:2,AEXPR_DISTINCT:3,AEXPR_NOT_DISTINCT:4,AEXPR_NULLIF:5,AEXPR_IN:6,AEXPR_LIKE:7,AEXPR_ILIKE:8,AEXPR_SIMILAR:9,AEXPR_BETWEEN:10,AEXPR_NOT_BETWEEN:11,AEXPR_BETWEEN_SYM:12,AEXPR_NOT_BETWEEN_SYM:13,AEXPR_PAREN:14}[n]??0:r=0;const s=te(P(e,"name"));let o="";for(const u of s){const f=P(u,"String")??P(u,"str");if(f!==null&&typeof f=="object")o=X(f,"sval")||X(f,"str");else if(typeof f=="string")o=f;else{const d=X(u,"sval")||X(u,"str");d&&(o=d)}}const i=P(e,"lexpr"),a=P(e,"rexpr");if(r===10||r===11){const u=this.evaluate(i,t),f=a,d=P(f,"List"),p=P(d!==null?d:f,"items"),m=te(p??a);if(m.length>=2){const _=this.evaluate(m[0],t),y=this.evaluate(m[1],t);if(u===null||_===null||y===null)return null;const x=u>=_&&u<=y;return r===11?!x:x}return null}if(r===7||r===8){const u=this.evaluate(i,t),f=this.evaluate(a,t);if(u===null||f===null)return null;const p=ht(k(f),r===8).test(k(u));return o==="!~~"||o==="!~~*"?!p:p}if(r===9){const u=this.evaluate(i,t),f=this.evaluate(a,t);if(u===null||f===null)return null;let d=k(f);return d=d.replace(/%/g,".*").replace(/_/g,"."),new RegExp("^"+d+"$").test(k(u))}if(r===12||r===13){const u=this.evaluate(i,t),f=a,d=P(f,"List"),p=P(d!==null?d:f,"items"),m=te(p??a);if(m.length>=2){const _=this.evaluate(m[0],t),y=this.evaluate(m[1],t);if(u===null||_===null||y===null)return null;const x=_<y?_:y,w=_>=y?_:y,E=u>=x&&u<=w;return r===13?!E:E}return null}if(r===1){const u=this.evaluate(i,t),f=this.evaluate(a,t);return u===null||f===null?null:(Array.isArray(f)?f:[f]).some(p=>this._applyOp(o,u,p)===!0)}if(r===2){const u=this.evaluate(i,t),f=this.evaluate(a,t);return u===null||f===null?null:(Array.isArray(f)?f:[f]).every(p=>this._applyOp(o,u,p)===!0)}if(r===3){const u=this.evaluate(i,t),f=this.evaluate(a,t);return u===null&&f===null?!1:u===null||f===null?!0:u!==f}if(r===4){const u=this.evaluate(i,t),f=this.evaluate(a,t);return u===null&&f===null?!0:u===null||f===null?!1:u===f}if(r===5){const u=this.evaluate(i,t),f=this.evaluate(a,t);return u===f?null:u}if(r===6){const u=this.evaluate(i,t);if(u===null)return null;const f=a,d=P(f,"List"),p=te(d!==null?P(d,"items"):a);let m;if(p.length>0)m=p.map(_=>this.evaluate(_,t));else{const _=this.evaluate(f,t);m=Array.isArray(_)?_:[_]}return m.some(_=>_==u)}const l=i!==null?this.evaluate(i,t):null,c=a!==null?this.evaluate(a,t):null;return this._applyOp(o,l,c)}_applyOp(e,t,n){if(e==="+")return t===null||n===null?null:typeof t=="string"||typeof n=="string"?k(t)+k(n):t+n;if(e==="-")return t===null||n===null?null:t-n;if(e==="*")return t===null||n===null?null:t*n;if(e==="/"){if(t===null||n===null)return null;const r=n;if(r===0)throw new Error("Division by zero");return t/r}if(e==="%")return t===null||n===null?null:t%n;if(e==="^")return t===null||n===null?null:Math.pow(t,n);if(e==="=")return t===null||n===null?null:t===n;if(e==="<>"||e==="!=")return t===null||n===null?null:t!==n;if(e==="<")return t===null||n===null?null:t<n;if(e===">")return t===null||n===null?null:t>n;if(e==="<=")return t===null||n===null?null:t<=n;if(e===">=")return t===null||n===null?null:t>=n;if(e==="||")return t===null||n===null?null:k(t)+k(n);if(e==="~~")return t===null||n===null?null:ht(k(n),!1).test(k(t));if(e==="!~~")return t===null||n===null?null:!ht(k(n),!1).test(k(t));if(e==="~~*")return t===null||n===null?null:ht(k(n),!0).test(k(t));if(e==="!~~*")return t===null||n===null?null:!ht(k(n),!0).test(k(t));if(e==="~")return t===null||n===null?null:new RegExp(k(n)).test(k(t));if(e==="~*")return t===null||n===null?null:new RegExp(k(n),"i").test(k(t));if(e==="!~")return t===null||n===null?null:!new RegExp(k(n)).test(k(t));if(e==="!~*")return t===null||n===null?null:!new RegExp(k(n),"i").test(k(t));if(e==="&")return t===null||n===null?null:t&n;if(e==="|")return t===null||n===null?null:t|n;if(e==="#")return t===null||n===null?null:t^n;if(e==="<<")return t===null||n===null?null:t<<n;if(e===">>")return t===null||n===null?null:t>>n;if(e==="->"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t;return typeof n=="number"&&Array.isArray(r)?r[n]??null:typeof r=="object"&&r!==null&&!Array.isArray(r)?r[k(n)]??null:null}if(e==="->>"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t;if(typeof n=="number"&&Array.isArray(r)){const s=r[n];return s==null?null:typeof s=="object"?JSON.stringify(s):k(s)}if(typeof r=="object"&&r!==null&&!Array.isArray(r)){const s=r[k(n)];return s==null?null:typeof s=="object"?JSON.stringify(s):k(s)}return null}if(e==="#>"){if(t===null||n===null)return null;let r=typeof t=="string"?JSON.parse(t):t;const s=Array.isArray(n)?n:k(n).replace(/^\{/,"").replace(/\}$/,"").split(",").map(o=>o.trim());for(const o of s){if(r==null)return null;if(Array.isArray(r))r=r[Number(o)];else if(typeof r=="object")r=r[k(o)];else return null}return r??null}if(e==="#>>"){if(t===null||n===null)return null;const r=this._applyOp("#>",t,n);return r==null?null:typeof r=="object"?JSON.stringify(r):k(r)}if(e==="@>"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t,s=typeof n=="string"?JSON.parse(n):n;return Tt(r,s)}if(e==="<@"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t,s=typeof n=="string"?JSON.parse(n):n;return Tt(s,r)}if(e==="?"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t;return typeof r=="object"&&r!==null&&!Array.isArray(r)?k(n)in r:Array.isArray(r)?r.includes(k(n)):!1}if(e==="?|"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t,s=Array.isArray(n)?n:[k(n)];return typeof r=="object"&&r!==null&&!Array.isArray(r)?s.some(o=>o in r):!1}if(e==="?&"){if(t===null||n===null)return null;const r=typeof t=="string"?JSON.parse(t):t,s=Array.isArray(n)?n:[k(n)];return typeof r=="object"&&r!==null&&!Array.isArray(r)?s.every(o=>o in r):!1}if(e==="&&"){if(t===null||n===null)return null;if(Array.isArray(t)&&Array.isArray(n)){const r=new Set(n);return t.some(s=>r.has(s))}return!1}if(e==="@@"){if(t===null||n===null)return!1;const r=String(t).toLowerCase(),s=String(n);return Qn(r,s)}throw new Error(`Unsupported operator: "${e}"`)}_evalBoolExpr(e,t){const n=P(e,"boolop"),r=te(P(e,"args"));if(n===0||n==="BOOL_AND"||n==="AND_EXPR"){let s=!0;for(const o of r){const i=this.evaluate(o,t);if(i===!1)return!1;i===null&&(s=null)}return s}if(n===1||n==="BOOL_OR"||n==="OR_EXPR"){let s=!1;for(const o of r){const i=this.evaluate(o,t);if(i===!0)return!0;i===null&&(s=null)}return s}if(n===2||n==="BOOL_NOT"||n==="NOT_EXPR"){const s=this.evaluate(r[0],t);return s===null?null:!s}throw new Error(`Unknown BoolExpr boolop: ${k(n)}`)}_evalFuncCall(e,t){const n=te(P(e,"funcname")),r=[];for(const l of n){const c=P(l,"String")??P(l,"str");if(c!==null&&typeof c=="object"){const u=X(c,"sval")||X(c,"str");u&&r.push(u)}else if(typeof c=="string")r.push(c);else{const u=X(l,"sval")||X(l,"str");u&&r.push(u)}}let s=r.join(".").toLowerCase();if(s.startsWith("pg_catalog.")&&(s=s.slice(11)),new Set(["count","sum","avg","min","max","string_agg","array_agg","bool_and","bool_or","stddev","stddev_pop","stddev_samp","variance","var_pop","var_samp","corr","covar_pop","covar_samp","regr_slope","regr_intercept","regr_r2","regr_count","regr_avgx","regr_avgy","regr_sxx","regr_syy","regr_sxy"]).has(s)){const l=P(e,"agg_star")===!0,c=te(P(e,"args"));let u;if(l||c.length===0)u=`${s}(*)`;else try{const d=P(c[0],"ColumnRef");if(d){const p=te(P(d,"fields")),m=[];for(const _ of p){const y=X(_,"sval")||X(_,"str");y&&m.push(y)}u=`${s}(${m.join(".")})`}else u=s}catch{u=s}if(u in t)return t[u];const f=`__having_agg_${JSON.stringify({FuncCall:e})}`;if(f in t)return t[f]}if(s==="nextval"&&this._sequences!==null){const l=te(P(e,"args")),c=l.length>0?k(this.evaluate(l[0],t)):"",u=this._sequences.get(c);if(u)return u.current+=u.increment,u.current;throw new Error(`Sequence not found: "${c}"`)}if(s==="currval"&&this._sequences!==null){const l=te(P(e,"args")),c=l.length>0?k(this.evaluate(l[0],t)):"",u=this._sequences.get(c);if(u)return u.current;throw new Error(`Sequence not found: "${c}"`)}if(s==="setval"&&this._sequences!==null){const l=te(P(e,"args"));if(l.length<2)throw new Error("setval() requires at least 2 arguments");const c=k(this.evaluate(l[0],t)),u=Number(this.evaluate(l[1],t)),f=this._sequences.get(c);if(f){const d=l.length>=3?!!this.evaluate(l[2],t):!0;return f.current=d?u:u-f.increment,u}throw new Error(`Sequence not found: "${c}"`)}if(s==="lastval"&&this._sequences!==null){let l=null;for(const c of this._sequences.values())(l===null||c.current>l)&&(l=c.current);if(l===null)throw new Error("lastval is not yet defined in this session");return l}if(P(e,"agg_star")===!0)return 1;const i=te(P(e,"args"));if(s==="make_interval"&&i.some(c=>P(c,"NamedArgExpr")!==null&&P(c,"NamedArgExpr")!==void 0)){const c={years:0,months:0,weeks:0,days:0,hours:0,mins:0,secs:0};for(const u of i){const f=P(u,"NamedArgExpr");if(f!=null){const d=f,p=(X(d,"name")||"").toLowerCase(),m=P(d,"arg"),_=m!==null?Number(this.evaluate(m,t)):0;p in c&&(c[p]=_)}}return an(s,[c.years,c.months,c.weeks,c.days,c.hours,c.mins,c.secs])}const a=i.map(l=>this.evaluate(l,t));return an(s,a)}_evalNullTest(e,t){const n=P(e,"arg"),r=P(e,"nulltesttype"),s=this.evaluate(n,t);return r===0||r==="IS_NULL"?s==null:s!=null}_evalSQLValueFunction(e){const t=P(e,"op"),n=typeof t=="string"?t:"";if(n==="SVFOP_CURRENT_DATE"){const r=new Date,s=String(r.getFullYear()),o=String(r.getMonth()+1).padStart(2,"0"),i=String(r.getDate()).padStart(2,"0");return`${s}-${o}-${i}`}if(n==="SVFOP_CURRENT_TIMESTAMP"||n==="SVFOP_CURRENT_TIMESTAMP_N")return new Date().toISOString();if(n==="SVFOP_CURRENT_TIME"||n==="SVFOP_CURRENT_TIME_N"){const r=new Date,s=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0"),i=String(r.getSeconds()).padStart(2,"0");return`${s}:${o}:${i}`}if(n==="SVFOP_LOCALTIME"||n==="SVFOP_LOCALTIME_N"){const r=new Date,s=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0"),i=String(r.getSeconds()).padStart(2,"0");return`${s}:${o}:${i}`}if(n==="SVFOP_LOCALTIMESTAMP"||n==="SVFOP_LOCALTIMESTAMP_N")return new Date().toISOString();if(n==="SVFOP_CURRENT_ROLE"||n==="SVFOP_CURRENT_USER")return"current_user";if(n==="SVFOP_SESSION_USER")return"session_user";if(n==="SVFOP_USER")return"current_user";if(n==="SVFOP_CURRENT_CATALOG")return"uqa";if(n==="SVFOP_CURRENT_SCHEMA")return"public";throw new Error(`Unsupported SQLValueFunction op: ${n}`)}_evalCaseExpr(e,t){const n=P(e,"arg"),r=n!=null?this.evaluate(n,t):null,s=te(P(e,"args"));for(const i of s){const a=P(i,"CaseWhen")??i,l=P(a,"expr"),c=P(a,"result");if(r!==null){const u=this.evaluate(l,t);if(r===u)return this.evaluate(c,t)}else if(this.evaluate(l,t)===!0)return this.evaluate(c,t)}const o=P(e,"defresult");return o!=null?this.evaluate(o,t):null}_evalTypeCast(e,t){const n=P(e,"arg"),r=P(e,"typeName"),s=this.evaluate(n,t),o=r,i=te(P(o,"names"));let a="";for(const l of i){const c=P(l,"String")??P(l,"str");if(c!==null&&typeof c=="object"){const u=X(c,"sval")||X(c,"str");u&&u!=="pg_catalog"&&(a=u)}else if(typeof c=="string"&&c!=="pg_catalog")a=c;else{const u=X(l,"sval")||X(l,"str");u&&u!=="pg_catalog"&&(a=u)}}return a?Ms(s,a):s}_evalParamRef(e){const t=P(e,"number"),n=typeof t=="number"?t:0;if(n>0&&n<=this._params.length)return this._params[n-1];if(n>0&&n>this._params.length)throw new Error(`No value supplied for parameter $${String(n)}`);return null}_evalSubLink(e,t){if(this._subqueryExecutor===null)throw new Error("SubLink (subquery) evaluation requires a subqueryExecutor callback");const n=P(e,"subLinkType"),r=P(e,"subselect"),s=P(r,"SelectStmt")??r,o=this._subqueryExecutor(s,t);if(n===0||n==="EXISTS_SUBLINK")return o.rows.length>0;if(n===1||n==="ALL_SUBLINK"){const i=P(e,"testexpr"),a=this.evaluate(i,t),l=this._extractSubLinkOperator(e),c=o.columns[0];for(const u of o.rows){const f=u[c];if(!this._compareValues(a,l,f))return!1}return!0}if(n===2||n==="ANY_SUBLINK"){const i=P(e,"testexpr"),a=this.evaluate(i,t);if(o.columns.length===0)return!1;const l=o.columns[0],c=this._extractSubLinkOperator(e);for(const u of o.rows){const f=u[l];if(this._compareValues(a,c,f))return!0}return!1}if(n===4||n==="EXPR_SUBLINK"){if(o.rows.length===0)return null;const i=o.columns[0];return o.rows[0][i]??null}throw new Error(`Unsupported SubLink type: ${String(n)}`)}_extractSubLinkOperator(e){const t=te(P(e,"operName"));if(t.length>0){const n=t[0],r=P(n,"str");if(r!=null)return String(r);const s=P(P(n,"String")??n,"sval");if(s!=null)return String(s)}return"="}_compareValues(e,t,n){switch(t){case"=":return e==n;case"<>":case"!=":return e!=n;case"<":return e<n;case"<=":return e<=n;case">":return e>n;case">=":return e>=n;default:return e===n}}_evalCoalesceExpr(e,t){const n=te(P(e,"args"));for(const r of n){const s=this.evaluate(r,t);if(s!=null)return s}return null}_evalMinMaxExpr(e,t){const n=P(e,"op"),s=te(P(e,"args")).map(o=>this.evaluate(o,t)).filter(o=>o!=null);return s.length===0?null:n===0||n==="IS_GREATEST"?s.reduce((o,i)=>o>i?o:i):s.reduce((o,i)=>o<i?o:i)}_evalBooleanTest(e,t){const n=P(e,"arg"),r=P(e,"booltesttype"),s=this.evaluate(n,t);switch(r){case 0:case"IS_TRUE":return s===!0;case 1:case"IS_NOT_TRUE":return s!==!0;case 2:case"IS_FALSE":return s===!1;case 3:case"IS_NOT_FALSE":return s!==!1;case 4:case"IS_UNKNOWN":return s==null;case 5:case"IS_NOT_UNKNOWN":return s!=null;default:throw new Error(`Unknown BooleanTest type: ${k(r)}`)}}}function ve(h,e,t){return{name:h,typeName:e,pythonType:(t==null?void 0:t.pythonType)??"string",primaryKey:(t==null?void 0:t.primaryKey)??!1,notNull:(t==null?void 0:t.notNull)??!1,autoIncrement:(t==null?void 0:t.autoIncrement)??!1,defaultValue:(t==null?void 0:t.defaultValue)??null,vectorDimensions:(t==null?void 0:t.vectorDimensions)??null,unique:(t==null?void 0:t.unique)??!1,numericPrecision:(t==null?void 0:t.numericPrecision)??null,numericScale:(t==null?void 0:t.numericScale)??null}}const tr=new Map([["INT",["integer","number"]],["INTEGER",["integer","number"]],["SERIAL",["integer","number"]],["BIGINT",["integer","number"]],["BIGSERIAL",["integer","number"]],["SMALLINT",["integer","number"]],["SMALLSERIAL",["integer","number"]],["INT2",["integer","number"]],["INT4",["integer","number"]],["INT8",["integer","number"]],["FLOAT",["float","number"]],["FLOAT4",["float","number"]],["FLOAT8",["float","number"]],["DOUBLE",["float","number"]],["DOUBLE PRECISION",["float","number"]],["REAL",["float","number"]],["NUMERIC",["float","number"]],["DECIMAL",["float","number"]],["TEXT",["text","string"]],["VARCHAR",["text","string"]],["CHAR",["text","string"]],["CHARACTER",["text","string"]],["CHARACTER VARYING",["text","string"]],["NAME",["text","string"]],["BOOLEAN",["boolean","boolean"]],["BOOL",["boolean","boolean"]],["DATE",["date","string"]],["TIME",["time","string"]],["TIMESTAMP",["timestamp","string"]],["TIMESTAMPTZ",["timestamp","string"]],["TIMESTAMP WITH TIME ZONE",["timestamp","string"]],["TIMESTAMP WITHOUT TIME ZONE",["timestamp","string"]],["INTERVAL",["interval","string"]],["VECTOR",["vector","object"]],["POINT",["point","object"]],["JSON",["json","object"]],["JSONB",["json","object"]],["BYTEA",["bytea","object"]],["ARRAY",["array","array"]],["UUID",["text","string"]]]);function nr(h,e){const t=h[h.length-1].toLowerCase();if(t==="vector")return["vector","object"];if(t==="point")return["point","object"];const n=h.map(o=>o.toUpperCase()).join(" "),r=tr.get(n);if(r)return[r[0],r[1]];const s=h[0];if(s!==void 0){const o=tr.get(s.toUpperCase());if(o)return[o[0],o[1]]}return["text","string"]}function Ts(h){return typeof h=="object"&&h!==null?h:typeof h=="string"?JSON.parse(h):h}function Os(h){return h instanceof Uint8Array?h:typeof h=="string"?new TextEncoder().encode(h):new TextEncoder().encode(String(h))}function Cs(h){return Array.isArray(h)?h:typeof h=="string"?JSON.parse(h):[h]}function Fs(h,e){const t=typeof h=="number"?h:Number(h),n=Math.pow(10,e);return Math.round(t*n)/n}const Rs=100,js=10;class Ot{constructor(e,t,n){b(this,"name");b(this,"columns");b(this,"primaryKey");b(this,"checkConstraints");b(this,"foreignKeys");b(this,"fkInsertValidators");b(this,"fkDeleteValidators");b(this,"fkUpdateValidators");b(this,"documentStore");b(this,"invertedIndex");b(this,"vectorIndexes");b(this,"spatialIndexes");b(this,"_stats");b(this,"_nextDocId");b(this,"_uniqueIndexes");b(this,"_uniqueIndexesBuilt");this.name=e,this.columns=new Map,this.checkConstraints=[],this.foreignKeys=[],this.fkInsertValidators=[],this.fkDeleteValidators=[],this.fkUpdateValidators=[],this._stats=new Map,this._nextDocId=1,this.vectorIndexes=new Map,this.spatialIndexes=new Map,this._uniqueIndexes=new Map,this._uniqueIndexesBuilt=!1;let r=null;for(const s of t)this.columns.set(s.name,s),s.primaryKey&&(r=s.name);this.primaryKey=r,this.documentStore=new $n,this.invertedIndex=new Ln;for(const s of t)s.typeName==="vector"&&s.vectorDimensions!==null&&this.vectorIndexes.set(s.name,new zn(s.vectorDimensions)),s.typeName==="point"&&this.spatialIndexes.set(s.name,new cs(this.name,s.name))}get columnNames(){return[...this.columns.keys()]}get rowCount(){return this.documentStore.length}insert(e){let t;if(this.primaryKey!==null)if(this.columns.get(this.primaryKey).autoIncrement)(!(this.primaryKey in e)||e[this.primaryKey]===null||e[this.primaryKey]===void 0)&&(e[this.primaryKey]=this._nextDocId),t=e[this.primaryKey],this._nextDocId=Math.max(this._nextDocId,t+1);else{if(!(this.primaryKey in e)||e[this.primaryKey]===null||e[this.primaryKey]===void 0)throw new Error(`Missing primary key '${this.primaryKey}' for table '${this.name}'`);const l=e[this.primaryKey];typeof l=="number"?(t=l,this._nextDocId=Math.max(this._nextDocId,t+1)):(t=this._nextDocId,this._nextDocId++)}else t=this._nextDocId,this._nextDocId++;for(const[a,l]of this.columns)if(l.notNull&&!l.autoIncrement){const c=e[a];if(c==null)if(l.defaultValue!==null&&l.defaultValue!==void 0)e[a]=l.defaultValue;else throw new Error(`NOT NULL constraint violated: column '${a}' in table '${this.name}'`)}this._buildUniqueIndexes();for(const[a,l]of this.columns){if(!(l.unique||l.primaryKey)||l.autoIncrement)continue;const c=e[a];if(c==null)continue;const u=this._uniqueIndexes.get(a);if(u!==void 0&&u.has(c))throw new Error(`UNIQUE constraint violated: duplicate value '${String(c)}' for column '${a}' in table '${this.name}'`)}for(const[a,l]of this.checkConstraints)if(!l(e))throw new Error(`CHECK constraint '${a}' violated in table '${this.name}'`);for(const a of this.fkInsertValidators)a(e);for(const a of Object.keys(e))if(!this.columns.has(a))throw new Error(`Unknown column '${a}' for table '${this.name}'`);const n={},r={},s={};for(const[a,l]of this.columns){const c=e[a];if(c!=null)if(l.vectorDimensions!==null){const u=c instanceof Float64Array?c:new Float64Array(c);n[a]=Array.from(u),r[a]=u}else if(l.typeName==="point"){const u=c;let f,d;if(Array.isArray(u))f=u[0],d=u[1];else if(typeof u=="object"&&"x"in u)f=u.x,d=u.y;else throw new Error(`POINT column '${a}' requires [x, y] (2 elements), got ${JSON.stringify(u)}`);n[a]=[f,d],s[a]=[f,d]}else l.typeName==="json"||l.typeName==="jsonb"?n[a]=Ts(c):l.typeName.endsWith("[]")?n[a]=Cs(c):l.typeName==="bytea"?n[a]=Os(c):l.numericScale!==null?n[a]=Fs(c,l.numericScale):l.pythonType==="number"?n[a]=Number(c):l.pythonType==="boolean"?n[a]=!!c:l.pythonType==="string"?n[a]=String(c):n[a]=c;else l.defaultValue!==null&&l.defaultValue!==void 0&&(n[a]=l.defaultValue)}this.documentStore.put(t,n);let o=null;const i={};for(const[a,l]of Object.entries(n))typeof l=="string"&&(i[a]=l);Object.keys(i).length>0&&(o=this.invertedIndex.addDocument(t,i));for(const[a,l]of Object.entries(r)){const c=this.vectorIndexes.get(a);c!==void 0&&c.add(t,l)}for(const[a,[l,c]]of Object.entries(s)){const u=this.spatialIndexes.get(a);u!==void 0&&u.add(t,l,c)}for(const[a,l]of this._uniqueIndexes){const c=n[a];c!=null&&l.set(c,t)}return[t,o]}_buildUniqueIndexes(){if(this._uniqueIndexesBuilt)return;this._uniqueIndexesBuilt=!0;const e=[];for(const[t,n]of this.columns)(n.unique||n.primaryKey)&&!n.autoIncrement&&(e.push(t),this._uniqueIndexes.set(t,new Map));if(e.length!==0)for(const t of this.documentStore.docIds)for(const n of e){const r=this.documentStore.getField(t,n);r!=null&&this._uniqueIndexes.get(n).set(r,t)}}removeFromUniqueIndexes(e){for(const[t,n]of this._uniqueIndexes){const r=this.documentStore.getField(e,t);r!=null&&n.delete(r)}}analyze(){const e=[...this.documentStore.docIds].sort((i,a)=>i-a),t=e.length,n=[...this.columns.keys()],r=new Map,s=new Map;for(const i of n)r.set(i,[]),s.set(i,0);for(const i of e){const a=this.documentStore.get(i);for(const l of n){const c=a!==null?a[l]??null:null;c===null?s.set(l,(s.get(l)??0)+1):r.get(l).push(c)}}const o=new Map;for(const i of n){const a=r.get(i),l=s.get(i),c=new Set(a.map(y=>typeof y=="object"?JSON.stringify(y):String(y))).size,u=a.filter(y=>typeof y=="number"||typeof y=="string");let f=null,d=null;u.length>0&&(f=u.reduce((y,x)=>y<x?y:x),d=u.reduce((y,x)=>y>x?y:x));const p=Ps(u),[m,_]=Ds(a,t);o.set(i,{distinctCount:c,nullCount:l,minValue:f,maxValue:d,rowCount:t,histogram:p,mcvValues:m,mcvFrequencies:_})}return this._stats=o,new Map(o)}getColumnStats(e){return this._stats.get(e)??null}}function Ps(h){if(h.length===0)return[];try{const e=[...h].sort((s,o)=>typeof s=="number"&&typeof o=="number"?s-o:String(s).localeCompare(String(o))),t=e.length,n=Math.min(Rs,t);if(n<=1)return[e[0],e[t-1]];const r=[e[0]];for(let s=1;s<n;s++){const o=Math.floor(s*t/n),i=e[o];i!==r[r.length-1]&&r.push(i)}return r[r.length-1]!==e[t-1]&&r.push(e[t-1]),r}catch{return[]}}function Ds(h,e){if(h.length===0||e<=0)return[[],[]];const t=new Map;for(const i of h){const a=typeof i=="object"?JSON.stringify(i):String(i),l=t.get(a);l!==void 0?l.count++:t.set(a,{value:i,count:1})}const n=t.size;if(n<=0)return[[],[]];const r=1/n,o=[...t.values()].sort((i,a)=>a.count-i.count).slice(0,js).filter(i=>i.count/e>r);return o.length===0?[[],[]]:[o.map(i=>i.value),o.map(i=>i.count/e)]}class xe extends L{constructor(t,n){super();b(this,"source");b(this,"threshold");this.source=t,this.threshold=n}execute(t){const n=this.source.execute(t),r=[];for(const s of n){const o=s.payload.score-this.threshold;o>0&&r.push({docId:s.docId,payload:B({positions:s.payload.positions,score:o,fields:s.payload.fields})})}return j.fromSorted(r)}costEstimate(t){return this.source.costEstimate(t)}}class Re extends L{constructor(t){super();b(this,"stages");if(t.length===0)throw new Error("MultiStageOperator requires at least one stage");this.stages=t}execute(t){if(this.stages.length===0)return new j;let n=this.stages[0][0].execute(t);n=ln(n,this.stages[0][1]);for(let r=1;r<this.stages.length;r++){const[s,o]=this.stages[r],i=s.execute(t),a=new Map;for(const c of i)a.set(c.docId,c.payload.score);const l=n.entries.map(c=>({docId:c.docId,payload:B({positions:c.payload.positions,score:a.get(c.docId)??c.payload.score,fields:c.payload.fields})}));n=ln(new j(l),o)}return n}costEstimate(t){let n=0,r=t.totalDocs;for(const[s,o]of this.stages)n+=s.costEstimate(t)*(r/Math.max(t.totalDocs,1)),r=typeof o=="number"&&Number.isInteger(o)?Math.min(o,r):r*.5;return n}static applyCutoff(t,n){return ln(t,n)}}function ln(h,e){if(Number.isInteger(e)&&e>0)return h.topK(e);const t=h.entries.filter(n=>n.payload.score>=e);return new j(t)}class cn extends L{constructor(t,n,r){super();b(this,"fields");b(this,"query");b(this,"weights");this.fields=t,this.query=n,this.weights=r??t.map(()=>1)}execute(t){const n=t.invertedIndex;if(!n)return new j;const r=n.stats,s=[],o=new Set;for(const c of this.fields){const u=new de(this.query,c),f=new Ze(Ve(),r),p=n.getSearchAnalyzer(c).analyze(this.query),_=new ue(f,u,p,c).execute(t),y=new Map;for(const x of _)y.set(x.docId,x.payload.score),o.add(x.docId);s.push(y)}let i=0;for(const c of this.weights)i+=c;const a=this.weights.map(c=>c/i),l=[];for(const c of o){const u=[];for(let d=0;d<this.fields.length;d++)u.push(s[d].get(c)??.5);const f=u.length===1?u[0]:W.logOddsConjunction(u,0,a);l.push({docId:c,payload:B({score:f})})}return new j(l)}costEstimate(t){return t.totalDocs*this.fields.length}}class rr extends L{constructor(t,n=.5,r){super();b(this,"stages");b(this,"alpha");b(this,"gating");this.stages=t,this.alpha=n,this.gating=r??null}execute(t){const n=[];let r=null,s=new j;for(const[o,i]of this.stages){const a=o.map(u=>u.execute(t));if(r!==null)for(let u=0;u<a.length;u++){const f=a[u].entries.filter(d=>r.has(d.docId));a[u]=j.fromSorted(f)}n.push(...a);const l=n.map(u=>{let f=0;for(const d of u)d.payload.score>f&&(f=d.payload.score);return Math.max(f,.01)});s=new Kn(n,l,this.alpha,i,this.gating).scoreTopK(),r=new Set(s.entries.map(u=>u.docId))}return s}costEstimate(t){let n=0,r=t.totalDocs;for(const[s,o]of this.stages){for(const i of s)n+=i.costEstimate(t)*(r/Math.max(t.totalDocs,1));r=Math.min(o,r)}return n}}function Ct(h){if(h>=0)return 1/(1+Math.exp(-h));const e=Math.exp(h);return e/(1+e)}function un(h,e){return e==="relu"?Math.max(0,h):e==="swish"?h*Ct(h):h}function qs(h){const e=new Float64Array(h.length);for(let t=0;t<h.length;t++)e[t]=Ct(h[t]);return e}function $s(h){const e=h.reduce((s,o)=>s+o,0),t=new Float64Array(9);if(e<=0)return t;const n=h[0]/e,r=(h.length>1?h[1]:0)/e;return t[4]=n,t[1]=r/4,t[7]=r/4,t[3]=r/4,t[5]=r/4,t}function Ls(h){return $s(h)}function Vs(h,e,t,n,r,s="none"){const[o]=e;let i=Math.floor(e[1]/(t*n));i<1&&(i=1);let a=t,l=n,c=new Float64Array(h);for(const f of r){const d=f.kernelShape;let p,m;d.length===4?(p=d[0],m=d[1]):(p=i,m=i);const _=d.length===4?d[2]:3,y=d.length===4?d[3]:3,x=Math.floor(_/2),w=Math.floor(y/2),E=new Float64Array(o*p*a*l);for(let I=0;I<o;I++)for(let S=0;S<p;S++)for(let N=0;N<a;N++)for(let A=0;A<l;A++){let M=0;for(let O=0;O<m;O++)for(let F=0;F<_;F++)for(let T=0;T<y;T++){const q=N+F-x,H=A+T-w;if(q>=0&&q<a&&H>=0&&H<l){const le=I*m*a*l+O*a*l+q*l+H,rt=S*m*_*y+O*_*y+F*y+T,he=f.kernel[rt]??0;he!==0&&(M+=(c[le]??0)*he)}}const C=I*p*a*l+S*a*l+N*l+A;E[C]=un(M,s)}if(c=E,i=p,f.poolSize>1){const I=Math.floor(a/f.poolSize),S=Math.floor(l/f.poolSize),N=new Float64Array(o*p*I*S);for(let A=0;A<o;A++)for(let M=0;M<p;M++)for(let C=0;C<I;C++)for(let O=0;O<S;O++){let F=f.poolMethod==="max"?-1/0:0,T=0;for(let H=0;H<f.poolSize;H++)for(let le=0;le<f.poolSize;le++){const rt=C*f.poolSize+H,he=O*f.poolSize+le;if(rt<a&&he<l){const Ee=A*p*a*l+M*a*l+rt*l+he,Fr=c[Ee]??0;f.poolMethod==="max"?F=Math.max(F,Fr):F+=Fr,T++}}f.poolMethod==="avg"&&T>0&&(F/=T);const q=A*p*I*S+M*I*S+C*S+O;N[q]=F}c=N,a=I,l=S}}const u=i*a*l;return{data:c,shape:[o,u]}}function zs(h,e,t,n,r,s="none"){const[o]=e,[i]=n,a=rs(t,n[0],n[1]),l=ns(h,e,a,[n[1],n[0]]);for(let c=0;c<o;c++)for(let u=0;u<i;u++){const f=c*i+u;l.data[f]=un(l.data[f]+r[u],s)}return{data:l.data,shape:[o,i]}}function Gs(h,e){const[t,n]=e,r=new Float64Array(h.length);for(let s=0;s<t;s++){const o=h.subarray(s*n,(s+1)*n),i=ts(o);r.set(i,s*n)}return r}function Bs(h,e,t=1e-5){const[n,r]=e;if(n<2)return new Float64Array(h);const s=new Float64Array(r),o=new Float64Array(r);for(let a=0;a<n;a++)for(let l=0;l<r;l++)s[l]+=h[a*r+l]/n;for(let a=0;a<n;a++)for(let l=0;l<r;l++){const c=h[a*r+l]-s[l];o[l]+=c*c/n}const i=new Float64Array(h.length);for(let a=0;a<n;a++)for(let l=0;l<r;l++)i[a*r+l]=(h[a*r+l]-s[l])/Math.sqrt(o[l]+t);return i}function sr(h,e,t=1,n=null,r=null,s=null,o="none"){const[i,a,l]=e;let c=t;l%c!==0&&(c=1);const u=Math.floor(l/c),f=n!==null?hn(h,i,a,l,n,l,l):new Float64Array(h),d=r!==null?hn(h,i,a,l,r,l,l):new Float64Array(h),p=s!==null?hn(h,i,a,l,s,l,l):new Float64Array(h),m=1/Math.sqrt(u),_=new Float64Array(i*a*l);for(let y=0;y<i;y++)for(let x=0;x<c;x++){const w=new Float64Array(a*a);for(let E=0;E<a;E++)for(let I=0;I<a;I++){let S=0;for(let N=0;N<u;N++){const A=y*a*l+E*l+x*u+N,M=y*a*l+I*l+x*u+N;S+=f[A]*d[M]}w[E*a+I]=S*m}for(let E=0;E<a;E++){let I=-1/0;for(let N=0;N<a;N++)I=Math.max(I,w[E*a+N]);let S=0;for(let N=0;N<a;N++)w[E*a+N]=Math.exp(w[E*a+N]-I),S+=w[E*a+N];for(let N=0;N<a;N++)w[E*a+N]/=S}for(let E=0;E<a;E++)for(let I=0;I<u;I++){let S=0;for(let A=0;A<a;A++){const M=y*a*l+A*l+x*u+I;S+=w[E*a+A]*p[M]}const N=y*a*l+E*l+x*u+I;_[N]=S}}if(o==="relu")for(let y=0;y<_.length;y++)_[y]=Math.max(0,_[y]);else if(o==="swish")for(let y=0;y<_.length;y++)_[y]=_[y]*Ct(_[y]);return _}function Us(h,e,t,n,r="avg"){const[s,o]=e;let i=Math.floor(o/(t*n));i<1&&(i=1);const a=r==="avg_max"?i*2:i,l=new Float64Array(s*a);for(let c=0;c<s;c++)for(let u=0;u<i;u++){let f=0,d=-1/0;for(let m=0;m<t*n;m++){const _=h[c*o+u*t*n+m]??0;f+=_,d=Math.max(d,_)}const p=f/(t*n);r==="avg"?l[c*a+u]=p:r==="max"?l[c*a+u]=d:(l[c*a+u]=p,l[c*a+i+u]=d)}return{data:l,shape:[s,a]}}function Ws(h,e,t=42){const n=e*9,r=Math.max(h,n),s=Math.max(h,n);let o=t;function i(){o^=o<<13,o^=o>>17,o^=o<<5;const f=(o>>>0)/4294967295;o^=o<<13,o^=o>>17,o^=o<<5;const d=(o>>>0)/4294967295;return Math.sqrt(-2*Math.log(Math.max(1e-10,f)))*Math.cos(2*Math.PI*d)}const a=new Float64Array(r*s);for(let f=0;f<r*s;f++)a[f]=i();const l=new Float64Array(r*s);for(let f=0;f<Math.min(r,s);f++){for(let p=0;p<s;p++)l[f*s+p]=a[f*s+p];for(let p=0;p<f;p++){let m=0,_=0;for(let y=0;y<s;y++)m+=l[f*s+y]*l[p*s+y],_+=l[p*s+y]*l[p*s+y];if(_>1e-12){const y=m/_;for(let x=0;x<s;x++)l[f*s+x]-=y*l[p*s+x]}}let d=0;for(let p=0;p<s;p++)d+=l[f*s+p]*l[f*s+p];if(d=Math.sqrt(d),d>1e-12)for(let p=0;p<s;p++)l[f*s+p]/=d}const c=new Float64Array(h*e*9),u=Math.sqrt(2/n)*Math.sqrt(n);for(let f=0;f<h;f++)for(let d=0;d<n&&d<s;d++)c[f*n+d]=l[f*s+d]*u;return c}function Ks(h,e,t=42){const r=Math.floor(1.5),s=8,o=[.5,1,1.5],i=[0,Math.PI/2],a=1,l=.5,c=[];for(let m=0;m<s;m++){const _=m*Math.PI/s,y=Math.cos(_),x=Math.sin(_);for(const w of o)for(const E of i){const I=new Float64Array(9);for(let A=0;A<3;A++)for(let M=0;M<3;M++){const C=M-r,O=A-r,F=C*y+O*x,T=-C*x+O*y,q=Math.exp(-(F*F+l*l*T*T)/(2*a*a)),H=Math.cos(2*Math.PI*w*F+E);I[A*3+M]=q*H}let S=0;for(let A=0;A<9;A++)S+=I[A]/9;for(let A=0;A<9;A++)I[A]-=S;let N=0;for(let A=0;A<9;A++)N+=I[A]*I[A];if(N=Math.sqrt(N),N>1e-6)for(let A=0;A<9;A++)I[A]/=N;c.push(I)}}const u=new Float64Array(h*e*9),f=c.length;let d=t;function p(){d^=d<<13,d^=d>>17,d^=d<<5;const m=(d>>>0)/4294967295;d^=d<<13,d^=d>>17,d^=d<<5;const _=(d>>>0)/4294967295;return Math.sqrt(-2*Math.log(Math.max(1e-10,m)))*Math.cos(2*Math.PI*_)}for(let m=0;m<h;m++)if(m<f)for(let _=0;_<e;_++){const y=c[m];for(let x=0;x<9;x++)u[m*e*9+_*9+x]=y[x]}else{const _=e*9,y=Math.sqrt(2/_);for(let x=0;x<e;x++)for(let w=0;w<9;w++)u[m*e*9+x*9+w]=p()*y}return u}function Js(h,e,t,n,r,s,o=42,i=1e4,a=50){const l=n[0],c=3,u=Math.floor(c/2),f=e*c*c;let d=o;function p(w){return d^=d<<13,d^=d>>17,d^=d<<5,(d>>>0)%w}const m=new Float64Array(i*f);for(let w=0;w<i;w++){const E=p(l),I=u+p(r-c+1),S=u+p(s-c+1);for(let N=0;N<e;N++)for(let A=0;A<c;A++)for(let M=0;M<c;M++){const C=E*e*r*s+N*r*s+(I-u+A)*s+(S-u+M);m[w*f+N*c*c+A*c+M]=t[C]??0}}for(let w=0;w<i;w++){let E=0;for(let S=0;S<f;S++)E+=m[w*f+S]/f;for(let S=0;S<f;S++)m[w*f+S]-=E;let I=0;for(let S=0;S<f;S++)I+=m[w*f+S]*m[w*f+S];I=Math.sqrt(I),I<1e-6&&(I=1);for(let S=0;S<f;S++)m[w*f+S]/=I}const _=new Float64Array(h*f),y=p(i);for(let w=0;w<f;w++)_[w]=m[y*f+w];for(let w=1;w<h;w++){const E=new Float64Array(i);let I=0;for(let A=0;A<i;A++){let M=1/0;for(let C=0;C<w;C++){let O=0;for(let F=0;F<f;F++){const T=m[A*f+F]-_[C*f+F];O+=T*T}M=Math.min(M,O)}E[A]=M,I+=M}let S=p(1e6)/1e6*I,N=0;for(let A=0;A<i;A++)if(S-=E[A],S<=0){N=A;break}for(let A=0;A<f;A++)_[w*f+A]=m[N*f+A]}const x=new Int32Array(i);for(let w=0;w<a;w++){for(let N=0;N<i;N++){let A=1/0,M=0;for(let C=0;C<h;C++){let O=0;for(let F=0;F<f;F++){const T=m[N*f+F]-_[C*f+F];O+=T*T}O<A&&(A=O,M=C)}x[N]=M}const E=new Float64Array(h*f),I=new Int32Array(h);for(let N=0;N<i;N++){const A=x[N];I[A]++;for(let M=0;M<f;M++)E[A*f+M]+=m[N*f+M]}for(let N=0;N<h;N++)if(I[N]>0)for(let A=0;A<f;A++)E[N*f+A]/=I[N];else for(let A=0;A<f;A++)E[N*f+A]=_[N*f+A];let S=0;for(let N=0;N<h*f;N++)S=Math.max(S,Math.abs(E[N]-_[N]));for(let N=0;N<h*f;N++)_[N]=E[N];if(S<1e-6)break}return _}function hn(h,e,t,n,r,s,o){const i=new Float64Array(e*t*o);for(let a=0;a<e;a++)for(let l=0;l<t;l++)for(let c=0;c<o;c++){let u=0;for(let f=0;f<n;f++)u+=h[a*t*n+l*n+f]*r[f*o+c];i[a*t*o+l*o+c]=u}return i}const or=1e-15,fn=1-1e-15;function Ft(h){const e=Math.max(or,Math.min(fn,h));return Math.log(e/(1-e))}function dn(h){return Ct(h)}function ft(h,e){return un(h,e)}const ir=new Set(["propagate","conv","pool"]);function dt(h,e,t,n,r){const s=h,o=[];return(n==="out"||n==="both")&&o.push(...s.neighbors(e,r,t||null,"out")),(n==="in"||n==="both")&&o.push(...s.neighbors(e,r,t||null,"in")),o}class pe extends L{constructor(t,n=.5,r="none",s=""){super();b(this,"layers");b(this,"alpha");b(this,"gating");b(this,"graphName");b(this,"embedMode");b(this,"_gridShape");if(t.length===0)throw new Error("deep_fusion requires at least one layer");if(ir.has(t[0].type))throw new Error("deep_fusion: first layer must be a SignalLayer or EmbedLayer (no scores to propagate or convolve)");let o=!1;for(const i of t){if(ir.has(i.type)&&o)throw new Error("deep_fusion: spatial layers (propagate, convolve, pool) must not appear after flatten() or global_pool()");if((i.type==="flatten"||i.type==="global_pool")&&(o=!0),i.type==="pool"&&i.poolSize<2)throw new Error("deep_fusion: pool() pool_size must be >= 2");if(i.type==="dropout"){const a=i.p;if(a<=0||a>=1)throw new Error("deep_fusion: dropout() p must be in (0, 1)")}}if(this.layers=t,this.alpha=n,this.gating=r,this.graphName=s,this.embedMode=t[0].type==="embed",this.embedMode){const i=t[0];i.gridH>0&&i.gridW>0?this._gridShape=[i.gridH,i.gridW]:this._gridShape=null}else this._gridShape=null}execute(t){let n=new Map,r=1,s=!1;if(this._gridShape!==null){const o=this._executeGrid(n,r,s,t);n=o.channelMap,r=o.numChannels,s=o.softmaxApplied}else for(const o of this.layers)switch(o.type){case"embed":pe._executeEmbedLayer(o,n);break;case"signal":this._executeSignalLayer(o,t,n,r);break;case"propagate":this._executePropagateLayer(o,t,n,r);break;case"conv":this._executeConvLayer(o,t,n);break;case"pool":this._executePoolLayer(o,t,n);break;case"dense":this._executeDenseLayer(o,n),r=o.outputChannels;break;case"flatten":{const i=pe._executeFlattenLayer(n);n=i.channelMap,r=i.numChannels;break}case"global_pool":{const i=pe._executeGlobalPoolLayer(o,n);n=i.channelMap,r=i.numChannels;break}case"softmax":pe._executeSoftmaxLayer(n),s=!0;break;case"batchnorm":pe._executeBatchNormLayer(o,n);break;case"dropout":pe._executeDropoutLayer(o,n);break;case"attention":this._executeAttentionLayer(o,n);break}return pe._buildResult(n,r,s)}static _buildResult(t,n,r){if(t.size===0)return new j;const o=[...t.keys()].sort((i,a)=>i-a).map(i=>{const a=t.get(i);if(r){let l=-1/0;for(let u=0;u<a.length;u++)a[u]>l&&(l=a[u]);const c=Array.from(a);return{docId:i,payload:B({score:l,fields:{class_probs:c}})}}else if(n===1){const l=dn(a[0]??0);return{docId:i,payload:B({score:l})}}else{const l=qs(a);let c=-1/0;for(let u=0;u<l.length;u++)l[u]>c&&(c=l[u]);return{docId:i,payload:B({score:c})}}});return j.fromSorted(o)}_executeSignalLayer(t,n,r,s){const o=t.signals,i=o.map(p=>p.execute(n)),a=new Set,l=[];for(const p of i){const m=new Map;for(const _ of p)m.set(_.docId,_.payload.score),a.add(_.docId);l.push(m)}if(a.size===0)return;const c=a.size,u=l.map(p=>et(p.size,c)),f=this.alpha,d=this.gating;if(o.length===1){const p=l[0],m=u[0];for(const _ of a){const y=p.get(_)??m;let x=Ft(y);x=ft(x,d),r.has(_)||r.set(_,new Float64Array(s)),r.get(_)[0]+=x}}else for(const p of a){const m=[];for(let x=0;x<l.length;x++)m.push(l[x].get(p)??u[x]);const _=W.logOddsConjunction(m,f,void 0,"none");let y=Ft(_);y=ft(y,d),r.has(p)||r.set(p,new Float64Array(s)),r.get(p)[0]+=y}}_executePropagateLayer(t,n,r,s){const o=n.graphStore;if(o==null)throw new Error("deep_fusion propagate layer requires a graph_store in ExecutionContext");const i=new Map;for(const[m,_]of r)i.set(m,dn(_[0]));const a=new Map,{direction:l,edgeLabel:c,aggregation:u}=t,f=this.graphName,d=this.gating,p=new Set(r.keys());for(const m of[...p]){const _=dt(o,m,c,l,f);for(const y of _)p.add(y)}for(const m of p){const _=[],y=dt(o,m,c,l,f);for(const S of y){const N=i.get(S);N!==void 0&&_.push(N)}if(_.length===0){r.has(m)&&a.set(m,new Float64Array(r.get(m)));continue}let x;u==="mean"?x=_.reduce((S,N)=>S+N,0)/_.length:u==="sum"?x=Math.min(fn,_.reduce((S,N)=>S+N,0)):u==="max"?x=Math.max(..._):x=_.reduce((S,N)=>S+N,0)/_.length;let w=Ft(x);w=ft(w,d);const E=r.get(m);let I;E!==void 0?(I=new Float64Array(E),I[0]=E[0]+w):(I=new Float64Array(s),I[0]=w),a.set(m,I)}r.clear();for(const[m,_]of a)r.set(m,_)}_executeConvLayer(t,n,r){const s=n.graphStore;if(s==null)throw new Error("deep_fusion convolve layer requires a graph_store in ExecutionContext");const o=this.embedMode,i=new Map;for(const[_,y]of r)i.set(_,o?y[0]:dn(y[0]));const a=t.hopWeights.reduce((_,y)=>_+y,0);if(a<=0)return;const l=t.hopWeights.map(_=>_/a),c=new Map,{edgeLabel:u,direction:f}=t,d=this.graphName,p=this.gating,m=t.hopWeights.length-1;for(const _ of[...r.keys()]){let y=0;const x=i.get(_);x!==void 0&&(y+=l[0]*x);let w=new Set([_]);const E=new Set([_]);for(let S=1;S<=m;S++){const N=new Set;for(const A of w)for(const M of dt(s,A,u,f,d))E.has(M)||(N.add(M),E.add(M));if(N.size>0){const A=[];for(const M of N){const C=i.get(M);C!==void 0&&A.push(C)}if(A.length>0){const M=A.reduce((C,O)=>C+O,0)/A.length;y+=l[S]*M}}w=N}const I=new Float64Array(r.get(_));if(o)I[0]=ft(y,p);else{let S=Ft(Math.max(or,Math.min(fn,y)));S=ft(S,p),I[0]=r.get(_)[0]+S}c.set(_,I)}r.clear();for(const[_,y]of c)r.set(_,y)}_executePoolLayer(t,n,r){const s=n.graphStore;if(s==null)throw new Error("deep_fusion pool layer requires a graph_store in ExecutionContext");const{edgeLabel:o,direction:i,poolSize:a,method:l}=t,c=this.graphName,u=new Set(r.keys()),f=new Map;for(;u.size>0;){const d=Math.min(...u);u.delete(d);const p=[d];let m=new Set([d]);const _=new Set([d]);for(;p.length<a&&m.size>0;){const E=new Set;for(const I of m){for(const S of dt(s,I,o,i,c))if(!_.has(S)&&(_.add(S),E.add(S),u.has(S)&&(p.push(S),u.delete(S),p.length>=a)))break;if(p.length>=a)break}m=E}const y=r.get(p[0]).length,x=new Float64Array(y);if(l==="max"){x.fill(-1/0);for(const E of p){const I=r.get(E);for(let S=0;S<y;S++)x[S]=Math.max(x[S],I[S])}}else for(const E of p){const I=r.get(E);for(let S=0;S<y;S++)x[S]+=I[S]/p.length}const w=Math.min(...p);f.set(w,x)}r.clear();for(const[d,p]of f)r.set(d,p)}_executeDenseLayer(t,n){const r=[...n.keys()].sort((u,f)=>u-f);if(r.length===0)return;const s=n.get(r[0]).length,o=r.length,i=new Float64Array(o*s);for(let u=0;u<o;u++)i.set(n.get(r[u]),u*s);const a=new Float64Array(t.weights),l=new Float64Array(t.bias),c=zs(i,[o,s],a,[t.outputChannels,t.inputChannels],l,this.gating);for(let u=0;u<o;u++)n.set(r[u],c.data.slice(u*t.outputChannels,(u+1)*t.outputChannels))}static _executeFlattenLayer(t){if(t.size===0)return{channelMap:new Map,numChannels:0};const n=[...t.keys()].sort((c,u)=>c-u),r=[];for(const c of n)r.push(t.get(c));let s=0;for(const c of r)s+=c.length;const o=new Float64Array(s);let i=0;for(const c of r)o.set(c,i),i+=c.length;const a=n[0],l=new Map;return l.set(a,o),{channelMap:l,numChannels:s}}static _executeGlobalPoolLayer(t,n){if(n.size===0)return{channelMap:new Map,numChannels:0};const r=[...n.keys()].sort((u,f)=>u-f),s=n.get(r[0]).length,o=r.length;if(t.method==="avg"){const u=new Float64Array(s);for(const d of r){const p=n.get(d);for(let m=0;m<s;m++)u[m]+=p[m]/o}const f=new Map;return f.set(r[0],u),{channelMap:f,numChannels:s}}if(t.method==="max"){const u=new Float64Array(s).fill(-1/0);for(const d of r){const p=n.get(d);for(let m=0;m<s;m++)u[m]=Math.max(u[m],p[m])}const f=new Map;return f.set(r[0],u),{channelMap:f,numChannels:s}}const i=new Float64Array(s),a=new Float64Array(s).fill(-1/0);for(const u of r){const f=n.get(u);for(let d=0;d<s;d++)i[d]+=f[d]/o,a[d]=Math.max(a[d],f[d])}const l=new Float64Array(s*2);l.set(i,0),l.set(a,s);const c=new Map;return c.set(r[0],l),{channelMap:c,numChannels:s*2}}static _executeSoftmaxLayer(t){const n=[...t.keys()].sort((a,l)=>a-l);if(n.length===0)return;const r=t.get(n[0]).length,s=n.length,o=new Float64Array(s*r);for(let a=0;a<s;a++)o.set(t.get(n[a]),a*r);const i=Gs(o,[s,r]);for(let a=0;a<s;a++)t.set(n[a],i.slice(a*r,(a+1)*r))}static _executeBatchNormLayer(t,n){if(n.size<2)return;const r=[...n.keys()].sort((c,u)=>c-u),s=n.get(r[0]).length,o=r.length,i=t.epsilon??1e-5,a=new Float64Array(o*s);for(let c=0;c<o;c++)a.set(n.get(r[c]),c*s);const l=Bs(a,[o,s],i);for(let c=0;c<o;c++)n.set(r[c],l.slice(c*s,(c+1)*s))}static _executeDropoutLayer(t,n){const r=1-t.p;for(const[s,o]of n){const i=new Float64Array(o.length);for(let a=0;a<o.length;a++)i[a]=o[a]*r;n.set(s,i)}}_executeAttentionLayer(t,n){if(n.size===0)return;const r=[...n.keys()].sort((f,d)=>f-d),s=n.get(r[0]).length,o=r.length,i=new Float64Array(o*s);for(let f=0;f<o;f++)i.set(n.get(r[f]),f*s);const a=t.qWeights&&t.qShape?new Float64Array(t.qWeights):null,l=t.kWeights&&t.kShape?new Float64Array(t.kWeights):null,c=t.vWeights&&t.vShape?new Float64Array(t.vWeights):null,u=sr(i,[1,o,s],t.nHeads,a,l,c,this.gating);for(let f=0;f<o;f++)n.set(r[f],u.slice(f*s,(f+1)*s))}static _executeEmbedLayer(t,n){if(t.embedding)for(let r=0;r<t.embedding.length;r++)n.set(r+1,new Float64Array([t.embedding[r]]))}_executeGrid(t,n,r,s){const[o,i]=this._gridShape,a=[];let l=[];const c=[],u=this.layers.filter(A=>A.type!=="embed");let f=0;for(;f<u.length;){const A=u[f];if(A.type==="conv"){const M=A;let C=2,O="max";if(f+1<u.length&&u[f+1].type==="pool"){const q=u[f+1];C=q.poolSize,O=q.method,f+=2}else f+=1;let F,T;M.kernel!=null&&M.kernelShape!=null?(F=new Float64Array(M.kernel),T=[...M.kernelShape]):(F=Ls([...M.hopWeights]),T=[1,1,3,3]),l.push({kernel:F,kernelShape:T,poolSize:C,poolMethod:O})}else A.type==="attention"?(l.length>0&&(a.push(["conv_pool",l]),l=[]),a.push(["attention",A]),f+=1):A.type==="global_pool"?(l.length>0&&(a.push(["conv_pool",l]),l=[]),a.push(["global_pool",A]),f+=1):(l.length>0&&(a.push(["conv_pool",l]),l=[]),c.push(A),f+=1)}l.length>0&&a.push(["conv_pool",l]);const p=this.layers[0].embedding??[];let m=new Float64Array(p),_=o,y=i;const x=1;for(const[A,M]of a)if(A==="conv_pool"){const C=M;m=Vs(m,[x,m.length],_,y,C,this.gating).data;for(const F of C)_=Math.floor(_/F.poolSize),y=Math.floor(y/F.poolSize)}else if(A==="attention"){const C=M,O=Math.floor(m.length/(_*y)),F=_*y,T=new Float64Array(F*O);for(let he=0;he<F;he++)for(let Ee=0;Ee<O;Ee++)T[he*O+Ee]=m[Ee*F+he]??0;const q=C.qWeights&&C.qShape?new Float64Array(C.qWeights):null,H=C.kWeights&&C.kShape?new Float64Array(C.kWeights):null,le=C.vWeights&&C.vShape?new Float64Array(C.vWeights):null,rt=sr(T,[1,F,O],C.nHeads,q,H,le,this.gating);m=new Float64Array(O*F);for(let he=0;he<F;he++)for(let Ee=0;Ee<O;Ee++)m[Ee*F+he]=rt[he*O+Ee]}else{const C=M;m=Us(m,[x,m.length],_,y,C.method).data,_=1,y=1}const w=new Map;if(a.some(([A])=>A==="global_pool"))w.set(1,m),n=m.length;else{for(let A=0;A<m.length;A++)w.set(A+1,new Float64Array([m[A]]));n=1}let I=w,S=n,N=r;for(const A of c)switch(A.type){case"flatten":{const M=pe._executeFlattenLayer(I);I=M.channelMap,S=M.numChannels;break}case"global_pool":{const M=pe._executeGlobalPoolLayer(A,I);I=M.channelMap,S=M.numChannels;break}case"dense":this._executeDenseLayer(A,I),S=A.outputChannels;break;case"softmax":pe._executeSoftmaxLayer(I),N=!0;break;case"batchnorm":pe._executeBatchNormLayer(A,I);break;case"dropout":pe._executeDropoutLayer(A,I);break}return{channelMap:I,numChannels:S,softmaxApplied:N}}costEstimate(t){let n=0;for(const r of this.layers)switch(r.type){case"signal":for(const s of r.signals)n+=s.costEstimate(t);break;case"embed":n+=(r.embedding??[]).length;break;case"propagate":case"conv":case"pool":n+=t.totalDocs;break;case"dense":n+=r.inputChannels*r.outputChannels;break;case"flatten":case"global_pool":case"softmax":case"batchnorm":case"dropout":n+=t.totalDocs;break;case"attention":n+=t.totalDocs**2;break}return n}}function Hs(h,e,t,n,r,s="embedding"){const o=e,i=h,a=new Map;for(const f of o.docIds){const d=o.getField(f,s);if(d!=null){const p=d instanceof Float64Array?d:new Float64Array(d);let m=0;for(let _=0;_<p.length;_++)m+=p[_]*p[_];if(m=Math.sqrt(m),m>0){const _=new Float64Array(p.length);for(let y=0;y<p.length;y++)_[y]=p[y]/m;a.set(f,_)}}}if(a.size<2){const f=1/(n+1);return new Array(n+1).fill(f)}const l=[];for(let f=0;f<=n;f++)l.push([]);for(const[f,d]of a){l[0].push(1);let p=new Set([f]);const m=new Set([f]);for(let _=1;_<=n;_++){const y=new Set;for(const x of p)for(const w of dt(i,x,t,"both",r))m.has(w)||(y.add(w),m.add(w));for(const x of y){const w=a.get(x);if(w!==void 0){let E=0;for(let I=0;I<d.length;I++)E+=d[I]*w[I];l[_].push(E)}}p=y}}const c=[];for(let f=0;f<=n;f++){const d=l[f];if(d.length>0){const p=d.reduce((m,_)=>m+_,0)/d.length;c.push(Math.max(0,p))}else c.push(0)}const u=c.reduce((f,d)=>f+d,0);if(u<=0){const f=1/(n+1);return new Array(n+1).fill(f)}return c.map(f=>f/u)}class Rt extends L{constructor(t,n,r){super();b(this,"path");b(this,"predicate");b(this,"source");this.path=t,this.predicate=n,this.source=r??null}execute(t){const n=t.documentStore;if(!n)return new j;const r=Fn(this.predicate);let s;this.source?s=this.source.execute(t).entries.map(i=>i.docId):s=[...n.docIds].sort((i,a)=>i-a);const o=[];for(const i of s){const a=n.evalPath(i,this.path);if(Array.isArray(a))a.some(l=>this.predicate.evaluate(l))&&o.push({docId:i,payload:B({score:0})});else{if(!r&&a==null)continue;this.predicate.evaluate(a)&&o.push({docId:i,payload:B({score:0})})}}return j.fromSorted(o)}costEstimate(t){return this.source?this.source.costEstimate(t):t.totalDocs}}class Ys extends L{constructor(t,n){super();b(this,"paths");b(this,"source");this.paths=t,this.source=n}execute(t){const n=this.source.execute(t),r=t.documentStore;if(!r)return n;const s=[];for(const o of n){const i={};for(const a of this.paths){const l=r.evalPath(o.docId,a),c=a.join(".");i[c]=l}s.push({docId:o.docId,payload:B({positions:o.payload.positions,score:o.payload.score,fields:{...o.payload.fields,...i}})})}return j.fromSorted(s)}costEstimate(t){return this.source.costEstimate(t)}}class Xs extends L{constructor(t,n){super();b(this,"path");b(this,"source");this.path=t,this.source=n}execute(t){const n=this.source.execute(t),r=t.documentStore;if(!r)return n;const s=[];for(const o of n){const i=r.evalPath(o.docId,this.path);if(Array.isArray(i))for(const a of i)s.push({docId:o.docId,payload:B({positions:o.payload.positions,score:o.payload.score,fields:{...o.payload.fields,_unnested_data:a}})});else s.push(o)}return new j(s)}costEstimate(t){return this.source.costEstimate(t)*2}}class Qs extends L{constructor(t,n,r){super();b(this,"path");b(this,"monoid");b(this,"source");this.path=t,this.monoid=n,this.source=r??null}execute(t){const n=t.documentStore;if(!n)return new j;let r;this.source?r=this.source.execute(t).entries.map(o=>o.docId):r=[...n.docIds].sort((o,i)=>o-i);const s=[];for(const o of r){const i=n.evalPath(o,this.path);let a=this.monoid.identity();if(Array.isArray(i))for(const u of i)u!=null&&(a=this.monoid.accumulate(a,u));else i!=null&&(a=this.monoid.accumulate(a,i));const l=this.monoid.finalize(a),c=typeof l=="number"?l:0;s.push({docId:o,payload:B({score:c,fields:{_path_agg_result:l,_path_agg_path:this.path.join(".")}})})}return j.fromSorted(s)}costEstimate(t){return this.source?this.source.costEstimate(t):t.totalDocs}}class nt extends L{constructor(t,n,r){super();b(this,"signals");b(this,"attention");b(this,"queryFeatures");this.signals=t,this.attention=n,this.queryFeatures=r}execute(t){const n=this.signals.map(l=>l.execute(t)),r=[],s=new Set;let o=0;for(const l of n){const c=new Map;for(const u of l)c.set(u.docId,u.payload.score),s.add(u.docId);r.push(c),o=Math.max(o,c.size)}const i=r.map(l=>et(l.size,o)),a=[];for(const l of s){const c=[];for(let f=0;f<r.length;f++)c.push(r[f].get(l)??i[f]);const u=this.attention.fuse(c,this.queryFeatures);a.push({docId:l,payload:B({score:u})})}return new j(a)}costEstimate(t){let n=0;for(const r of this.signals)n+=r.costEstimate(t);return n}}class pt extends L{constructor(t,n){super();b(this,"signals");b(this,"learned");this.signals=t,this.learned=n}execute(t){const n=this.signals.map(l=>l.execute(t)),r=[],s=new Set;let o=0;for(const l of n){const c=new Map;for(const u of l)c.set(u.docId,u.payload.score),s.add(u.docId);r.push(c),o=Math.max(o,c.size)}const i=r.map(l=>et(l.size,o)),a=[];for(const l of s){const c=[];for(let f=0;f<r.length;f++)c.push(r[f].get(l)??i[f]);const u=this.learned.fuse(c);a.push({docId:l,payload:B({score:u})})}return new j(a)}costEstimate(t){let n=0;for(const r of this.signals)n+=r.costEstimate(t);return n}}function we(h){return{subgraphVertices:(h==null?void 0:h.subgraphVertices)??new Set,subgraphEdges:(h==null?void 0:h.subgraphEdges)??new Set,score:(h==null?void 0:h.score)??0,graphName:(h==null?void 0:h.graphName)??""}}class se extends j{constructor(t,n){super(t);b(this,"_graphPayloads");this._graphPayloads=new Map(n??[])}setGraphPayload(t,n){this._graphPayloads.set(t,n)}getGraphPayload(t){return this._graphPayloads.get(t)??null}get graphPayloads(){return this._graphPayloads}toPostingList(){const t=[];for(const n of this){const r=this._graphPayloads.get(n.docId),s={...n.payload.fields};r&&(s._subgraph_vertices=[...r.subgraphVertices],s._subgraph_edges=[...r.subgraphEdges],s._graph_score=r.score,s._graph_name=r.graphName),t.push({docId:n.docId,payload:B({positions:n.payload.positions,score:r?r.score:n.payload.score,fields:s})})}return new j(t)}static fromPostingList(t){const n=[],r=new Map;for(const s of t){n.push(s);const o=s.payload.fields,i=o._subgraph_vertices,a=o._subgraph_edges,l=o._graph_score,c=o._graph_name;(i!==void 0||a!==void 0)&&r.set(s.docId,we({subgraphVertices:new Set(Array.isArray(i)?i:[]),subgraphEdges:new Set(Array.isArray(a)?a:[]),score:typeof l=="number"?l:s.payload.score,graphName:typeof c=="string"?c:""}))}return new se(n,r)}}class gt{}class Ne extends gt{constructor(t){super();b(this,"name");this.name=t}equals(t){return t instanceof Ne&&t.name===this.name}toString(){return this.name}}class Ge extends gt{constructor(t,n){super();b(this,"left");b(this,"right");this.left=t,this.right=n}equals(t){return t instanceof Ge&&this.left.equals(t.left)&&this.right.equals(t.right)}toString(){return`${this.left.toString()} / ${this.right.toString()}`}}class mt extends gt{constructor(t,n){super();b(this,"left");b(this,"right");this.left=t,this.right=n}equals(t){return t instanceof mt&&this.left.equals(t.left)&&this.right.equals(t.right)}toString(){return`(${this.left.toString()} | ${this.right.toString()})`}}class _t extends gt{constructor(t){super();b(this,"inner");this.inner=t}equals(t){return t instanceof _t&&this.inner.equals(t.inner)}toString(){return`(${this.inner.toString()})*`}}class yt extends gt{constructor(t,n,r){super();b(this,"name");b(this,"minCount");b(this,"maxCount");this.name=t,this.minCount=n,this.maxCount=r}equals(t){return t instanceof yt&&t.name===this.name&&t.minCount===this.minCount&&t.maxCount===this.maxCount}toString(){return`${this.name}{${String(this.minCount)},${String(this.maxCount)}}`}}function Zs(h){const e=[];let t=0;for(;t<h.length;){const n=h[t];if(n===" "||n===" "||n===`
3
+ `||n==="\r"){t++;continue}if(n==="|")e.push({type:"PIPE",value:"|"}),t++;else if(n==="/")e.push({type:"SLASH",value:"/"}),t++;else if(n==="*")e.push({type:"STAR",value:"*"}),t++;else if(n==="(")e.push({type:"LPAREN",value:"("}),t++;else if(n===")")e.push({type:"RPAREN",value:")"}),t++;else if(n==="{")e.push({type:"LBRACE",value:"{"}),t++;else if(n==="}")e.push({type:"RBRACE",value:"}"}),t++;else if(n===",")e.push({type:"COMMA",value:","}),t++;else if(n>="0"&&n<="9"){let r="";for(;t<h.length&&h[t]>="0"&&h[t]<="9";)r+=h[t],t++;e.push({type:"NUMBER",value:r})}else{let r="";for(;t<h.length&&h[t]!==" "&&h[t]!==" "&&h[t]!==`
4
+ `&&h[t]!=="\r"&&h[t]!=="|"&&h[t]!=="/"&&h[t]!=="*"&&h[t]!=="("&&h[t]!==")"&&h[t]!=="{"&&h[t]!=="}"&&h[t]!==",";)r+=h[t],t++;r.length>0&&e.push({type:"LABEL",value:r})}}return e}class eo{constructor(e){b(this,"tokens");b(this,"pos");this.tokens=e,this.pos=0}peek(){return this.pos<this.tokens.length?this.tokens[this.pos]:null}consume(e){const t=this.peek();if(!t)throw new Error("RPQ parse error: unexpected end of input");if(e!==void 0&&t.type!==e)throw new Error(`RPQ parse error: expected ${e}, got ${t.type} ('${t.value}')`);return this.pos++,t}parseExpr(){var t;let e=this.parseConcat();for(;((t=this.peek())==null?void 0:t.type)==="PIPE";){this.consume("PIPE");const n=this.parseConcat();e=new mt(e,n)}return e}parseConcat(){var t;let e=this.parseUnary();for(;((t=this.peek())==null?void 0:t.type)==="SLASH";){this.consume("SLASH");const n=this.parseUnary();e=new Ge(e,n)}return e}parseUnary(){let e=this.parsePrimary();const t=this.peek();if((t==null?void 0:t.type)==="STAR")this.consume("STAR"),e=new _t(e);else if((t==null?void 0:t.type)==="LBRACE"){this.consume("LBRACE");const n=this.consume("NUMBER");this.consume("COMMA");const r=this.consume("NUMBER");if(this.consume("RBRACE"),e instanceof Ne)e=new yt(e.name,parseInt(n.value,10),parseInt(r.value,10));else throw new Error("RPQ parse error: bounded repetition only supported on labels")}return e}parsePrimary(){const e=this.peek();if(!e)throw new Error("RPQ parse error: unexpected end of input");if(e.type==="LPAREN"){this.consume("LPAREN");const t=this.parseExpr();return this.consume("RPAREN"),t}if(e.type==="LABEL")return this.consume("LABEL"),new Ne(e.value);throw new Error(`RPQ parse error: unexpected token ${e.type} ('${e.value}')`)}}function ar(h){const e=Zs(h);if(e.length===0)throw new Error("RPQ parse error: empty expression");return new eo(e).parseExpr()}function lr(h){return[...h].sort((e,t)=>e-t).join(",")}function cr(h,e){const t=new Set(e),n=[...e];for(;n.length>0;){const r=n.pop();for(const s of h.transitions)s.from===r&&s.label===null&&!t.has(s.to)&&(t.add(s.to),n.push(s.to))}return t}function to(h,e,t){const n=new Set;for(const r of h.transitions)e.has(r.from)&&r.label===t&&n.add(r.to);return n}function no(h){const e=new Set;for(const t of h.transitions)t.label!==null&&e.add(t.label);return e}function ur(h){const e=no(h),t=cr(h,new Set([h.startState])),n=lr(t),r=new Map,s=new Set,o=[[n,t]],i=new Set;for(t.has(h.acceptState)&&s.add(n);o.length>0;){const[a,l]=o.pop();if(!i.has(a)){i.add(a);for(const c of e){const u=to(h,l,c);if(u.size===0)continue;const f=cr(h,u),d=lr(f);let p=r.get(a);p||(p=new Map,r.set(a,p)),p.set(c,d),f.has(h.acceptState)&&s.add(d),i.has(d)||o.push([d,f])}}}return{transitions:r,startState:n,acceptStates:s}}class pn extends L{constructor(t,n,r,s,o,i){super();b(this,"startVertex");b(this,"graph");b(this,"label");b(this,"maxHops");b(this,"vertexPredicate");b(this,"score");this.startVertex=t,this.graph=n,this.label=r??null,this.maxHops=s??1/0,this.vertexPredicate=o??null,this.score=i??1}execute(t){const n=t.graphStore,r=this.graph,s=new Set,o=[],i=[[this.startVertex,0]];s.add(this.startVertex);const a=new Set,l=new Set;for(;i.length>0;){const[u,f]=i.shift(),d=n.getVertex(u);if(!d||this.vertexPredicate&&!this.vertexPredicate(d))continue;a.add(u);const p=this.score/(1+f);if(o.push(ae(u,{score:p,fields:{...d.properties,_depth:f}})),f<this.maxHops){const m=n.neighbors(u,r,this.label,"out");for(const y of m)s.has(y)||(s.add(y),i.push([y,f+1]));const _=n.outEdgeIds(u,r);for(const y of _){const x=n.getEdge(y);x&&(this.label===null||x.label===this.label)&&l.add(y)}}}const c=new se(o);for(const u of o)c.setGraphPayload(u.docId,we({subgraphVertices:a,subgraphEdges:l,score:u.payload.score,graphName:r}));return c}}class hr extends L{constructor(t,n,r){super();b(this,"pattern");b(this,"graph");b(this,"score");this.pattern=t,this.graph=n,this.score=r??1}execute(t){const n=t.graphStore,r=this._backtrackSearch(n);return this._buildPostingList(n,r)}_backtrackSearch(t){const n=this._computeCandidates(t),r=[],s=new Map,o=this.pattern.vertexPatterns.map(i=>i.variable);return this._backtrack(t,o,0,s,n,r),r}_computeCandidates(t){const n=new Map,r=t.vertexIdsInGraph(this.graph);for(const o of this.pattern.vertexPatterns){let i=new Set(r);if(o.constraints.length>0){const a=new Set;for(const l of i){const c=t.getVertex(l);if(c){let u=!0;for(const f of o.constraints)if(!f(c)){u=!1;break}u&&a.add(l)}}i=a}n.set(o.variable,i)}let s=!0;for(;s;){s=!1;for(const o of this.pattern.edgePatterns){if(o.negated)continue;const i=n.get(o.sourceVar),a=n.get(o.targetVar);if(!i||!a)continue;const l=new Set;for(const u of i){const f=t.neighbors(u,this.graph,o.label,"out");let d=!1;for(const p of f)if(a.has(p)){d=!0;break}d&&l.add(u)}l.size<i.size&&(n.set(o.sourceVar,l),s=!0);const c=new Set;for(const u of a){const f=t.neighbors(u,this.graph,o.label,"in");let d=!1;for(const p of f)if(l.has(p)){d=!0;break}d&&c.add(u)}c.size<a.size&&(n.set(o.targetVar,c),s=!0)}}return n}_backtrack(t,n,r,s,o,i){if(r===n.length){this._validateAllEdges(t,s)&&this._checkNegatedEdges(t,s)&&i.push(new Map(s));return}let a=r,l=1/0;for(let d=r;d<n.length;d++){const p=n[d],m=o.get(p),_=m?m.size:0;_<l&&(l=_,a=d)}if(a!==r){const d=n[r];n[r]=n[a],n[a]=d}const c=n[r],u=o.get(c)??new Set,f=new Set(s.values());for(const d of u)f.has(d)||(s.set(c,d),this._validateEdgesFor(t,s,c)&&this._backtrack(t,n,r+1,s,o,i),s.delete(c))}_validateEdgesFor(t,n,r){for(const s of this.pattern.edgePatterns){if(s.negated||s.sourceVar!==r&&s.targetVar!==r)continue;const o=n.get(s.sourceVar),i=n.get(s.targetVar);if(o===void 0||i===void 0)continue;if(!t.neighbors(o,this.graph,s.label,"out").includes(i))return!1;if(s.constraints.length>0){const l=t.outEdgeIds(o,this.graph);let c=!1;for(const u of l){const f=t.getEdge(u);if(f&&f.targetId===i&&(s.label===null||f.label===s.label)){let d=!0;for(const p of s.constraints)if(!p(f)){d=!1;break}if(d){c=!0;break}}}if(!c)return!1}}return!0}_validateAllEdges(t,n){for(const r of this.pattern.edgePatterns){if(r.negated)continue;const s=n.get(r.sourceVar),o=n.get(r.targetVar);if(s===void 0||o===void 0||!t.neighbors(s,this.graph,r.label,"out").includes(o))return!1;if(r.constraints.length>0){const a=t.outEdgeIds(s,this.graph);let l=!1;for(const c of a){const u=t.getEdge(c);if(u&&u.targetId===o&&(r.label===null||u.label===r.label)){let f=!0;for(const d of r.constraints)if(!d(u)){f=!1;break}if(f){l=!0;break}}}if(!l)return!1}}return!0}_checkNegatedEdges(t,n){for(const r of this.pattern.edgePatterns){if(!r.negated)continue;const s=n.get(r.sourceVar),o=n.get(r.targetVar);if(s===void 0||o===void 0)continue;if(t.neighbors(s,this.graph,r.label,"out").includes(o))return!1}return!0}_collectMatchEdges(t,n){const r=new Set;for(const s of this.pattern.edgePatterns){if(s.negated)continue;const o=n.get(s.sourceVar),i=n.get(s.targetVar);if(o===void 0||i===void 0)continue;const a=t.outEdgeIds(o,this.graph);for(const l of a){const c=t.getEdge(l);c&&c.targetId===i&&(s.label===null||c.label===s.label)&&r.add(l)}}return r}_buildPostingList(t,n){const r=[],s=new Map;for(let i=0;i<n.length;i++){const a=n[i],l=new Set(a.values()),c=this._collectMatchEdges(t,a),u=i,f={};for(const[d,p]of a)f[d]=p;r.push(ae(u,{score:this.score,fields:f})),s.set(u,we({subgraphVertices:l,subgraphEdges:c,score:this.score,graphName:this.graph}))}const o=new se(r);for(const[i,a]of s)o.setGraphPayload(i,a);return o}}let fr=0;function Se(){return{id:fr++}}function dr(){fr=0}function je(h){if(h instanceof Ne){const e=Se(),t=Se();return{states:[e,t],transitions:[{from:e.id,to:t.id,label:h.name}],startState:e.id,acceptState:t.id}}if(h instanceof Ge){const e=je(h.left),t=je(h.right),n=[...e.transitions,...t.transitions,{from:e.acceptState,to:t.startState,label:null}];return{states:[...e.states,...t.states],transitions:n,startState:e.startState,acceptState:t.acceptState}}if(h instanceof mt){const e=Se(),t=Se(),n=je(h.left),r=je(h.right),s=[...n.transitions,...r.transitions,{from:e.id,to:n.startState,label:null},{from:e.id,to:r.startState,label:null},{from:n.acceptState,to:t.id,label:null},{from:r.acceptState,to:t.id,label:null}];return{states:[e,t,...n.states,...r.states],transitions:s,startState:e.id,acceptState:t.id}}if(h instanceof _t){const e=Se(),t=Se(),n=je(h.inner),r=[...n.transitions,{from:e.id,to:n.startState,label:null},{from:e.id,to:t.id,label:null},{from:n.acceptState,to:n.startState,label:null},{from:n.acceptState,to:t.id,label:null}];return{states:[e,t,...n.states],transitions:r,startState:e.id,acceptState:t.id}}if(h instanceof yt){if(h.minCount===0&&h.maxCount===0){const t=Se();return{states:[t],transitions:[],startState:t.id,acceptState:t.id}}let e=null;for(let t=0;t<h.minCount;t++){const n=je(new Ne(h.name));if(e===null)e=n;else{const r=[...e.transitions,...n.transitions,{from:e.acceptState,to:n.startState,label:null}];e={states:[...e.states,...n.states],transitions:r,startState:e.startState,acceptState:n.acceptState}}}for(let t=h.minCount;t<h.maxCount;t++){const n=je(new Ne(h.name));if(e===null){const r=Se(),s=Se(),o=[...n.transitions,{from:r.id,to:n.startState,label:null},{from:r.id,to:s.id,label:null},{from:n.acceptState,to:s.id,label:null}];e={states:[r,s,...n.states],transitions:o,startState:r.id,acceptState:s.id}}else{const r=Se(),s=[...e.transitions,...n.transitions,{from:e.acceptState,to:n.startState,label:null},{from:e.acceptState,to:r.id,label:null},{from:n.acceptState,to:r.id,label:null}];e={states:[...e.states,r,...n.states],transitions:s,startState:e.startState,acceptState:r.id}}}if(e===null){const t=Se();return{states:[t],transitions:[],startState:t.id,acceptState:t.id}}return e}throw new Error(`Unsupported RPQ expression type: ${String(h)}`)}class pr extends L{constructor(t,n,r,s){super();b(this,"pathExpr");b(this,"graph");b(this,"startVertex");b(this,"score");this.pathExpr=t,this.graph=n,this.startVertex=r??null,this.score=s??1}execute(t){const n=t.graphStore,r=this._tryIndexLookup(t,n);if(r!==null)return r;dr();const s=je(this.pathExpr),o=ur(s),i=[],a=new Map,l=new Set,c=[];if(this.startVertex!==null)c.push(this.startVertex);else{const d=n.vertexIdsInGraph(this.graph);for(const p of d)c.push(p)}let u=0;for(const d of c){const p=this._simulateDfa(n,o,d);for(const[m,_]of p){const y=`${String(d)}-${String(m)}`;if(l.has(y))continue;l.add(y);const x=u++;i.push(ae(x,{score:this.score,fields:{start:d,end:m}})),a.set(x,we({subgraphVertices:new Set([d,m]),subgraphEdges:_,score:this.score,graphName:this.graph}))}}const f=new se(i);for(const[d,p]of a)f.setGraphPayload(d,p);return f}_simulateDfa(t,n,r){const s=[],o=[[r,n.startState,new Set]],i=new Set;for(i.add(`${String(r)}:${n.startState}`),n.acceptStates.has(n.startState)&&s.push([r,new Set]);o.length>0;){const[a,l,c]=o.shift(),u=n.transitions.get(l);if(u)for(const[f,d]of u){const p=t.outEdgeIds(a,this.graph);for(const m of p){const _=t.getEdge(m);if(!_||_.label!==f)continue;const y=_.targetId,x=`${String(y)}:${d}`;if(i.has(x))continue;i.add(x);const w=new Set(c);w.add(m),n.acceptStates.has(d)&&s.push([y,w]),o.push([y,d,w])}}}return s}_tryIndexLookup(t,n){const r=t.pathIndex;if(!r||!r.hasPath||!r.lookup)return null;const s=this._extractLabelSequence(this.pathExpr);if(s===null||!r.hasPath(s,this.graph))return null;const o=r.lookup(s,this.graph),i=[];let a=0;for(const[l,c]of o)this.startVertex!==null&&l!==this.startVertex||(i.push(ae(a,{score:this.score,fields:{start:l,end:c}})),a++);return new se(i)}_extractLabelSequence(t){if(t instanceof Ne)return[t.name];if(t instanceof Ge){const n=this._extractLabelSequence(t.left),r=this._extractLabelSequence(t.right);if(n!==null&&r!==null)return[...n,...r]}return null}}class gr extends L{constructor(t,n,r){super();b(this,"source");b(this,"propertyName");b(this,"aggFn");this.source=t,this.propertyName=n,this.aggFn=r??(s=>{if(s.length===0)return 0;let o=0;for(let i=0;i<s.length;i++)o+=s[i];return o/s.length})}execute(t){const n=t.graphStore,r=this.source.execute(t),s=[];for(const a of r){const l=n.getVertex(a.docId);if(l){const c=l.properties[this.propertyName];typeof c=="number"&&s.push(c)}}const o=this.aggFn(s),i=[];for(const a of r)i.push({docId:a.docId,payload:B({positions:a.payload.positions,score:o,fields:{...a.payload.fields,_aggregated:o,_property:this.propertyName}})});return new j(i)}}class ro extends L{constructor(t,n,r){super();b(this,"pathExpr");b(this,"graph");b(this,"startVertex");b(this,"weightProperty");b(this,"aggregation");b(this,"weightThreshold");b(this,"score");this.pathExpr=t,this.graph=n,this.startVertex=(r==null?void 0:r.startVertex)??null,this.weightProperty=(r==null?void 0:r.weightProperty)??"weight",this.aggregation=(r==null?void 0:r.aggregation)??"sum",this.weightThreshold=(r==null?void 0:r.weightThreshold)??null,this.score=(r==null?void 0:r.score)??1}execute(t){const n=t.graphStore;dr();const r=je(this.pathExpr),s=ur(r),o=[],i=new Map,a=new Set,l=[];if(this.startVertex!==null)l.push(this.startVertex);else{const f=n.vertexIdsInGraph(this.graph);for(const d of f)l.push(d)}let c=0;for(const f of l){const d=this._simulateWeightedDfa(n,s,f);for(const[p,m,_]of d){if(this.weightThreshold!==null&&_<this.weightThreshold)continue;const y=`${String(f)}-${String(p)}`;if(a.has(y))continue;a.add(y);const x=c++;o.push(ae(x,{score:_*this.score,fields:{start:f,end:p,weight:_,path_length:m.size}})),i.set(x,we({subgraphVertices:new Set([f,p]),subgraphEdges:m,score:_*this.score,graphName:this.graph}))}}const u=new se(o);for(const[f,d]of i)u.setGraphPayload(f,d);return u}_simulateWeightedDfa(t,n,r){const s=[],o=this.aggregation==="product"?1:0,i=[[r,n.startState,new Set,o]],a=new Set;for(a.add(`${String(r)}:${n.startState}`),n.acceptStates.has(n.startState)&&s.push([r,new Set,o]);i.length>0;){const[l,c,u,f]=i.shift(),d=n.transitions.get(c);if(d)for(const[p,m]of d){const _=t.outEdgeIds(l,this.graph);for(const y of _){const x=t.getEdge(y);if(!x||x.label!==p)continue;const w=x.targetId,E=`${String(w)}:${m}`;if(a.has(E))continue;a.add(E);const I=new Set(u);I.add(y);const S=typeof x.properties[this.weightProperty]=="number"?x.properties[this.weightProperty]:1;let N;switch(this.aggregation){case"sum":N=f+S;break;case"min":N=u.size===0?S:Math.min(f,S);break;case"max":N=Math.max(f,S);break;case"product":N=f*S;break}n.acceptStates.has(m)&&s.push([w,I,N]),i.push([w,m,I,N])}}}return s}}class gn extends L{constructor(t){super();b(this,"startVertex");b(this,"graph");b(this,"temporalFilter");b(this,"label");b(this,"maxHops");b(this,"vertexPredicate");b(this,"score");this.startVertex=t.startVertex,this.graph=t.graph,this.temporalFilter=t.temporalFilter,this.label=t.label??null,this.maxHops=t.maxHops??1/0,this.vertexPredicate=t.vertexPredicate??null,this.score=t.score??1}execute(t){const n=t.graphStore,r=new Set,s=[],o=new Set,i=new Set,a=[[this.startVertex,0]];for(r.add(this.startVertex);a.length>0;){const[c,u]=a.shift(),f=n.getVertex(c);if(!f||this.vertexPredicate&&!this.vertexPredicate(f))continue;o.add(c);const d=this.score/(1+u);if(s.push(ae(c,{score:d,fields:{...f.properties,_depth:u}})),u<this.maxHops){const p=n.outEdgeIds(c,this.graph);for(const m of p){const _=n.getEdge(m);_&&(this.label!==null&&_.label!==this.label||this.temporalFilter.isValid(_)&&(i.add(m),r.has(_.targetId)||(r.add(_.targetId),a.push([_.targetId,u+1]))))}}}const l=new se(s);for(const c of s)l.setGraphPayload(c.docId,we({subgraphVertices:o,subgraphEdges:i,score:c.payload.score,graphName:this.graph}));return l}}class jt{constructor(e){b(this,"timestamp");b(this,"timeRange");const t=(e==null?void 0:e.timestamp)??null,n=(e==null?void 0:e.timeRange)??null;if(t!==null&&n!==null)throw new Error("TemporalFilter: timestamp and timeRange are mutually exclusive");this.timestamp=t,this.timeRange=n}isValid(e){const t=e.properties.valid_from,n=e.properties.valid_to;if(typeof t=="number"||typeof n=="number")return this._isValidRange(typeof t=="number"?t:null,typeof n=="number"?n:null);const s=e.properties.timestamp;if(typeof s!="number")return!0;if(this.timestamp!==null)return s<=this.timestamp;if(this.timeRange!==null){const[o,i]=this.timeRange;return s>=o&&s<=i}return!0}_isValidRange(e,t){if(this.timestamp!==null)return!(e!==null&&this.timestamp<e||t!==null&&this.timestamp>t);if(this.timeRange!==null){const[n,r]=this.timeRange;return!(e!==null&&e>r||t!==null&&t<n)}return!0}}class mr extends L{constructor(t){super();b(this,"damping");b(this,"maxIterations");b(this,"tolerance");b(this,"graph");this.damping=t.damping??.85,this.maxIterations=t.maxIterations??100,this.tolerance=t.tolerance??1e-6,this.graph=t.graph}execute(t){const n=t.graphStore,r=[...n.vertexIdsInGraph(this.graph)],s=r.length;if(s===0)return new se;const o=new Map;for(let f=0;f<r.length;f++)o.set(r[f],f);let i=new Float64Array(s);i.fill(1/s);const a=new Float64Array(s);for(let f=0;f<s;f++){const d=r[f],p=n.outEdgeIds(d,this.graph);a[f]=p.size}for(let f=0;f<this.maxIterations;f++){const d=new Float64Array(s);d.fill((1-this.damping)/s);for(let m=0;m<s;m++){const _=r[m];if(a[m]===0){const y=i[m]/s;for(let x=0;x<s;x++)d[x]=d[x]+this.damping*y}else{const y=i[m]/a[m],x=n.neighbors(_,this.graph,null,"out");for(const w of x){const E=o.get(w);E!==void 0&&(d[E]=d[E]+this.damping*y)}}}let p=0;for(let m=0;m<s;m++)p+=Math.abs(d[m]-i[m]);if(i=d,p<this.tolerance)break}const l=[];for(let f=0;f<s;f++){const d=r[f];l.push(ae(d,{score:i[f],fields:{pagerank:i[f]}}))}const c=new Set(r),u=new se(l);for(const f of l)u.setGraphPayload(f.docId,we({subgraphVertices:c,subgraphEdges:new Set,score:f.payload.score,graphName:this.graph}));return u}}class _r extends L{constructor(t){super();b(this,"maxIterations");b(this,"tolerance");b(this,"graph");this.maxIterations=t.maxIterations??100,this.tolerance=t.tolerance??1e-6,this.graph=t.graph}execute(t){const n=t.graphStore,r=[...n.vertexIdsInGraph(this.graph)],s=r.length;if(s===0)return new se;const o=new Map;for(let f=0;f<r.length;f++)o.set(r[f],f);let i=new Float64Array(s),a=new Float64Array(s);i.fill(1),a.fill(1);for(let f=0;f<this.maxIterations;f++){const d=new Float64Array(s),p=new Float64Array(s);for(let x=0;x<s;x++){const w=r[x],E=n.neighbors(w,this.graph,null,"in");let I=0;for(const S of E){const N=o.get(S);N!==void 0&&(I+=i[N])}d[x]=I}for(let x=0;x<s;x++){const w=r[x],E=n.neighbors(w,this.graph,null,"out");let I=0;for(const S of E){const N=o.get(S);N!==void 0&&(I+=d[N])}p[x]=I}let m=0,_=0;for(let x=0;x<s;x++)m+=d[x]*d[x],_+=p[x]*p[x];if(m=Math.sqrt(m),_=Math.sqrt(_),m>0)for(let x=0;x<s;x++)d[x]=d[x]/m;if(_>0)for(let x=0;x<s;x++)p[x]=p[x]/_;let y=0;for(let x=0;x<s;x++)y+=Math.abs(d[x]-a[x]),y+=Math.abs(p[x]-i[x]);if(a=d,i=p,y<this.tolerance)break}const l=[];for(let f=0;f<s;f++){const d=r[f],p=a[f]+i[f];l.push(ae(d,{score:p,fields:{authority:a[f],hub:i[f]}}))}const c=new Set(r),u=new se(l);for(const f of l)u.setGraphPayload(f.docId,we({subgraphVertices:c,subgraphEdges:new Set,score:f.payload.score,graphName:this.graph}));return u}}class yr extends L{constructor(t){super();b(this,"graph");this.graph=t.graph}execute(t){const n=t.graphStore,r=[...n.vertexIdsInGraph(this.graph)],s=r.length;if(s===0)return new se;const o=new Map;for(let u=0;u<r.length;u++)o.set(r[u],u);const i=new Float64Array(s);for(let u=0;u<s;u++){const f=[],d=new Array(s);for(let w=0;w<s;w++)d[w]=new Set;const p=new Float64Array(s);p[u]=1;const m=new Float64Array(s);m.fill(-1),m[u]=0;const _=[u];let y=0;for(;y<_.length;){const w=_[y];y++,f.push(w);const E=r[w],I=n.neighbors(E,this.graph,null,"out"),S=n.neighbors(E,this.graph,null,"in"),N=new Set([...I,...S]);for(const A of N){const M=o.get(A);M!==void 0&&(m[M]<0&&(_.push(M),m[M]=m[w]+1),m[M]===m[w]+1&&(p[M]=p[M]+p[w],d[M].add(w)))}}const x=new Float64Array(s);for(;f.length>0;){const w=f.pop();for(const E of d[w])x[E]=x[E]+p[E]/p[w]*(1+x[w]);w!==u&&(i[w]=i[w]+x[w])}}for(let u=0;u<s;u++)i[u]=i[u]/2;const a=[];for(let u=0;u<s;u++){const f=r[u];a.push(ae(f,{score:i[u],fields:{betweenness:i[u]}}))}const l=new Set(r),c=new se(a);for(const u of a)c.setGraphPayload(u.docId,we({subgraphVertices:l,subgraphEdges:new Set,score:u.payload.score,graphName:this.graph}));return c}}class mn extends L{constructor(t){super();b(this,"kLayers");b(this,"aggregation");b(this,"propertyName");b(this,"graph");this.kLayers=t.kLayers??2,this.aggregation=t.aggregation??"mean",this.propertyName=t.propertyName??"feature",this.graph=t.graph}execute(t){const n=t.graphStore,r=[...n.vertexIdsInGraph(this.graph)],s=r.length;if(s===0)return new se;const o=new Map;for(let u=0;u<r.length;u++)o.set(r[u],u);let i=new Float64Array(s);for(let u=0;u<s;u++){const f=r[u],d=n.getVertex(f);if(d){const p=d.properties[this.propertyName];typeof p=="number"?i[u]=p:i[u]=0}}for(let u=0;u<this.kLayers;u++){const f=new Float64Array(s);for(let d=0;d<s;d++){const p=r[d],m=n.neighbors(p,this.graph,null,"out"),_=n.neighbors(p,this.graph,null,"in"),y=new Set([...m,..._]),x=[];for(const E of y){const I=o.get(E);I!==void 0&&x.push(i[I])}let w;if(x.length===0)w=i[d];else if(this.aggregation==="mean"){let E=0;for(const I of x)E+=I;w=E/x.length}else if(this.aggregation==="sum"){let E=0;for(const I of x)E+=I;w=E}else{let E=x[0];for(let I=1;I<x.length;I++)x[I]>E&&(E=x[I]);w=E}f[d]=w+i[d]}i=f}for(let u=0;u<s;u++)i[u]=1/(1+Math.exp(-i[u]));const a=[];for(let u=0;u<s;u++){const f=r[u];a.push(ae(f,{score:i[u],fields:{_mp_score:i[u]}}))}const l=new Set(r),c=new se(a);for(const u of a)c.setGraphPayload(u.docId,we({subgraphVertices:l,subgraphEdges:new Set,score:u.payload.score,graphName:this.graph}));return c}}class br extends L{constructor(t){super();b(this,"graph");b(this,"kHops");this.graph=t.graph,this.kHops=t.kHops??2}execute(t){const n=t.graphStore,r=[...n.vertexIdsInGraph(this.graph)],s=r.length;if(s===0)return new se;const i=[...n.vertexLabelCounts(this.graph).keys()].sort(),a=new Map;for(let f=0;f<i.length;f++)a.set(i[f],f);const l=[],c=new Set(r);for(const f of r){const d=n.getVertex(f);if(!d)continue;const p=n.outEdgeIds(f,this.graph),m=n.inEdgeIds(f,this.graph),_=p.size,y=m.size,x=_+y,w=s>1?x/(2*(s-1)):0,E=new Float64Array(i.length),I=new Set;for(const T of n.neighbors(f,this.graph,null,"out"))I.add(T);for(const T of n.neighbors(f,this.graph,null,"in"))I.add(T);if(I.size>0){for(const T of I){const q=n.getVertex(T);if(q){const H=a.get(q.label);H!==void 0&&(E[H]=E[H]+1)}}for(let T=0;T<E.length;T++)E[T]=E[T]/I.size}const S=new Float64Array(this.kHops),N=new Set([f]);let A=new Set([f]);for(let T=0;T<this.kHops;T++){const q=new Set;for(const H of A){for(const le of n.neighbors(H,this.graph,null,"out"))N.has(le)||(N.add(le),q.add(le));for(const le of n.neighbors(H,this.graph,null,"in"))N.has(le)||(N.add(le),q.add(le))}S[T]=s>1?q.size/(s-1):0,A=q}const M=1+i.length+this.kHops,C=new Float64Array(M);C[0]=w;for(let T=0;T<E.length;T++)C[1+T]=E[T];for(let T=0;T<S.length;T++)C[1+i.length+T]=S[T];let O=0;for(let T=0;T<M;T++)O+=C[T]*C[T];const F=Math.sqrt(O);l.push(ae(f,{score:F,fields:{embedding:C,out_degree:_,in_degree:y,label:d.label}}))}const u=new se(l);for(const f of l)u.setGraphPayload(f.docId,we({subgraphVertices:c,subgraphEdges:new Set,score:f.payload.score,graphName:this.graph}));return u}}function so(h){if(h>=0)return 1/(1+Math.exp(-h));const e=Math.exp(h);return e/(1+e)}function wr(h){return h<=0?-10:h>=1?10:Math.log(h/(1-h))}class oo{constructor(e,t,n){b(this,"_bm25");b(this,"_transform");b(this,"_priorFn");this._bm25=new ct(e.bm25,t),this._transform=new W.BayesianProbabilityTransform(e.alpha,e.beta,e.baseRate===.5?null:e.baseRate),this._priorFn=n}scoreWithPrior(e,t,n,r){const s=this._bm25.idf(n),o=this._bm25.scoreWithIdf(e,t,s),i=this._bm25.params.k1>0?t:1,a=i>0?t/i:1,l=this._transform.scoreToProbability(o,e,a);let c=this._priorFn(r);c=Math.max(1e-10,Math.min(1-1e-10,c));const u=wr(l)+wr(c);return so(u)}}function io(h,e=30){return t=>{const n=t[h];if(n==null)return .5;let r;if(n instanceof Date)r=n;else if(typeof n=="string"){if(r=new Date(n),isNaN(r.getTime()))return .5}else return .5;const s=(Date.now()-r.getTime())/864e5;return .5+.4*Math.exp(-s/e)}}function ao(h,e){const t=e??{high:.8,medium:.6,low:.4};return n=>{const r=n[h];if(r==null)return .5;const s=typeof r=="string"?r:String(r);return t[s]??.5}}function lo(h,e,t=42,n="kaiming",r=null,s=null,o=0,i=0){if(n==="orthogonal")return Ws(h,e,t);if(n==="gabor")return Ks(h,e,t);if(n==="kmeans"){if(r===null||s===null)throw new Error("kmeans init requires training_data");return Js(h,e,r,s,o,i,t)}let a=t;function l(){a^=a<<13,a^=a>>17,a^=a<<5;const d=(a>>>0)/4294967295;a^=a<<13,a^=a>>17,a^=a<<5;const p=(a>>>0)/4294967295;return Math.sqrt(-2*Math.log(Math.max(1e-10,d)))*Math.cos(2*Math.PI*p)}const c=e*9,u=Math.sqrt(2/c),f=new Float64Array(h*e*9);for(let d=0;d<f.length;d++)f[d]=l()*u;return f}class vr{constructor(e,t=6,n=.5,r=!1,s){b(this,"_attn");this._attn=new W.AttentionLogOddsWeights(e,t,n,r,0,s??null)}get nSignals(){return this._attn.nSignals}get nQueryFeatures(){return this._attn.nQueryFeatures}fuse(e,t){const n=this._attn.weightsMatrix,r=e.length,s=t.length,o=[];for(let l=0;l<r;l++){let c=0;const u=n[l];if(u)for(let f=0;f<s;f++)c+=(u[f]??0)*(t[f]??0);o.push(c)}let i=-1/0;for(const l of o)l>i&&(i=l);let a=0;for(let l=0;l<o.length;l++)o[l]=Math.exp(o[l]-i),a+=o[l];for(let l=0;l<o.length;l++)o[l]=o[l]/a;return W.logOddsConjunction(e,this._attn.alpha,o)}fit(e,t,n){this._attn.fit(e,t,n)}update(e,t,n){this._attn.update(e,t,n)}stateDict(){return{weights_matrix:this._attn.weightsMatrix,alpha:this._attn.alpha,n_signals:this._attn.nSignals,n_query_features:this._attn.nQueryFeatures}}loadStateDict(e){this._attn=new W.AttentionLogOddsWeights(e.n_signals,e.n_query_features,e.alpha);const t=e.weights_matrix;if(t!=null){const n=t;for(let r=0;r<n.length;r++)for(let s=0;s<n[r].length;s++)this._attn.weightsMatrix[r][s]=n[r][s]}}}class co{constructor(e,t=4,n=6,r=.5,s=!1){b(this,"_mh");b(this,"_nQueryFeatures");this._mh=new W.MultiHeadAttentionLogOddsWeights(t,e,n,r,s),this._nQueryFeatures=n}get nSignals(){var e;return((e=this._mh.heads[0])==null?void 0:e.nSignals)??0}get nQueryFeatures(){return this._nQueryFeatures}fuse(e,t){return this._mh.combine(e,t,!1)}fit(e,t,n){this._mh.fit(e,t,n)}stateDict(){var e;return{n_heads:this._mh.nHeads,n_signals:this.nSignals,n_query_features:this._nQueryFeatures,alpha:((e=this._mh.heads[0])==null?void 0:e.alpha)??.5}}loadStateDict(e){this._mh=new W.MultiHeadAttentionLogOddsWeights(e.n_heads,e.n_signals,e.n_query_features,e.alpha),this._nQueryFeatures=e.n_query_features}}class xr{constructor(e,t=.5){b(this,"_learnable");this._learnable=new W.LearnableLogOddsWeights(e,t)}get nSignals(){return this._learnable.nSignals}fuse(e){const t=[...this._learnable.weights];return W.logOddsConjunction(e,this._learnable.alpha,t)}update(e,t,n){const r=e.map(o=>{const i=Math.max(1e-10,Math.min(.9999999999,o));return Math.log(i/(1-i))}),s=t-this.fuse(e);this._learnable.update(r,s,n)}stateDict(){return{weights:[...this._learnable.weights],alpha:this._learnable.alpha,n_signals:this._learnable.nSignals}}loadStateDict(e){this._learnable=new W.LearnableLogOddsWeights(e.n_signals,e.alpha);const t=e.weights;for(let n=0;n<t.length;n++)this._learnable.weights[n]=t[n]}}class uo{constructor(e){b(this,"_index");this._index=e}get nFeatures(){return 6}extract(e,t){const n=this._index.stats,r=n.totalDocs;if(r===0)return new Float64Array(6);const s=t??"_default",o=[];let i=0;for(const m of e){const _=n.docFreq(s,m);if(_>0){i++;const y=Math.log((r-_+.5)/(_+.5)+1);o.push(y)}}if(o.length===0)return new Float64Array([0,0,0,0,e.length,0]);let a=0,l=-1/0,c=1/0;for(const m of o)a+=m,m>l&&(l=m),m<c&&(c=m);const u=a/o.length,f=o.length/Math.max(1,r),d=e.length,p=i/Math.max(1,e.length);return new Float64Array([u,l,c,f,d,p])}}class Pe{constructor(e,t){b(this,"_columnStats");b(this,"_graphStats");b(this,"_graphStore");e instanceof Map?(this._columnStats=e,this._graphStats=(t==null?void 0:t.graphStats)??null,this._graphStore=(t==null?void 0:t.graphStore)??null):e!=null&&!(e instanceof Map)?(this._columnStats=e.columnStats??new Map,this._graphStats=e.graphStats??(t==null?void 0:t.graphStats)??null,this._graphStore=e.graphStore??(t==null?void 0:t.graphStore)??null):(this._columnStats=new Map,this._graphStats=(t==null?void 0:t.graphStats)??null,this._graphStore=(t==null?void 0:t.graphStore)??null)}estimate(e,t){const n=t.totalDocs>0?t.totalDocs:1;if(e instanceof de){const r=e.field??"_default";return t.docFreq(r,e.term)}if(e instanceof be)return n*Pe._vectorSelectivity(e.threshold);if(e instanceof Ce)return e.k;if(e instanceof z)return n*this._filterSelectivity(e.field,e.predicate,n);if(e instanceof ue)return this.estimate(e.source,t);if(e instanceof U){const r=e.operands.map(i=>this.estimate(i,t)).sort((i,a)=>i-a);if(r.length===0)return 0;const s=this._intersectionDamping(e.operands);let o=r[0];for(let i=1;i<r.length;i++){const a=n>0?r[i]/n:1;o*=a**s}if(this._columnStats.size>0){const i=[];for(const a of e.operands)if(a instanceof z&&a.field){const l=this._columnStats.get(a.field);l!==void 0&&i.push(Pt(l))}if(i.length>0){const a=fo(n,i);o=Math.max(o,a)}}return Math.max(1,o)}if(e instanceof ee){const r=e.operands.map(s=>this.estimate(s,t));return Math.min(n,r.reduce((s,o)=>s+o,0))}if(e instanceof ce){const r=this.estimate(e.operand,t);return Math.max(0,n-r)}if(e instanceof xe)return this.estimate(e.source,t)*.5;if(e instanceof Re){if(e.stages.length===0)return 0;const[,r]=e.stages[e.stages.length-1];return typeof r=="number"?r:n*.5}return Math.max(1,Math.floor(e.costEstimate(t)))}_intersectionDamping(e){const t=[];for(const n of e)n instanceof z&&t.push(n.field);if(t.length<2)return .5;if(new Set(t).size===1)return .1;if(this._columnStats.size>0&&t.length>=2){const n=this._columnStats.get(t[0]),r=this._columnStats.get(t[1]);if(n!==void 0&&r!==void 0){const s=ho(n,r,.1);if(s>1)return .2;if(s>.5)return .3}}return .5}static _vectorSelectivity(e){return e>=.9?.01:e>=.7?.05:e>=.5?.1:.2}estimateJoinSide(e,t,n){return e instanceof L?this.estimate(e,t):(e!=null&&typeof e.execute=="function",n)}sampleGraphCardinality(e,t=100){if(this._graphStats===null)return-1;const n=this._graphStats.numVertices;if(n<=0)return 0;const r=e.vertexPatterns??[],s=e.edgePatterns??[],o=r.length;if(o===0)return 0;const i=this._graphStats.numEdges,a=i>0&&n>0?i/(n*n):.01;let l=1;for(const u of s)u.label!==null&&(l*=this._graphStats.labelSelectivity(u.label));const c=Math.pow(n,o)*Math.pow(a,s.length)*l;return Math.max(1,Math.floor(c))}estimateJoin(e,t,n){return n<=0?0:e*t/n}_filterSelectivity(e,t,n){var l;const r=this._columnStats.get(e);if(r===void 0||r.distinctCount<=0)return .5;const s=r.distinctCount;let o;const i=t,a=((l=i.constructor)==null?void 0:l.name)??"";if(a==="Equals"||i.type==="equals"?o=Pe._equalitySelectivity(r,i.target,s):a==="NotEquals"||i.type==="not_equals"?o=1-Pe._equalitySelectivity(r,i.target,s):a==="InSet"||i.type==="in_set"?o=Math.min(1,(i.values??[]).reduce((c,u)=>c+Pe._equalitySelectivity(r,u,s),0)):a==="Between"||i.type==="between"?o=this._rangeSelectivity(r,i.low,i.high):a==="GreaterThan"||a==="GreaterThanOrEqual"||i.type==="gt"||i.type==="gte"?o=this._gtSelectivity(r,i.target):a==="LessThan"||a==="LessThanOrEqual"||i.type==="lt"||i.type==="lte"?o=this._ltSelectivity(r,i.target):o=.5,r.distinctCount>1){const c=Pt(r);if(c>0){const u=1/2**c;o=Math.max(u,o)}}return o}static _equalitySelectivity(e,t,n){if(e.mcvValues.length>0){for(let r=0;r<e.mcvValues.length;r++)if(e.mcvValues[r]===t)return e.mcvFrequencies[r]}return n>0?1/n:1}static histogramFraction(e,t,n){if(e.length<2)return .5;const r=e.length-1;let s=0;for(let o=0;o<r;o++){const i=e[o],a=e[o+1];try{if(n<i||t>a)continue;if(t<=i&&n>=a)s+=1;else{const l=a-i;if(l<=0){s+=1;continue}const c=Math.max(t,i),u=Math.min(n,a);s+=(u-c)/l}}catch{s+=1}}return Math.max(0,Math.min(1,s/r))}_rangeSelectivity(e,t,n){if(e.histogram.length>0)return Pe.histogramFraction(e.histogram,t,n);if(e.minValue!=null&&e.maxValue!=null)try{const r=e.maxValue-e.minValue;if(r>0)return Math.max(0,Math.min(1,(n-t)/r))}catch{}return .25}_gtSelectivity(e,t){if(e.histogram.length>0)return Pe.histogramFraction(e.histogram,t,e.histogram[e.histogram.length-1]);if(e.minValue!=null&&e.maxValue!=null)try{const n=e.maxValue-e.minValue;if(n>0)return Math.max(0,(e.maxValue-t)/n)}catch{}return 1/3}_ltSelectivity(e,t){if(e.histogram.length>0)return Pe.histogramFraction(e.histogram,e.histogram[0],t);if(e.minValue!=null&&e.maxValue!=null)try{const n=e.maxValue-e.minValue;if(n>0)return Math.max(0,(t-e.minValue)/n)}catch{}return 1/3}estimateGraphPattern(e,t){if(this._graphStats===null)return 1;const n=this._graphStats,r=n.numVertices>0?n.numVertices:1,s=Math.max(1,Math.ceil(e/2)),o=Math.max(0,e-s),i=r>1?n.numEdges/(r*r):0;let a=1;if(t!==void 0&&n.numEdges>0)for(const u of t){const f=n.labelCounts.get(u)??0;a*=f/n.numEdges}let l=1;if(n.vertexLabelCounts.size>0&&r>0){let u=0;for(const d of n.vertexLabelCounts.values())u+=d;const f=u/(n.vertexLabelCounts.size*r);l=Math.pow(Math.min(1,f),s)}const c=Math.pow(r,s)*Math.pow(i,o)*a*l;return Math.max(1,Math.min(r,Math.floor(c)))}estimatePathQuery(e,t){if(this._graphStats===null)return 1;const n=this._graphStats,r=n.numVertices>0?n.numVertices:1;let s=n.avgOutDegree;if(t!==void 0&&n.numEdges>0){const a=(n.labelCounts.get(t)??0)/n.numEdges;s*=a}const o=r*Math.pow(s,e);return Math.max(1,Math.min(Math.floor(o),n.numEdges))}estimateTraverse(e,t=null){if(this._graphStats!==null){const r=this._graphStats;let s;if(t&&r.labelDegreeMap.size>0)s=r.labelDegreeMap.get(t)??r.avgOutDegree*r.labelSelectivity(t);else{const i=r.labelSelectivity(t);s=r.avgOutDegree*i}const o=r.numVertices>0?r.numVertices:1;return Math.min(o,s**e)}const n=1e3;return Math.min(n,Math.min(n*.1,10)**e)}estimatePatternMatch(e,t,n=[]){if(this._graphStats!==null){const r=this._graphStats,s=r.numVertices>0?r.numVertices:1,o=r.edgeDensity();let i=1;for(const l of n)i*=r.labelSelectivity(l);const a=s**e*o**t*i;return Math.max(1,Math.min(s,a))}return 1}estimateCrossParadigm(e,t,n){const r=t.totalDocs>0?t.totalDocs:1;switch(n){case"text_graph":{const s=this.estimate(e,t),o=this._graphStats!==null?Math.min(1,this._graphStats.avgOutDegree/Math.max(1,this._graphStats.numVertices)):.1;return Math.max(1,Math.floor(s*o))}case"text_vector":{const s=this.estimate(e,t);return Math.max(1,Math.floor(s*.3))}case"graph_vector":{const s=this._graphStats!==null?Math.min(r,this._graphStats.avgOutDegree**2):r*.1;return Math.max(1,Math.floor(s*.2))}case"text_graph_vector":{const s=this.estimate(e,t),o=this._graphStats!==null?Math.min(1,this._graphStats.avgOutDegree/Math.max(1,this._graphStats.numVertices)):.1;return Math.max(1,Math.floor(s*o*.3))}case"log_odds_fusion":return Math.max(1,Math.floor(r*.15));case"prob_bool_fusion":return Math.max(1,Math.floor(r*.25));case"attention_fusion":return Math.max(1,Math.floor(r*.2));case"learned_fusion":return Math.max(1,Math.floor(r*.2));default:return Math.max(1,Math.floor(r*.5))}}estimateTemporalPattern(e,t,n,r,s){const o=this.estimatePatternMatch(e,t,n);if(this._graphStats===null)return o;const i=this._graphStats;let a=1;if(r!==null&&s!==null&&i.minTimestamp!==null&&i.maxTimestamp!==null){const l=i.maxTimestamp-i.minTimestamp;if(l>0){const c=Math.min(s,i.maxTimestamp)-Math.max(r,i.minTimestamp);a=Math.max(0,Math.min(1,c/l))}}else(r!==null||s!==null)&&(a=.5);return Math.max(1,Math.floor(o*a))}estimateTemporalTraverse(e,t,n,r){const s=this.estimateTraverse(e,t);if(this._graphStats===null)return s;const o=this._graphStats;let i=1;if(n!==null&&r!==null&&o.minTimestamp!==null&&o.maxTimestamp!==null){const a=o.maxTimestamp-o.minTimestamp;if(a>0){const l=Math.min(r,o.maxTimestamp)-Math.max(n,o.minTimestamp);i=Math.max(0,Math.min(1,l/a))}}return Math.max(1,Math.floor(s*Math.pow(i,e)))}estimateWeightedRPQ(e,t,n){const r=this.estimatePathQuery(e,t.length>0?t[0]:void 0);let s=1;if(n!==null&&(s=Math.pow(1-n,e)),t.length>1&&this._graphStats!==null){const o=this._graphStats;let i=1;for(const a of t)i*=o.labelSelectivity(a);return Math.max(1,Math.floor(r*s*i))}return Math.max(1,Math.floor(r*s))}estimateBoundedRPQ(e,t,n){if(this._graphStats===null)return 1;const r=this._graphStats,s=r.numVertices>0?r.numVertices:1;let o=r.avgOutDegree;n!==null&&r.numEdges>0&&(o*=r.labelSelectivity(n));let i=0;for(let l=e;l<=t;l++)i+=s*Math.pow(o,l);const a=i/(t-e+1);return Math.max(1,Math.min(Math.floor(a),r.numEdges))}}function Pt(h){const e=h.distinctCount;if(e<=1)return 0;const t=h.mcvFrequencies;if(t.length>0){let r=0,s=1;for(const i of t)s-=i,i>0&&(r-=i*Math.log2(i));const o=Math.max(1,e-t.length);if(s>0&&o>0){const i=s/o;r-=s*Math.log2(i)}return Math.max(0,r)}const n=h.histogram;if(n.length>1){const r=n.length-1,s=1/r;return-r*s*Math.log2(s)}return Math.log2(e)}function ho(h,e,t){const n=Pt(h),r=Pt(e),s=Math.max(1,h.distinctCount),o=Math.max(1,e.distinctCount),i=s*o,a=Math.max(1,i*t),l=Math.log2(Math.max(1,a));return Math.max(0,n+r-l)}function fo(h,e){if(e.length===0||h<=0)return 1;const t=e.reduce((r,s)=>r+s,0),n=h*2**-t;return Math.max(1,n)}class bt{}class po extends bt{identity(){return 0}accumulate(e,t){return e+1}combine(e,t){return e+t}finalize(e){return e}}class go extends bt{identity(){return 0}accumulate(e,t){return e+t}combine(e,t){return e+t}finalize(e){return e}}class mo extends bt{identity(){return[0,0]}accumulate(e,t){return[e[0]+t,e[1]+1]}combine(e,t){return[e[0]+t[0],e[1]+t[1]]}finalize(e){return e[1]===0?0:e[0]/e[1]}}class _o extends bt{identity(){return 1/0}accumulate(e,t){return Math.min(e,t)}combine(e,t){return Math.min(e,t)}finalize(e){return e}}class yo extends bt{identity(){return-1/0}accumulate(e,t){return Math.max(e,t)}combine(e,t){return Math.max(e,t)}finalize(e){return e}}class bo extends L{constructor(t,n,r){super();b(this,"source");b(this,"field");b(this,"monoid");this.source=t,this.field=n,this.monoid=r}execute(t){const n=t.documentStore;let r;this.source?r=this.source.execute(t).entries.map(a=>a.docId):r=n?[...n.docIds].sort((a,l)=>a-l):[];let s=this.monoid.identity();for(const a of r){const l=n?n.getField(a,this.field):void 0;l!=null&&(s=this.monoid.accumulate(s,l))}const o=this.monoid.finalize(s),i=typeof o=="number"?o:0;return j.fromSorted([{docId:0,payload:B({score:i,fields:{_aggregate_field:this.field,_aggregate:o}})}])}costEstimate(t){return t.totalDocs}}class wo extends L{constructor(t,n,r,s){super();b(this,"source");b(this,"groupField");b(this,"aggField");b(this,"monoid");this.source=t,this.groupField=n,this.aggField=r,this.monoid=s}execute(t){const n=this.source.execute(t),r=t.documentStore;if(!r)return new j;const s=new Map;for(const a of n){const l=r.getField(a.docId,this.groupField);if(l==null)continue;const c=String(l);s.has(c)||s.set(c,this.monoid.identity());const u=r.getField(a.docId,this.aggField);u!=null&&s.set(c,this.monoid.accumulate(s.get(c),u))}const i=[...s.entries()].sort((a,l)=>a[0].localeCompare(l[0])).map(([a,l],c)=>{const u=this.monoid.finalize(l);return{docId:c,payload:B({score:typeof u=="number"?u:0,fields:{_group_key:a,_group_field:this.groupField,_aggregate_result:u}})}});return j.fromSorted(i)}}class vo extends L{constructor(t){super();b(this,"pattern");b(this,"graph");b(this,"temporalFilter");b(this,"score");this.pattern=t.pattern,this.graph=t.graph,this.temporalFilter=t.temporalFilter,this.score=t.score??1}execute(t){const n=t.graphStore,r=this._backtrackSearch(n);return this._buildPostingList(n,r)}_backtrackSearch(t){const n=this._computeCandidates(t),r=[],s=new Map,o=this.pattern.vertexPatterns.map(i=>i.variable);return this._backtrack(t,o,0,s,n,r),r}_computeCandidates(t){const n=new Map,r=t.vertexIdsInGraph(this.graph);for(const s of this.pattern.vertexPatterns){let o=new Set(r);if(s.constraints.length>0){const i=new Set;for(const a of o){const l=t.getVertex(a);if(l){let c=!0;for(const u of s.constraints)if(!u(l)){c=!1;break}c&&i.add(a)}}o=i}n.set(s.variable,o)}return n}_backtrack(t,n,r,s,o,i){if(r===n.length){this._validateAllEdges(t,s)&&i.push(new Map(s));return}const a=n[r],l=o.get(a)??new Set,c=new Set(s.values());for(const u of l)c.has(u)||(s.set(a,u),this._validateEdgesFor(t,s,a)&&this._backtrack(t,n,r+1,s,o,i),s.delete(a))}_validateEdgesFor(t,n,r){for(const s of this.pattern.edgePatterns){if(s.negated||s.sourceVar!==r&&s.targetVar!==r)continue;const o=n.get(s.sourceVar),i=n.get(s.targetVar);if(o===void 0||i===void 0)continue;const a=t.outEdgeIds(o,this.graph);let l=!1;for(const c of a){const u=t.getEdge(c);if(!u||u.targetId!==i||s.label!==null&&u.label!==s.label||!this.temporalFilter.isValid(u))continue;let f=!0;for(const d of s.constraints)if(!d(u)){f=!1;break}if(f){l=!0;break}}if(!l)return!1}return!0}_validateAllEdges(t,n){for(const r of this.pattern.edgePatterns){const s=n.get(r.sourceVar),o=n.get(r.targetVar);if(s===void 0||o===void 0)return!1;if(r.negated){const i=t.outEdgeIds(s,this.graph);for(const a of i){const l=t.getEdge(a);if(l&&l.targetId===o&&(r.label===null||l.label===r.label)&&this.temporalFilter.isValid(l))return!1}}else{const i=t.outEdgeIds(s,this.graph);let a=!1;for(const l of i){const c=t.getEdge(l);if(c&&c.targetId===o&&!(r.label!==null&&c.label!==r.label)&&this.temporalFilter.isValid(c)){a=!0;break}}if(!a)return!1}}return!0}_collectMatchEdges(t,n){const r=new Set;for(const s of this.pattern.edgePatterns){if(s.negated)continue;const o=n.get(s.sourceVar),i=n.get(s.targetVar);if(o===void 0||i===void 0)continue;const a=t.outEdgeIds(o,this.graph);for(const l of a){const c=t.getEdge(l);c&&c.targetId===i&&(s.label===null||c.label===s.label)&&this.temporalFilter.isValid(c)&&r.add(l)}}return r}_buildPostingList(t,n){const r=[],s=new Map;for(let i=0;i<n.length;i++){const a=n[i],l=new Set(a.values()),c=this._collectMatchEdges(t,a),u=i,f={};for(const[d,p]of a)f[d]=p;r.push(ae(u,{score:this.score,fields:f})),s.set(u,we({subgraphVertices:l,subgraphEdges:c,score:this.score,graphName:this.graph}))}const o=new se(r);for(const[i,a]of s)o.setGraphPayload(i,a);return o}}function Ae(h,e){return h!==null&&typeof h=="object"&&"execute"in h&&typeof h.execute=="function"?[...h.execute(e).entries]:h}class xo{constructor(e,t,n,r,s=.5){b(this,"left");b(this,"right");b(this,"leftField");b(this,"rightField");b(this,"threshold");this.left=e,this.right=t,this.leftField=n,this.rightField=r,this.threshold=s}execute(e){const t=Ae(this.left,e),n=Ae(this.right,e),r=[];for(const s of t){const o=s.payload.fields[this.leftField],i=typeof o=="string"?o:"",a=new Set(qn.analyze(i));if(a.size!==0)for(const l of n){const c=l.payload.fields[this.rightField],u=typeof c=="string"?c:"",f=new Set(qn.analyze(u));if(f.size===0)continue;let d=0;for(const _ of a)f.has(_)&&d++;const p=a.size+f.size-d,m=p>0?d/p:0;m>=this.threshold&&r.push({docIds:[s.docId,l.docId],payload:B({score:m,fields:{...s.payload.fields,...l.payload.fields}})})}}return new ye(r)}}class Sr{constructor(e,t,n,r,s=.5){b(this,"left");b(this,"right");b(this,"leftField");b(this,"rightField");b(this,"threshold");this.left=e,this.right=t,this.leftField=n,this.rightField=r,this.threshold=s}execute(e){const t=Ae(this.left,e),n=Ae(this.right,e),r=[];for(const s of t){const o=s.payload.fields[this.leftField];if(o)for(const i of n){const a=i.payload.fields[this.rightField];if(!a)continue;const l=Qe(o,a);l>=this.threshold&&r.push({docIds:[s.docId,i.docId],payload:B({score:l,fields:{...s.payload.fields,...i.payload.fields}})})}}return new ye(r)}}class So{constructor(e,t,n,r,s=.5){b(this,"left");b(this,"right");b(this,"structuredField");b(this,"vectorField");b(this,"threshold");this.left=e,this.right=t,this.structuredField=n,this.vectorField=r,this.threshold=s}execute(e){const t=Ae(this.left,e),n=Ae(this.right,e),r=new Map;for(const o of n){const i=o.payload.fields[this.structuredField];if(i==null)continue;let a=r.get(i);a||(a=[],r.set(i,a)),a.push(o)}const s=[];for(const o of t){const i=o.payload.fields[this.structuredField];if(i==null)continue;const a=o.payload.fields[this.vectorField];if(!a)continue;const l=r.get(i);if(l)for(const c of l){const u=c.payload.fields[this.vectorField];if(!u)continue;const f=Qe(a,u);f>=this.threshold&&s.push({docIds:[o.docId,c.docId],payload:B({score:f,fields:{...o.payload.fields,...c.payload.fields}})})}}return new ye(s)}}class Eo{constructor(e,t,n,r="test"){b(this,"left");b(this,"right");b(this,"label");b(this,"graphName");this.left=e,this.right=t,this.label=n??null,this.graphName=r}execute(e){const t=e.graphStore,n=Ae(this.left,e),r=Ae(this.right,e),s=new Map;for(const i of r)s.set(i.docId,i);const o=[];for(const i of n){const a=t.neighbors(i.docId,this.graphName,this.label,"out");for(const l of a){const c=s.get(l);c&&o.push({docIds:[i.docId,c.docId],payload:B({score:i.payload.score+c.payload.score,fields:{...i.payload.fields,...c.payload.fields}})})}}return new ye(o)}}class Io{constructor(e,t,n,r){b(this,"left");b(this,"right");b(this,"vertexField");b(this,"docField");this.left=e,this.right=t,this.vertexField=n,this.docField=r}execute(e){const t=e.graphStore,n=Ae(this.left,e),r=Ae(this.right,e),s=new Map;for(const i of r){const a=i.payload.fields[this.docField];if(a==null)continue;let l=s.get(a);l||(l=[],s.set(a,l)),l.push(i)}const o=[];for(const i of n){const a=t.getVertex(i.docId);let l;if(a?l=a.properties[this.vertexField]:l=i.payload.fields[this.vertexField],l==null)continue;const c=s.get(l);if(c)for(const u of c){const f={};a&&Object.assign(f,a.properties),Object.assign(f,i.payload.fields),Object.assign(f,u.payload.fields),o.push({docIds:[i.docId,u.docId],payload:B({score:i.payload.score+u.payload.score,fields:f})})}}return new ye(o)}}const No=1.1,Ao=.1,ko=1.5,Mo=.2,Er=.1;class To{constructor(e){b(this,"_graphStats");this._graphStats=e??null}estimate(e,t){if(e instanceof de){const r=e.field??"_default";return t.totalDocs>0?t.docFreq(r,e.term):1}if(e instanceof be||e instanceof Ce)return t.dimensions*Math.log2(t.totalDocs+1);if(e instanceof kt)return e.costEstimate(t);if(e instanceof ue)return this.estimate(e.source,t)*No;if(e instanceof z){const r=t.totalDocs;return e.source!==null?this.estimate(e.source,t)+r*Ao:r}if(e instanceof U){let r=0;for(const s of e.operands)r+=this.estimate(s,t);return r}if(e instanceof ee){let r=0;for(const s of e.operands)r+=this.estimate(s,t);return r}if(e instanceof ce)return this.estimate(e.operand,t)+t.totalDocs;if(e instanceof bo)return t.totalDocs;if(e instanceof wo)return t.totalDocs*ko;if(e instanceof Ie){let r=0;for(const s of e.signals)r+=this.estimate(s,t);return r}if(e instanceof Fe){let r=0;for(const s of e.signals)r+=this.estimate(s,t);return r}if(e instanceof Es){let r=0;for(const s of e.signals)r+=this.estimate(s,t);return r}if(e instanceof nt){let r=0;for(const s of e.signals)r+=this.estimate(s,t);return r}if(e instanceof pt){let r=0;for(const s of e.signals)r+=this.estimate(s,t);return r}if(e instanceof Mt)return this.estimate(e.signal,t)+t.totalDocs;if(e instanceof xs){const r=e;return this.estimate(r._termOp,t)+this.estimate(r._vectorOp,t)}if(e instanceof Ss){const r=e;return this.estimate(r.source,t)+this.estimate(r._vectorOp,t)}if(e instanceof on){const r=e;return this.estimate(r.positive,t)+this.estimate(r._negativeOp,t)}if(e instanceof Jn){const r=e;let s=this.estimate(r._vectorOp,t);return r.source!==null&&(s+=this.estimate(r.source,t)),s}if(e instanceof gr)return t.totalDocs*Mo;if(e instanceof pn){if(this._graphStats!==null){const r=this._graphStats,s=e.label,o=e.maxHops,i=r.labelSelectivity(s),a=r.avgOutDegree*i;let l=0;for(let c=1;c<=o;c++)l+=Math.pow(a,c);return Math.max(1,l)}return t.totalDocs*Er}if(e instanceof hr){const r=e;let s;if(this._graphStats!==null){const i=this._graphStats,a=i.numVertices>0?i.numVertices:t.totalDocs,l=r.pattern.vertexPatterns.length;s=Math.max(1,Math.pow(a,l)*.01)}else s=Math.pow(t.totalDocs,2);let o=0;for(const i of r.pattern.edgePatterns)i.negated&&o++;return o>0&&(s*=1+.2*o),s}if(e instanceof gn)return t.totalDocs*Er;if(e instanceof vo)return Math.pow(t.totalDocs,2);if(e instanceof pr){const r=e;if(_n(r.pathExpr)!==null)return t.totalDocs*.1;if(this._graphStats!==null){const i=this._graphStats.numVertices,a=wt(r.pathExpr);return Math.max(1,i*i*a*.001)}return Math.pow(t.totalDocs,2)}if(e instanceof xe)return this.estimate(e.source,t)*.5;if(e instanceof cn){const r=e;return t.totalDocs*r.fields.length}if(e instanceof mn){const r=e;return t.totalDocs*r.kLayers}if(e instanceof br){const r=e;return t.totalDocs*r.kLayers*2}if(e instanceof Re)return e.costEstimate(t);const n=t.totalDocs;return e instanceof mr?n*e.maxIterations*.1:e instanceof _r?n*e.maxIterations*.2:e instanceof yr?n*n*.5:e instanceof xo?2*n*Math.max(t.dimensions,10):e instanceof Sr?n*n*Math.max(t.dimensions,1):e instanceof Eo?n*10:e instanceof So?n+n*Math.max(t.dimensions,1):e instanceof Io?n*10:e instanceof rr?e.costEstimate(t):n}}function _n(h){if(h instanceof Ne)return[h.label];if(h instanceof Ge){const e=h,t=_n(e.left),n=_n(e.right);return t!==null&&n!==null?[...t,...n]:null}return null}function wt(h){if(h instanceof Ne)return 1;if(h instanceof Ge||h instanceof mt){const e=h;return wt(e.left)+wt(e.right)}if(h instanceof _t)return wt(h.inner)*2;if(h instanceof yt){const e=h;return wt(e.inner)*e.maxHops}return 1}class ke{constructor(e,t){b(this,"stats");b(this,"estimator");b(this,"_costModel");b(this,"_graphStats");b(this,"_indexManager");b(this,"_tableName");this.stats=e;const n=(t==null?void 0:t.columnStats)??new Map;this._graphStats=(t==null?void 0:t.graphStats)??null,this.estimator=new Pe(n,{graphStats:this._graphStats??void 0}),this._costModel=new To(this._graphStats),this._indexManager=(t==null?void 0:t.indexManager)??null,this._tableName=(t==null?void 0:t.tableName)??null}optimize(e){let t=e;return t=this._simplifyAlgebra(t),t=this._pushFiltersDown(t),t=this._pushGraphPatternFilters(t),t=this._pushFilterIntoTraverse(t),t=this._pushFilterBelowGraphJoin(t),t=this._fuseJoinPattern(t),t=this._mergeVectorThresholds(t),t=this._reorderIntersect(t),t=this._reorderFusionSignals(t),t=this._applyIndexScan(t),t}_simplifyAlgebra(e){if(e=this._recurseSimplify(e),e instanceof U){let t=e.operands;for(const s of t)if(ke._isEmptyOperator(s))return new U([]);const n=[];for(const s of t)n.some(o=>o===s)||n.push(s);t=n;const r=[];for(const s of t)s instanceof ee&&t.some(o=>o!==s&&s.operands.some(i=>t.some(a=>a===i&&a!==s)))||r.push(s);return t=r,t.length===1?t[0]:new U(t)}if(e instanceof ee){let t=e.operands;t=t.filter(s=>!ke._isEmptyOperator(s));const n=[];for(const s of t)n.some(o=>o===s)||n.push(s);t=n;const r=[];for(const s of t)s instanceof U&&t.some(o=>o!==s&&s.operands.some(i=>t.some(a=>a===i&&a!==s)))||r.push(s);return t=r,t.length===1?t[0]:t.length===0?new ee([]):new ee(t)}return e}_recurseSimplify(e){return e instanceof U?new U(e.operands.map(t=>this._simplifyAlgebra(t))):e instanceof ee?new ee(e.operands.map(t=>this._simplifyAlgebra(t))):e instanceof ce?new ce(this._simplifyAlgebra(e.operand)):e instanceof z&&e.source!==null?new z(e.field,e.predicate,this._simplifyAlgebra(e.source)):e instanceof ze?new ze(e.operators.map(t=>this._simplifyAlgebra(t))):e}static _isEmptyOperator(e){return e instanceof U||e instanceof ee?e.operands.length===0:!1}_pushFiltersDown(e){if(!(e instanceof z))return this._recurseChildren(e);const t=e.source;if(t instanceof U){const n=[];let r=!1;for(const s of t.operands)ke._filterAppliesTo(e,s)?(n.push(new z(e.field,e.predicate,s)),r=!0):n.push(s);if(r){const s=n.map(o=>this._pushFiltersDown(o));return this._recurseChildren(new U(s))}}return t===null?e:new z(e.field,e.predicate,this._recurseChildren(t))}_pushGraphPatternFilters(e){if(e instanceof z&&e.source!==null){const t=this._pushGraphPatternFilters(e.source),n=t.constructor.name;if(n==="PatternMatchOperator"){const r=t;if(r.withVertexPredicate&&e.field)return r.withVertexPredicate(e.field,e.predicate)}if(n==="TraverseOperator"){const r=t;if(e.field){const s=r.vertexPredicate,o=e.field,i=e.predicate,a=l=>{const c=l;return i.evaluate(c[o])?s!==null?s(l):!0:!1};try{const l=t.constructor;return new l(r.startVertex,r.graph,r.label,r.maxHops,a,r.score)}catch{}}}return new z(e.field,e.predicate,t)}return this._recurseGeneric(e,t=>this._pushGraphPatternFilters(t))}_pushFilterIntoTraverse(e){if(e instanceof z&&e.source!==null){const t=this._pushFilterIntoTraverse(e.source);if(t.constructor.name==="TraverseOperator"){const r=t;if(e.field){const s=e.field,o=e.predicate,i=r.vertexPredicate,a=l=>{const c=l,u=c.properties?c.properties[s]:c[s];return o.evaluate(u)?i===null||i(l):!1};try{const l=t.constructor;return new l(r.startVertex,r.graph,r.label,r.maxHops,a,r.score)}catch{}}}return new z(e.field,e.predicate,t)}return this._recurseGeneric(e,t=>this._pushFilterIntoTraverse(t))}_pushFilterBelowGraphJoin(e){if(e instanceof z&&e.source!==null){const t=this._pushFilterBelowGraphJoin(e.source),n=t.constructor.name;if(n==="CrossParadigmJoinOperator"||n==="GraphJoinOperator"){const r=t;{const s=ke._filterAppliesTo(e,r.left),o=ke._filterAppliesTo(e,r.right);if(s&&!o)try{const i=t.constructor;return new i(new z(e.field,e.predicate,r.left),r.right)}catch{}if(o&&!s)try{const i=t.constructor;return new i(r.left,new z(e.field,e.predicate,r.right))}catch{}}}return new z(e.field,e.predicate,t)}return this._recurseGeneric(e,t=>this._pushFilterBelowGraphJoin(t))}_fuseJoinPattern(e){if(e instanceof U){const t=e.operands.map(s=>this._fuseJoinPattern(s)),n=[],r=[];for(const s of t)s.constructor.name==="PatternMatchOperator"?n.push(s):r.push(s);if(n.length>=2){const s=new Map;for(const a of n){const l=a.graph;s.has(l)||s.set(l,[]),s.get(l).push(a)}const o=[];for(const[,a]of s)if(a.length>=2){a.sort((l,c)=>this._costModel.estimate(l,this.stats)-this._costModel.estimate(c,this.stats)),o.push(a[0]);for(let l=1;l<a.length;l++)o.push(a[l])}else o.push(a[0]);const i=[...r,...o];return i.length===1?i[0]:new U(i)}return t.length===1?t[0]:new U(t)}return this._recurseGeneric(e,t=>this._fuseJoinPattern(t))}_mergeVectorThresholds(e){if(!(e instanceof U))return this._recurseChildren(e);const t=[],n=[];for(let i of e.operands)i=this._recurseChildren(i),i instanceof be?t.push(i):n.push(i);const r=[],s=new Array(t.length).fill(!1);for(let i=0;i<t.length;i++){if(s[i])continue;let a=t[i];for(let l=i+1;l<t.length;l++)s[l]||a.field===t[l].field&&this._vectorsClose(a.queryVector,t[l].queryVector)&&(a=new be(a.queryVector,Math.max(a.threshold,t[l].threshold),a.field),s[l]=!0);s[i]=!0,r.push(a)}const o=[...n,...r];return o.length===1?o[0]:new U(o)}_vectorsClose(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(Math.abs(e[n]-t[n])>1e-7)return!1;return!0}_reorderIntersect(e){if(!(e instanceof U))return this._recurseChildren(e);const t=e.operands.map(n=>this._recurseChildren(n));return t.sort((n,r)=>this._costModel.estimate(n,this.stats)-this._costModel.estimate(r,this.stats)),new U(t)}_reorderFusionSignals(e){if(e instanceof Ie){const t=e.signals.map(n=>this._reorderFusionSignals(n));return t.sort((n,r)=>this._graphAwareSignalCost(n)-this._graphAwareSignalCost(r)),new Ie(t,e.alpha,void 0,e.gating)}if(e instanceof Fe){const t=e.signals.map(n=>this._reorderFusionSignals(n));return t.sort((n,r)=>this._graphAwareSignalCost(n)-this._graphAwareSignalCost(r)),new Fe(t,e.mode)}return this._recurseGeneric(e,t=>this._reorderFusionSignals(t))}_graphAwareSignalCost(e){const t=this.estimator.estimate(e,this.stats);if(this._graphStats!==null){const n=e.constructor.name;if(n==="TraverseOperator"){const r=this._graphStats.edgeDensity();return t*(r<.01?.3:.5)}if(n==="PatternMatchOperator")return t*.5;if(n==="RegularPathQueryOperator")return t*.6;if(n==="WeightedPathQueryOperator")return t*.7;if(n==="TemporalTraverseOperator")return t*.6;if(n==="CypherQueryOperator")return t*.5}return e instanceof be?t*.8:e instanceof de?t*.3:t}_applyIndexScan(e){if(this._indexManager===null||this._tableName===null)return e;if(e instanceof z&&e.source===null){const t=this._indexManager.findCoveringIndex(this._tableName,e.field,e.predicate);if(t!==null){const n=t.scanCost(e.predicate),r=this.stats.totalDocs;if(n<r)return new kt(t,e.field,e.predicate)}}return e instanceof z&&e.source!==null?new z(e.field,e.predicate,this._applyIndexScan(e.source)):this._recurseGeneric(e,t=>this._applyIndexScan(t))}_recurseGeneric(e,t){return e instanceof U?new U(e.operands.map(t)):e instanceof ee?new ee(e.operands.map(t)):e instanceof ce?new ce(t(e.operand)):e instanceof z&&e.source!==null?new z(e.field,e.predicate,t(e.source)):e instanceof ze?new ze(e.operators.map(t)):e}_recurseChildren(e){return e instanceof U?new U(e.operands.map(t=>this.optimize(t))):e instanceof ee?new ee(e.operands.map(t=>this.optimize(t))):e instanceof ce?new ce(this.optimize(e.operand)):e instanceof z&&e.source!==null?new z(e.field,e.predicate,this.optimize(e.source)):e instanceof ze?new ze(e.operators.map(t=>this.optimize(t))):e instanceof ue?new ue(e.scorer,this.optimize(e.source),e.queryTerms,e.field):e instanceof xe?new xe(this.optimize(e.source),e.threshold):e instanceof Ie?new Ie(e.signals.map(t=>this.optimize(t)),e.alpha,void 0,e.gating):e instanceof Fe?new Fe(e.signals.map(t=>this.optimize(t)),e.mode):e instanceof Mt?new Mt(this.optimize(e.signal),e.defaultProb):e instanceof nt?new nt(e.signals.map(t=>this.optimize(t)),e.attention,e.queryFeatures):e instanceof pt?new pt(e.signals.map(t=>this.optimize(t)),e.learned):e}static _filterAppliesTo(e,t){const n=e.field;return t instanceof de?t.field===n||t.field===null:t instanceof z?t.field===n:t instanceof U?t.operands.some(r=>ke._filterAppliesTo(e,r)):!1}}class Dt{constructor(e){b(this,"_context");b(this,"_lastStats",null);this._context=e}execute(e){const[t,n]=this._executeWithStats(e);return this._lastStats=n,t}explain(e){return this._explainNode(e,0)}get lastStats(){return this._lastStats}_executeWithStats(e){const t=this._operatorName(e),n=[],r=performance.now();let s;if(e instanceof ee){const a=[];for(const l of e.operands){const[c,u]=this._executeWithStats(l);a.push(c),n.push(u)}s=new j;for(const l of a)s=s.union(l)}else if(e instanceof U)if(e.operands.length===0)s=new j;else{const[a,l]=this._executeWithStats(e.operands[0]);n.push(l),s=a;for(let c=1;c<e.operands.length&&s.length!==0;c++){const[u,f]=this._executeWithStats(e.operands[c]);n.push(f),s=s.intersect(u)}}else if(e instanceof ce){const[,a]=this._executeWithStats(e.operand);n.push(a),s=e.execute(this._context)}else if(e instanceof xe){const[,a]=this._executeWithStats(e.source);n.push(a),s=e.execute(this._context)}else if(e instanceof ue){const[,a]=this._executeWithStats(e.source);n.push(a),s=e.execute(this._context)}else if(e instanceof z&&e.source!==null){const[,a]=this._executeWithStats(e.source);n.push(a),s=e.execute(this._context)}else if(e instanceof Re){for(const[a]of e.stages){const[,l]=this._executeWithStats(a);n.push(l)}s=e.execute(this._context)}else s=e.execute(this._context);const o=performance.now()-r,i={operatorName:t,elapsedMs:o,resultCount:s.length,children:n};return[s,i]}_explainNode(e,t){const n=" ".repeat(t),r=this._operatorName(e),s=this._operatorDetails(e);let i=s.length>0?`${n}${r} (${s})
5
+ `:`${n}${r}
6
+ `;if(e instanceof ee)for(const a of e.operands)i+=this._explainNode(a,t+1);else if(e instanceof U)for(const a of e.operands)i+=this._explainNode(a,t+1);else if(e instanceof ce)i+=this._explainNode(e.operand,t+1);else if(e instanceof xe)i+=this._explainNode(e.source,t+1);else if(e instanceof ue)i+=this._explainNode(e.source,t+1);else if(e instanceof z&&e.source!==null)i+=this._explainNode(e.source,t+1);else if(e instanceof Re)for(const[a,l]of e.stages)i+=`${n} [cutoff=${String(l)}]
7
+ `,i+=this._explainNode(a,t+2);return i}_operatorName(e){return e instanceof de?"TermScan":e instanceof be?"VectorThreshold":e instanceof Ce?"KNN":e instanceof z?"Filter":e instanceof kt?"IndexScan":e instanceof ue?"Score":e instanceof ee?"Union":e instanceof U?"Intersect":e instanceof ce?"Complement":e instanceof xe?"SparseThreshold":e instanceof Re?"MultiStage":e.constructor.name}_operatorDetails(e){if(e instanceof de)return`${e.field!==null?`field=${e.field}, `:""}term="${e.term}"`;if(e instanceof be)return`field=${e.field}, threshold=${String(e.threshold)}`;if(e instanceof Ce)return`field=${e.field}, k=${String(e.k)}`;if(e instanceof z)return`field=${e.field}`;if(e instanceof kt)return`field=${e.field}`;if(e instanceof xe)return`threshold=${String(e.threshold)}`;if(e instanceof ee)return`operands=${String(e.operands.length)}`;if(e instanceof U)return`operands=${String(e.operands.length)}`;if(e instanceof ue)return`terms=${String(e.queryTerms.length)}`;if(e instanceof Re)return`stages=${String(e.stages.length)}`;const t=e.constructor.name;if(t==="TraverseOperator"){const n=e,r=n.label!==null?`, label=${n.label}`:"";return`graph=${n.graph}${r}, maxHops=${String(n.maxHops)}`}if(t==="PatternMatchOperator"){const n=e;return`graph=${n.graph}, vertices=${String(n.pattern.vertexPatterns.length)}`}if(t==="RegularPathQueryOperator"){const n=e,r=n.startVertex!==null?`, start=${String(n.startVertex)}`:"";return`graph=${n.graph}${r}`}if(t==="WeightedPathQueryOperator"){const n=e;return`graph=${n.graph}, agg=${n.aggregation}, weight=${n.weightProperty}`}if(t==="CypherQueryOperator"){const n=e,r=n.query.length>40?n.query.slice(0,40)+"...":n.query;return`graph=${n.graphName}, query="${r}"`}if(t==="LogOddsFusionOperator"){const n=e;return`signals=${String(n.signals.length)}, alpha=${String(n.alpha)}`}if(t==="ProbBoolFusionOperator"){const n=e;return`signals=${String(n.signals.length)}, mode=${n.mode}`}return t==="AttentionFusionOperator"?`signals=${String(e.signals.length)}`:t==="LearnedFusionOperator"?`signals=${String(e.signals.length)}`:t==="VertexAggregationOperator"?`property=${e.propertyName}`:""}explainAnalyze(e,t){const[,n]=this._executeWithStats(e);return this._explainAnalyzeNode(n,0,(t==null?void 0:t.verbose)??!1)}_explainAnalyzeNode(e,t,n){const r=" ".repeat(t);let s=`${r}${e.operatorName}`;s+=` (rows=${String(e.resultCount)}, time=${e.elapsedMs.toFixed(3)}ms)`,s+=`
8
+ `,n&&e.children.length>0&&(s+=`${r} children: ${String(e.children.length)}
9
+ `);for(const o of e.children)s+=this._explainAnalyzeNode(o,t+1,n);return s}explainTree(e){return this._explainTreeNode(e)}_explainTreeNode(e){const t={operator:this._operatorName(e),details:this._operatorDetails(e)},n=[];if(e instanceof ee)for(const r of e.operands)n.push(this._explainTreeNode(r));else if(e instanceof U)for(const r of e.operands)n.push(this._explainTreeNode(r));else if(e instanceof ce)n.push(this._explainTreeNode(e.operand));else if(e instanceof xe)n.push(this._explainTreeNode(e.source));else if(e instanceof ue)n.push(this._explainTreeNode(e.source));else if(e instanceof z&&e.source!==null)n.push(this._explainTreeNode(e.source));else if(e instanceof Re)for(const[r,s]of e.stages){const o=this._explainTreeNode(r);o.cutoff=s,n.push(o)}else{const r=e.constructor.name;if(r==="LogOddsFusionOperator"||r==="ProbBoolFusionOperator"||r==="AttentionFusionOperator"||r==="LearnedFusionOperator"){const s=e;for(const o of s.signals)n.push(this._explainTreeNode(o))}}return n.length>0&&(t.children=n),t}}const Be=new Set(["count","sum","avg","min","max","string_agg","array_agg","bool_and","bool_or","stddev","stddev_pop","stddev_samp","variance","var_pop","var_samp","percentile_cont","percentile_disc","mode","json_object_agg","jsonb_object_agg","corr","covar_pop","covar_samp","regr_count","regr_avgx","regr_avgy","regr_sxx","regr_syy","regr_sxy","regr_slope","regr_intercept","regr_r2"]),Ir=new Set(["text_match","bayesian_match","bayesian_match_with_prior","knn_match","bayesian_knn_match","traverse_match","temporal_traverse","path_filter","vector_exclude","spatial_within","fuse_log_odds","fuse_prob_and","fuse_prob_or","fuse_prob_not","fuse_attention","fuse_multihead","fuse_learned","sparse_threshold","multi_field_match","message_passing","graph_embedding","staged_retrieval","pagerank","hits","betweenness","weighted_rpq","progressive_fusion","deep_fusion"]),Oo=new Set(["random","nextval","currval","now","current_timestamp","clock_timestamp","statement_timestamp","timeofday"]);function g(h,e){return h[e]??null}function Nr(h){return typeof h=="string"?h:h==null?"":typeof h=="number"?h.toString(10):typeof h=="boolean"?h?"true":"false":JSON.stringify(h)}function D(h,e){const t=h[e];return t==null?"":Nr(t)}function v(h){return h??{}}function R(h){return Array.isArray(h)?h:[]}function K(h){const e=g(h,"String")??g(h,"str");if(e!==null&&typeof e=="object")return D(v(e),"sval")||D(v(e),"str");if(typeof e=="string")return e;const t=D(h,"sval")||D(h,"str");return t||""}function re(h){return D(h,"relname")}function De(h){const e=g(h,"alias");return e!==null&&typeof e=="object"&&D(v(e),"aliasname")||null}function Co(h){return D(h,"schemaname")||null}function G(h){const e=v(g(h,"ColumnRef")??h),t=R(g(e,"fields"));if(t.length>0){const r=t[t.length-1],s=K(r);if(s)return s}const n=D(e,"sval")||D(e,"str");if(n)return n;throw new Error("Expected ColumnRef, got "+JSON.stringify(h).slice(0,200))}function Fo(h){const e=v(g(h,"ColumnRef")??h),t=R(g(e,"fields"));if(t.length>=2){const n=[];for(const r of t){const s=K(r);s&&n.push(s)}return n.join(".")}return G(h)}function J(h){return g(h,"ColumnRef")!==null}function Ue(h){if(g(h,"A_Star")!==null&&g(h,"A_Star")!==void 0)return!0;const e=g(h,"ColumnRef");if(e!=null){const t=R(g(v(e),"fields"));for(const n of t)if(g(n,"A_Star")!==null&&g(n,"A_Star")!==void 0)return!0}return!1}function Y(h){return g(h,"FuncCall")!==null}function oe(h){const e=v(g(h,"FuncCall")??h),t=R(g(e,"funcname"));return t.length===0?"":K(t[t.length-1]).toLowerCase()}function me(h){const e=v(g(h,"FuncCall")??h);return R(g(e,"args"))}function We(h){const e=v(g(h,"FuncCall")??h);return g(e,"agg_star")===!0}function Ar(h){const e=v(g(h,"FuncCall")??h);return g(e,"agg_distinct")===!0}function Ke(h){const e=v(g(h,"FuncCall")??h),t=g(e,"over");return t!=null}function ge(h){return g(h,"A_Const")!==null}function vt(h){return g(h,"ParamRef")!==null}function yn(h){return g(h,"A_Expr")!==null}function Ro(h){return g(h,"BoolExpr")!==null}function kr(h){return g(h,"NullTest")!==null}function qt(h){return g(h,"SubLink")!==null}function $t(h){return g(h,"TypeCast")!==null}function jo(h){return g(h,"A_ArrayExpr")!==null}function V(h,e){const t=g(h,"ParamRef");if(t!=null){const l=v(t),c=g(l,"number"),u=c-1;if(u<0||u>=e.length)throw new Error(`No value supplied for parameter $${String(c)}`);return e[u]}const n=v(g(h,"A_Const")??h);if(g(n,"isnull")===!0)return null;const r=g(n,"ival");if(r!=null)return typeof r=="number"?r:Number(r);const s=g(n,"fval");if(s!=null)return parseFloat(String(s));const o=g(n,"sval");if(o!=null)return String(o);const i=g(n,"boolval");if(i!=null)return i;const a=g(n,"val");if(a!=null&&typeof a=="object"){const l=v(a),c=g(l,"Integer")??g(l,"ival");if(c!=null){if(typeof c=="number")return c;const p=g(v(c),"ival");if(p!==null)return Number(p)}const u=g(l,"Float")??g(l,"fval");if(u!=null){if(typeof u=="number")return u;const p=g(v(u),"fval");return parseFloat(String(p!==null?p:u))}const f=g(l,"String")??g(l,"sval");if(f!=null){if(typeof f=="string")return f;const p=g(v(f),"sval");if(p!==null)return String(p)}const d=g(l,"Boolean")??g(l,"boolval");if(d!=null){if(typeof d=="boolean")return d;const p=g(v(d),"boolval");if(p!==null)return p}}return typeof h=="number"||typeof h=="string"?h:null}function _e(h,e){const t=V(h,e);return Number(t)}function Q(h,e){const t=V(h,e);return String(t)}function qe(h,e){const t=g(h,"A_ArrayExpr");if(t!=null){const r=R(g(v(t),"elements"));return new Float64Array(r.map(s=>Number(V(s,e))))}const n=g(h,"ParamRef");if(n!=null){const r=v(n),s=g(r,"number"),o=s-1;if(o<0||o>=e.length)throw new Error(`No value supplied for parameter $${String(s)}`);const i=e[o];if(i instanceof Float64Array)return i;if(i instanceof Float32Array)return new Float64Array(i);if(Array.isArray(i))return new Float64Array(i.map(Number));throw new Error("Parameter for vector must be an array")}throw new Error("Expected ARRAY literal or $N parameter for vector")}function Po(h,e,t){if(vt(h)){const n=v(g(h,"ParamRef")),r=g(n,"number"),s=r-1;if(s<0||s>=e.length)throw new Error(`Parameter $${String(r)} not provided`);const o=e[s];return o!==null&&typeof o=="object"&&"tolist"in o?o.tolist:o}if(jo(h)){const n=R(g(v(g(h,"A_ArrayExpr")),"elements"));return n.length===0?[]:n.map(r=>V(r,e))}if($t(h))return t.evaluate(h,{});if(Y(h))return t.evaluate(h,{});try{return t.evaluate(h,{})}catch{return V(h,e)}}const Do=1e3;class ie{constructor(e){b(this,"_tables");b(this,"_views");b(this,"_sequences");b(this,"_engine");b(this,"_transactionActive");b(this,"_prepared");b(this,"_params");b(this,"_expandedViews");b(this,"_shadowedTables");b(this,"_inlinedCTEs");b(this,"_correlatedOuterRow");b(this,"_foreignServers");b(this,"_foreignTables");b(this,"_currentGraphName","");this._tables=new Map,this._views=new Map,this._sequences=new Map,this._engine=e??null,this._transactionActive=!1,this._prepared=new Map,this._params=[],this._expandedViews=[],this._shadowedTables=new Map,this._inlinedCTEs=new Map,this._correlatedOuterRow=null,this._foreignServers=new Map,this._foreignTables=new Map}_makeSubqueryExecutor(e){return(t,n)=>this._compileSelect(t,e,n)}get tables(){return this._tables}get views(){return this._views}get engine(){return this._engine}async execute(e,t){this._params=t?[...t]:[];const n=await Je.parse(e),r=R(g(v(n),"stmts"));if(r.length===0)return null;let s=null;for(const o of r){const i=v(g(o,"stmt"));s=this._dispatchStatement(i,this._params)}return s}_dispatchStatement(e,t){const n=Object.keys(e);if(n.length===0)return null;const r=n[0],s=v(e[r]);switch(r){case"SelectStmt":return this._compileSelect(s,t);case"InsertStmt":return this._compileInsert(s,t);case"UpdateStmt":return this._compileUpdate(s,t);case"DeleteStmt":return this._compileDelete(s,t);case"CreateStmt":return this._compileCreateTable(s);case"CreateTableAsStmt":return this._compileCreateTableAs(s,t);case"DropStmt":return this._compileDrop(s);case"ViewStmt":return this._compileCreateView(s);case"TransactionStmt":return this._compileTransaction(s);case"CreateSeqStmt":return this._compileCreateSequence(s);case"AlterSeqStmt":return this._compileAlterSequence(s);case"IndexStmt":return this._compileCreateIndex(s);case"AlterTableStmt":return this._compileAlterTable(s);case"TruncateStmt":return this._compileTruncate(s);case"ExplainStmt":return this._compileExplain(s,t);case"RenameStmt":return this._compileRename(s);case"PrepareStmt":return this._compilePrepare(s);case"ExecuteStmt":return this._compileExecute(s,t);case"DeallocateStmt":return this._compileDeallocate(s);case"VacuumStmt":return this._compileAnalyze(s);case"CreateForeignServerStmt":return this._compileCreateForeignServer(s);case"CreateForeignTableStmt":return this._compileCreateForeignTable(s);case"VariableSetStmt":case"VariableShowStmt":case"DoStmt":case"LockStmt":case"DiscardStmt":return null;default:throw new Error(`Unsupported statement type: ${r}`)}}_compileCreateTable(e){const t=v(g(e,"relation")),n=re(t),r=g(e,"if_not_exists")===!0;if(this._tables.has(n)){if(r)return null;throw new Error(`Table "${n}" already exists`)}const s=R(g(e,"tableElts")),o=[],i=[],a=[];let l=null;for(const u of s){const f=g(u,"ColumnDef");if(f!=null){const p=v(f),m=this._parseColumnDef(p);o.push(m),m.primaryKey&&(l=m.name);const _=R(g(p,"constraints"));for(const y of _){const x=v(g(y,"Constraint")??y),w=g(x,"contype");if(w===1||w==="CONSTR_CHECK"){const E=D(x,"conname")||`check_${String(a.length)}`,I=g(x,"raw_expr");if(I!=null){const S=new ne,N=v(I);a.push([E,A=>S.evaluate(N,A)===!0])}}if(w===8||w==="CONSTR_FOREIGN"){const E=v(g(x,"pktable")),I=R(g(x,"pk_attrs"));I.length>0&&i.push({column:m.name,refTable:re(E),refColumn:K(I[0])})}}continue}const d=g(u,"Constraint");if(d!=null){const p=v(d),m=g(p,"contype");if(m===5||m==="CONSTR_PRIMARY"){const _=R(g(p,"keys"));_.length>0&&(l=K(_[0]))}if(m===8||m==="CONSTR_FOREIGN"){const _=R(g(p,"fk_attrs")),y=v(g(p,"pktable")),x=R(g(p,"pk_attrs"));_.length>0&&x.length>0&&i.push({column:K(_[0]),refTable:re(y),refColumn:K(x[0])})}if(m===4||m==="CONSTR_UNIQUE"){const _=R(g(p,"keys"));for(const y of _){const x=K(y),w=o.findIndex(E=>E.name===x);if(w!==-1){const E=o[w];o[w]=ve(E.name,E.typeName,{...E,unique:!0})}}}if(m===1||m==="CONSTR_CHECK"){const _=D(p,"conname")||`check_${String(a.length)}`,y=g(p,"raw_expr");if(y!=null){const x=new ne,w=v(y);a.push([_,E=>x.evaluate(w,E)===!0])}}}}if(l!==null){const u=o.findIndex(f=>f.name===l);if(u!==-1){const f=o[u];o[u]=ve(f.name,f.typeName,{...f,primaryKey:!0,notNull:!0})}}const c=new Ot(n,o);c.foreignKeys=i,c.checkConstraints=a,this._tables.set(n,c),i.length>0&&this._registerFkValidators(n,c,i);for(const u of o)if(u.autoIncrement){const f=`${n}_${u.name}_seq`;this._sequences.set(f,{current:0,increment:1,start:1})}return null}_compileCreateTableAs(e,t){const n=v(g(e,"into")),r=v(g(n,"rel")),s=re(r);if(this._tables.has(s))throw new Error(`Table "${s}" already exists`);const o=v(g(e,"query")),i=v(g(o,"SelectStmt")??o),a=this._compileSelect(i,t),l=[];for(const f of a.columns){let d="text",p="string";if(a.rows.length>0){const m=a.rows[0][f];typeof m=="number"?Number.isInteger(m)?(d="integer",p="number"):(d="real",p="number"):typeof m=="boolean"?(d="boolean",p="boolean"):Array.isArray(m)?(d="text[]",p="array"):typeof m=="object"&&m!==null&&(d="jsonb",p="object")}l.push(ve(f,d,{pythonType:p}))}const c=new Ot(s,l);this._tables.set(s,c);let u=0;for(const f of a.rows){const d={};for(const p of a.columns)d[p]=f[p]??null;c.insert(d),u++}return{columns:["inserted"],rows:[{inserted:u}]}}_compileCreateSequence(e){const t=v(g(e,"sequence")),n=re(t),r=R(g(e,"options"));if(this._sequences.has(n)){if(g(e,"if_not_exists")===!0)return null;throw new Error(`Sequence "${n}" already exists`)}let s=1,o=1;for(const i of r){const a=v(g(i,"DefElem")??i),l=D(a,"defname"),c=g(a,"arg");if(l==="start"&&c!==null){const u=v(c);s=Number(g(u,"ival")??g(v(g(u,"Integer")??{}),"ival")??1)}if(l==="increment"&&c!==null){const u=v(c);o=Number(g(u,"ival")??g(v(g(u,"Integer")??{}),"ival")??1)}}return this._sequences.set(n,{current:s-o,increment:o,start:s}),null}_compileAlterSequence(e){const t=v(g(e,"sequence")),n=re(t),r=this._sequences.get(n);if(r===void 0)throw new Error(`Sequence "${n}" does not exist`);const s=R(g(e,"options"));for(const o of s){const i=v(g(o,"DefElem")??o),a=D(i,"defname"),l=g(i,"arg");if(a==="restart")if(l!=null){const c=v(l),u=Number(g(c,"ival")??g(v(g(c,"Integer")??{}),"ival")??r.start??1);r.current=u-r.increment}else r.current=(r.start??1)-r.increment;else if(a==="increment"){if(l!=null){const c=v(l);r.increment=Number(g(c,"ival")??g(v(g(c,"Integer")??{}),"ival")??1)}}else if(a==="start"&&l!=null){const c=v(l);r.start=Number(g(c,"ival")??g(v(g(c,"Integer")??{}),"ival")??1)}}return null}_parseColumnDef(e){const t=D(e,"colname"),n=v(g(e,"typeName")),r=R(g(n,"names")),s=[];for(const I of r){const S=K(I);S&&S!=="pg_catalog"&&s.push(S)}const i=R(g(n,"arrayBounds")).length>0;let[a,l]=s.length>0?nr(s):["text","string"],c=!1;const u=s.join(" ").toUpperCase();(u==="SERIAL"||u==="BIGSERIAL"||u==="SMALLSERIAL")&&(c=!0),i&&(a="array",l="array");const f=R(g(n,"typmods"));let d=null,p=null,m=null;if(f.length>0){const I=g(f[0],"Integer")??g(f[0],"A_Const");if(I!=null){const S=g(v(I),"ival");S!==null&&typeof S=="number"&&(a==="vector"?m=S:d=S)}if(f.length>1){const S=g(f[1],"Integer")??g(f[1],"A_Const");if(S!=null){const N=g(v(S),"ival");N!==null&&typeof N=="number"&&(p=N)}}}let _=!1,y=!1,x=!1,w=null;const E=R(g(e,"constraints"));for(const I of E){const S=v(g(I,"Constraint")??I),N=g(S,"contype");if((N==="CONSTR_NOTNULL"||N===1)&&(y=!0),(N==="CONSTR_PRIMARY"||N===5)&&(_=!0,y=!0),(N==="CONSTR_UNIQUE"||N===4)&&(x=!0),N==="CONSTR_DEFAULT"||N===2){const A=g(S,"raw_expr");A!=null&&(w=new ne().evaluate(v(A),{}))}(N==="CONSTR_IDENTITY"||N===9)&&(c=!0,y=!0)}return c&&(y=!0),ve(t,a,{pythonType:l,primaryKey:_,notNull:y,autoIncrement:c,defaultValue:w,vectorDimensions:m,unique:x,numericPrecision:d,numericScale:p})}_compileDrop(e){const t=g(e,"removeType");return t===20||t==="OBJECT_INDEX"?this._compileDropIndex(e):t===51||t==="OBJECT_VIEW"?this._compileDropView(e):t===17||t==="OBJECT_FOREIGN_SERVER"?this._compileDropForeignServer(e):t===18||t==="OBJECT_FOREIGN_TABLE"?this._compileDropForeignTable(e):this._compileDropTable(e)}_compileDropTable(e){const t=R(g(e,"objects")),n=g(e,"missing_ok")===!0;for(const r of t){const s=R(r);let o;if(s.length>0?o=K(s[s.length-1]):o=K(r),!!o){if(!this._tables.has(o)){if(n)continue;throw new Error(`Table "${o}" does not exist`)}this._tables.delete(o);for(const[i]of this._sequences)i.startsWith(`${o}_`)&&this._sequences.delete(i)}}return null}_compileDropView(e){const t=R(g(e,"objects")),n=g(e,"missing_ok")===!0;for(const r of t){let s=R(r);if(s.length===0){const i=g(v(r),"List");i!=null&&(s=R(g(v(i),"items")))}let o;if(s.length>0?o=K(s[s.length-1]):o=K(r),!!o){if(!this._views.has(o)){if(n)continue;throw new Error(`View "${o}" does not exist`)}this._views.delete(o)}}return null}_compileDropIndex(e){return null}_compileCreateForeignServer(e){const t=D(e,"servername");if(this._foreignServers.has(t)){if(g(e,"if_not_exists")===!0)return null;throw new Error(`Foreign server '${t}' already exists`)}const n=D(e,"fdwname");if(n!=="duckdb_fdw"&&n!=="arrow_fdw")throw new Error(`Unsupported FDW type: '${n}'`);const r={},s=R(g(e,"options"));for(const o of s){const i=v(g(o,"DefElem")??o),a=D(i,"defname"),l=v(g(i,"arg")),c=D(l,"sval")||D(v(g(l,"String")??{}),"sval");a&&(r[a]=c)}return this._foreignServers.set(t,{name:t,fdwType:n,options:r}),null}_compileCreateForeignTable(e){const t=v(g(e,"base")),n=v(g(t,"relation")),r=re(n);if(this._foreignTables.has(r)){if(g(t,"if_not_exists")===!0)return null;throw new Error(`Foreign table '${r}' already exists`)}if(this._tables.has(r))throw new Error(`Table '${r}' already exists`);const s=D(e,"servername");if(!this._foreignServers.has(s))throw new Error(`Foreign server '${s}' does not exist`);const o=new Map,i=R(g(t,"tableElts"));for(const c of i){const u=v(g(c,"ColumnDef")??c),f=this._parseColumnDef(u);o.set(f.name,f)}const a={},l=R(g(e,"options"));for(const c of l){const u=v(g(c,"DefElem")??c),f=D(u,"defname"),d=v(g(u,"arg")),p=D(d,"sval")||D(v(g(d,"String")??{}),"sval");f&&(a[f]=p)}return this._foreignTables.set(r,{name:r,serverName:s,columns:o,options:a}),null}_compileDropForeignServer(e){const t=R(g(e,"objects")),n=g(e,"missing_ok")===!0;for(const r of t){let s;if(Array.isArray(r)){const o=r;s=K(o[o.length-1])}else s=K(r);if(this._foreignServers.has(s)){for(const o of this._foreignTables.values())if(o.serverName===s)throw new Error(`Cannot drop server '${s}': foreign table '${o.name}' depends on it`);this._foreignServers.delete(s)}else if(!n)throw new Error(`Foreign server '${s}' does not exist`)}return null}_compileDropForeignTable(e){const t=R(g(e,"objects")),n=g(e,"missing_ok")===!0;for(const r of t){const s=R(r);let o;if(s.length>0?o=K(s[s.length-1]):o=K(r),!!o){if(this._foreignTables.has(o))this._foreignTables.delete(o);else if(!n)throw new Error(`Foreign table '${o}' does not exist`)}}return null}_compileCreateView(e){const t=v(g(e,"view")),n=re(t);if(this._tables.has(n))throw new Error(`"${n}" already exists as a table`);if(this._views.has(n))throw new Error(`View "${n}" already exists`);const r=v(g(e,"query")),s=v(g(r,"SelectStmt")??r);return this._views.set(n,s),null}_compileCreateIndex(e){return null}_compileAlterTable(e){const t=v(g(e,"relation")),n=re(t),r=this._tables.get(n);if(!r)throw new Error(`Table "${n}" does not exist`);const s=R(g(e,"cmds"));for(const o of s){const i=v(g(o,"AlterTableCmd")??o),a=g(i,"subtype"),l=typeof a=="string"?a:"";if(l==="AT_AddColumn"||a===0||a===14){const c=v(g(i,"def")),u=v(g(c,"ColumnDef")??c),f=this._parseColumnDef(u);if(r.columns.has(f.name))throw new Error(`Column "${f.name}" already exists in table "${n}"`);r.columns.set(f.name,f)}else if(l==="AT_DropColumn"||a===10||a===12){const c=D(i,"name"),u=g(i,"missing_ok")===!0;if(!r.columns.has(c)){if(u)continue;throw new Error(`Column "${c}" does not exist in table "${n}"`)}r.columns.delete(c);for(const f of r.documentStore.docIds){const d=r.documentStore.get(f);d&&c in d&&(Reflect.deleteProperty(d,c),r.documentStore.put(f,d))}}else if(l==="AT_ColumnDefault"||a===5||a===6){const c=D(i,"name");if(!r.columns.has(c))throw new Error(`Column "${c}" does not exist in table "${n}"`);const u=g(i,"def"),f=r.columns.get(c);if(u!=null){const p=new ne().evaluate(v(u),{});r.columns.set(c,ve(f.name,f.typeName,{...f,defaultValue:p}))}else r.columns.set(c,ve(f.name,f.typeName,{...f,defaultValue:null}))}else if(l==="AT_SetNotNull"||a===7||a===9){const c=D(i,"name");if(!r.columns.has(c))throw new Error(`Column "${c}" does not exist in table "${n}"`);for(const f of r.documentStore.docIds){const d=r.documentStore.get(f);if(d){const p=d[c];if(p==null)throw new Error(`Column "${c}" contains NULL values; cannot set NOT NULL`)}}const u=r.columns.get(c);r.columns.set(c,ve(u.name,u.typeName,{...u,notNull:!0}))}else if(l==="AT_DropNotNull"||a===6||a===8){const c=D(i,"name");if(!r.columns.has(c))throw new Error(`Column "${c}" does not exist in table "${n}"`);const u=r.columns.get(c);r.columns.set(c,ve(u.name,u.typeName,{...u,notNull:!1}))}else if(l==="AT_AlterColumnType"||a===25||a===28){const c=D(i,"name");if(!r.columns.has(c))throw new Error(`Column "${c}" does not exist in table "${n}"`);const u=v(g(i,"def")),f=v(g(u,"ColumnDef")??u),d=v(g(f,"typeName")),p=[];for(const x of R(g(d,"names"))){const w=K(x);w&&w!=="pg_catalog"&&p.push(w)}const[m,_]=p.length>0?nr(p):["text","string"],y=r.columns.get(c);r.columns.set(c,ve(c,m,{pythonType:_,primaryKey:y.primaryKey,notNull:y.notNull,autoIncrement:y.autoIncrement,defaultValue:y.defaultValue,vectorDimensions:y.vectorDimensions,unique:y.unique,numericPrecision:y.numericPrecision,numericScale:y.numericScale}));for(const x of Array.from(r.documentStore.docIds)){const w=r.documentStore.get(x);if(w&&w[c]!==null&&w[c]!==void 0){let E=w[c];_==="number"?(E=Number(E),isNaN(E)&&(E=w[c])):_==="string"?E=String(E):_==="boolean"&&(E=!!E),w[c]=E,r.documentStore.put(x,w)}}}else throw new Error(`Unsupported ALTER TABLE subcommand: ${String(a)}`)}return null}_compileRename(e){const t=g(e,"renameType"),n=typeof t=="string"?t:"";if(n==="OBJECT_TABLE"||t===36||t===42){const r=v(g(e,"relation")),s=re(r),o=D(e,"newname"),i=this._tables.get(s);if(!i)throw new Error(`Table "${s}" does not exist`);if(this._tables.has(o))throw new Error(`Table "${o}" already exists`);return this._tables.delete(s),this._tables.set(o,i),null}if(n==="OBJECT_COLUMN"||t===8||t===9){const r=v(g(e,"relation")),s=re(r),o=this._tables.get(s);if(!o)throw new Error(`Table "${s}" does not exist`);const i=D(e,"subname"),a=D(e,"newname");if(!o.columns.has(i))throw new Error(`Column "${i}" does not exist in table "${s}"`);if(o.columns.has(a))throw new Error(`Column "${a}" already exists in table "${s}"`);const l=[...o.columns.entries()];o.columns.clear();for(const[c,u]of l)if(c===i){const f=ve(a,u.typeName,{...u});o.columns.set(a,f)}else o.columns.set(c,u);for(const c of o.documentStore.docIds){const u=o.documentStore.get(c);u&&i in u&&(u[a]=u[i],Reflect.deleteProperty(u,i),o.documentStore.put(c,u))}return null}throw new Error(`Unsupported RENAME type: ${String(t)}`)}_compileTruncate(e){const t=R(g(e,"relations"));for(const n of t){const r=v(g(n,"RangeVar")??n),s=re(r),o=this._tables.get(s);if(!o)throw new Error(`Table "${s}" does not exist`);o.documentStore.clear(),o.invertedIndex.clear();for(const[,i]of o.vectorIndexes)i.clear();for(const[,i]of o.spatialIndexes)i.clear();o._nextDocId=1;for(const i of o.columns.values())if(i.autoIncrement){const a=`${s}_${i.name}_seq`,l=this._sequences.get(a);l&&(l.current=(l.start??1)-l.increment)}}return null}_compileInsert(e,t){const n=v(g(e,"relation")),r=re(n),s=this._tables.get(r);if(!s)throw new Error(`Table "${r}" does not exist`);const o=R(g(e,"cols"));let i;o.length>0?i=o.map(S=>{const N=v(g(S,"ResTarget")??S);return D(N,"name")}):i=s.columnNames;const a=v(g(e,"selectStmt")),l=v(g(a,"SelectStmt")??a),c=R(g(l,"valuesLists")),u=new ne({params:t,sequences:this._sequences,subqueryExecutor:this._makeSubqueryExecutor(t)}),f=[];if(c.length===0){const S=this._compileSelect(l,t);for(const N of S.rows){const A={};for(let M=0;M<i.length;M++)M<S.columns.length&&(A[i[M]]=N[S.columns[M]]??null);f.push(A)}}else for(const S of c){const N=v(g(S,"List")),A=R(g(N,"items")??S);if(A.length!==i.length)throw new Error(`VALUES has ${String(A.length)} columns but ${String(i.length)} were specified`);const M={};for(let C=0;C<i.length;C++)M[i[C]]=Po(A[C],t,u);f.push(M)}const d=g(e,"onConflictClause");let p=[],m=null,_=[];if(d!=null){const S=v(d),N=v(g(S,"infer"));p=R(g(N,"indexElems")).map(M=>{const C=v(g(M,"IndexElem")??M);return D(C,"name")}),m=g(S,"action"),_=R(g(S,"targetList"))}const y=new Map;if(p.length>0)for(const S of s.documentStore.docIds){const N=s.documentStore.get(S);if(N!==null){const A=p.map(M=>JSON.stringify(N[M])).join("\0");y.set(A,S)}}const x=R(g(e,"returningList")),w=x.length>0,E=[];let I=0;for(const S of f){if(p.length>0&&d!==null){const A=p.map(C=>JSON.stringify(S[C])).join("\0"),M=y.get(A);if(M!==void 0){if(m===1||m==="ONCONFLICT_NOTHING")continue;this._doConflictUpdate(s,M,S,_,u);const C=s.documentStore.get(M);if(C!==null){const O=p.map(F=>JSON.stringify(C[F])).join("\0");O!==A&&(y.delete(A),y.set(O,M))}w&&C!==null&&E.push(this._evaluateReturning(x,C,u,s)),I++;continue}}const[N]=s.insert(S);if(I++,p.length>0){const A=p.map(M=>JSON.stringify(S[M])).join("\0");y.set(A,N)}if(w){const A=s.documentStore.get(N);A!==null&&E.push(this._evaluateReturning(x,A,u,s))}}return w?{columns:this._extractReturningColumns(x,s),rows:E}:{columns:["inserted"],rows:[{inserted:I}]}}_doConflictUpdate(e,t,n,r,s){const o=e.documentStore.get(t);if(o===null)return;const i={...o},a={...o};for(const[c,u]of Object.entries(n))a[`excluded.${c}`]=u;for(const c of r){const u=v(g(c,"ResTarget")??c),f=D(u,"name"),d=g(u,"val");if(d!=null){const p=s.evaluate(v(d),a);p!=null?i[f]=p:Reflect.deleteProperty(i,f)}}e.invertedIndex.removeDocument(t),e.documentStore.put(t,i);const l={};for(const[c,u]of Object.entries(i))typeof u=="string"&&(l[c]=u);Object.keys(l).length>0&&e.invertedIndex.addDocument(t,l)}_compileUpdate(e,t){const n=v(g(e,"relation")),r=re(n),s=this._tables.get(r);if(!s)throw new Error(`Table "${r}" does not exist`);if(R(g(e,"fromClause")).length>0)return this._compileUpdateFrom(e,s,t);const i=g(e,"whereClause"),a=R(g(e,"targetList")),l=R(g(e,"returningList")),c=l.length>0,u=[],f=new ne({params:t,sequences:this._sequences,outerRow:this._correlatedOuterRow??void 0,subqueryExecutor:this._makeSubqueryExecutor(t)}),d=[];for(const m of a){const _=v(g(m,"ResTarget")??m),y=D(_,"name");if(!s.columns.has(y))throw new Error(`Unknown column "${y}" for table "${r}"`);d.push([y,v(g(_,"val"))])}let p=0;for(const[m,_]of s.documentStore.iterAll()){if(i!=null&&f.evaluate(v(i),_)!==!0)continue;const y={..._};for(const[w,E]of d){const I=f.evaluate(E,_),S=s.columns.get(w);if(I!=null)y[w]=I;else{if(S&&S.notNull)throw new Error(`NOT NULL constraint violated: column "${w}" in table "${r}"`);Reflect.deleteProperty(y,w)}}for(const w of s.fkUpdateValidators)w(_,y);s.invertedIndex.removeDocument(m),s.documentStore.put(m,y);const x={};for(const[w,E]of Object.entries(y))typeof E=="string"&&(x[w]=E);Object.keys(x).length>0&&s.invertedIndex.addDocument(m,x),c&&u.push(this._evaluateReturning(l,y,f,s)),p++}return c?{columns:this._extractReturningColumns(l,s),rows:u}:{columns:["updated"],rows:[{updated:p}]}}_compileUpdateFrom(e,t,n){const r=t.name,s=v(g(e,"relation")),o=De(s)??r,i=R(g(e,"fromClause")),a=g(e,"whereClause"),l=R(g(e,"targetList")),c=R(g(e,"returningList")),u=c.length>0,f=[],d=new ne({params:n,sequences:this._sequences,outerRow:this._correlatedOuterRow??void 0,subqueryExecutor:this._makeSubqueryExecutor(n)}),p=[];for(const y of l){const x=v(g(y,"ResTarget")??y),w=D(x,"name");if(!t.columns.has(w))throw new Error(`Unknown column "${w}" for table "${r}"`);p.push([w,v(g(x,"val"))])}const m=this._resolveFrom(i,n);let _=0;for(const[y,x]of t.documentStore.iterAll()){const w={...x};for(const[E,I]of Object.entries(x))w[`${o}.${E}`]=I;for(const E of m){const I={...w,...E};if(a!=null&&!d.evaluate(v(a),I))continue;const S={...x};for(const[A,M]of p){const C=d.evaluate(M,I),O=t.columns.get(A);if(C!=null)S[A]=C;else{if(O&&O.notNull)throw new Error(`NOT NULL constraint violated: column "${A}" in table "${r}"`);Reflect.deleteProperty(S,A)}}t.invertedIndex.removeDocument(y),t.documentStore.put(y,S);const N={};for(const[A,M]of Object.entries(S))typeof M=="string"&&(N[A]=M);Object.keys(N).length>0&&t.invertedIndex.addDocument(y,N),u&&f.push(this._evaluateReturning(c,S,d,t)),_++;break}}return u?{columns:this._extractReturningColumns(c,t),rows:f}:{columns:["updated"],rows:[{updated:_}]}}_compileDelete(e,t){const n=v(g(e,"relation")),r=re(n),s=this._tables.get(r);if(!s)throw new Error(`Table "${r}" does not exist`);if(R(g(e,"usingClause")).length>0)return this._compileDeleteUsing(e,s,t);const i=g(e,"whereClause"),a=R(g(e,"returningList")),l=a.length>0,c=[],u=new ne({params:t,outerRow:this._correlatedOuterRow??void 0,subqueryExecutor:this._makeSubqueryExecutor(t)}),f=[];for(const[d,p]of s.documentStore.iterAll())i!=null&&u.evaluate(v(i),p)!==!0||(l&&c.push(this._evaluateReturning(a,p,u,s)),f.push(d));for(const d of f)for(const p of s.fkDeleteValidators)p(d);for(const d of f)s.invertedIndex.removeDocument(d),s.documentStore.delete(d);return l?{columns:this._extractReturningColumns(a,s),rows:c}:{columns:["deleted"],rows:[{deleted:f.length}]}}_compileDeleteUsing(e,t,n){const r=t.name,s=v(g(e,"relation")),o=De(s)??r,i=R(g(e,"usingClause")),a=g(e,"whereClause"),l=R(g(e,"returningList")),c=l.length>0,u=[],f=new ne({params:n,outerRow:this._correlatedOuterRow??void 0,subqueryExecutor:this._makeSubqueryExecutor(n)}),d=this._resolveFrom(i,n),p=[];for(const[m,_]of t.documentStore.iterAll()){const y={..._};for(const[x,w]of Object.entries(_))y[`${o}.${x}`]=w;for(const x of d){const w={...y,...x};if(!(a!=null&&!f.evaluate(v(a),w))){c&&u.push(this._evaluateReturning(l,_,f,t)),p.push(m);break}}}for(const m of p)t.invertedIndex.removeDocument(m),t.documentStore.delete(m);return c?{columns:this._extractReturningColumns(l,t),rows:u}:{columns:["deleted"],rows:[{deleted:p.length}]}}_compileTransaction(e){return g(e,"kind"),this._transactionActive=!this._transactionActive,null}_compilePrepare(e){const t=D(e,"name");if(this._prepared.has(t))throw new Error(`Prepared statement "${t}" already exists`);const n=v(g(e,"query"));return this._prepared.set(t,n),null}_compileExecute(e,t){const n=D(e,"name"),r=this._prepared.get(n);if(r===void 0)throw new Error(`Prepared statement "${n}" does not exist`);const s=R(g(e,"params")),o=new ne({params:t}),i=[];for(const l of s)i.push(o.evaluate(l,{}));const a=this._params;this._params=i;try{return this._dispatchStatement(r,i)}finally{this._params=a}}_compileDeallocate(e){const t=D(e,"name");if(!t)this._prepared.clear();else{if(!this._prepared.has(t))throw new Error(`Prepared statement "${t}" does not exist`);this._prepared.delete(t)}return null}_compileExplain(e,t){const n=v(g(e,"query")),r=v(g(n,"SelectStmt")??n),s=R(g(r,"fromClause"));let o=`${String(this._tables.size)} tables`;if(s.length>0){const a=s[0],l=v(g(a,"RangeVar")??a),c=re(l);if(c){const u=this._tables.get(c);u&&(o=`table "${c}" (${String(u.rowCount)} rows)`)}}const i=`Seq Scan on ${o}`;return{columns:["QUERY PLAN"],rows:[{"QUERY PLAN":i}]}}_compileAnalyze(e){const t=e.rels;if(t&&t.length>0)for(const n of t){const r=n,o=(r.VacuumRelation??r).relation,i=o?o.relname:null;i&&this._tables.has(i)&&this._tables.get(i).analyze()}else for(const n of this._tables.values())n.analyze();return null}_compileSelect(e,t,n){const r=g(e,"withClause");let s=[];if(r!=null){const a=v(r),l=R(g(a,"ctes")),c=g(a,"recursive")===!0;s=this._materializeCTEs(l,t,c,e)}const o=this._correlatedOuterRow;this._correlatedOuterRow=n??null;const i=new Map(this._inlinedCTEs);try{return this._compileSelectBody(e,t)}finally{this._correlatedOuterRow=o;for(const a of s)this._inlinedCTEs.delete(a);this._inlinedCTEs=i;for(const a of s)this._tables.delete(a);for(const a of this._expandedViews)this._shadowedTables.has(a)?(this._tables.set(a,this._shadowedTables.get(a)),this._shadowedTables.delete(a)):this._tables.delete(a);this._expandedViews=[]}}_compileSelectBody(e,t){const n=R(g(e,"valuesLists"));if(n.length>0)return this._compileValues(n,t);const r=g(e,"op");if(r!=null&&r!==0&&r!=="SETOP_NONE")return this._compileSetOp(e,t);e=this._tryPredicatePushdown(e,t);const s=R(g(e,"fromClause")),o=g(e,"whereClause"),i=R(g(e,"targetList")),a=R(g(e,"groupClause")),l=g(e,"havingClause"),c=R(g(e,"sortClause")),u=g(e,"limitCount"),f=g(e,"limitOffset"),d=g(e,"distinctClause"),p=R(g(e,"windowClause")),m=new ne({params:t,sequences:this._sequences,outerRow:this._correlatedOuterRow??void 0,subqueryExecutor:this._makeSubqueryExecutor(t)});let _;s.length===0?_=[{}]:_=this._resolveFrom(s,t),o!=null&&(_=_.filter(S=>m.evaluate(v(o),S)===!0));const y=this._hasAggregates(i);a.length>0?_=this._applyGroupBy(_,a,i,l,m):y&&(_=this._applyGroupBy(_,[],i,l,m));const x=this._hasWindowFunctions(i);x&&(_=this._applyWindowFunctions(_,i,p,m));let w,E;a.length>0||y||x?(w=this._resolveSelectColumnNames(i,_),E=_):[w,E]=this._projectColumns(i,_,m);let I=E;if(d!=null&&(I=this._applyDistinct(I,w)),c.length>0&&(I=this._applyOrderBy(I,c,m,i)),f!=null){const S=Number(m.evaluate(v(f),{}));I=I.slice(S)}if(u!=null){const S=Number(m.evaluate(v(u),{}));I=I.slice(0,S)}return{columns:w,rows:I}}_materializeCTEs(e,t,n,r){const s=[];for(const o of e){const i=v(g(o,"CommonTableExpr")??o),a=D(i,"ctename"),l=v(g(i,"ctequery")),c=v(g(l,"SelectStmt")??l),u=g(c,"op");if(n&&u!==null&&u!==void 0&&u!==0&&u!=="SETOP_NONE")this._materializeRecursiveCTE(i,c,t);else if(this._countCTERefs(a,r)===1)this._inlinedCTEs.set(a,c);else{const p=this._compileSelect(c,t),m=this._resultToTable(a,p);this._tables.set(a,m)}s.push(a)}return s}_materializeRecursiveCTE(e,t,n){const r=D(e,"ctename"),s=g(t,"all")===!0,o=R(g(e,"aliascolnames")),i=o.length>0?o.map(x=>K(x)):null,a=v(g(t,"larg")),l=v(g(a,"SelectStmt")??a),c=this._compileSelect(l,n),u=c.columns;let f,d;if(i!==null){d=[];for(const x of c.rows){const w={};for(let E=0;E<i.length;E++)E<u.length&&(w[i[E]]=x[u[E]]??null);d.push(w)}f=i}else d=[...c.rows],f=u;let p=null;if(!s){p=new Set;const x=[];for(const w of d){const E=f.map(I=>JSON.stringify(w[I])).join("\0");p.has(E)||(p.add(E),x.push(w))}d=x}let m=[...d];for(let x=0;x<Do;x++){const w={columns:f,rows:m},E=this._resultToTable(r,w);this._tables.set(r,E);const I=v(g(t,"rarg")),S=v(g(I,"SelectStmt")??I),N=this._compileSelect(S,n),A=i??f,M=[];for(const O of N.rows){const F={};for(let T=0;T<A.length;T++)T<N.columns.length&&(F[A[T]]=O[N.columns[T]]??null);M.push(F)}if(M.length===0)break;let C=M;if(p!==null){C=[];for(const O of M){const F=f.map(T=>JSON.stringify(O[T])).join("\0");p.has(F)||(p.add(F),C.push(O))}if(C.length===0)break}d.push(...C),m=C}const _={columns:f,rows:d},y=this._resultToTable(r,_);this._tables.set(r,y)}_countCTERefs(e,t){if(t==null||typeof t!="object")return 0;if(Array.isArray(t)){let o=0;for(const i of t)o+=this._countCTERefs(e,i);return o}const n=t,r=g(n,"RangeVar");if(r!=null&&D(v(r),"relname")===e||D(n,"relname")===e)return 1;let s=0;for(const[o,i]of Object.entries(n))o!=="withClause"&&i!==null&&typeof i=="object"&&(s+=this._countCTERefs(e,i));return s}_resultToTable(e,t){const n=[];for(const s of t.columns){let o="text",i="string";for(const a of t.rows){const l=a[s];if(l!=null){typeof l=="boolean"?(o="text",i="string"):typeof l=="number"&&(Number.isInteger(l)?(o="integer",i="number"):(o="real",i="number"));break}}n.push(ve(s,o,{pythonType:i}))}const r=new Ot(e,n);for(let s=0;s<t.rows.length;s++){const o=s+1,i={_id:o};Object.assign(i,t.rows[s]),r.documentStore.put(o,i)}return r}_compileSetOp(e,t){const n=g(e,"op"),r=v(g(e,"larg")),s=v(g(e,"rarg")),o=g(e,"all")===!0,i=v(g(r,"SelectStmt")??r),a=v(g(s,"SelectStmt")??s),l=this._compileSelect(i,t),c=this._compileSelect(a,t);if(l.columns.length!==c.columns.length)throw new Error(`Set operation column count mismatch: ${String(l.columns.length)} vs ${String(c.columns.length)}`);const u=l.columns,f=c.rows.map(y=>{const x={};for(let w=0;w<u.length;w++)x[u[w]]=y[c.columns[w]]??null;return x});let d;if(n===1||n==="SETOP_UNION")d=this._setUnion(l.rows,f,u,o);else if(n===2||n==="SETOP_INTERSECT")d=this._setIntersect(l.rows,f,u,o);else if(n===3||n==="SETOP_EXCEPT")d=this._setExcept(l.rows,f,u,o);else throw new Error(`Unsupported set operation: ${String(n)}`);const p=R(g(e,"sortClause"));if(p.length>0){const y=new ne({params:t}),x=R(g(i,"targetList"));d=this._applyOrderBy(d,p,y,x)}const m=g(e,"limitCount"),_=g(e,"limitOffset");if(_!=null){const y=new ne({params:t}),x=Number(y.evaluate(v(_),{}));d=d.slice(x)}if(m!=null){const y=new ne({params:t}),x=Number(y.evaluate(v(m),{}));d=d.slice(0,x)}return{columns:u,rows:d}}_setUnion(e,t,n,r){if(r)return[...e,...t];const s=new Set,o=[];for(const i of[...e,...t]){const a=n.map(l=>JSON.stringify(i[l])).join("\0");s.has(a)||(s.add(a),o.push(i))}return o}_setIntersect(e,t,n,r){if(r){const a=new Map;for(const c of t){const u=n.map(f=>JSON.stringify(c[f])).join("\0");a.set(u,(a.get(u)??0)+1)}const l=[];for(const c of e){const u=n.map(d=>JSON.stringify(c[d])).join("\0"),f=a.get(u)??0;f>0&&(l.push(c),a.set(u,f-1))}return l}const s=new Set(t.map(a=>n.map(l=>JSON.stringify(a[l])).join("\0"))),o=new Set,i=[];for(const a of e){const l=n.map(c=>JSON.stringify(a[c])).join("\0");s.has(l)&&!o.has(l)&&(o.add(l),i.push(a))}return i}_setExcept(e,t,n,r){if(r){const a=new Map;for(const c of t){const u=n.map(f=>JSON.stringify(c[f])).join("\0");a.set(u,(a.get(u)??0)+1)}const l=[];for(const c of e){const u=n.map(d=>JSON.stringify(c[d])).join("\0"),f=a.get(u)??0;f>0?a.set(u,f-1):l.push(c)}return l}const s=new Set(t.map(a=>n.map(l=>JSON.stringify(a[l])).join("\0"))),o=new Set,i=[];for(const a of e){const l=n.map(c=>JSON.stringify(a[c])).join("\0");!s.has(l)&&!o.has(l)&&(o.add(l),i.push(a))}return i}_compileValues(e,t){const n=new ne({params:t}),r=[];let s=0;for(const i of e){const a=v(g(i,"List")),l=R(g(a,"items")??i);s=Math.max(s,l.length);const c={};for(let u=0;u<l.length;u++){const f=`column${String(u+1)}`;c[f]=n.evaluate(l[u],{})}r.push(c)}const o=[];for(let i=0;i<s;i++)o.push(`column${String(i+1)}`);return{columns:o,rows:r}}_resolveFrom(e,t){let n=null;for(const r of e){const s=g(r,"RangeSubselect");if(s!=null){const i=v(s);if(g(i,"lateral")===!0&&n!==null){n=this._resolveLateralJoin(n,i,t);continue}}const o=this._resolveFromItem(r,t);n===null?n=o:n=this._crossJoin(n,o)}return n??[{}]}_resolveFromItem(e,t){const n=g(e,"RangeVar");if(n!=null){const i=v(n),a=re(i),l=De(i),c=Co(i);if(c==="information_schema")return this._buildInformationSchemaTable(a,l??a);if(c==="pg_catalog")return this._buildPgCatalogTable(a,l??a);const u=this._views.get(a);if(u!==void 0){const m=this._compileSelect(u,t);return this._applyAlias(m.rows,l??a)}const f=this._inlinedCTEs.get(a);if(f!==void 0){this._inlinedCTEs.delete(a);const m=this._compileSelect(f,t),_=this._resultToTable(a,m);this._tables.set(a,_),this._expandedViews.push(a);const y=[];for(const[,x]of _.documentStore.iterAll())y.push({...x});return this._applyAlias(y,l??a)}const d=this._tables.get(a);if(!d)throw new Error(`Table "${a}" does not exist`);const p=[];for(const[,m]of d.documentStore.iterAll())p.push({...m});return this._applyAlias(p,l??a)}const r=g(e,"JoinExpr");if(r!=null)return this._resolveJoin(v(r),t);const s=g(e,"RangeSubselect");if(s!=null){const i=v(s),a=v(g(i,"subquery")),l=v(g(a,"SelectStmt")??a),c=De(i),u=this._compileSelect(l,t);return this._applyAlias(u.rows,c)}const o=g(e,"RangeFunction");if(o!=null)return this._compileFromFunction(v(o),t);throw new Error("Unsupported FROM clause item")}_applyAlias(e,t){return t===null?e:e.map(n=>{const r={...n};for(const[s,o]of Object.entries(n))s.includes(".")||(r[`${t}.${s}`]=o);return r})}_resolveLateralJoin(e,t,n){const r=v(g(t,"subquery")),s=v(g(r,"SelectStmt")??r),o=De(t)??"_lateral",i=[];for(const a of e){const l=this._compileSelect(s,n,a);for(const c of l.rows){const u={};for(const[f,d]of Object.entries(c))u[f]=d,u[`${o}.${f}`]=d;i.push({...a,...u})}}return i}_compileFromFunction(e,t){const n=R(g(e,"functions"));if(n.length===0)throw new Error("Empty RangeFunction");const r=n[0],s=g(r,"List"),o=s!=null?R(g(v(s),"items")):R(r);if(o.length===0)throw new Error("Empty function list in RangeFunction");const i=v(g(o[0],"FuncCall")??o[0]),a=R(g(i,"funcname")),l=K(a[a.length-1]).toLowerCase(),c=R(g(i,"args")),u=De(e),f=v(g(e,"alias")),d=R(g(f,"colnames")),p=d.length>0?K(d[0]):null,m=new ne({params:t});if(l==="generate_series")return this._buildGenerateSeries(c,m,u??"generate_series",p??"generate_series");if(l==="unnest")return this._buildUnnest(c,m,u??"unnest",p??"unnest");if(l==="json_each"||l==="jsonb_each"||l==="json_each_text"||l==="jsonb_each_text")return this._buildJSONEach(c,m,u??l,l.endsWith("_text"));if(l==="json_array_elements"||l==="jsonb_array_elements"||l==="json_array_elements_text"||l==="jsonb_array_elements_text")return this._buildJSONArrayElements(c,m,u??l,l.endsWith("_text"));if(l==="regexp_split_to_table")return this._buildRegexpSplitToTable(c,m,u??"regexp_split_to_table",p??"regexp_split_to_table");throw new Error(`Unsupported FROM-clause function: ${l}`)}_buildGenerateSeries(e,t,n,r){if(e.length<2)throw new Error("generate_series requires at least 2 arguments");const s=Number(t.evaluate(e[0],{})),o=Number(t.evaluate(e[1],{})),i=e.length>2?Number(t.evaluate(e[2],{})):1;if(i===0)throw new Error("generate_series step cannot be zero");const a=[];if(i>0)for(let l=s;l<=o;l+=i){const c={[r]:l};c[`${n}.${r}`]=l,a.push(c)}else for(let l=s;l>=o;l+=i){const c={[r]:l};c[`${n}.${r}`]=l,a.push(c)}return a}_buildUnnest(e,t,n,r){if(e.length<1)throw new Error("unnest requires at least 1 argument");let s=t.evaluate(e[0],{});Array.isArray(s)||(s=[s]);const o=[];for(const i of s){const a={[r]:i};a[`${n}.${r}`]=i,o.push(a)}return o}_buildJSONEach(e,t,n,r){if(e.length<1)throw new Error("json_each requires at least 1 argument");let s=t.evaluate(e[0],{});if(typeof s=="string"&&(s=JSON.parse(s)),s===null||typeof s!="object"||Array.isArray(s))throw new Error("json_each expects a JSON object");const o=[];for(const[i,a]of Object.entries(s)){const l=r?String(a):a,c={key:i,value:l};c[`${n}.key`]=i,c[`${n}.value`]=l,o.push(c)}return o}_buildJSONArrayElements(e,t,n,r){if(e.length<1)throw new Error("json_array_elements requires at least 1 argument");let s=t.evaluate(e[0],{});if(typeof s=="string"&&(s=JSON.parse(s)),!Array.isArray(s))throw new Error("json_array_elements expects a JSON array");const o=[];for(const i of s){const a=r?String(i):i,l={value:a};l[`${n}.value`]=a,o.push(l)}return o}_buildRegexpSplitToTable(e,t,n,r){if(e.length<2)throw new Error("regexp_split_to_table requires at least 2 arguments");const s=String(t.evaluate(e[0],{})),o=String(t.evaluate(e[1],{})),i=e.length>2?String(t.evaluate(e[2],{})):"",a=new RegExp(o,i.includes("g")?i:i+"g"),l=s.split(a),c=[];for(const u of l){const f={[r]:u};f[`${n}.${r}`]=u,c.push(f)}return c}_crossJoin(e,t){const n=[];for(const r of e)for(const s of t)n.push({...r,...s});return n}_resolveJoin(e,t){const n=g(e,"jointype"),r=v(g(e,"larg")),s=v(g(e,"rarg")),o=g(e,"quals"),i=g(s,"RangeSubselect");if(i!=null){const _=v(i);if(g(_,"lateral")===!0){const y=this._resolveFromItem(r,t);return this._resolveLateralJoin(y,_,t)}}const a=this._resolveFromItem(r,t),l=this._resolveFromItem(s,t),c=new ne({params:t});if(n===5||n==="JOIN_CROSS")return this._crossJoin(a,l);if((n===0||n==="JOIN_INNER")&&o==null)return this._crossJoin(a,l);const u=[],f=n===1||n==="JOIN_LEFT",d=n===3||n==="JOIN_RIGHT",p=n===2||n==="JOIN_FULL",m=new Set;for(const _ of a){let y=!1;for(let x=0;x<l.length;x++){const w=l[x],E={..._,...w};o!=null&&c.evaluate(v(o),E)!==!0||(u.push(E),y=!0,m.add(x))}if(!y&&(f||p)){const x={..._};if(l.length>0)for(const w of Object.keys(l[0]))w in x||(x[w]=null);u.push(x)}}if(d||p){for(let _=0;_<l.length;_++)if(!m.has(_)){const y={};if(a.length>0)for(const x of Object.keys(a[0]))y[x]=null;for(const[x,w]of Object.entries(l[_]))y[x]=w;u.push(y)}}return u}_buildInformationSchemaTable(e,t){if(e==="tables"){const n=[];for(const r of[...this._tables.keys()].sort())n.push({table_catalog:"",table_schema:"public",table_name:r,table_type:"BASE TABLE"});for(const r of[...this._foreignTables.keys()].sort())n.push({table_catalog:"",table_schema:"public",table_name:r,table_type:"FOREIGN TABLE"});for(const r of[...this._views.keys()].sort())n.push({table_catalog:"",table_schema:"public",table_name:r,table_type:"VIEW"});return this._applyAlias(n,t)}if(e==="columns"){const n={int2:"smallint",int4:"integer",int8:"bigint",float4:"real",float8:"double precision",bool:"boolean"},r=[];for(const s of[...this._tables.keys()].sort()){const o=this._tables.get(s);let i=1;for(const[a,l]of o.columns){const c=n[l.typeName]??l.typeName;r.push({table_catalog:"",table_schema:"public",table_name:s,column_name:a,ordinal_position:i,data_type:c,is_nullable:l.notNull?"NO":"YES"}),i++}}for(const s of[...this._foreignTables.keys()].sort()){const o=this._foreignTables.get(s);let i=1;for(const[a,l]of o.columns){const c=n[l.typeName]??l.typeName;r.push({table_catalog:"",table_schema:"public",table_name:s,column_name:a,ordinal_position:i,data_type:c,is_nullable:l.notNull?"NO":"YES"}),i++}}return this._applyAlias(r,t)}throw new Error(`Unknown information_schema view: "${e}"`)}_buildPgCatalogTable(e,t){if(e==="pg_tables"){const n=[];for(const r of[...this._tables.keys()].sort())n.push({schemaname:"public",tablename:r,tableowner:"",tablespace:""});return this._applyAlias(n,t)}if(e==="pg_views"){const n=[];for(const r of[...this._views.keys()].sort())n.push({schemaname:"public",viewname:r,viewowner:"",definition:""});return this._applyAlias(n,t)}if(e==="pg_indexes"){const n=[],r=this._engine,s=r!==null?r._indexManager:void 0;if(s!==void 0){const o=s._indexes;if(o!==void 0)for(const i of o.values()){const a=i.indexDef;if(a!==void 0){const l=a.tableName??"",c=a.name??"",u=a.columns??[];n.push({schemaname:"public",tablename:l,indexname:c,tablespace:"",indexdef:`CREATE INDEX ${c} ON ${l} (${u.join(", ")})`})}}}return this._applyAlias(n,t)}if(e==="pg_type"){const r=[[16,"boolean",11,1,"b","B"],[17,"bytea",11,-1,"b","U"],[20,"bigint",11,8,"b","N"],[21,"smallint",11,2,"b","N"],[23,"integer",11,4,"b","N"],[25,"text",11,-1,"b","S"],[114,"json",11,-1,"b","U"],[142,"xml",11,-1,"b","U"],[700,"real",11,4,"b","N"],[701,"float8",11,8,"b","N"],[1043,"varchar",11,-1,"b","S"],[1082,"date",11,4,"b","D"],[1083,"time",11,8,"b","D"],[1114,"timestamp",11,8,"b","D"],[1184,"timestamptz",11,8,"b","D"],[1186,"interval",11,16,"b","T"],[1700,"numeric",11,-1,"b","N"],[2950,"uuid",11,16,"b","U"],[3802,"jsonb",11,-1,"b","U"],[16385,"vector",11,-1,"b","U"]].map(([s,o,i,a,l,c])=>({oid:s,typname:o,typnamespace:i,typlen:a,typtype:l,typcategory:c}));return this._applyAlias(r,t)}throw new Error(`Unknown pg_catalog view: "${e}"`)}_projectColumns(e,t,n){if(e.length===0){if(t.length===0)return[[],[]];const i=Object.keys(t[0]).filter(a=>!a.includes("."));return[i,t.map(a=>{const l={};for(const c of i)l[c]=a[c];return l})]}const r=[],s=[];for(const i of e){const a=v(g(i,"ResTarget")??i),l=g(a,"val"),c=D(a,"name");if(l!=null){const u=v(l);if(Ue(u)){const d=g(u,"ColumnRef");if(d!=null){const p=R(g(v(d),"fields"));if(p.length>=2){const m=K(p[0]);if(t.length>0)for(const _ of Object.keys(t[0])){const y=`${m}.`;if(_.startsWith(y)){const x=_.slice(y.length);x.includes(".")||(r.push(x),s.push({name:x,node:null}))}}continue}}if(t.length>0)for(const p of Object.keys(t[0]))p.includes(".")||(r.push(p),s.push({name:p,node:null}));continue}let f=c;f||(f=this._deriveColumnName(u)),r.push(f),s.push({name:f,node:u})}}const o=[];for(const i of t){const a={};for(const l of s)l.node===null?a[l.name]=i[l.name]:a[l.name]=n.evaluate(l.node,i);o.push(a)}return[r,o]}_deriveColumnName(e){if(J(e))try{return G(e)}catch{}if(Y(e)){const t=oe(e);if(Be.has(t)){const n=me(e);if(We(e)||n.length===0)return t;try{const r=G(n[0]);return`${t}_${r}`}catch{return t}}return t}if($t(e)){const t=v(g(e,"TypeCast")),n=v(g(t,"arg"));if(J(n))try{return G(n)}catch{}}return qt(e),"?column?"}_resolveSelectColumnNames(e,t){if(e.length===0)return t.length===0?[]:Object.keys(t[0]).filter(r=>!r.includes("."));const n=[];for(const r of e){const s=v(g(r,"ResTarget")??r),o=g(s,"val"),i=D(s,"name");if(o!=null){const a=v(o);if(Ue(a)){if(t.length>0)for(const l of Object.keys(t[0]))l.includes(".")||n.push(l);continue}n.push(i||this._deriveColumnName(a))}}return n}_hasAggregates(e){for(const t of e){const n=v(g(t,"ResTarget")??t),r=g(n,"val");if(r!=null&&this._containsAggregate(v(r)))return!0}return!1}_containsAggregate(e){if(Y(e)){const t=oe(e);if(Be.has(t)&&!Ke(e))return!0}if(qt(e)||g(e,"SubLink")!==null)return!1;for(const[,t]of Object.entries(e))if(t!==null&&typeof t=="object"){if(Array.isArray(t)){for(const n of t)if(n!==null&&typeof n=="object"&&this._containsAggregate(n))return!0}else if(this._containsAggregate(t))return!0}return!1}_applyGroupBy(e,t,n,r,s){const o=new Map;if(t.length===0)o.set("__all__",e);else for(const l of e){const c=[];for(const d of t){const p=s.evaluate(d,l);c.push(p)}const u=JSON.stringify(c);let f=o.get(u);f||(f=[],o.set(u,f)),f.push(l)}const i=[],a=[];for(const[,l]of o){const c=this._computeAggregates(l,n,s);i.push(c),a.push(l)}if(r!=null){const l=[];for(let c=0;c<i.length;c++){const u=i[c],f=a[c],d=this._resolveHavingAggregates(v(r),f,u,s);s.evaluate(v(r),d)===!0&&l.push(u)}return l}return i}_computeAggregates(e,t,n){const r={},s=e[0];for(const o of t){const i=v(g(o,"ResTarget")??o),a=g(i,"val"),l=D(i,"name");if(a==null)continue;const c=v(a);if(Y(c)){const u=oe(c),f=We(c),d=me(c),p=Ar(c);if(Ke(c)){const w=l||u;r[w]=n.evaluate(c,s);continue}if(!Be.has(u)){const w={...s};this._collectHavingAggregates(c,e,w,n);const E=l||this._deriveColumnName(c);r[E]=n.evaluate(c,w);continue}let _=l;if(!_)if(f||d.length===0)_=u;else try{const w=G(d[0]);_=`${u}_${w}`}catch{_=u}let y;const x=()=>{let w=[];for(const E of e){const I=n.evaluate(d[0],E);I!=null&&w.push(I)}if(p){const E=new Set,I=[];for(const S of w){const N=JSON.stringify(S);E.has(N)||(E.add(N),I.push(S))}w=I}return w};switch(u){case"count":f?y=e.length:y=x().length;break;case"sum":{const w=x();y=w.length>0?w.reduce((E,I)=>E+Number(I),0):null;break}case"avg":{const w=x();w.length>0?y=w.reduce((I,S)=>I+Number(S),0)/w.length:y=null;break}case"min":{const w=x();w.length===0?y=null:y=w.reduce((E,I)=>E<I?E:I);break}case"max":{const w=x();w.length===0?y=null:y=w.reduce((E,I)=>E>I?E:I);break}case"string_agg":{const w=d.length>=2?String(n.evaluate(d[1],s)):",",E=[];for(const I of e){const S=n.evaluate(d[0],I);S!=null&&E.push(Nr(S))}y=E.length>0?E.join(w):null;break}case"array_agg":{const w=[];for(const E of e)w.push(n.evaluate(d[0],E));y=w;break}case"bool_and":{const w=x();y=w.length>0?w.every(E=>!!E):null;break}case"bool_or":{const w=x();y=w.length>0?w.some(E=>!!E):null;break}case"stddev":case"stddev_samp":{const w=x().map(Number);if(w.length<2)y=null;else{const E=w.reduce((S,N)=>S+N,0)/w.length,I=w.reduce((S,N)=>S+(N-E)**2,0)/(w.length-1);y=Math.sqrt(I)}break}case"stddev_pop":{const w=x().map(Number);if(w.length===0)y=null;else{const E=w.reduce((S,N)=>S+N,0)/w.length,I=w.reduce((S,N)=>S+(N-E)**2,0)/w.length;y=Math.sqrt(I)}break}case"variance":case"var_samp":{const w=x().map(Number);if(w.length<2)y=null;else{const E=w.reduce((I,S)=>I+S,0)/w.length;y=w.reduce((I,S)=>I+(S-E)**2,0)/(w.length-1)}break}case"var_pop":{const w=x().map(Number);if(w.length===0)y=null;else{const E=w.reduce((I,S)=>I+S,0)/w.length;y=w.reduce((I,S)=>I+(S-E)**2,0)/w.length}break}case"json_object_agg":case"jsonb_object_agg":{if(d.length<2)y=null;else{const w={};for(const E of e){const I=n.evaluate(d[0],E),S=n.evaluate(d[1],E);I!=null&&(w[String(I)]=S)}y=w}break}case"percentile_cont":{if(d.length>0){const w=Number(n.evaluate(d[0],s)),E=v(g(c,"FuncCall")??c),I=R(g(E,"agg_order"));if(I.length>0){const S=v(g(I[0],"SortBy")??I[0]),N=v(g(S,"node")),A=[];for(const M of e){const C=n.evaluate(N,M);C!=null&&A.push(Number(C))}if(A.sort((M,C)=>M-C),A.length===0)y=null;else{const M=w*(A.length-1),C=Math.floor(M),O=Math.ceil(M);C===O?y=A[C]:y=A[C]+(M-C)*(A[O]-A[C])}}else y=null}else y=null;break}case"mode":{const w=v(g(c,"FuncCall")??c),E=R(g(w,"agg_order"));if(E.length>0){const I=v(g(E[0],"SortBy")??E[0]),S=v(g(I,"node")),N=new Map;for(const C of e){const O=n.evaluate(S,C),F=JSON.stringify(O),T=N.get(F);T?T.count++:N.set(F,{count:1,value:O})}let A=0,M=null;for(const C of N.values())C.count>A&&(A=C.count,M=C.value);y=M}else y=null;break}case"corr":case"covar_pop":case"covar_samp":case"regr_count":case"regr_avgx":case"regr_avgy":case"regr_sxx":case"regr_syy":case"regr_sxy":case"regr_slope":case"regr_intercept":case"regr_r2":{if(d.length<2){y=null;break}const w=[],E=[];for(const I of e){const S=n.evaluate(d[0],I),N=n.evaluate(d[1],I);S!=null&&N!==null&&N!==void 0&&(w.push(Number(S)),E.push(Number(N)))}y=this._computeStatAgg(u,w,E);break}default:y=n.evaluate(c,s);break}r[_]=y}else{const u=l||this._deriveColumnName(c);r[u]=n.evaluate(c,s)}}return r}_computeStatAgg(e,t,n){const r=t.length;if(r===0)return null;const s=n.reduce((f,d)=>f+d,0),o=t.reduce((f,d)=>f+d,0),i=s/r,a=o/r;let l=0,c=0,u=0;for(let f=0;f<r;f++){const d=n[f]-i,p=t[f]-a;l+=d*d,c+=p*p,u+=d*p}switch(e){case"regr_count":return r;case"regr_avgx":return i;case"regr_avgy":return a;case"regr_sxx":return l;case"regr_syy":return c;case"regr_sxy":return u;case"covar_pop":return u/r;case"covar_samp":return r<2?null:u/(r-1);case"corr":return l===0||c===0?null:u/Math.sqrt(l*c);case"regr_slope":return l===0?null:u/l;case"regr_intercept":return l===0?null:a-u/l*i;case"regr_r2":{if(l===0||c===0)return null;const f=u/Math.sqrt(l*c);return f*f}default:return null}}_resolveHavingAggregates(e,t,n,r){const s={...n};return this._collectHavingAggregates(e,t,s,r),s}_collectHavingAggregates(e,t,n,r){const s=e.FuncCall;if(s){const a=s.funcname;if(a.length>0){const l=a[a.length-1],c=l.String??l.str,u=typeof c=="object"&&c!==null?c.sval??c.str:c;if(u&&Be.has(u.toLowerCase())){const f=this._computeInlineAggregate(u.toLowerCase(),s,t,r),d=We(e),p=me(e);let m;if(d||p.length===0)m=`${u.toLowerCase()}(*)`;else try{const _=G(p[0]);m=`${u.toLowerCase()}(${_})`}catch{m=u.toLowerCase()}n[m]=f,n[`__having_agg_${JSON.stringify(e)}`]=f;return}}}const o=e.BoolExpr;if(o){const a=R(o.args);for(const l of a)this._collectHavingAggregates(v(l),t,n,r);return}const i=e.A_Expr;if(i){const a=i.lexpr,l=i.rexpr;a&&this._collectHavingAggregates(v(a),t,n,r),l&&this._collectHavingAggregates(v(l),t,n,r);return}for(const a of Object.values(e))if(Array.isArray(a))for(const l of a)typeof l=="object"&&l!==null&&this._collectHavingAggregates(l,t,n,r);else typeof a=="object"&&a!==null&&this._collectHavingAggregates(a,t,n,r)}_computeInlineAggregate(e,t,n,r){const s={FuncCall:t},o=We(s),i=me(s),a=Ar(s),l=()=>{let u=[];for(const f of n){const d=i.length>0?r.evaluate(i[0],f):null;d!=null&&u.push(d)}if(a){const f=new Set,d=[];for(const p of u){const m=JSON.stringify(p);f.has(m)||(f.add(m),d.push(p))}u=d}return u},c=()=>{const u=[];if(i.length<2)return u;for(const f of n){const d=r.evaluate(i[0],f),p=r.evaluate(i[1],f);d!=null&&p!==null&&p!==void 0&&u.push([Number(d),Number(p)])}return u};switch(e){case"count":return o?n.length:l().length;case"sum":{const u=l();return u.length>0?u.reduce((f,d)=>f+Number(d),0):null}case"avg":{const u=l();return u.length>0?u.reduce((f,d)=>f+Number(d),0)/u.length:null}case"min":{const u=l();return u.length>0?u.reduce((f,d)=>Number(f)<Number(d)?f:d):null}case"max":{const u=l();return u.length>0?u.reduce((f,d)=>Number(f)>Number(d)?f:d):null}case"stddev":case"stddev_samp":{const u=l().map(Number);if(u.length<2)return null;const f=u.reduce((p,m)=>p+m,0)/u.length,d=u.reduce((p,m)=>p+(m-f)**2,0)/(u.length-1);return Math.sqrt(d)}case"stddev_pop":{const u=l().map(Number);if(u.length===0)return null;const f=u.reduce((p,m)=>p+m,0)/u.length,d=u.reduce((p,m)=>p+(m-f)**2,0)/u.length;return Math.sqrt(d)}case"variance":case"var_samp":{const u=l().map(Number);if(u.length<2)return null;const f=u.reduce((d,p)=>d+p,0)/u.length;return u.reduce((d,p)=>d+(p-f)**2,0)/(u.length-1)}case"var_pop":{const u=l().map(Number);if(u.length===0)return null;const f=u.reduce((d,p)=>d+p,0)/u.length;return u.reduce((d,p)=>d+(p-f)**2,0)/u.length}case"corr":case"covar_pop":case"covar_samp":case"regr_slope":case"regr_intercept":case"regr_r2":case"regr_count":case"regr_avgx":case"regr_avgy":case"regr_sxx":case"regr_syy":case"regr_sxy":{const u=c();if(u.length===0)return null;const f=u.length,d=u.reduce((x,w)=>x+w[0],0)/f,p=u.reduce((x,w)=>x+w[1],0)/f;let m=0,_=0,y=0;for(const[x,w]of u)m+=(w-p)**2,_+=(x-d)**2,y+=(w-p)*(x-d);switch(e){case"corr":return m===0||_===0?null:y/Math.sqrt(m*_);case"covar_pop":return y/f;case"covar_samp":return f<2?null:y/(f-1);case"regr_slope":return m===0?null:y/m;case"regr_intercept":return m===0?null:d-y/m*p;case"regr_r2":return m===0||_===0?null:y*y/(m*_);case"regr_count":return f;case"regr_avgx":return p;case"regr_avgy":return d;case"regr_sxx":return m;case"regr_syy":return _;case"regr_sxy":return y;default:return null}}default:return null}}_hasWindowFunctions(e){for(const t of e){const n=v(g(t,"ResTarget")??t),r=g(n,"val");if(r!=null&&Y(v(r))&&Ke(v(r)))return!0}return!1}_applyWindowFunctions(e,t,n,r){const s=new Map;for(const o of n){const i=v(g(o,"WindowDef")??o),a=D(i,"name");a&&s.set(a,i)}for(const o of t){const i=v(g(o,"ResTarget")??o),a=g(i,"val"),l=D(i,"name");if(a==null)continue;const c=v(a);if(!Y(c)||!Ke(c))continue;const u=oe(c),f=l||u,d=v(g(c,"FuncCall")??c),p=me(c),m=v(g(d,"over")),_=D(m,"refname")||D(m,"name");let y=m;_&&s.has(_)&&(y=s.get(_));const x=[];for(const I of R(g(y,"partitionClause")))try{x.push(G(I))}catch{}const w=[];for(const I of R(g(y,"orderClause"))){const S=v(g(I,"SortBy")??I),N=v(g(S,"node"));try{const A=G(N),M=g(S,"sortby_dir"),C=M===2||M==="SORTBY_DESC";w.push({col:A,desc:C})}catch{}}const E=new Map;for(let I=0;I<e.length;I++){const S=e[I],N=x.map(M=>JSON.stringify(S[M])).join("\0");let A=E.get(N);A||(A={rows:[],indices:[]},E.set(N,A)),A.rows.push(S),A.indices.push(I)}for(const I of E.values())if(w.length>0){const S=I.rows.map((N,A)=>({row:N,origIdx:I.indices[A]}));S.sort((N,A)=>{for(const M of w){const C=N.row[M.col],O=A.row[M.col],F=C==null,T=O==null;if(F&&T)continue;if(F)return M.desc?-1:1;if(T)return M.desc?1:-1;let q;if(typeof C=="string"&&typeof O=="string"?q=C<O?-1:C>O?1:0:q=C-O,q!==0)return M.desc?-q:q}return 0}),I.rows=S.map(N=>N.row),I.indices=S.map(N=>N.origIdx)}for(const I of E.values()){const S=I.rows,N=S.length;for(let A=0;A<N;A++){let M=null;switch(u){case"row_number":M=A+1;break;case"rank":{let O=1;for(let F=0;F<A;F++){let T=!0;for(const q of w)if(S[F][q.col]!==S[A][q.col]){T=!1;break}T||(O=F+1+1)}O=1;for(let F=0;F<A;F++){let T=!0;for(const q of w)if(S[F][q.col]!==S[A][q.col]){T=!1;break}T||O++}O=1;for(let F=0;F<N;F++){let T=!0;for(const q of w)if(S[F][q.col]!==S[A][q.col]){T=!1;break}if(T){O=F+1;break}}M=O;break}case"dense_rank":{const O=new Set;for(let F=0;F<=A;F++){const T=w.map(q=>JSON.stringify(S[F][q.col])).join("\0");O.add(T)}M=O.size;break}case"percent_rank":{if(N<=1)M=0;else{let O=1;for(let F=0;F<N;F++){let T=!0;for(const q of w)if(S[F][q.col]!==S[A][q.col]){T=!1;break}if(T){O=F+1;break}}M=(O-1)/(N-1)}break}case"cume_dist":{let O=0;for(let F=0;F<N;F++){let T=!0;for(const q of w){const H=S[F][q.col],le=S[A][q.col];q.desc?H<le&&(T=!1):H>le&&(T=!1)}T&&O++}M=O/N;break}case"ntile":{const O=p.length>0?Number(r.evaluate(p[0],{})):1;M=Math.floor(A*O/N)+1;break}case"lag":{const O=p.length>1?Number(r.evaluate(p[1],{})):1,F=p.length>2?r.evaluate(p[2],{}):null,T=A-O;T>=0&&T<N&&p.length>0?M=r.evaluate(p[0],S[T]):M=F;break}case"lead":{const O=p.length>1?Number(r.evaluate(p[1],{})):1,F=p.length>2?r.evaluate(p[2],{}):null,T=A+O;T>=0&&T<N&&p.length>0?M=r.evaluate(p[0],S[T]):M=F;break}case"first_value":{p.length>0&&N>0&&(M=r.evaluate(p[0],S[0]));break}case"last_value":{p.length>0&&N>0&&(M=r.evaluate(p[0],S[N-1]));break}case"nth_value":{const O=p.length>1?Number(r.evaluate(p[1],{})):1;p.length>0&&O>=1&&O<=N&&(M=r.evaluate(p[0],S[O-1]));break}case"sum":{let O=0,F=!1;const T=w.length>0?A:N-1;for(let q=0;q<=T;q++){const H=p.length>0?r.evaluate(p[0],S[q]):null;H!=null&&(O+=Number(H),F=!0)}M=F?O:null;break}case"count":{const O=w.length>0?A:N-1;if(We(c))M=O+1;else{let F=0;for(let T=0;T<=O;T++){const q=p.length>0?r.evaluate(p[0],S[T]):null;q!=null&&F++}M=F}break}case"avg":{let O=0,F=0;const T=w.length>0?A:N-1;for(let q=0;q<=T;q++){const H=p.length>0?r.evaluate(p[0],S[q]):null;H!=null&&(O+=Number(H),F++)}M=F>0?O/F:null;break}case"min":{let O=null;const F=w.length>0?A:N-1;for(let T=0;T<=F;T++){const q=p.length>0?r.evaluate(p[0],S[T]):null;q!=null&&(O===null||q<O)&&(O=q)}M=O;break}case"max":{let O=null;const F=w.length>0?A:N-1;for(let T=0;T<=F;T++){const q=p.length>0?r.evaluate(p[0],S[T]):null;q!=null&&(O===null||q>O)&&(O=q)}M=O;break}default:M=null;break}const C=I.indices[A];e[C][f]=M}}}for(const o of t){const i=v(g(o,"ResTarget")??o),a=g(i,"val"),l=D(i,"name");if(a==null)continue;const c=v(a);if(Y(c)&&Ke(c))continue;const u=l||this._deriveColumnName(c);if(J(c)){const f=G(c);if(f!==u)for(const d of e)d[u]=d[f]}else for(const f of e)f[u]=r.evaluate(c,f)}return e}_applyDistinct(e,t){const n=new Set,r=[];for(const s of e){const o=t.map(i=>JSON.stringify(s[i])).join("\0");n.has(o)||(n.add(o),r.push(s))}return r}_applyOrderBy(e,t,n,r){const s=[...e],o=new Map,i=new Set,a=new Map;if(r)for(let c=0;c<r.length;c++){const u=v(g(r[c],"ResTarget")??r[c]),f=D(u,"name"),d=g(u,"val");let p=f;if(!p&&d!==null&&d!==void 0&&(p=this._deriveColumnName(v(d))),p&&(o.set(c+1,p),f&&(i.add(f),d!==null&&J(v(d)))))try{const m=G(v(d));a.set(m,f)}catch{}}const l=t.map(c=>{const u=v(g(c,"SortBy")??c),f=v(g(u,"node")),d=g(u,"sortby_dir"),p=d===2||d==="SORTBY_DESC",m=g(u,"sortby_nulls");let _;m===1||m==="SORTBY_NULLS_FIRST"?_=!0:m===2||m==="SORTBY_NULLS_LAST"?_=!1:_=p;let y=f;if(ge(f)){const x=V(f,[]);if(typeof x=="number"&&Number.isInteger(x)){const w=x,E=o.get(w);E!==void 0&&(y={ColumnRef:{fields:[{String:{sval:E}}]}})}}if(J(y))try{const x=G(y);a.has(x)&&(y={ColumnRef:{fields:[{String:{sval:a.get(x)}}]}})}catch{}return{node:y,desc:p,nullsFirst:_}});return s.sort((c,u)=>{for(const f of l){const d=n.evaluate(f.node,c),p=n.evaluate(f.node,u),m=d==null,_=p==null;if(m&&_)continue;if(m)return f.nullsFirst?-1:1;if(_)return f.nullsFirst?1:-1;let y;if(typeof d=="string"&&typeof p=="string"?y=d<p?-1:d>p?1:0:y=d-p,y!==0)return f.desc?-y:y}return 0}),s}_evaluateReturning(e,t,n,r){const s={};for(const o of e){const i=v(g(o,"ResTarget")??o),a=g(i,"val"),l=D(i,"name");if(a!=null){const c=v(a);if(Ue(c)){if(r)for(const f of r.columnNames)s[f]=t[f]??null;else Object.assign(s,t);continue}const u=l||this._deriveColumnName(c);s[u]=n.evaluate(c,t)}}return s}_extractReturningColumns(e,t){const n=[];for(const r of e){const s=v(g(r,"ResTarget")??r),o=g(s,"val"),i=D(s,"name");if(o!=null){const a=v(o);if(Ue(a)){t&&n.push(...t.columnNames);continue}n.push(i||this._deriveColumnName(a))}}return n}_contextForTable(e){if(e===null)return{};const t={};for(const[r,s]of e.vectorIndexes)t[r]=s;const n={};for(const[r,s]of e.spatialIndexes)n[r]=s;return{documentStore:e.documentStore,invertedIndex:e.invertedIndex,vectorIndexes:t,spatialIndexes:n}}static _containsUQAFunction(e){if(Y(e)){const s=oe(e);if(Ir.has(s))return!0}const t=v(g(e,"FuncCall")??{});if(Object.keys(t).length>0){const s=oe(t);if(Ir.has(s))return!0}const n=v(g(e,"A_Expr")??{});if(Object.keys(n).length>0){const s=R(g(n,"name"));if(s.length>0&&K(s[0])==="@@")return!0}for(const s of["lexpr","rexpr","args","arg"]){const o=g(e,s)??g(n,s);if(o!=null){if(Array.isArray(o)){for(const i of o)if(ie._containsUQAFunction(v(i)))return!0}else if(typeof o=="object"&&ie._containsUQAFunction(v(o)))return!0}}const r=v(g(e,"BoolExpr")??{});if(Object.keys(r).length>0){const s=R(g(r,"args"));for(const o of s)if(ie._containsUQAFunction(o))return!0}return!1}_splitUQAConjuncts(e){const t=this._extractAndConjuncts(e),n=[],r=[];for(const i of t)ie._containsUQAFunction(i)?n.push(i):r.push(i);const s=n.length===0?null:n.length===1?n[0]:{BoolExpr:{boolop:0,args:n}},o=r.length===0?null:r.length===1?r[0]:{BoolExpr:{boolop:0,args:r}};return[s,o]}_extractAndConjuncts(e){const t=v(g(e,"BoolExpr")??{});if(Object.keys(t).length>0){const n=g(t,"boolop");if(n===0||n==="AND_EXPR"){const r=R(g(t,"args")),s=[];for(const o of r)s.push(...this._extractAndConjuncts(o));return s}}return[e]}_compileWhere(e,t){const n=v(g(e,"BoolExpr")??{});if(Object.keys(n).length>0)return this._compileBoolExpr(n,t);if(yn(e))return this._compileComparison(v(g(e,"A_Expr")??e),t);const r=g(e,"A_Expr");if(r!=null)return this._compileComparison(v(r),t);if(Y(e))return this._compileFuncInWhere(v(g(e,"FuncCall")??e),t);const s=g(e,"FuncCall");if(s!=null)return this._compileFuncInWhere(v(s),t);if(kr(e))return this._compileNullTest(v(g(e,"NullTest")??e));const o=g(e,"NullTest");if(o!=null)return this._compileNullTest(v(o));if(qt(e))return this._compileSublinkInWhere(v(g(e,"SubLink")??e),t);const i=g(e,"SubLink");return i!=null?this._compileSublinkInWhere(v(i),t):new wn(e,a=>this._compileSelect(a,this._params))}_compileBoolExpr(e,t){const n=g(e,"boolop"),r=R(g(e,"args"));if(n===0||n==="AND_EXPR")return this._compileAnd(r,t);if(n===1||n==="OR_EXPR")return new ee(r.map(s=>this._compileWhere(s,t)));if(n===2||n==="NOT_EXPR")return new ce(this._compileWhere(r[0],t));throw new Error(`Unsupported BoolExpr type: ${String(n)}`)}_compileAnd(e,t){const n=[],r=[];for(const o of e){const i=this._compileWhere(o,t);i instanceof z&&i.source===null?r.push(i):n.push(i)}let s;if(n.length>0)s=n.length===1?n[0]:new U(n);else if(r.length>0)s=r.shift();else return new bn;for(const o of r)s=new z(o.field,o.predicate,s);return s}_compileComparison(e,t){const n=g(e,"kind"),r=R(g(e,"name")),s=r.length>0?K(r[r.length-1]):"";if(n===0||n==="AEXPR_OP"){if(s==="@@"){const a=v(g(e,"lexpr")),l=v(g(e,"rexpr")),c=G(a),u=Q(l,this._params),f=c==="_all"?null:c;return this._makeTextSearchOp(f,u,t,!1)}const o=v(g(e,"lexpr")),i=v(g(e,"rexpr"));if(J(o)&&(ge(i)||vt(i))&&["=","!=","<>",">",">=","<","<="].includes(s)){const a=G(o),l=V(i,this._params);return new z(a,Mr(s,l))}return new wn(e.kind!==void 0?e:{A_Expr:e},a=>this._compileSelect(a,this._params))}if(n===7||n==="AEXPR_IN"){const o=v(g(e,"lexpr")),i=G(o),a=R(g(e,"rexpr")),l=new Set;for(const c of a)l.add(V(c,this._params));return new z(i,new Gt(l))}if(n===11||n==="AEXPR_BETWEEN"){const o=v(g(e,"lexpr")),i=G(o),a=R(g(e,"rexpr")),l=Number(V(a[0],this._params)),c=Number(V(a[1],this._params));return new z(i,new Bt(l,c))}if(n===12||n==="AEXPR_NOT_BETWEEN"){const o=v(g(e,"lexpr")),i=G(o),a=R(g(e,"rexpr")),l=Number(V(a[0],this._params)),c=Number(V(a[1],this._params));return new ce(new z(i,new Bt(l,c)))}if(n===8||n==="AEXPR_LIKE"){const o=v(g(e,"lexpr")),i=v(g(e,"rexpr")),a=G(o),l=Q(i,this._params);return s==="!~~"?new z(a,new Pr(l)):new z(a,new On(l))}if(n===9||n==="AEXPR_ILIKE"){const o=v(g(e,"lexpr")),i=v(g(e,"rexpr")),a=G(o),l=Q(i,this._params);return s==="!~~*"?new z(a,new Dr(l)):new z(a,new Cn(l))}throw new Error(`Unsupported expression kind: ${String(n)}`)}_compileNullTest(e){const t=v(g(e,"arg")),n=G(t),r=g(e,"nulltesttype");return r===0||r==="IS_NULL"?new z(n,new Ut):new z(n,new Wt)}_compileSublinkInWhere(e,t){const n=g(e,"subLinkType"),r=v(g(e,"subselect")),s=v(g(r,"SelectStmt")??r);if(n===2||n==="ANY_SUBLINK"){const o=this._compileSelect(s,this._params);if(o.columns.length===0)throw new Error("Subquery must return at least one column");const i=o.columns[0],a=new Set;for(const u of o.rows){const f=u[i];f!=null&&a.add(f)}const l=v(g(e,"testexpr")),c=G(l);return new z(c,new Gt(a))}if(n===0||n==="EXISTS_SUBLINK")return this._compileSelect(s,this._params).rows.length>0?new bn:new ce(new bn);throw new Error(`Unsupported subquery type: ${String(n)}`)}_compileFuncInWhere(e,t){const n=oe(e).toLowerCase(),r=me(e);if(n==="text_match"){const s=G(r[0]),o=Q(r[1],this._params);return this._makeTextSearchOp(s,o,t,!1)}if(n==="bayesian_match"){const s=G(r[0]),o=Q(r[1],this._params);return this._makeTextSearchOp(s,o,t,!0)}return n==="bayesian_match_with_prior"?this._makeBayesianWithPriorOp(r,t):n==="knn_match"?this._makeKnnOp(r):n==="bayesian_knn_match"?this._makeCalibratedKnnOp(r,t,!0):n==="traverse_match"?this._makeTraverseMatchOp(r):n==="temporal_traverse"?this._makeTemporalTraverseOp(r):n==="path_filter"?this._makePathFilterOp(r):n==="vector_exclude"?this._makeVectorExcludeOp(r):n==="spatial_within"?this._makeSpatialWithinOp(r):n==="fuse_log_odds"?this._makeFusionOp(r,t,"log_odds"):n==="fuse_prob_and"?this._makeFusionOp(r,t,"prob_and"):n==="fuse_prob_or"?this._makeFusionOp(r,t,"prob_or"):n==="fuse_prob_not"?this._makeProbNotOp(r,t):n==="fuse_attention"?this._makeAttentionFusionOp(r,t):n==="fuse_multihead"?this._makeMultiheadFusionOp(r,t):n==="fuse_learned"?this._makeLearnedFusionOp(r,t):n==="sparse_threshold"?this._makeSparseThresholdOp(r,t):n==="multi_field_match"?this._makeMultiFieldMatchOp(r):n==="message_passing"?this._makeMessagePassingOp(r):n==="graph_embedding"?this._makeGraphEmbeddingOp(r):n==="staged_retrieval"?this._makeStagedRetrievalOp(r,t):n==="pagerank"?this._makePageRankOp(r):n==="hits"?this._makeHITSOp(r):n==="betweenness"?this._makeBetweennessOp(r):n==="weighted_rpq"?this._makeWeightedRpqOp(r):n==="progressive_fusion"?this._makeProgressiveFusionOp(r,t):n==="deep_fusion"?this._makeDeepFusionOp(r,t):new wn(e,s=>this._compileSelect(s,this._params))}_compileCalibratedSignal(e,t){const n=v(g(e,"FuncCall")??e),r=oe(n).toLowerCase(),s=me(n);if(r==="text_match"||r==="bayesian_match"){const o=G(s[0]),i=Q(s[1],this._params);return this._makeTextSearchOp(o,i,t,!0)}if(r==="knn_match")return this._makeCalibratedKnnOp(s,t,!1);if(r==="bayesian_knn_match")return this._makeCalibratedKnnOp(s,t,!0);if(r==="traverse_match")return this._makeTraverseMatchOp(s);if(r==="spatial_within")return this._makeSpatialWithinOp(s);if(r==="pagerank")return this._makePageRankOp(s);if(r==="hits")return this._makeHITSOp(s);if(r==="betweenness")return this._makeBetweennessOp(s);if(r==="weighted_rpq")return this._makeWeightedRpqOp(s);if(r==="message_passing")return this._makeMessagePassingOp(s);throw new Error(`Unknown signal function for fusion: ${r}. Use text_match, bayesian_match, knn_match, bayesian_knn_match, traverse_match, spatial_within, pagerank, hits, betweenness, or weighted_rpq.`)}_makeTextSearchOp(e,t,n,r){const s=n.invertedIndex;let o=[];s&&(o=(e&&typeof s.getSearchAnalyzer=="function"?s.getSearchAnalyzer(e):s.analyzer).analyze(t));const i=new de(t,e??void 0);if(r)try{const a=s?s.stats:null;if(a){const l=new Ze(Ve(),a);return new ue(l,i,o,e??void 0)}}catch{}try{const a=s?s.stats:null;if(a){const l=new ct(At(),a);return new ue(l,i,o,e??void 0)}}catch{}return i}_makeMultiFieldMatchOp(e){if(e.length<3)throw new Error("multi_field_match() requires at least 3 arguments: multi_field_match(field1, field2, ..., query)");const t=[];let n=null;const r=[];for(let s=0;s<e.length;s++){const o=e[s];if(J(o)||g(o,"ColumnRef")!==null)t.push(G(o));else{const i=V(o,this._params);if(typeof i=="string"&&n===null)n=i;else if(typeof i=="number")r.push(i);else if(typeof i=="string")throw new Error(`Unexpected string argument at position ${String(s)}`)}}if(n===null||t.length<2)throw new Error("multi_field_match() requires at least 2 field names and a query string");if(r.length>0&&r.length!==t.length)throw new Error(`Number of weights (${String(r.length)}) must match number of fields (${String(t.length)})`);return new cn(t,n,r.length>0?r:void 0)}_makeMessagePassingOp(e){const t=e.length>0?_e(e[0],this._params):2,n=e.length>1?Q(e[1],this._params):"mean",r=e.length>2?Q(e[2],this._params):void 0;return new mn({kLayers:t,aggregation:n,propertyName:r,graph:this._currentGraphName||""})}_makeGraphEmbeddingOp(e){const t=e.length>1?_e(e[1],this._params):2;return new br({graph:this._currentGraphName||"",kHops:t})}_makeBayesianWithPriorOp(e,t){if(e.length<4)throw new Error("bayesian_match_with_prior() requires 4 arguments: bayesian_match_with_prior(field, query, prior_field, prior_mode)");const n=G(e[0]),r=Q(e[1],this._params),s=Q(e[2],this._params),o=Q(e[3],this._params);if(o!=="recency"&&o!=="authority")throw new Error(`Unknown prior mode: ${o}. Use 'recency' or 'authority'.`);let i;if(o==="recency")try{i=io(s)}catch{i=u=>.5}else try{i=ao(s)}catch{i=u=>.5}const a=t.invertedIndex;let l=[];a&&(l=a.analyzer.analyze(r));const c=new de(r,n);try{const u=a?a.stats:null;if(u){const f=new oo(Ve(),u,i);return new qo(c,f,l,n,t.documentStore??null)}}catch{}return c}_makeKnnOp(e){if(e.length!==3)throw new Error("knn_match() requires 3 arguments: knn_match(field, vector, k)");const t=G(e[0]),n=qe(e[1],this._params),r=_e(e[2],this._params);return new Ce(n,r,t)}_makeCalibratedKnnOp(e,t,n){var f;const r=[],s={};for(const d of e){const p=g(d,"NamedArgExpr");if(p!=null){const m=v(p),_=D(m,"name"),y=v(g(m,"arg"));s[_]=V(y,this._params)}else r.push(d)}if(r.length!==3)throw new Error("knn_match() requires 3 positional arguments: knn_match(field, vector, k)");const o=G(r[0]),i=qe(r[1],this._params),a=_e(r[2],this._params),c=(f=t.vectorIndexes)==null?void 0:f[o];if(c!==null&&typeof c=="object"&&"backgroundStats"in c&&c.backgroundStats!==null||n||Object.keys(s).length>0){const d=new Set(["method","weight_source","bm25_query","bm25_field","base_rate","bandwidth_scale","density_gamma"]),p=Object.keys(s).filter(m=>!d.has(m));if(p.length>0)throw new Error(`Unknown option(s) for bayesian_knn_match: ${p.join(", ")}. Valid options: ${[...d].sort().join(", ")}`);return new Wn(i,a,o,s.method??"kde",Number(s.base_rate??.5),s.weight_source??"density_prior",s.bm25_query!=null?String(s.bm25_query):void 0,s.bm25_field!=null?String(s.bm25_field):void 0,Number(s.density_gamma??1),Number(s.bandwidth_scale??1))}return new $o(i,a,o)}_makeSpatialWithinOp(e){if(e.length!==3)throw new Error("spatial_within() requires 3 arguments: spatial_within(field, POINT(x, y), distance)");const t=G(e[0]),[n,r]=this._extractPointArg(e[1]),s=Number(V(e[2],this._params));return new fs(t,n,r,s)}_extractPointArg(e){const t=v(g(e,"FuncCall")??{});if(Object.keys(t).length>0){const n=oe(t);if(n!=="point")throw new Error(`Expected POINT(x, y), got ${n}()`);const r=me(t);if(r.length!==2)throw new Error("POINT() requires exactly 2 arguments");const s=Number(V(r[0],this._params)),o=Number(V(r[1],this._params));return[s,o]}if(vt(e)){const n=V(e,this._params);if(Array.isArray(n)&&n.length===2)return[Number(n[0]),Number(n[1])];throw new Error("Parameter for POINT must be a [x, y] array")}throw new Error("Expected POINT(x, y) or $N parameter")}_makeTraverseMatchOp(e){const t=_e(e[0],this._params),n=e.length>1?Q(e[1],this._params):void 0,r=e.length>2?_e(e[2],this._params):1;return new pn(t,this._currentGraphName||"",n??null,r)}_makeTemporalTraverseOp(e){if(e.length<4)throw new Error("temporal_traverse() requires at least 4 arguments: temporal_traverse(start, label, hops, timestamp)");const t=_e(e[0],this._params),n=e.length>1?Q(e[1],this._params):void 0,r=e.length>2?_e(e[2],this._params):1;let s;if(e.length===4){const o=Number(V(e[3],this._params));s=new jt({timestamp:o})}else if(e.length>=5){const o=Number(V(e[3],this._params)),i=Number(V(e[4],this._params));s=new jt({timeRange:[o,i]})}else s=new jt;return new gn({startVertex:t,graph:this._currentGraphName||"",temporalFilter:s,label:n??null,maxHops:r})}_makePathFilterOp(e){if(e.length<2)throw new Error("path_filter() requires at least 2 arguments: path_filter('path', value) or path_filter('path', 'op', value)");const t=Q(e[0],this._params),n=[];for(const o of t.split("."))/^\d+$/.test(o)?n.push(parseInt(o,10)):n.push(o);if(e.length===2){const o=V(e[1],this._params);return new Rt(n,new zt(o))}const r=Q(e[1],this._params),s=V(e[2],this._params);return new Rt(n,Mr(r,s))}_makeVectorExcludeOp(e){if(e.length!==5)throw new Error("vector_exclude() requires 5 arguments: vector_exclude(field, positive_vector, negative_vector, k, threshold)");const t=G(e[0]),n=qe(e[1],this._params),r=qe(e[2],this._params),s=_e(e[3],this._params),o=Number(V(e[4],this._params)),i=new Ce(n,s,t);return new on(i,r,o,t)}_makeProbNotOp(e,t){if(e.length!==1)throw new Error("fuse_prob_not() requires exactly 1 signal function argument");const n=this._compileCalibratedSignal(e[0],t);return new Mt(n)}_makeSparseThresholdOp(e,t){if(e.length!==2)throw new Error("sparse_threshold() requires 2 arguments: sparse_threshold(signal, threshold)");const n=this._compileCalibratedSignal(e[0],t),r=Number(V(e[1],this._params));return new xe(n,r)}_makeFusionOp(e,t,n){const r=[];let s=.5,o=null,i=null;for(const a of e)if(Y(a)||g(a,"FuncCall")!==null)r.push(this._compileCalibratedSignal(a,t));else{const l=g(a,"NamedArgExpr");if(l!=null&&n==="log_odds"){const c=v(l),u=D(c,"name"),f=V(v(g(c,"arg")),this._params);if(u==="alpha")s=Number(f);else if(u==="gating")o=String(f);else if(u==="gating_beta")i=Number(f);else throw new Error(`Unknown option for fuse_log_odds: ${u}. Valid options: alpha, gating, gating_beta`)}else if(ge(a)&&n==="log_odds"){const c=V(a,this._params);typeof c=="string"?o=c:s=Number(c)}else throw new Error("Fusion function arguments must be signal functions (text_match, knn_match, etc.)")}if(r.length<2)throw new Error("Fusion requires at least 2 signal functions");return n==="log_odds"?new Ie(r,s,null,o,i):n==="prob_and"?new Fe(r,"and"):new Fe(r,"or")}_makeStagedRetrievalOp(e,t){const n=[];let r=0;for(;r<e.length-1;){if(!Y(e[r])&&g(e[r],"FuncCall")===null)throw new Error(`staged_retrieval: argument ${String(r)} must be a signal function`);const s=this._compileCalibratedSignal(e[r],t);let o=V(e[r+1],this._params);typeof o=="number"&&o===Math.floor(o)&&(o=Math.floor(o)),n.push([s,o]),r+=2}if(n.length===0)throw new Error("staged_retrieval requires at least one (signal, cutoff) pair");return new Re(n)}_splitCentralityArgs(e){const t=[];let n=this._currentGraphName;for(const r of e){try{const s=V(r,this._params);if(typeof s=="string"){n=s;continue}}catch{}t.push(r)}return[t,n]}_makePageRankOp(e){const[t,n]=this._splitCentralityArgs(e),r=t.length>0?Number(V(t[0],this._params)):.85,s=t.length>1?_e(t[1],this._params):100,o=t.length>2?Number(V(t[2],this._params)):1e-6;return new mr({damping:r,maxIterations:s,tolerance:o,graph:n||""})}_makeHITSOp(e){const[t,n]=this._splitCentralityArgs(e),r=t.length>0?_e(t[0],this._params):100,s=t.length>1?Number(V(t[1],this._params)):1e-6;return new _r({maxIterations:r,tolerance:s,graph:n||""})}_makeBetweennessOp(e){const[,t]=this._splitCentralityArgs(e);return new yr({graph:t||""})}_makeWeightedRpqOp(e){if(e.length<3)throw new Error("weighted_rpq() requires at least 3 arguments: weighted_rpq('path_expr', start, 'weight_property'[, 'agg_fn'[, threshold]])");const t=Q(e[0],this._params),n=_e(e[1],this._params),r=Q(e[2],this._params),s=e.length>3?Q(e[3],this._params):"sum";let o=null;e.length>4&&(o=Number(V(e[4],this._params)));try{return new ro(ar(t),this._currentGraphName||"",{startVertex:n,weightProperty:r,aggregation:s,weightThreshold:o})}catch{throw new Error("weighted_rpq() requires the WeightedPathQueryOperator")}}_makeProgressiveFusionOp(e,t){const n=[],r=[];let s=.5,o=null;for(const i of e)if(Y(i)||g(i,"FuncCall")!==null)n.push(this._compileCalibratedSignal(i,t));else if(ge(i)||vt(i)){const a=V(i,this._params);if(typeof a=="string")o=a;else if(typeof a=="number"&&a!==Math.floor(a))s=a;else{const l=Math.floor(Number(a));if(n.length===0)throw new Error("progressive_fusion: k must follow signal functions");r.push([[...n],l]),n.length=0}}else throw new Error("progressive_fusion: unexpected argument type");if(n.length>0)throw new Error("progressive_fusion: trailing signals without k cutoff");if(r.length===0)throw new Error("progressive_fusion requires at least one (signals, k) stage");return new rr(r,s,o)}_makeDeepFusionOp(e,t){const n=[];let r=.5,s="none";for(const o of e){const i=v(g(o,"FuncCall")??(Y(o)?o:{}));if(Object.keys(i).length>0){const l=oe(i).toLowerCase(),c=me(i);if(l==="layer"){const u=[];for(const f of c)if(Y(f)||g(f,"FuncCall")!==null)u.push(this._compileCalibratedSignal(f,t));else throw new Error("layer() arguments must be signal functions");if(u.length===0)throw new Error("layer() requires at least one signal");n.push({type:"signal",signals:u})}else if(l==="propagate"){if(c.length<2)throw new Error("propagate() requires at least 2 arguments: propagate('edge_label', 'aggregation'[, 'direction'])");const u=Q(c[0],this._params),f=Q(c[1],this._params);if(!["mean","sum","max"].includes(f))throw new Error(`propagate() aggregation must be 'mean', 'sum', or 'max', got '${f}'`);let d="both";if(c.length>=3&&(d=Q(c[2],this._params),!["both","out","in"].includes(d)))throw new Error(`propagate() direction must be 'both', 'out', or 'in', got '${d}'`);n.push({type:"propagate",edgeLabel:u,aggregation:f,direction:d})}else if(l==="convolve"){const u=[],f={};for(const _ of c){const y=g(_,"NamedArgExpr");if(y!=null){const x=v(y);f[D(x,"name")]=V(v(g(x,"arg")),this._params)}else u.push(_)}if(u.length===0)throw new Error("convolve() requires edge_label as first argument");const d=Q(u[0],this._params),p=Number(f.n_channels??0),m="both";if(p>1){const _=Number(f.seed??42),y=f.init??"kaiming";let x=1;for(let w=n.length-1;w>=0;w--){const E=n[w];if(E.type==="conv"){const I=E.kernelShape;I&&(x=I[0]);break}}try{const w=lo(p,x,_,y);n.push({type:"conv",edgeLabel:d,hopWeights:[1],direction:m,kernel:Array.from(w),kernelShape:[p,x]})}catch{n.push({type:"conv",edgeLabel:d,hopWeights:[1],direction:m})}}else{if(u.length<2)throw new Error("convolve() requires ARRAY[w0, w1, ...] or n_channels => N");const _=qe(u[1],this._params);n.push({type:"conv",edgeLabel:d,hopWeights:Array.from(_),direction:m})}}else if(l==="pool"){if(c.length<3)throw new Error("pool() requires at least 3 arguments: pool('edge_label', 'method', pool_size[, 'direction'])");const u=Q(c[0],this._params),f=Q(c[1],this._params);if(!["max","avg"].includes(f))throw new Error(`pool() method must be 'max' or 'avg', got '${f}'`);const d=_e(c[2],this._params);let p="both";if(c.length>=4&&(p=Q(c[3],this._params),!["both","out","in"].includes(p)))throw new Error(`pool() direction must be 'both', 'out', or 'in', got '${p}'`);n.push({type:"pool",edgeLabel:u,poolSize:d,method:f,direction:p})}else if(l==="dense"){const u=[],f={};for(const y of c){const x=g(y,"NamedArgExpr");if(x!=null){const w=v(x);f[D(w,"name")]=Number(V(v(g(w,"arg")),this._params))}else u.push(y)}if(u.length<2)throw new Error("dense() requires at least 2 positional arguments: ARRAY[weights], ARRAY[bias]");const d=qe(u[0],this._params),p=qe(u[1],this._params),m=f.output_channels,_=f.input_channels;if(m===void 0||_===void 0)throw new Error("dense() requires output_channels and input_channels named arguments");if(d.length!==m*_)throw new Error(`dense() weights array length (${String(d.length)}) must equal output_channels * input_channels (${String(m*_)})`);if(p.length!==m)throw new Error(`dense() bias array length (${String(p.length)}) must equal output_channels (${String(m)})`);n.push({type:"dense",weights:Array.from(d),bias:Array.from(p),outputChannels:m,inputChannels:_})}else if(l==="flatten")n.push({type:"flatten"});else if(l==="softmax")n.push({type:"softmax"});else if(l==="batch_norm"){let u=1e-5;for(const f of c){const d=g(f,"NamedArgExpr");if(d!=null){const p=v(d);D(p,"name")==="epsilon"&&(u=Number(V(v(g(p,"arg")),this._params)))}}n.push({type:"batchNorm",epsilon:u})}else if(l==="dropout"){if(c.length<1)throw new Error("dropout() requires 1 argument: dropout(p)");const u=Number(V(c[0],this._params));n.push({type:"dropout",p:u})}else if(l==="attention"){let u=1,f="content";for(const d of c){const p=g(d,"NamedArgExpr");if(p!=null){const m=v(p),_=D(m,"name");_==="n_heads"?u=Number(V(v(g(m,"arg")),this._params)):_==="mode"&&(f=String(V(v(g(m,"arg")),this._params)))}}n.push({type:"attention",nHeads:u,mode:f})}else if(l==="embed"){const u=[],f={};for(const y of c){const x=g(y,"NamedArgExpr");if(x!=null){const w=v(x);f[D(w,"name")]=Number(V(v(g(w,"arg")),this._params))}else u.push(y)}if(u.length===0)throw new Error("embed() requires vector argument");const d=qe(u[0],this._params),p=f.in_channels??1;let m,_;if(f.grid_h!==void 0&&f.grid_w!==void 0)m=f.grid_h,_=f.grid_w;else{const y=Math.floor(Math.sqrt(d.length/p));y*y*p===d.length?(m=y,_=y):(m=0,_=0)}n.push({type:"embed",embedding:Array.from(d),gridH:m,gridW:_,inChannels:p})}else if(l==="global_pool"){let u="avg";for(const f of c){const d=g(f,"NamedArgExpr");if(d!=null){const p=v(d);D(p,"name")==="method"&&(u=String(V(v(g(p,"arg")),this._params)))}else u=Q(f,this._params)}if(!["avg","max","avg_max"].includes(u))throw new Error(`global_pool() method must be 'avg', 'max', or 'avg_max', got '${u}'`);n.push({type:"globalPool",method:u})}else throw new Error(`deep_fusion() unknown layer function: ${l}()`);continue}const a=g(o,"NamedArgExpr");if(a!=null){const l=v(a),c=D(l,"name"),u=V(v(g(l,"arg")),this._params);if(c==="alpha")r=Number(u);else if(c==="gating")s=String(u);else throw new Error(`Unknown option for deep_fusion: ${c}. Valid options: alpha, gating`);continue}throw new Error("deep_fusion() arguments must be layer() or propagate() calls")}if(n.length===0)throw new Error("deep_fusion requires at least one layer");return new pe(n,r,s,this._currentGraphName||void 0)}_makeAttentionFusionOp(e,t){const n=[],r={};for(const i of e)if(Y(i)||g(i,"FuncCall")!==null)n.push(this._compileCalibratedSignal(i,t));else{const a=g(i,"NamedArgExpr");if(a!=null){const l=v(a);r[D(l,"name")]=V(v(g(l,"arg")),this._params)}}if(n.length<2)throw new Error("fuse_attention requires at least 2 signals");const s=new Set(["normalized","alpha","base_rate"]),o=Object.keys(r).filter(i=>!s.has(i));if(o.length>0)throw new Error(`Unknown option(s) for fuse_attention: ${o.join(", ")}. Valid options: ${[...s].sort().join(", ")}`);try{const i=n.length,a=new vr(i,6,Number(r.alpha??.5),!!(r.normalized??!1),r.base_rate??void 0),l=this._extractQueryFeatures(e,t);return new nt(n,a,l)}catch{return new Ie(n,Number(r.alpha??.5))}}_makeMultiheadFusionOp(e,t){const n=[],r={};for(const i of e)if(Y(i)||g(i,"FuncCall")!==null)n.push(this._compileCalibratedSignal(i,t));else{const a=g(i,"NamedArgExpr");if(a!=null){const l=v(a);r[D(l,"name")]=V(v(g(l,"arg")),this._params)}}if(n.length<2)throw new Error("fuse_multihead requires at least 2 signals");const s=new Set(["n_heads","normalized","alpha"]),o=Object.keys(r).filter(i=>!s.has(i));if(o.length>0)throw new Error(`Unknown option(s) for fuse_multihead: ${o.join(", ")}. Valid options: ${[...s].sort().join(", ")}`);try{const i=n.length,a=new co(i,Number(r.n_heads??4),6,Number(r.alpha??.5),!!(r.normalized??!1)),l=this._extractQueryFeatures(e,t);return new nt(n,a,l)}catch{return new Ie(n,Number(r.alpha??.5))}}_makeLearnedFusionOp(e,t){const n=[],r={};for(const i of e)if(Y(i)||g(i,"FuncCall")!==null)n.push(this._compileCalibratedSignal(i,t));else{const a=g(i,"NamedArgExpr");if(a!=null){const l=v(a);r[D(l,"name")]=V(v(g(l,"arg")),this._params)}}if(n.length<2)throw new Error("fuse_learned requires at least 2 signals");const s=new Set(["alpha"]),o=Object.keys(r).filter(i=>!s.has(i));if(o.length>0)throw new Error(`Unknown option(s) for fuse_learned: ${o.join(", ")}. Valid options: ${[...s].sort().join(", ")}`);try{const i=new xr(n.length,Number(r.alpha??.5));return new pt(n,i)}catch{return new Ie(n,Number(r.alpha??.5))}}_extractQueryFeatures(e,t){const n=new Float64Array(6);if(t.invertedIndex)try{const r=new uo(t.invertedIndex);for(const s of e){const o=v(g(s,"FuncCall")??(Y(s)?s:{}));if(Object.keys(o).length>0){const i=oe(o);if(i==="text_match"||i==="bayesian_match"){const a=me(o);if(a.length>=2){const l=Q(a[1],this._params),u=t.invertedIndex.analyzer.analyze(l);return r.extract(u)}}}}}catch{}return n}_foldStmtWhere(e){const t=g(e,"whereClause");if(t==null)return e;const n=this._foldConstants(v(t));return n===t?e:{...e,whereClause:n}}_foldConstants(e){return Object.keys(e).length===0||ge(e)||g(e,"A_Const")!==null||J(e)||g(e,"ColumnRef")!==null?e:yn(e)||g(e,"A_Expr")!==null?this._foldAExpr(e):Ro(e)||g(e,"BoolExpr")!==null?this._foldBoolExpr(e):Y(e)||g(e,"FuncCall")!==null?this._foldFuncCall(e):e}_foldAExpr(e){const t=v(g(e,"A_Expr")??e),n=this._foldConstants(v(g(t,"lexpr")??{})),r=this._foldConstants(v(g(t,"rexpr")??{}));if((ge(n)||g(n,"A_Const")!==null)&&(ge(r)||g(r,"A_Const")!==null))try{const s=new ne({params:this._params}),o={A_Expr:{...t,lexpr:n,rexpr:r}},i=s.evaluate(o,{});return Tr(i)}catch{}if(n!==g(t,"lexpr")||r!==g(t,"rexpr")){const s={...t,lexpr:n,rexpr:r};return g(e,"A_Expr")!==null?{A_Expr:s}:s}return e}_foldBoolExpr(e){const t=v(g(e,"BoolExpr")??e),n=g(t,"boolop"),r=R(g(t,"args")),s=r.map(a=>this._foldConstants(a));if(s.every(a=>ge(a)||g(a,"A_Const")!==null))try{const a=new ne({params:this._params}),l={BoolExpr:{boolop:n,args:s}},c=a.evaluate(l,{});return Tr(c)}catch{}if(n===0||n==="AND_EXPR"){const a=[];for(const c of s){if(ge(c)||g(c,"A_Const")!==null){if(Or(c)===!1)return{A_Const:{boolval:!1}};continue}a.push(c)}if(a.length===0)return{A_Const:{boolval:!0}};if(a.length===1)return a[0];const l={boolop:0,args:a};return g(e,"BoolExpr")!==null?{BoolExpr:l}:l}if(n===1||n==="OR_EXPR"){const a=[];for(const c of s){if(ge(c)||g(c,"A_Const")!==null){if(Or(c)===!0)return{A_Const:{boolval:!0}};continue}a.push(c)}if(a.length===0)return{A_Const:{boolval:!1}};if(a.length===1)return a[0];const l={boolop:1,args:a};return g(e,"BoolExpr")!==null?{BoolExpr:l}:l}if(s.some((a,l)=>a!==r[l])){const a={boolop:n,args:s};return g(e,"BoolExpr")!==null?{BoolExpr:a}:a}return e}_foldFuncCall(e){const t=v(g(e,"FuncCall")??e),n=oe(t);if(Oo.has(n))return e;const r=R(g(t,"args"));if(r.length===0)return e;const s=r.map(i=>this._foldConstants(i));if(s.some((i,a)=>i!==r[a])){const i={...t,args:s};return g(e,"FuncCall")!==null?{FuncCall:i}:i}return e}_optimize(e,t,n){try{const r=t.invertedIndex;if(!r)return e;const s=r.stats,o=n?n._stats:null,i=n?n.name:void 0;return new ke(s,{columnStats:o,indexManager:t.indexManager??void 0,tableName:i}).optimize(e)}catch{return e}}_executePlan(e,t){try{return new Dt(t).execute(e)}catch{return e.execute(t)}}_explainPlan(e,t){try{const o=new Dt(t).explain(e).split(`
10
+ `).map(i=>({plan:i}));return{columns:["plan"],rows:o}}catch{return{columns:["plan"],rows:[{plan:e.constructor.name}]}}}_scanAll(e,t){if(!e.documentStore)return new j([ae(0,{score:0})]);let r=[...e.documentStore.docIds].sort((s,o)=>s-o);return t!==void 0&&t<r.length&&(r=r.slice(0,t)),new j(r.map(s=>ae(s,{score:0})))}_chainOnSource(e,t){return e instanceof z&&e.source===null?new z(e.field,e.predicate,t):new U([t,e])}static _isGraphOperator(e){if(e==null)return!1;const t=e.constructor.name;return["TraverseOperator","RegularPathQueryOperator","PatternMatchOperator","TemporalTraverseOperator","TemporalPatternMatchOperator","CypherQueryOperator"].includes(t)}static _isJoinOperator(e){if(e==null)return!1;const t=e.constructor.name;return["InnerJoinOperator","OuterJoinOperator","CrossJoinOperator","IndexJoinOperator","SortMergeJoinOperator","ExprJoinOperator","LateralJoinOperator","TableScanOperator"].includes(t)}_collectJoinTables(e){const t=[];for(const n of e)this._walkFromForTables(n,t);return t}_walkFromForTables(e,t){const n=v(g(e,"RangeVar")??{});if(Object.keys(n).length>0){const o=re(n),i=De(n)??o,a=this._tables.get(o);a&&t.push([i,a.columnNames]);return}const r=v(g(e,"JoinExpr")??{});if(Object.keys(r).length>0){const o=g(r,"larg"),i=g(r,"rarg");o!=null&&this._walkFromForTables(v(o),t),i!=null&&this._walkFromForTables(v(i),t);return}const s=v(g(e,"RangeSubselect")??{});if(Object.keys(s).length>0){const o=De(s)??"_derived",i=this._tables.get(o);i&&t.push([o,i.columnNames])}}_applyDeferredWhere(e,t,n){return e.filter(r=>n.evaluate(t,r)===!0)}static _collectAstTableRefs(e){const t=new Set;return ie._walkAstForTables(e,t),t}static _walkAstForTables(e,t){if(e==null||typeof e!="object")return;if(Array.isArray(e)){for(const o of e)ie._walkAstForTables(o,t);return}const n=e,r=n.RangeVar;if(r!==void 0){const o=D(r,"schemaname");if(o!=="information_schema"&&o!=="pg_catalog"){const i=D(r,"relname");i&&t.add(i)}return}const s=n.relname;if(typeof s=="string"&&s){const o=n.schemaname;o!=="information_schema"&&o!=="pg_catalog"&&t.add(s)}for(const o of Object.values(n))o!==null&&typeof o=="object"&&ie._walkAstForTables(o,t)}_partitionWhereForJoins(e,t){const n=this._extractAndConjuncts(e),r=new Map,s=[];for(const i of n){const a=ie._collectConjunctAliases(i);if(a.size===1){const l=a.values().next().value;if(t.has(l)){r.has(l)||r.set(l,[]),r.get(l).push(i);continue}}s.push(i)}const o=ie._reconstructAnd(s);return[r,o]}static _collectConjunctAliases(e){const t=new Set;return ie._walkForColumnAliases(e,t),t}static _walkForColumnAliases(e,t){const n=v(g(e,"ColumnRef")??{});if(Object.keys(n).length>0){const o=R(g(n,"fields"));if(o.length>=2){const i=o[0],a=K(i);a&&t.add(a)}return}if(J(e)){const o=R(g(v(g(e,"ColumnRef")??e),"fields"));if(o.length>=2){const i=o[0],a=K(i);a&&t.add(a)}return}for(const o of["lexpr","rexpr","args","arg","xpr","val"]){const i=g(e,o);if(i!=null)if(Array.isArray(i))for(const a of i)typeof a=="object"&&ie._walkForColumnAliases(a,t);else typeof i=="object"&&ie._walkForColumnAliases(i,t)}const r=v(g(e,"BoolExpr")??{});if(Object.keys(r).length>0){const o=R(g(r,"args"));for(const i of o)ie._walkForColumnAliases(i,t)}const s=v(g(e,"A_Expr")??{});if(Object.keys(s).length>0){const o=g(s,"lexpr"),i=g(s,"rexpr");o!==null&&typeof o=="object"&&ie._walkForColumnAliases(o,t),i!==null&&typeof i=="object"&&ie._walkForColumnAliases(i,t)}}static _reconstructAnd(e){return e.length===0?null:e.length===1?e[0]:{BoolExpr:{boolop:0,args:e}}}_extractImplicitEquijoinPredicates(e,t){const n=[],r=v(g(e,"BoolExpr")??{});let s;if(Object.keys(r).length>0){const o=g(r,"boolop");o===0||o==="AND_EXPR"?s=R(g(r,"args")):s=[e]}else s=[e];for(const o of s){const i=v(g(o,"A_Expr")??{});if(Object.keys(i).length===0)continue;const a=R(g(i,"name"));if(a.length===0||K(a[a.length-1])!=="=")continue;const c=g(i,"lexpr"),u=g(i,"rexpr");if(c===null||u===null||!J(v(c))||!J(v(u)))continue;const f=v(g(v(c),"ColumnRef")??v(c)),d=v(g(v(u),"ColumnRef")??v(u)),p=R(g(f,"fields")),m=R(g(d,"fields"));if(p.length<2||m.length<2)continue;const _=K(p[0]),y=K(p[p.length-1]),x=K(m[0]),w=K(m[m.length-1]);!_||!y||!x||!w||!t.has(_)||!t.has(x)||n.push({leftAlias:_,leftCol:y,rightAlias:x,rightCol:w})}return n}_registerFkValidators(e,t,n){for(const r of n){const s=r.refTable,o=r.column,i=r.refColumn;t.fkInsertValidators.push(l=>{const c=l[o];if(c==null)return;const u=this._tables.get(s);if(!u)throw new Error(`Foreign key violation: parent table "${s}" does not exist`);if(!u.documentStore.hasValue(i,c))throw new Error(`Foreign key violation: ${e}.${o} = ${JSON.stringify(c)} not found in ${s}.${i}`)}),t.fkUpdateValidators.push((l,c)=>{const u=c[o];if(u==null)return;const f=this._tables.get(s);if(!f)throw new Error(`FOREIGN KEY constraint violated: parent table "${s}" does not exist`);if(!f.documentStore.hasValue(i,u))throw new Error(`FOREIGN KEY constraint violated: ${e}.${o} = ${JSON.stringify(u)} not found in ${s}.${i}`)});const a=this._tables.get(s);if(a){const l=e,c=t;a.fkDeleteValidators.push(u=>{const f=a.documentStore.get(u);if(!f)return;const d=f[i];if(d!=null&&c.documentStore.hasValue(o,d))throw new Error(`FOREIGN KEY constraint violated: row in "${s}" is still referenced from "${l}"`)}),a.fkUpdateValidators.push((u,f)=>{const d=u[i],p=f[i];if(d!==p&&d!=null&&c.documentStore.hasValue(o,d))throw new Error(`FOREIGN KEY constraint violated: row in "${s}" is still referenced from "${l}"`)})}}}_isPushablePredicate(e,t){const n=g(e,"A_Expr");if(n!=null){const s=v(n),o=g(s,"lexpr"),i=g(s,"rexpr");if(o!==null&&J(v(o)))try{const a=G(v(o));if(!t.has(a))return!1}catch{return!1}else return!1;if(i!==null){const a=v(i);if(!ge(a)&&!vt(a))return!1}return!0}const r=g(e,"NullTest");if(r!=null){const s=v(r),o=g(s,"arg");if(o!==null&&J(v(o)))try{const i=G(v(o));return t.has(i)}catch{return!1}}return!1}_tryPredicatePushdown(e,t){const n=g(e,"whereClause");if(n==null)return e;const r=R(g(e,"fromClause"));if(r.length!==1)return e;const s=r[0];let o=null;const i=v(g(s,"RangeVar")??{}),a=v(g(s,"RangeSubselect")??{});if(Object.keys(i).length>0){const p=re(i);this._views.has(p)?o=this._views.get(p):this._inlinedCTEs.has(p)&&(o=this._inlinedCTEs.get(p))}else if(Object.keys(a).length>0){const p=g(a,"subquery");p!=null&&(o=v(g(v(p),"SelectStmt")??p))}if(o===null||g(o,"groupClause")!==null&&R(g(o,"groupClause")).length>0||g(o,"distinctClause")!==null&&g(o,"distinctClause")!==void 0||g(o,"limitCount")!==null&&g(o,"limitCount")!==void 0)return e;const l=R(g(o,"targetList"));for(const p of l){const m=v(g(p,"ResTarget")??p),_=g(m,"val");if(_!=null&&Y(v(_))&&Ke(v(_)))return e}if(this._hasAggregates(l))return e;const c=new Set;for(const p of l){const m=v(g(p,"ResTarget")??p),_=D(m,"name");if(_)c.add(_);else{const y=g(m,"val");if(y!==null&&J(v(y)))try{c.add(G(v(y)))}catch{}}}if(c.size===0)return e;const[u,f]=this._splitPushable(v(n),c);if(u.length===0)return e;const d=u.length===1?u[0]:{BoolExpr:{boolop:0,args:u}};if(Object.keys(i).length>0){const p=re(i);this._views.has(p)?this._views.set(p,ie._injectWhere(this._views.get(p),d)):this._inlinedCTEs.has(p)&&this._inlinedCTEs.set(p,ie._injectWhere(this._inlinedCTEs.get(p),d))}return{...e,whereClause:f}}_splitPushable(e,t){const n=v(g(e,"BoolExpr")??{});if(Object.keys(n).length>0){const r=g(n,"boolop");if(r===0||r==="AND_EXPR"){const s=R(g(n,"args")),o=[],i=[];for(const l of s)this._isPushablePredicate(l,t)?o.push(l):i.push(l);let a=null;return i.length===1?a=i[0]:i.length>1&&(a={BoolExpr:{boolop:0,args:i}}),[o,a]}}return this._isPushablePredicate(e,t)?[[e],null]:[[],e]}static _injectWhere(e,t){const n=g(e,"whereClause");let r;return n==null?r=t:r={BoolExpr:{boolop:0,args:[n,t]}},{...e,whereClause:r}}_extractNumericValue(e){const t=V(e,this._params);if(typeof t=="number")return t;if(typeof t=="string"){const n=Number(t);if(!isNaN(n))return n}throw new Error("Expected numeric constant or $N parameter, got "+JSON.stringify(e).slice(0,200))}static _isSelectStar(e){if(e.length===0)return!0;for(const t of e){const n=v(g(t,"ResTarget")??t),r=g(n,"val");if(r!=null&&Ue(v(r)))return!0}return!1}static _hasComputedExpressions(e){for(const t of e){const n=v(g(t,"ResTarget")??t),r=g(n,"val");if(r==null)continue;const s=v(r);if(!J(s)){if(Y(s)){const o=oe(s);if(Be.has(o)||o==="text_match"||o==="bayesian_match"||o==="bayesian_match_with_prior"||o==="knn_match"||o==="bayesian_knn_match"||o==="traverse_match"||o==="spatial_within")continue;return!0}if(ge(s)||yn(s)||g(s,"A_Expr")!==null||g(s,"CaseExpr")!==null||$t(s)||g(s,"CoalesceExpr")!==null||kr(s)||qt(s)||g(s,"SubLink")!==null)return!0}}return!1}_inferTargetName(e){const t=v(g(e,"ResTarget")??e),n=D(t,"name");if(n)return n;const r=g(t,"val");if(r==null)return"?column?";const s=v(r);if(J(s))try{return G(s)}catch{return"?column?"}if(Y(s)){const o=oe(s);if(Be.has(o)){if(We(s))return o;const i=me(s);if(i.length>0&&J(i[0]))try{const a=G(i[0]);return`${o}_${a}`}catch{return o}return o}return o==="text_match"||o==="bayesian_match"||o==="bayesian_match_with_prior"?"_score":o}if($t(s)){const o=v(g(s,"TypeCast")??s),i=g(o,"arg");if(i!==null&&J(v(i)))try{return G(v(i))}catch{}}return"?column?"}_buildExprTargets(e){const t=[];for(const n of e){const r=v(g(n,"ResTarget")??n),s=this._inferTargetName(n);let o=g(r,"val");if(o==null)continue;const i=v(o);if(Y(i)){const a=oe(i);(a==="text_match"||a==="bayesian_match"||a==="bayesian_match_with_prior")&&(o={ColumnRef:{fields:[{String:{sval:"_score"}}]}})}t.push([s,v(o)])}return t}_sortNeedsExtraCols(e,t){const n=new Set;for(const r of t){const s=v(g(r,"ResTarget")??r),o=g(s,"val");if(o!=null&&Ue(v(o)))return!1;if(o!==null&&J(v(o))){try{n.add(G(v(o)))}catch{}const i=D(s,"name");i&&n.add(i)}else{const i=D(s,"name");i&&n.add(i)}}for(const r of e){const s=v(g(r,"SortBy")??r),o=v(g(s,"node"));if(J(o))try{const i=G(o);if(!n.has(i))return!0}catch{}}return!1}_buildGroupAliases(e,t){const n=new Map;for(const r of t){const s=v(g(r,"ResTarget")??r),o=g(s,"val"),i=D(s,"name");if(o!==null&&J(v(o))&&i)try{const a=G(v(o));e.includes(a)&&n.set(a,i)}catch{}}return n}_buildPostGroupTargets(e,t,n){let r=!1;for(const i of e){const a=v(g(i,"ResTarget")??i),l=g(a,"val");if(l==null)continue;const c=v(l);if(Y(c)){const u=oe(c);if(!Be.has(u)||Ke(c)){r=!0;break}}else if(!J(c)){const u=D(a,"name")||"?column?";if(!n.has(u)){r=!0;break}}}if(!r)return null;const s=new Set(t),o=[];for(const i of e){const a=v(g(i,"ResTarget")??i),l=D(a,"name")||this._inferTargetName(i);if(n.has(l)||s.has(l))o.push([l,{ColumnRef:{fields:[{String:{sval:l}}]}}]);else{const c=g(a,"val");if(c!==null&&J(v(c)))try{const u=G(v(c));o.push([l,{ColumnRef:{fields:[{String:{sval:u}}]}}])}catch{o.push([l,v(c)])}else o.push([l,v(c??{})])}}return o}_buildPreAggTargets(e,t,n,r){const s=[];for(let i=0;i<e.length;i++){const a=e[i];(Y(a)||g(a,"FuncCall")!==null)&&i<t.length&&s.push([t[i],a])}for(const i of n)i.inputExpr!==void 0&&s.push(["_agg_expr",i.inputExpr]);if(s.length===0)return null;const o=[];if(r)for(const i of r.columnNames)o.push([i,{ColumnRef:{fields:[{String:{sval:i}}]}}]);for(const[i,a]of s)o.push([i,a]);return o}_resolveGroupByCols(e,t){const n=new Map,r=[];for(const o of t){const i=v(g(o,"ResTarget")??o),a=g(i,"val"),l=D(i,"name");if(a!==null&&J(v(a)))try{const c=G(v(a));r.push(l||c),l&&n.set(l,c)}catch{r.push(l||"?column?")}else if(a!==null&&Y(v(a))){const c=oe(v(a));let u;if(We(v(a)))u=c;else{const f=me(v(a));let d=null;for(const p of f)if(J(p))try{d=G(p)}catch{}u=d!==null?`${c}_${d}`:c}r.push(l||u)}else r.push(l||"?column?")}const s=[];for(const o of e){if(ge(o)){const i=V(o,[]);if(typeof i=="number"&&Number.isInteger(i)){const a=i-1;if(a>=0&&a<r.length){s.push(r[a]);continue}throw new Error(`GROUP BY position ${String(i)} is not in select list`)}}if(J(o))try{const i=G(o);s.push(n.get(i)??i);continue}catch{}if(Y(o)||g(o,"FuncCall")!==null){const i=oe(o);let a=null;for(const l of t){const c=v(g(l,"ResTarget")??l),u=g(c,"val"),f=D(c,"name");if(u!==null&&Y(v(u))&&oe(v(u))===i&&f){a=f;break}}if(a!==null)s.push(a);else{const l=me(o);let c=null;for(const u of l)if(J(u))try{c=G(u)}catch{}s.push(c!==null?`${i}_${c}`:i)}continue}try{s.push(G(o))}catch{s.push("?column?")}}return s}_getTable(e){const t=this._tables.get(e);if(!t)throw new Error(`Table "${e}" does not exist`);return t}_substituteParams(e,t){const n=g(e,"ParamRef");if(n!=null){const o=v(n).number,i=t.get(o);return i!==void 0?i:e}const r={};for(const[s,o]of Object.entries(e))Array.isArray(o)?r[s]=o.map(i=>i!==null&&typeof i=="object"?this._substituteParams(i,t):i):o!==null&&typeof o=="object"?r[s]=this._substituteParams(o,t):r[s]=o;return r}_hasOuterRefs(e,t){if(J(e))try{const n=G(e);if(t.has(n))return!0;const r=Fo(e);if(t.has(r))return!0}catch{}for(const n of Object.values(e))if(Array.isArray(n)){for(const r of n)if(r!==null&&typeof r=="object"&&this._hasOuterRefs(r,t))return!0}else if(n!==null&&typeof n=="object"&&this._hasOuterRefs(n,t))return!0;return!1}_buildSortKeys(e,t){const n=new Map,r=new Set,s=new Map;for(let i=0;i<t.length;i++){const a=v(g(t[i],"ResTarget")??t[i]),l=g(a,"val"),c=D(a,"name");if(l!=null&&!Ue(v(l))){let u;try{u=c||this._deriveColumnName(v(l))}catch{u=c||"?column?"}if(n.set(i+1,u),c&&(r.add(c),J(v(l))))try{const f=G(v(l));s.set(f,c)}catch{}}}const o=[];for(const i of e){const a=v(g(i,"SortBy")??i),l=v(g(a,"node")),c=g(a,"sortby_dir"),u=c===2||c==="SORTBY_DESC"||String(c).includes("DESC"),f=!u,d=g(a,"sortby_nulls");let p;d===1||d==="SORTBY_NULLS_FIRST"||String(d).includes("FIRST")?p=!0:d===2||d==="SORTBY_NULLS_LAST"||String(d).includes("LAST")?p=!1:p=u;let m;if(ge(l)){const _=Number(V(l,this._params)),y=n.get(_);if(!y)throw new Error(`ORDER BY position ${String(_)} is not in select list`);m=y}else{try{m=G(l)}catch{m=this._deriveColumnName(l)}!r.has(m)&&s.has(m)&&(m=s.get(m))}o.push({column:m,ascending:f,nullsFirst:p})}return o}}class bn extends L{execute(e){const t=e.documentStore;if(!t)return new j;const n=[...t.docIds].sort((r,s)=>r-s);return new j(n.map(r=>ae(r,{score:0})))}costEstimate(e){return e.totalDocs}}class wn extends L{constructor(t,n=null){super();b(this,"exprNode");b(this,"_subqueryExecutor");this.exprNode=t,this._subqueryExecutor=n}execute(t){const n=new ne,r=t.documentStore;if(!r)return new j;const s=[];for(const o of[...r.docIds].sort((i,a)=>i-a)){const i=r.get(o);if(!i)continue;n.evaluate(this.exprNode,i)&&s.push(ae(o,{score:0}))}return new j(s)}costEstimate(t){return t.totalDocs}}class qo extends L{constructor(t,n,r,s,o){super();b(this,"source");b(this,"scorer");b(this,"terms");b(this,"field");b(this,"documentStore");this.source=t,this.scorer=n,this.terms=r,this.field=s,this.documentStore=o}execute(t){const n=this.source.execute(t),r=this.documentStore??t.documentStore,s=t.invertedIndex,o=[],i=this.scorer;for(const a of n){const l=a.docId,c=(r==null?void 0:r.get(l))??{},u=a.payload.positions.length>0?a.payload.positions.length:1,f=this.field??"_default";let d=u;s&&typeof s.getDocLength=="function"&&(d=s.getDocLength(l,f));const m=n.length,_=i.scoreWithPrior(u,d,m,c);o.push(ae(l,{score:_}))}return new j(o)}costEstimate(t){return this.source.costEstimate(t)*1.1}}class $o extends L{constructor(t,n,r="embedding"){super();b(this,"queryVector");b(this,"k");b(this,"field");this.queryVector=t,this.k=n,this.field=r}execute(t){var o;const n=(o=t.vectorIndexes)==null?void 0:o[this.field];let r;n?r=n.searchKnn(this.queryVector,this.k):r=new Ce(this.queryVector,this.k,this.field).execute(t);const s=[];for(const i of r)s.push(ae(i.docId,{score:(1+i.payload.score)/2}));return new j(s)}costEstimate(t){return(t.dimensions||128)*Math.log2(t.totalDocs+1)}}function Mr(h,e){switch(h){case"=":return new zt(e);case"!=":case"<>":return new In(e);case">":return new Nn(Number(e));case">=":return new An(Number(e));case"<":return new kn(Number(e));case"<=":return new Mn(Number(e));default:throw new Error(`Unsupported operator: ${h}`)}}function Tr(h){if(h==null)return{A_Const:{isnull:!0}};if(typeof h=="boolean")return{A_Const:{boolval:h}};if(typeof h=="number")return Number.isInteger(h)?{A_Const:{ival:h}}:{A_Const:{fval:String(h)}};if(typeof h=="string")return{A_Const:{sval:h}};throw new Error(`Cannot convert ${typeof h} to A_Const`)}function Or(h){const e=v(g(h,"A_Const")??h);if(g(e,"isnull")===!0)return null;const t=g(e,"boolval");if(t!=null)return!!t;const n=g(e,"ival");if(n!=null)return Number(n)!==0;const r=g(e,"fval");if(r!=null)return parseFloat(String(r))!==0;const s=g(e,"sval");return s!=null?String(s).length>0:null}function Cr(h){return"docIds"in h?h.docIds[0]:h.docId}class Lo{constructor(e,t,n){b(this,"left");b(this,"right");b(this,"condition");this.left=e,this.right=t,this.condition=n}_getEntries(e,t){return e!==null&&typeof e=="object"&&"execute"in e&&typeof e.execute=="function"?[...e.execute(t).entries]:e}}class Vo extends Lo{execute(e){const t=this._getEntries(this.left,e),n=this._getEntries(this.right,e),r=t.length<=n.length,s=r?t:n,o=r?n:t,i=r?this.condition.leftField:this.condition.rightField,a=r?this.condition.rightField:this.condition.leftField,l=new Map;for(const u of s){const f=u.payload.fields[i];if(f==null)continue;let d=l.get(f);d||(d=[],l.set(f,d)),d.push(u)}const c=[];for(const u of o){const f=u.payload.fields[a];if(f==null)continue;const d=l.get(f);if(d)for(const p of d){const m=r?p:u,_=r?u:p,y=Cr(m),x=Cr(_);c.push({docIds:[y,x],payload:B({score:m.payload.score+_.payload.score,fields:{...m.payload.fields,..._.payload.fields}})})}}return new ye(c)}}class Lt{constructor(e){b(this,"value");this.value=e}}class vn{constructor(e){b(this,"counts");this.counts=e}}class Z{constructor(e,t){b(this,"_engine");b(this,"_table");b(this,"_root");this._engine=e,this._table=t,this._root=null}term(e,t){const n=new de(e,t);return this._chain(n)}vector(e,t,n){const r=new be(e,t,n??"embedding");return this._chain(r)}knn(e,t,n){const r=new Ce(e,t,n??"embedding");return this._chain(r)}bayesianKnn(e,t,n="embedding",r){const s=new Wn(e,t,n,(r==null?void 0:r.estimationMethod)??"kde",(r==null?void 0:r.baseRate)??.5,(r==null?void 0:r.weightSource)??"density_prior",(r==null?void 0:r.bm25Query)??null,(r==null?void 0:r.bm25Field)??null,(r==null?void 0:r.densityGamma)??1,(r==null?void 0:r.bandwidthScale)??1);return this._chain(s)}and(e){if(this._root===null||e._root===null)throw new Error("Both builders must have operators before combining");const t=new U([this._root,e._root]),n=new Z(this._engine,this._table);return n._root=t,n}or(e){if(this._root===null||e._root===null)throw new Error("Both builders must have operators before combining");const t=new ee([this._root,e._root]),n=new Z(this._engine,this._table);return n._root=t,n}not(){if(this._root===null)throw new Error("Builder must have an operator before negation");const e=new ce(this._root),t=new Z(this._engine,this._table);return t._root=e,t}filter(e,t){if(e.includes(".")){const s=[];for(const a of e.split("."))/^\d+$/.test(a)?s.push(parseInt(a,10)):s.push(a);const o=new Rt(s,t,this._root),i=new Z(this._engine,this._table);return i._root=o,i}const n=new z(e,t,this._root),r=new Z(this._engine,this._table);return r._root=n,r}join(e,t,n){if(this._root===null||e._root===null)throw new Error("Both builders must have operators before joining");const r={leftField:t,rightField:n},s=new Vo(this._root,e._root,r),o=new Z(this._engine,this._table);return o._root=s,o}vectorJoin(e,t,n,r){if(this._root===null||e._root===null)throw new Error("Both builders must have operators before joining");const s=new Sr(this._root,e._root,t,n,r),o=new Z(this._engine,this._table);return o._root=s,o}traverse(e,t,n=1){const r=new pn(e,this._table,t??null,n);return this._chain(r)}temporalTraverse(e,t,n=1,r){const s=new gn({startVertex:e,graph:this._table,temporalFilter:new jt({timestamp:(r==null?void 0:r.timestamp)??null,timeRange:(r==null?void 0:r.timeRange)??null}),label:t??null,maxHops:n});return this._chain(s)}matchPattern(e){const t=new hr(e,this._table);return this._chain(t)}rpq(e,t){const n=ar(e),r=new pr(n,this._table,t??null);return this._chain(r)}vertexAggregate(e,t="sum"){if(this._root===null)throw new Error("vertexAggregate requires a graph traversal source");const n={sum:i=>i.reduce((a,l)=>a+l,0),avg:i=>i.length>0?i.reduce((a,l)=>a+l,0)/i.length:0,min:i=>i.length>0?Math.min(...i):0,max:i=>i.length>0?Math.max(...i):0,count:i=>i.length},r=new gr(this._root,e,n[t]),s=this._engine._contextForTable(this._table),o=r.execute(s);if(o.length>0){const i=o.entries[0];return new Lt(i.payload.fields._vertex_agg_result)}return new Lt(0)}vectorExclude(e,t){if(this._root===null)throw new Error("vectorExclude requires a source query");const n=new on(this._root,e,t),r=new Z(this._engine,this._table);return r._root=n,r}sparseThreshold(e){if(this._root===null)throw new Error("sparseThreshold requires a source query");const t=new xe(this._root,e),n=new Z(this._engine,this._table);return n._root=t,n}messagePassing(e=2,t="mean",n){const r=new mn({kLayers:e,aggregation:t,propertyName:n??void 0,graph:this._table});return this._chain(r)}aggregate(e,t){const n=this._engine.getTable(this._table),r=this._buildContext(n);let s;if(this._root!==null)s=this._root.execute(r);else{const c=[...n.documentStore.docIds].sort((u,f)=>u-f).map(u=>({docId:u,payload:{positions:[],score:0,fields:{}}}));s=j.fromSorted(c)}const o=n.documentStore,i=[];for(const l of s){const c=o.getField(l.docId,e);typeof c=="number"&&i.push(c)}let a;switch(t.toLowerCase()){case"count":a=i.length;break;case"sum":a=i.reduce((l,c)=>l+c,0);break;case"avg":{const l=i.reduce((c,u)=>c+u,0);a=i.length>0?l/i.length:0;break}case"min":a=i.length>0?Math.min(...i):null;break;case"max":a=i.length>0?Math.max(...i):null;break;default:throw new Error(`Unknown aggregation function: ${t}`)}return new Lt(a)}facet(e){const t=this._engine.getTable(this._table),n=this._buildContext(t),s=new ds(e,this._root).execute(n),o=new Map;for(const i of s){const a=i.payload.fields._facet_value,l=i.payload.fields._facet_count;a!==void 0&&l!==void 0&&o.set(String(a),l)}return new vn(o)}vectorFacet(e,t,n){const r=this._engine.getTable(this._table),s=this._buildContext(r),i=new Jn(e,t,n,this._root).execute(s),a=new Map;for(const l of i){const c=l.payload.fields._facet_value,u=l.payload.fields._facet_count;c!==void 0&&u!==void 0&&a.set(String(c),u)}return new vn(a)}pathFilter(e,t){const n=new Rt(e,t,this._root),r=new Z(this._engine,this._table);return r._root=n,r}pathProject(...e){const t=new Ys(e,this._root),n=new Z(this._engine,this._table);return n._root=t,n}unnest(e){const t=new Xs(e,this._root),n=new Z(this._engine,this._table);return n._root=t,n}pathAggregate(e,t){const r={count:po,sum:go,avg:mo,min:_o,max:yo}[t.toLowerCase()];if(r===void 0)throw new Error(`Unknown aggregation: ${t}`);let s;if(typeof e=="string"){const a=[];for(const l of e.split("."))/^\d+$/.test(l)?a.push(parseInt(l,10)):a.push(l);s=a}else s=e;const o=new Qs(s,new r,this._root),i=new Z(this._engine,this._table);return i._root=o,i}scoreBm25(e,t){const r=this._engine._contextForTable(this._table).invertedIndex,o=(t?r.getFieldAnalyzer(t):r.analyzer).analyze(e),i=new ct(At(),r.stats),a=new ue(i,this._root,o,t??null),l=new Z(this._engine,this._table);return l._root=a,l}scoreBayesianBm25(e,t){const r=this._engine._contextForTable(this._table).invertedIndex,o=(t?r.getFieldAnalyzer(t):r.analyzer).analyze(e),i=new Ze(Ve(),r.stats),a=new ue(i,this._root,o,t??null),l=new Z(this._engine,this._table);return l._root=a,l}scoreMultiFieldBayesian(e,t,n){const r=new cn(t,e,n??null),s=new Z(this._engine,this._table);return s._root=r,s}scoreBayesianWithPrior(e,t,n){if((n==null?void 0:n.priorFn)===void 0||n.priorFn===null)throw new Error("priorFn is required for scoreBayesianWithPrior");return this.scoreBayesianBm25(e,t)}learnParams(e,t,n){const r=(n==null?void 0:n.field)??"_default";return this._engine.learnScoringParams(this._table,r,e,t,{mode:(n==null?void 0:n.mode)??"balanced"})}fuseLogOdds(...e){let t=.5;const n=[];for(const o of e)typeof o=="number"?t=o:o._root!==null&&n.push(o);if(n.length===0)return this;const r=n.map(o=>o._root),s=new Z(this._engine,this._table);return s._root=new Ie(r,t),s}fuseProbAnd(...e){const t=e.filter(r=>r._root!==null).map(r=>r._root),n=new Z(this._engine,this._table);return n._root=new Fe(t,"and"),n}fuseProbOr(...e){const t=e.filter(r=>r._root!==null).map(r=>r._root),n=new Z(this._engine,this._table);return n._root=new Fe(t,"or"),n}fuseAttention(e,t=.5){const n=e.filter(i=>i._root!==null).map(i=>i._root);if(n.length<2)throw new Error("fuseAttention requires at least 2 signals");const r=new vr(n.length,6,t),s=new Float64Array(6),o=new Z(this._engine,this._table);return o._root=new nt(n,r,s),o}fuseLearned(e,t=.5){const n=e.filter(o=>o._root!==null).map(o=>o._root);if(n.length<2)throw new Error("fuseLearned requires at least 2 signals");const r=new xr(n.length,t),s=new Z(this._engine,this._table);return s._root=new pt(n,r),s}multiStage(e){const t=[];for(const[s,o]of e){if(s._root===null)throw new Error("Each stage must have an operator");t.push([s._root,o])}const n=new Re(t),r=new Z(this._engine,this._table);return r._root=n,r}execute(){if(this._root===null)return new j;const e=this._engine._contextForTable(this._table);let t=this._root;if(e.invertedIndex){const r=e.invertedIndex.stats;t=new ke(r).optimize(this._root)}return new Dt(e).execute(t)}explain(){if(this._root===null)return"(empty query)";const e=this._engine._contextForTable(this._table);let t=this._root;if(e.invertedIndex){const r=e.invertedIndex.stats;t=new ke(r).optimize(this._root)}return new Dt(e).explain(t)}_chain(e){this._root!==null&&(e=new U([this._root,e]));const t=new Z(this._engine,this._table);return t._root=e,t}_buildContext(e){const t={};for(const[r,s]of e.vectorIndexes)t[r]=s;const n={};for(const[r,s]of e.spatialIndexes)n[r]=s;return{documentStore:e.documentStore,invertedIndex:e.invertedIndex,vectorIndexes:t,spatialIndexes:n}}}class zo{constructor(e){b(this,"_conn");b(this,"_finished");this._conn=e,this._finished=!1,this._conn.beginTransaction()}get active(){return!this._finished}commit(){if(this._finished)throw new Error("Transaction already finished");this._conn.commitTransaction(),this._finished=!0}rollback(){if(this._finished)throw new Error("Transaction already finished");this._conn.rollbackTransaction(),this._finished=!0}savepoint(e){if(this._finished)throw new Error("Transaction already finished");this._conn.savepoint(e)}releaseSavepoint(e){if(this._finished)throw new Error("Transaction already finished");this._conn.releaseSavepoint(e)}rollbackTo(e){if(this._finished)throw new Error("Transaction already finished");this._conn.rollbackToSavepoint(e)}autoRollback(){this._finished||this.rollback()}}class Go{constructor(){b(this,"_index",new Map)}_makeKey(e,t){return`${t}\0${e.join("\0")}`}_pairKey(e,t){return`${String(e)}\0${String(t)}`}_parsePairKey(e){const t=e.split("\0");return[parseInt(t[0],10),parseInt(t[1],10)]}build(e,t,n){for(const r of n){const s=this._makeKey(r,t),o=new Set,i=e.vertexIdsInGraph(t);for(const a of i){const l=this._findReachable(e,t,a,r);for(const c of l)o.add(this._pairKey(a,c))}this._index.set(s,o)}}_findReachable(e,t,n,r){let s=new Set([n]);for(const o of r){const i=new Set;for(const a of s){const l=e.neighbors(a,t,o,"out");for(const c of l)i.add(c)}if(s=i,s.size===0)break}return[...s]}lookup(e,t){const n=this._makeKey(e,t),r=this._index.get(n);return r?[...r].map(s=>this._parsePairKey(s)):[]}hasPath(e,t){const n=this._makeKey(e,t);return this._index.has(n)}indexedPaths(){const e=[];for(const t of this._index.keys()){const n=t.split("\0");e.push(n.slice(1))}return e}}class xn{constructor(e=1,t=0,n=.5){b(this,"_transform");this._transform=new W.BayesianProbabilityTransform(e,t,n===.5?null:n)}fit(e,t,n){return this._transform.fit(e,t,n),this.params()}update(e,t,n){this._transform.update(e,t,n)}params(){return{alpha:this._transform.alpha,beta:this._transform.beta,baseRate:this._transform.baseRate??.5}}}class Bo{constructor(e){b(this,"_tables");b(this,"_views");b(this,"_prepared");b(this,"_sequences");b(this,"_tempTables");b(this,"_graphStore");b(this,"_versionedGraphs");b(this,"_pathIndexes");b(this,"_foreignServers");b(this,"_foreignTables");b(this,"_models");b(this,"_catalog");b(this,"_indexManager");b(this,"_transaction");b(this,"_compiler");b(this,"_dbPath");b(this,"_parallelWorkers");b(this,"_spillThreshold");this._dbPath=(e==null?void 0:e.dbPath)??null,this._parallelWorkers=(e==null?void 0:e.parallelWorkers)??4,this._spillThreshold=(e==null?void 0:e.spillThreshold)??0,this._tables=new Map,this._views=new Map,this._prepared=new Map,this._sequences=new Map,this._tempTables=new Set,this._graphStore=new Gn,this._versionedGraphs=new Map,this._pathIndexes=new Map,this._foreignServers=new Map,this._foreignTables=new Map,this._models=new Map,this._catalog=null,this._indexManager=null,this._transaction=null,this._compiler=new ie(this)}async sql(e,t){return this._compiler.execute(e,t)}getTable(e){const t=this._tables.get(e);if(t!==void 0)return t;const n=this._compiler.tables.get(e);if(n!==void 0)return this._tables.set(e,n),n;throw new Error(`Table not found: ${e}`)}hasTable(e){return this._tables.has(e)||this._compiler.tables.has(e)}registerTable(e,t){this._tables.set(e,t),this._compiler.tables.set(e,t)}addDocument(e,t,n,r){const s=this._tables.get(n);if(s===void 0)throw new Error(`Table '${n}' does not exist`);const o={...t};s.primaryKey!==null&&!(s.primaryKey in o)&&s.columns.get(s.primaryKey)!==void 0&&(o[s.primaryKey]=e);let i=null,a=null;if(r!=null){for(const[c,u]of s.columns)if(u.vectorDimensions!==null){i=c;break}i!==null&&(a=r,o[i]=Array.from(r))}s.documentStore.put(e,o);const l={};for(const[c,u]of Object.entries(o))typeof u=="string"&&(l[c]=u);if(Object.keys(l).length>0&&s.invertedIndex.addDocument(e,l),i!==null&&a!==null){const c=s.vectorIndexes.get(i);c!==void 0&&c.add(e,a)}}getDocument(e,t){const n=this._tables.get(t);if(n===void 0)throw new Error(`Table '${t}' does not exist`);return n.documentStore.get(e)}deleteDocument(e,t){const n=this._tables.get(t);if(n===void 0)throw new Error(`Table '${t}' does not exist`);n.documentStore.delete(e),n.invertedIndex.removeDocument(e)}getGraphStore(e){return this._graphStore}addGraphVertex(e,t){this._graphStore.addVertex(e,t)}addGraphEdge(e,t){this._graphStore.addEdge(e,t)}createGraph(e){return this._graphStore.createGraph(e),this._catalog!==null&&this._catalog.saveNamedGraph(e),this._graphStore}dropGraph(e){this._graphStore.dropGraph(e),this._catalog!==null&&this._catalog.dropNamedGraph(e)}getGraph(e){if(!this._graphStore.hasGraph(e))throw new Error(`Graph '${e}' does not exist`);return this._graphStore}hasGraph(e){return this._graphStore.hasGraph(e)}get graphStore(){return this._graphStore}estimateConvWeights(e,t,n,r="embedding"){return Hs(this,e,t,n,r)}saveModel(e,t){this._models.set(e,t),this._catalog!==null&&this._catalog.saveModel(e,t)}loadModel(e){const t=this._models.get(e);if(t!==void 0)return t;if(this._catalog!==null){const n=this._catalog.loadModel(e);return n!==null&&this._models.set(e,n),n}return null}deleteModel(e){this._models.delete(e),this._catalog!==null&&this._catalog.deleteModel(e)}buildPathIndex(e,t){if(!this._graphStore.hasGraph(e))throw new Error(`Graph '${e}' does not exist`);const n=new Go;n.build(this._graphStore,e,t),this._pathIndexes.set(e,n),this._catalog!==null&&this._catalog.savePathIndex(e,t)}getPathIndex(e){return this._pathIndexes.get(e)??null}dropPathIndex(e){this._pathIndexes.delete(e),this._catalog!==null&&this._catalog.dropPathIndex(e)}createAnalyzer(e,t){const n=Oe.fromDict(t);Jr(e,n),this._catalog!==null&&this._catalog.saveAnalyzer(e,t)}dropAnalyzer(e){Yr(e),this._catalog!==null&&this._catalog.dropAnalyzer(e)}setTableAnalyzer(e,t,n,r="both"){const s=this._tables.get(e);if(s===void 0)throw new Error(`Table '${e}' does not exist`);const o=Hr(n);s.invertedIndex.setFieldAnalyzer(t,o,r),this._catalog!==null&&(r==="both"?(this._catalog.saveTableFieldAnalyzer(e,t,"index",n),this._catalog.saveTableFieldAnalyzer(e,t,"search",n)):this._catalog.saveTableFieldAnalyzer(e,t,r,n))}getTableAnalyzer(e,t,n="index"){const r=this._tables.get(e);if(r===void 0)throw new Error(`Table '${e}' does not exist`);return n==="search"?r.invertedIndex.getSearchAnalyzer(t):r.invertedIndex.getFieldAnalyzer(t)}saveScoringParams(e,t){this._catalog!==null&&this._catalog.saveScoringParams(e,t)}loadScoringParams(e){return this._catalog!==null?this._catalog.loadScoringParams(e):null}loadAllScoringParams(){return this._catalog!==null?this._catalog.loadAllScoringParams():[]}learnScoringParams(e,t,n,r,s){const o=(s==null?void 0:s.mode)??"balanced",i=this._tables.get(e);if(i===void 0)throw new Error(`Table '${e}' does not exist`);const a=this._contextForTable(e),l=a.invertedIndex,u=(t?l.getSearchAnalyzer(t):l.analyzer).analyze(n),f=new Ze(Ve(),l.stats),d=new de(n,t||null),m=new ue(f,d,u,t||null).execute(a),_=new Map;for(const S of m)_.set(S.docId,S.payload.score);const y=[...i.documentStore.docIds].sort((S,N)=>S-N);if(r.length!==y.length)throw new Error(`labels length (${String(r.length)}) must match document count (${String(y.length)})`);const x=y.map(S=>_.get(S)??0),E=new xn().fit(x,r,{mode:o}),I=`${e}.${t}.${n}`;return this.saveScoringParams(I,E),E}updateScoringParams(e,t,n,r){const s=`${e}.${t}`,o=this.loadScoringParams(s);let i;o!==null?i=new xn(o.alpha??1,o.beta??0,o.base_rate??.5):i=new xn,i.update(n,r),this.saveScoringParams(s,i.params())}vectorBackgroundStats(e,t){const n=this._tables.get(e);if(n===void 0)return null;const r=n.vectorIndexes.get(t);return r!==void 0&&r.backgroundStats!==void 0?r.backgroundStats:null}begin(){if(this._catalog===null)throw new Error("Transactions require a persistent engine (dbPath)");if(this._transaction!==null&&this._transaction.active)throw new Error("Transaction already active");return this._transaction=new zo(this._catalog.conn),this._transaction}query(e){return new Z(this,e)}insert(e,t,n){const r=this.getTable(e);r.documentStore.put(t,n);const s={};for(const[o,i]of r.columns){const a=n[o];i.pythonType==="string"&&a!==null&&a!==void 0&&(s[o]=typeof a=="string"?a:String(a))}Object.keys(s).length>0&&r.invertedIndex.addDocument(t,s);for(const[o,i]of r.vectorIndexes){const a=n[o];a!=null&&(a instanceof Float64Array?i.add(t,a):Array.isArray(a)&&i.add(t,new Float64Array(a)))}}get dbPath(){return this._dbPath}get parallelWorkers(){return this._parallelWorkers}get spillThreshold(){return this._spillThreshold}get compiler(){return this._compiler}get catalog(){return this._catalog}get indexManager(){return this._indexManager}_contextForTable(e){const t=this._tables.get(e);if(t===void 0)throw new Error(`Table '${e}' does not exist`);const n={};for(const[s,o]of t.vectorIndexes)n[s]=o;const r={};for(const[s,o]of t.spatialIndexes)r[s]=o;return{documentStore:t.documentStore,invertedIndex:t.invertedIndex,vectorIndexes:n,spatialIndexes:r,graphStore:this._graphStore,indexManager:this._indexManager}}deepLearn(e,t,n){if(this._tables.get(e)===void 0)throw new Error(`Table '${e}' does not exist`);const s={...n,_model_name:t,_table:e,_trained_at:new Date().toISOString(),_status:"trained"};return this.saveModel(t,s),s}deepPredict(e,t){if(this.loadModel(e)===null)throw new Error(`Model '${e}' not found`);return t.map((r,s)=>({_input_idx:s,_model:e,_prediction:null,...r}))}applyGraphDelta(e,t){if(!this._graphStore.hasGraph(e))throw new Error(`Graph '${e}' does not exist`);if(t.removeEdges)for(const n of t.removeEdges)this._graphStore.removeEdge(n,e);if(t.removeVertices)for(const n of t.removeVertices)this._graphStore.removeVertex(n,e);if(t.addVertices)for(const n of t.addVertices)this._graphStore.addVertex(n,e);if(t.addEdges)for(const n of t.addEdges)this._graphStore.addEdge(n,e);this._catalog!==null&&this._catalog.saveNamedGraph(e)}createGraphVersion(e,t){if(!this._graphStore.hasGraph(e))throw new Error(`Graph '${e}' does not exist`);const n=this._versionedGraphs.get(e);if(n===void 0){const r={versions:new Map},s=new Map,o=new Map;for(const i of this._graphStore.verticesInGraph(e))s.set(i.vertexId,{...i});for(const i of this._graphStore.edgesInGraph(e))o.set(i.edgeId,{...i});r.versions.set(t,{vertices:s,edges:o}),this._versionedGraphs.set(e,r)}else{const r=new Map,s=new Map;for(const o of this._graphStore.verticesInGraph(e))r.set(o.vertexId,{...o});for(const o of this._graphStore.edgesInGraph(e))s.set(o.edgeId,{...o});n.versions.set(t,{vertices:r,edges:s})}}graphVersions(e){const t=this._versionedGraphs.get(e);return t===void 0?[]:[...t.versions.keys()]}restoreGraphVersion(e,t){const n=this._versionedGraphs.get(e);if(n===void 0)throw new Error(`No versions exist for graph '${e}'`);const r=n.versions.get(t);if(r===void 0)throw new Error(`Version '${t}' not found for graph '${e}'`);const s=this._graphStore.verticesInGraph(e);for(const o of s)this._graphStore.removeVertex(o.vertexId,e);for(const o of r.vertices.values())this._graphStore.addVertex(o,e);for(const o of r.edges.values())this._graphStore.addEdge(o,e)}calibrationReport(e,t){const r=this.loadAllScoringParams().filter(([o])=>o.startsWith(`${e}.${t}`)),s={table:e,field:t,numCalibrations:r.length,params:r.map(([o,i])=>({name:o,alpha:i.alpha??null,beta:i.beta??null,baseRate:i.base_rate??null}))};if(r.length>0){const o=r.map(([,a])=>a.alpha).filter(a=>typeof a=="number"),i=r.map(([,a])=>a.beta).filter(a=>typeof a=="number");o.length>0&&(s.mean_alpha=o.reduce((a,l)=>a+l,0)/o.length,s.std_alpha=o.length>1?Math.sqrt(o.reduce((a,l)=>a+(l-s.mean_alpha)**2,0)/(o.length-1)):0),i.length>0&&(s.mean_beta=i.reduce((a,l)=>a+l,0)/i.length)}return s}saveToCatalog(){if(this._catalog!==null){for(const[e,t]of this._tables)if(!this._tempTables.has(e)){const n=[];for(const[r,s]of t.columns)n.push({...s,name:r});this._catalog.saveTableSchema(e,n)}for(const[e,t]of this._sequences)this._catalog.setMetadata(`seq:${e}`,JSON.stringify(t));for(const e of this._graphStore.graphNames())this._catalog.saveNamedGraph(e);for(const[e,t]of this._models)this._catalog.saveModel(e,t)}}loadFromCatalog(){if(this._catalog===null)return;const e=this._catalog.loadTableSchemas();for(const[n]of e);const t=this._catalog.loadNamedGraphs();for(const n of t)this._graphStore.hasGraph(n)||this._graphStore.createGraph(n)}close(){this._transaction!==null&&this._transaction.active&&(this._transaction.rollback(),this._transaction=null),this._foreignTables.clear(),this._foreignServers.clear();for(const e of this._tempTables)this._tables.delete(e);this._tempTables.clear(),this._catalog!==null&&(this._catalog.close(),this._catalog=null),this._tables.clear(),this._graphStore.clear()}}$.AggregateResult=Lt,$.Analyzer=Oe,$.BM25Scorer=ct,$.BayesianBM25Scorer=Ze,$.Between=Bt,$.ComplementOperator=ce,$.Engine=Bo,$.Equals=zt,$.FacetResult=vn,$.FilterOperator=z,$.FlatVectorIndex=zn,$.GeneralizedPostingList=ye,$.GreaterThan=Nn,$.GreaterThanOrEqual=An,$.HierarchicalDocument=qr,$.ILike=Cn,$.InSet=Gt,$.IndexStats=En,$.IntersectOperator=U,$.IsNotNull=Wt,$.IsNull=Ut,$.KNNOperator=Ce,$.LessThan=kn,$.LessThanOrEqual=Mn,$.Like=On,$.MemoryDocumentStore=$n,$.MemoryGraphStore=Gn,$.MemoryInvertedIndex=Ln,$.NotEquals=In,$.Operator=L,$.PostingList=j,$.QueryBuilder=Z,$.Table=Ot,$.TermOperator=de,$.UnionOperator=ee,$.createBM25Params=At,$.createBayesianBM25Params=Ve,$.keywordAnalyzer=Dn,$.standardAnalyzer=rn,$.whitespaceAnalyzer=Pn,Object.defineProperty($,Symbol.toStringTag,{value:"Module"})}));
11
+ //# sourceMappingURL=uqa.umd.js.map