@tinqerjs/tinqer 0.0.21

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 (405) hide show
  1. package/dist/expressions/expression.d.ts +313 -0
  2. package/dist/expressions/expression.d.ts.map +1 -0
  3. package/dist/expressions/expression.js +56 -0
  4. package/dist/expressions/expression.js.map +1 -0
  5. package/dist/index.d.ts +34 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +34 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/linq/database-context.d.ts +18 -0
  10. package/dist/linq/database-context.d.ts.map +1 -0
  11. package/dist/linq/database-context.js +23 -0
  12. package/dist/linq/database-context.js.map +1 -0
  13. package/dist/linq/database-schema.d.ts +18 -0
  14. package/dist/linq/database-schema.d.ts.map +1 -0
  15. package/dist/linq/database-schema.js +23 -0
  16. package/dist/linq/database-schema.js.map +1 -0
  17. package/dist/linq/deletable.d.ts +30 -0
  18. package/dist/linq/deletable.d.ts.map +1 -0
  19. package/dist/linq/deletable.js +46 -0
  20. package/dist/linq/deletable.js.map +1 -0
  21. package/dist/linq/delete-from.d.ts +19 -0
  22. package/dist/linq/delete-from.d.ts.map +1 -0
  23. package/dist/linq/delete-from.js +11 -0
  24. package/dist/linq/delete-from.js.map +1 -0
  25. package/dist/linq/from.d.ts +19 -0
  26. package/dist/linq/from.d.ts.map +1 -0
  27. package/dist/linq/from.js +11 -0
  28. package/dist/linq/from.js.map +1 -0
  29. package/dist/linq/functions.d.ts +96 -0
  30. package/dist/linq/functions.d.ts.map +1 -0
  31. package/dist/linq/functions.js +136 -0
  32. package/dist/linq/functions.js.map +1 -0
  33. package/dist/linq/grouping.d.ts +26 -0
  34. package/dist/linq/grouping.d.ts.map +1 -0
  35. package/dist/linq/grouping.js +47 -0
  36. package/dist/linq/grouping.js.map +1 -0
  37. package/dist/linq/insert-into.d.ts +19 -0
  38. package/dist/linq/insert-into.d.ts.map +1 -0
  39. package/dist/linq/insert-into.js +11 -0
  40. package/dist/linq/insert-into.js.map +1 -0
  41. package/dist/linq/insertable.d.ts +30 -0
  42. package/dist/linq/insertable.d.ts.map +1 -0
  43. package/dist/linq/insertable.js +37 -0
  44. package/dist/linq/insertable.js.map +1 -0
  45. package/dist/linq/query-builder.d.ts +24 -0
  46. package/dist/linq/query-builder.d.ts.map +1 -0
  47. package/dist/linq/query-builder.js +21 -0
  48. package/dist/linq/query-builder.js.map +1 -0
  49. package/dist/linq/queryable.d.ts +61 -0
  50. package/dist/linq/queryable.d.ts.map +1 -0
  51. package/dist/linq/queryable.js +148 -0
  52. package/dist/linq/queryable.js.map +1 -0
  53. package/dist/linq/terminal-query.d.ts +10 -0
  54. package/dist/linq/terminal-query.d.ts.map +1 -0
  55. package/dist/linq/terminal-query.js +12 -0
  56. package/dist/linq/terminal-query.js.map +1 -0
  57. package/dist/linq/updatable.d.ts +57 -0
  58. package/dist/linq/updatable.d.ts.map +1 -0
  59. package/dist/linq/updatable.js +84 -0
  60. package/dist/linq/updatable.js.map +1 -0
  61. package/dist/linq/update.d.ts +19 -0
  62. package/dist/linq/update.d.ts.map +1 -0
  63. package/dist/linq/update.js +11 -0
  64. package/dist/linq/update.js.map +1 -0
  65. package/dist/parser/ast-types.d.ts +114 -0
  66. package/dist/parser/ast-types.d.ts.map +1 -0
  67. package/dist/parser/ast-types.js +6 -0
  68. package/dist/parser/ast-types.js.map +1 -0
  69. package/dist/parser/ast-visitor.d.ts +32 -0
  70. package/dist/parser/ast-visitor.d.ts.map +1 -0
  71. package/dist/parser/ast-visitor.js +666 -0
  72. package/dist/parser/ast-visitor.js.map +1 -0
  73. package/dist/parser/normalize-joins.d.ts +3 -0
  74. package/dist/parser/normalize-joins.d.ts.map +1 -0
  75. package/dist/parser/normalize-joins.js +109 -0
  76. package/dist/parser/normalize-joins.js.map +1 -0
  77. package/dist/parser/normalize-window-filters.d.ts +13 -0
  78. package/dist/parser/normalize-window-filters.d.ts.map +1 -0
  79. package/dist/parser/normalize-window-filters.js +212 -0
  80. package/dist/parser/normalize-window-filters.js.map +1 -0
  81. package/dist/parser/oxc-parser.d.ts +11 -0
  82. package/dist/parser/oxc-parser.d.ts.map +1 -0
  83. package/dist/parser/oxc-parser.js +27 -0
  84. package/dist/parser/oxc-parser.js.map +1 -0
  85. package/dist/parser/parse-cache-config.d.ts +31 -0
  86. package/dist/parser/parse-cache-config.d.ts.map +1 -0
  87. package/dist/parser/parse-cache-config.js +33 -0
  88. package/dist/parser/parse-cache-config.js.map +1 -0
  89. package/dist/parser/parse-cache.d.ts +65 -0
  90. package/dist/parser/parse-cache.d.ts.map +1 -0
  91. package/dist/parser/parse-cache.js +146 -0
  92. package/dist/parser/parse-cache.js.map +1 -0
  93. package/dist/parser/parse-query.d.ts +24 -0
  94. package/dist/parser/parse-query.d.ts.map +1 -0
  95. package/dist/parser/parse-query.js +118 -0
  96. package/dist/parser/parse-query.js.map +1 -0
  97. package/dist/parser/types.d.ts +11 -0
  98. package/dist/parser/types.d.ts.map +1 -0
  99. package/dist/parser/types.js +2 -0
  100. package/dist/parser/types.js.map +1 -0
  101. package/dist/plans/delete-plan.d.ts +44 -0
  102. package/dist/plans/delete-plan.d.ts.map +1 -0
  103. package/dist/plans/delete-plan.js +209 -0
  104. package/dist/plans/delete-plan.js.map +1 -0
  105. package/dist/plans/insert-plan.d.ts +50 -0
  106. package/dist/plans/insert-plan.d.ts.map +1 -0
  107. package/dist/plans/insert-plan.js +240 -0
  108. package/dist/plans/insert-plan.js.map +1 -0
  109. package/dist/plans/plan-execution.d.ts +39 -0
  110. package/dist/plans/plan-execution.d.ts.map +1 -0
  111. package/dist/plans/plan-execution.js +32 -0
  112. package/dist/plans/plan-execution.js.map +1 -0
  113. package/dist/plans/select-plan.d.ts +74 -0
  114. package/dist/plans/select-plan.d.ts.map +1 -0
  115. package/dist/plans/select-plan.js +551 -0
  116. package/dist/plans/select-plan.js.map +1 -0
  117. package/dist/plans/update-plan.d.ts +61 -0
  118. package/dist/plans/update-plan.d.ts.map +1 -0
  119. package/dist/plans/update-plan.js +297 -0
  120. package/dist/plans/update-plan.js.map +1 -0
  121. package/dist/query-tree/operations.d.ts +430 -0
  122. package/dist/query-tree/operations.d.ts.map +1 -0
  123. package/dist/query-tree/operations.js +8 -0
  124. package/dist/query-tree/operations.js.map +1 -0
  125. package/dist/visitors/aggregates/average.d.ts +11 -0
  126. package/dist/visitors/aggregates/average.d.ts.map +1 -0
  127. package/dist/visitors/aggregates/average.js +56 -0
  128. package/dist/visitors/aggregates/average.js.map +1 -0
  129. package/dist/visitors/aggregates/max.d.ts +11 -0
  130. package/dist/visitors/aggregates/max.d.ts.map +1 -0
  131. package/dist/visitors/aggregates/max.js +56 -0
  132. package/dist/visitors/aggregates/max.js.map +1 -0
  133. package/dist/visitors/aggregates/min.d.ts +11 -0
  134. package/dist/visitors/aggregates/min.d.ts.map +1 -0
  135. package/dist/visitors/aggregates/min.js +56 -0
  136. package/dist/visitors/aggregates/min.js.map +1 -0
  137. package/dist/visitors/aggregates/sum.d.ts +11 -0
  138. package/dist/visitors/aggregates/sum.d.ts.map +1 -0
  139. package/dist/visitors/aggregates/sum.js +56 -0
  140. package/dist/visitors/aggregates/sum.js.map +1 -0
  141. package/dist/visitors/ast-visitor.d.ts +15 -0
  142. package/dist/visitors/ast-visitor.d.ts.map +1 -0
  143. package/dist/visitors/ast-visitor.js +20 -0
  144. package/dist/visitors/ast-visitor.js.map +1 -0
  145. package/dist/visitors/boolean/comparison.d.ts +12 -0
  146. package/dist/visitors/boolean/comparison.d.ts.map +1 -0
  147. package/dist/visitors/boolean/comparison.js +128 -0
  148. package/dist/visitors/boolean/comparison.js.map +1 -0
  149. package/dist/visitors/boolean/logical.d.ts +12 -0
  150. package/dist/visitors/boolean/logical.d.ts.map +1 -0
  151. package/dist/visitors/boolean/logical.js +68 -0
  152. package/dist/visitors/boolean/logical.js.map +1 -0
  153. package/dist/visitors/boolean-predicates/all.d.ts +11 -0
  154. package/dist/visitors/boolean-predicates/all.d.ts.map +1 -0
  155. package/dist/visitors/boolean-predicates/all.js +49 -0
  156. package/dist/visitors/boolean-predicates/all.js.map +1 -0
  157. package/dist/visitors/boolean-predicates/any.d.ts +11 -0
  158. package/dist/visitors/boolean-predicates/any.d.ts.map +1 -0
  159. package/dist/visitors/boolean-predicates/any.js +48 -0
  160. package/dist/visitors/boolean-predicates/any.js.map +1 -0
  161. package/dist/visitors/common/identifier.d.ts +13 -0
  162. package/dist/visitors/common/identifier.d.ts.map +1 -0
  163. package/dist/visitors/common/identifier.js +46 -0
  164. package/dist/visitors/common/identifier.js.map +1 -0
  165. package/dist/visitors/common/literal.d.ts +13 -0
  166. package/dist/visitors/common/literal.d.ts.map +1 -0
  167. package/dist/visitors/common/literal.js +45 -0
  168. package/dist/visitors/common/literal.js.map +1 -0
  169. package/dist/visitors/common/member-access.d.ts +15 -0
  170. package/dist/visitors/common/member-access.d.ts.map +1 -0
  171. package/dist/visitors/common/member-access.js +192 -0
  172. package/dist/visitors/common/member-access.js.map +1 -0
  173. package/dist/visitors/contains/index.d.ts +11 -0
  174. package/dist/visitors/contains/index.d.ts.map +1 -0
  175. package/dist/visitors/contains/index.js +26 -0
  176. package/dist/visitors/contains/index.js.map +1 -0
  177. package/dist/visitors/count/index.d.ts +11 -0
  178. package/dist/visitors/count/index.d.ts.map +1 -0
  179. package/dist/visitors/count/index.js +47 -0
  180. package/dist/visitors/count/index.js.map +1 -0
  181. package/dist/visitors/delete/allow-full-delete.d.ts +14 -0
  182. package/dist/visitors/delete/allow-full-delete.d.ts.map +1 -0
  183. package/dist/visitors/delete/allow-full-delete.js +26 -0
  184. package/dist/visitors/delete/allow-full-delete.js.map +1 -0
  185. package/dist/visitors/delete/index.d.ts +10 -0
  186. package/dist/visitors/delete/index.d.ts.map +1 -0
  187. package/dist/visitors/delete/index.js +53 -0
  188. package/dist/visitors/delete/index.js.map +1 -0
  189. package/dist/visitors/delete/where-delete.d.ts +15 -0
  190. package/dist/visitors/delete/where-delete.d.ts.map +1 -0
  191. package/dist/visitors/delete/where-delete.js +59 -0
  192. package/dist/visitors/delete/where-delete.js.map +1 -0
  193. package/dist/visitors/distinct/index.d.ts +16 -0
  194. package/dist/visitors/distinct/index.d.ts.map +1 -0
  195. package/dist/visitors/distinct/index.js +20 -0
  196. package/dist/visitors/distinct/index.js.map +1 -0
  197. package/dist/visitors/from/index.d.ts +12 -0
  198. package/dist/visitors/from/index.d.ts.map +1 -0
  199. package/dist/visitors/from/index.js +58 -0
  200. package/dist/visitors/from/index.js.map +1 -0
  201. package/dist/visitors/groupby/index.d.ts +11 -0
  202. package/dist/visitors/groupby/index.d.ts.map +1 -0
  203. package/dist/visitors/groupby/index.js +51 -0
  204. package/dist/visitors/groupby/index.js.map +1 -0
  205. package/dist/visitors/groupjoin/index.d.ts +8 -0
  206. package/dist/visitors/groupjoin/index.d.ts.map +1 -0
  207. package/dist/visitors/groupjoin/index.js +184 -0
  208. package/dist/visitors/groupjoin/index.js.map +1 -0
  209. package/dist/visitors/index.d.ts +13 -0
  210. package/dist/visitors/index.d.ts.map +1 -0
  211. package/dist/visitors/index.js +266 -0
  212. package/dist/visitors/index.js.map +1 -0
  213. package/dist/visitors/insert/index.d.ts +10 -0
  214. package/dist/visitors/insert/index.d.ts.map +1 -0
  215. package/dist/visitors/insert/index.js +54 -0
  216. package/dist/visitors/insert/index.js.map +1 -0
  217. package/dist/visitors/insert/returning.d.ts +15 -0
  218. package/dist/visitors/insert/returning.d.ts.map +1 -0
  219. package/dist/visitors/insert/returning.js +60 -0
  220. package/dist/visitors/insert/returning.js.map +1 -0
  221. package/dist/visitors/insert/values.d.ts +15 -0
  222. package/dist/visitors/insert/values.d.ts.map +1 -0
  223. package/dist/visitors/insert/values.js +37 -0
  224. package/dist/visitors/insert/values.js.map +1 -0
  225. package/dist/visitors/join/context.d.ts +16 -0
  226. package/dist/visitors/join/context.d.ts.map +1 -0
  227. package/dist/visitors/join/context.js +6 -0
  228. package/dist/visitors/join/context.js.map +1 -0
  229. package/dist/visitors/join/expression.d.ts +16 -0
  230. package/dist/visitors/join/expression.d.ts.map +1 -0
  231. package/dist/visitors/join/expression.js +162 -0
  232. package/dist/visitors/join/expression.js.map +1 -0
  233. package/dist/visitors/join/index.d.ts +10 -0
  234. package/dist/visitors/join/index.d.ts.map +1 -0
  235. package/dist/visitors/join/index.js +9 -0
  236. package/dist/visitors/join/index.js.map +1 -0
  237. package/dist/visitors/join/join.d.ts +12 -0
  238. package/dist/visitors/join/join.d.ts.map +1 -0
  239. package/dist/visitors/join/join.js +348 -0
  240. package/dist/visitors/join/join.js.map +1 -0
  241. package/dist/visitors/join/result-selector.d.ts +16 -0
  242. package/dist/visitors/join/result-selector.d.ts.map +1 -0
  243. package/dist/visitors/join/result-selector.js +121 -0
  244. package/dist/visitors/join/result-selector.js.map +1 -0
  245. package/dist/visitors/join/shape.d.ts +16 -0
  246. package/dist/visitors/join/shape.d.ts.map +1 -0
  247. package/dist/visitors/join/shape.js +157 -0
  248. package/dist/visitors/join/shape.js.map +1 -0
  249. package/dist/visitors/orderby/context.d.ts +20 -0
  250. package/dist/visitors/orderby/context.d.ts.map +1 -0
  251. package/dist/visitors/orderby/context.js +25 -0
  252. package/dist/visitors/orderby/context.js.map +1 -0
  253. package/dist/visitors/orderby/index.d.ts +7 -0
  254. package/dist/visitors/orderby/index.d.ts.map +1 -0
  255. package/dist/visitors/orderby/index.js +7 -0
  256. package/dist/visitors/orderby/index.js.map +1 -0
  257. package/dist/visitors/orderby/key-selector.d.ts +13 -0
  258. package/dist/visitors/orderby/key-selector.d.ts.map +1 -0
  259. package/dist/visitors/orderby/key-selector.js +236 -0
  260. package/dist/visitors/orderby/key-selector.js.map +1 -0
  261. package/dist/visitors/orderby/orderby.d.ts +20 -0
  262. package/dist/visitors/orderby/orderby.d.ts.map +1 -0
  263. package/dist/visitors/orderby/orderby.js +83 -0
  264. package/dist/visitors/orderby/orderby.js.map +1 -0
  265. package/dist/visitors/orderby/thenby.d.ts +20 -0
  266. package/dist/visitors/orderby/thenby.d.ts.map +1 -0
  267. package/dist/visitors/orderby/thenby.js +76 -0
  268. package/dist/visitors/orderby/thenby.js.map +1 -0
  269. package/dist/visitors/predicates/first.d.ts +11 -0
  270. package/dist/visitors/predicates/first.d.ts.map +1 -0
  271. package/dist/visitors/predicates/first.js +47 -0
  272. package/dist/visitors/predicates/first.js.map +1 -0
  273. package/dist/visitors/predicates/last.d.ts +11 -0
  274. package/dist/visitors/predicates/last.d.ts.map +1 -0
  275. package/dist/visitors/predicates/last.js +48 -0
  276. package/dist/visitors/predicates/last.js.map +1 -0
  277. package/dist/visitors/predicates/single.d.ts +11 -0
  278. package/dist/visitors/predicates/single.d.ts.map +1 -0
  279. package/dist/visitors/predicates/single.js +48 -0
  280. package/dist/visitors/predicates/single.js.map +1 -0
  281. package/dist/visitors/reverse/index.d.ts +11 -0
  282. package/dist/visitors/reverse/index.d.ts.map +1 -0
  283. package/dist/visitors/reverse/index.js +14 -0
  284. package/dist/visitors/reverse/index.js.map +1 -0
  285. package/dist/visitors/select/context.d.ts +30 -0
  286. package/dist/visitors/select/context.d.ts.map +1 -0
  287. package/dist/visitors/select/context.js +30 -0
  288. package/dist/visitors/select/context.js.map +1 -0
  289. package/dist/visitors/select/index.d.ts +16 -0
  290. package/dist/visitors/select/index.d.ts.map +1 -0
  291. package/dist/visitors/select/index.js +180 -0
  292. package/dist/visitors/select/index.js.map +1 -0
  293. package/dist/visitors/select/projection.d.ts +13 -0
  294. package/dist/visitors/select/projection.d.ts.map +1 -0
  295. package/dist/visitors/select/projection.js +642 -0
  296. package/dist/visitors/select/projection.js.map +1 -0
  297. package/dist/visitors/select-many/index.d.ts +8 -0
  298. package/dist/visitors/select-many/index.d.ts.map +1 -0
  299. package/dist/visitors/select-many/index.js +244 -0
  300. package/dist/visitors/select-many/index.js.map +1 -0
  301. package/dist/visitors/shared/generic-visitor.d.ts +21 -0
  302. package/dist/visitors/shared/generic-visitor.d.ts.map +1 -0
  303. package/dist/visitors/shared/generic-visitor.js +32 -0
  304. package/dist/visitors/shared/generic-visitor.js.map +1 -0
  305. package/dist/visitors/shared/predicate-visitor.d.ts +21 -0
  306. package/dist/visitors/shared/predicate-visitor.d.ts.map +1 -0
  307. package/dist/visitors/shared/predicate-visitor.js +49 -0
  308. package/dist/visitors/shared/predicate-visitor.js.map +1 -0
  309. package/dist/visitors/shared/value-visitor.d.ts +21 -0
  310. package/dist/visitors/shared/value-visitor.d.ts.map +1 -0
  311. package/dist/visitors/shared/value-visitor.js +38 -0
  312. package/dist/visitors/shared/value-visitor.js.map +1 -0
  313. package/dist/visitors/take-skip/skip.d.ts +15 -0
  314. package/dist/visitors/take-skip/skip.d.ts.map +1 -0
  315. package/dist/visitors/take-skip/skip.js +209 -0
  316. package/dist/visitors/take-skip/skip.js.map +1 -0
  317. package/dist/visitors/take-skip/take.d.ts +15 -0
  318. package/dist/visitors/take-skip/take.d.ts.map +1 -0
  319. package/dist/visitors/take-skip/take.js +76 -0
  320. package/dist/visitors/take-skip/take.js.map +1 -0
  321. package/dist/visitors/types.d.ts +170 -0
  322. package/dist/visitors/types.d.ts.map +1 -0
  323. package/dist/visitors/types.js +184 -0
  324. package/dist/visitors/types.js.map +1 -0
  325. package/dist/visitors/update/allow-full-update.d.ts +14 -0
  326. package/dist/visitors/update/allow-full-update.d.ts.map +1 -0
  327. package/dist/visitors/update/allow-full-update.js +26 -0
  328. package/dist/visitors/update/allow-full-update.js.map +1 -0
  329. package/dist/visitors/update/index.d.ts +10 -0
  330. package/dist/visitors/update/index.d.ts.map +1 -0
  331. package/dist/visitors/update/index.js +54 -0
  332. package/dist/visitors/update/index.js.map +1 -0
  333. package/dist/visitors/update/returning-update.d.ts +15 -0
  334. package/dist/visitors/update/returning-update.d.ts.map +1 -0
  335. package/dist/visitors/update/returning-update.js +60 -0
  336. package/dist/visitors/update/returning-update.js.map +1 -0
  337. package/dist/visitors/update/set.d.ts +15 -0
  338. package/dist/visitors/update/set.d.ts.map +1 -0
  339. package/dist/visitors/update/set.js +46 -0
  340. package/dist/visitors/update/set.js.map +1 -0
  341. package/dist/visitors/update/where-update.d.ts +15 -0
  342. package/dist/visitors/update/where-update.d.ts.map +1 -0
  343. package/dist/visitors/update/where-update.js +59 -0
  344. package/dist/visitors/update/where-update.js.map +1 -0
  345. package/dist/visitors/utils.d.ts +36 -0
  346. package/dist/visitors/utils.d.ts.map +1 -0
  347. package/dist/visitors/utils.js +104 -0
  348. package/dist/visitors/utils.js.map +1 -0
  349. package/dist/visitors/value/array-literal.d.ts +12 -0
  350. package/dist/visitors/value/array-literal.d.ts.map +1 -0
  351. package/dist/visitors/value/array-literal.js +23 -0
  352. package/dist/visitors/value/array-literal.js.map +1 -0
  353. package/dist/visitors/value/call-expression.d.ts +12 -0
  354. package/dist/visitors/value/call-expression.d.ts.map +1 -0
  355. package/dist/visitors/value/call-expression.js +165 -0
  356. package/dist/visitors/value/call-expression.js.map +1 -0
  357. package/dist/visitors/value/object-literal.d.ts +12 -0
  358. package/dist/visitors/value/object-literal.d.ts.map +1 -0
  359. package/dist/visitors/value/object-literal.js +98 -0
  360. package/dist/visitors/value/object-literal.js.map +1 -0
  361. package/dist/visitors/visitor-utils.d.ts +22 -0
  362. package/dist/visitors/visitor-utils.d.ts.map +1 -0
  363. package/dist/visitors/visitor-utils.js +64 -0
  364. package/dist/visitors/visitor-utils.js.map +1 -0
  365. package/dist/visitors/where/boolean-method.d.ts +12 -0
  366. package/dist/visitors/where/boolean-method.d.ts.map +1 -0
  367. package/dist/visitors/where/boolean-method.js +150 -0
  368. package/dist/visitors/where/boolean-method.js.map +1 -0
  369. package/dist/visitors/where/case-insensitive-functions.d.ts +13 -0
  370. package/dist/visitors/where/case-insensitive-functions.d.ts.map +1 -0
  371. package/dist/visitors/where/case-insensitive-functions.js +72 -0
  372. package/dist/visitors/where/case-insensitive-functions.js.map +1 -0
  373. package/dist/visitors/where/column.d.ts +14 -0
  374. package/dist/visitors/where/column.d.ts.map +1 -0
  375. package/dist/visitors/where/column.js +57 -0
  376. package/dist/visitors/where/column.js.map +1 -0
  377. package/dist/visitors/where/comparison.d.ts +12 -0
  378. package/dist/visitors/where/comparison.d.ts.map +1 -0
  379. package/dist/visitors/where/comparison.js +141 -0
  380. package/dist/visitors/where/comparison.js.map +1 -0
  381. package/dist/visitors/where/context.d.ts +32 -0
  382. package/dist/visitors/where/context.d.ts.map +1 -0
  383. package/dist/visitors/where/context.js +18 -0
  384. package/dist/visitors/where/context.js.map +1 -0
  385. package/dist/visitors/where/index.d.ts +16 -0
  386. package/dist/visitors/where/index.d.ts.map +1 -0
  387. package/dist/visitors/where/index.js +82 -0
  388. package/dist/visitors/where/index.js.map +1 -0
  389. package/dist/visitors/where/logical.d.ts +12 -0
  390. package/dist/visitors/where/logical.d.ts.map +1 -0
  391. package/dist/visitors/where/logical.js +43 -0
  392. package/dist/visitors/where/logical.js.map +1 -0
  393. package/dist/visitors/where/predicate.d.ts +13 -0
  394. package/dist/visitors/where/predicate.d.ts.map +1 -0
  395. package/dist/visitors/where/predicate.js +131 -0
  396. package/dist/visitors/where/predicate.js.map +1 -0
  397. package/dist/visitors/where/value.d.ts +13 -0
  398. package/dist/visitors/where/value.d.ts.map +1 -0
  399. package/dist/visitors/where/value.js +356 -0
  400. package/dist/visitors/where/value.js.map +1 -0
  401. package/dist/visitors/window/index.d.ts +18 -0
  402. package/dist/visitors/window/index.d.ts.map +1 -0
  403. package/dist/visitors/window/index.js +156 -0
  404. package/dist/visitors/window/index.js.map +1 -0
  405. package/package.json +50 -0
@@ -0,0 +1,666 @@
1
+ /**
2
+ * AST to QueryOperation visitor
3
+ * Main entry point for the visitor-based parsing system
4
+ */
5
+ // Import operation visitors
6
+ import { visitFromOperation } from "../visitors/from/index.js";
7
+ import { visitWhereOperation } from "../visitors/where/index.js";
8
+ import { visitSelectOperation } from "../visitors/select/index.js";
9
+ import { visitOrderByOperation, visitThenByOperation } from "../visitors/orderby/index.js";
10
+ import { visitTakeOperation } from "../visitors/take-skip/take.js";
11
+ import { visitSkipOperation } from "../visitors/take-skip/skip.js";
12
+ import { visitDistinctOperation } from "../visitors/distinct/index.js";
13
+ import { visitJoinOperation } from "../visitors/join/index.js";
14
+ import { visitGroupJoinOperation } from "../visitors/groupjoin/index.js";
15
+ import { visitSelectManyOperation } from "../visitors/select-many/index.js";
16
+ import { visitGroupByOperation } from "../visitors/groupby/index.js";
17
+ import { visitCountOperation } from "../visitors/count/index.js";
18
+ import { visitSumOperation } from "../visitors/aggregates/sum.js";
19
+ import { visitAverageOperation } from "../visitors/aggregates/average.js";
20
+ import { visitMinOperation } from "../visitors/aggregates/min.js";
21
+ import { visitMaxOperation } from "../visitors/aggregates/max.js";
22
+ import { visitFirstOperation } from "../visitors/predicates/first.js";
23
+ import { visitSingleOperation } from "../visitors/predicates/single.js";
24
+ import { visitLastOperation } from "../visitors/predicates/last.js";
25
+ import { visitAnyOperation } from "../visitors/boolean-predicates/any.js";
26
+ import { visitAllOperation } from "../visitors/boolean-predicates/all.js";
27
+ import { visitContainsOperation } from "../visitors/contains/index.js";
28
+ import { visitReverseOperation } from "../visitors/reverse/index.js";
29
+ // Data modification visitors
30
+ import { visitInsertOperation } from "../visitors/insert/index.js";
31
+ import { visitValuesOperation } from "../visitors/insert/values.js";
32
+ import { visitReturningOperation } from "../visitors/insert/returning.js";
33
+ import { visitUpdateOperation } from "../visitors/update/index.js";
34
+ import { visitSetOperation } from "../visitors/update/set.js";
35
+ import { visitWhereUpdateOperation } from "../visitors/update/where-update.js";
36
+ import { visitAllowFullUpdateOperation } from "../visitors/update/allow-full-update.js";
37
+ import { visitReturningUpdateOperation } from "../visitors/update/returning-update.js";
38
+ import { visitDeleteOperation } from "../visitors/delete/index.js";
39
+ import { visitWhereDeleteOperation } from "../visitors/delete/where-delete.js";
40
+ import { visitAllowFullDeleteOperation } from "../visitors/delete/allow-full-delete.js";
41
+ /**
42
+ * Convert AST to QueryOperation using visitor pattern
43
+ */
44
+ export function convertAstToQueryOperationWithParams(ast, startCounter, existingAutoParams, maybeQueryBuilderParam) {
45
+ // Extract parameter info from the lambda
46
+ const extracted = extractParameters(ast);
47
+ // If no DSL param was extracted (e.g., for non-lambda expressions like q.from()),
48
+ // use the existing DSL param from parent context
49
+ const queryBuilderParam = extracted.queryBuilderParam || maybeQueryBuilderParam;
50
+ const { tableParams, queryParams, helpersParam } = extracted;
51
+ // Create shared visitor context
52
+ const visitorContext = {
53
+ queryBuilderParam: queryBuilderParam,
54
+ tableParams: new Set(tableParams),
55
+ queryParams: new Set(queryParams),
56
+ helpersParam,
57
+ autoParams: existingAutoParams || new Map(),
58
+ autoParamCounter: startCounter || 0,
59
+ autoParamInfos: new Map(), // Initialize enhanced field context tracking
60
+ };
61
+ // Visit the query chain
62
+ const operation = visitQueryChain(ast, visitorContext);
63
+ // Extract auto-params for return
64
+ const allAutoParams = Object.fromEntries(visitorContext.autoParams);
65
+ // Extract enhanced parameter info if available
66
+ const autoParamInfos = visitorContext.autoParamInfos
67
+ ? Object.fromEntries(visitorContext.autoParamInfos)
68
+ : undefined;
69
+ return {
70
+ operation,
71
+ autoParams: allAutoParams,
72
+ autoParamInfos,
73
+ visitorContext,
74
+ };
75
+ }
76
+ /**
77
+ * Extract DSL, table, query, and helpers parameters from the root lambda
78
+ */
79
+ function extractParameters(ast) {
80
+ const tableParams = new Set();
81
+ const queryParams = new Set();
82
+ let queryBuilderParam;
83
+ let helpersParam;
84
+ // Check if the root is an arrow function with params
85
+ // Signature: (q, p, h) => q.from(...).where(x => x.id == p.minId)
86
+ // where q = query builder, p = parameters, h = helpers
87
+ if (ast.type === "ArrowFunctionExpression") {
88
+ const arrow = ast;
89
+ if (arrow.params && arrow.params.length > 0) {
90
+ // First param is the query builder
91
+ const firstParam = arrow.params[0];
92
+ if (firstParam && firstParam.type === "Identifier") {
93
+ queryBuilderParam = firstParam.name;
94
+ }
95
+ else if (firstParam && firstParam.type === "AssignmentPattern") {
96
+ // Handle default parameters
97
+ const assignPattern = firstParam;
98
+ if (assignPattern.left?.type === "Identifier" && assignPattern.left.name) {
99
+ queryBuilderParam = assignPattern.left.name;
100
+ }
101
+ }
102
+ // Second param is query parameters
103
+ if (arrow.params.length > 1) {
104
+ const secondParam = arrow.params[1];
105
+ if (secondParam && secondParam.type === "Identifier") {
106
+ queryParams.add(secondParam.name);
107
+ }
108
+ else if (secondParam && secondParam.type === "AssignmentPattern") {
109
+ // Handle default parameters
110
+ const assignPattern = secondParam;
111
+ if (assignPattern.left?.type === "Identifier" && assignPattern.left.name) {
112
+ queryParams.add(assignPattern.left.name);
113
+ }
114
+ }
115
+ }
116
+ // Third param is helpers
117
+ if (arrow.params.length > 2) {
118
+ const thirdParam = arrow.params[2];
119
+ if (thirdParam && thirdParam.type === "Identifier") {
120
+ helpersParam = thirdParam.name;
121
+ }
122
+ else if (thirdParam && thirdParam.type === "AssignmentPattern") {
123
+ // Handle default parameters: (q, p, h = createQueryHelpers())
124
+ const assignPattern = thirdParam;
125
+ if (assignPattern.left?.type === "Identifier" && assignPattern.left.name) {
126
+ helpersParam = assignPattern.left.name;
127
+ }
128
+ }
129
+ }
130
+ else if (arrow.params.length === 2) {
131
+ // Old signature with 2 params: (p, h) => ...
132
+ // Second param might be helpers if no third param
133
+ // We'll handle this in visitCallExpression by checking if the first param is used as DSL
134
+ }
135
+ }
136
+ // For parameterless lambdas, no query params or helpers
137
+ }
138
+ return { queryBuilderParam: queryBuilderParam, tableParams, queryParams, helpersParam };
139
+ }
140
+ /**
141
+ * Visit a query chain and build the operation tree
142
+ */
143
+ function visitQueryChain(ast, visitorContext) {
144
+ // If it's an arrow function, visit its body
145
+ if (ast.type === "ArrowFunctionExpression") {
146
+ const arrow = ast;
147
+ const body = arrow.body;
148
+ // Handle block statement body
149
+ if (body.type === "BlockStatement") {
150
+ // Look for return statement
151
+ const returnStmt = body.body.find((stmt) => stmt.type === "ReturnStatement");
152
+ if (returnStmt) {
153
+ const returnExpr = returnStmt.argument;
154
+ if (returnExpr) {
155
+ return visitQueryChain(returnExpr, visitorContext);
156
+ }
157
+ }
158
+ }
159
+ else {
160
+ // Expression body
161
+ return visitQueryChain(body, visitorContext);
162
+ }
163
+ }
164
+ // Handle call expressions (method calls)
165
+ if (ast.type === "CallExpression") {
166
+ return visitCallExpression(ast, visitorContext);
167
+ }
168
+ return null;
169
+ }
170
+ /**
171
+ * Check if a call expression is a DSL method call (e.g., q.from())
172
+ */
173
+ function isDSLMethodCall(ast, queryBuilderParam) {
174
+ if (!queryBuilderParam) {
175
+ return false;
176
+ }
177
+ if (ast.callee.type === "MemberExpression") {
178
+ const memberExpr = ast.callee;
179
+ if (memberExpr.object.type === "Identifier") {
180
+ const objName = memberExpr.object.name;
181
+ return objName === queryBuilderParam;
182
+ }
183
+ }
184
+ return false;
185
+ }
186
+ /**
187
+ * Check if a call expression is a bare DSL operation (e.g., from())
188
+ */
189
+ function isBareDSLOperation(ast, methodName) {
190
+ return (ast.callee.type === "Identifier" &&
191
+ (methodName === "from" ||
192
+ methodName === "insertInto" ||
193
+ methodName === "update" ||
194
+ methodName === "deleteFrom"));
195
+ }
196
+ /**
197
+ * Visit a call expression (method call)
198
+ */
199
+ function visitCallExpression(ast, visitorContext) {
200
+ const methodName = getMethodName(ast);
201
+ if (!methodName) {
202
+ return null;
203
+ }
204
+ // Check if this is a DSL method call or bare operation
205
+ const isDSLCall = isDSLMethodCall(ast, visitorContext.queryBuilderParam);
206
+ const isBareCall = isBareDSLOperation(ast, methodName);
207
+ // Handle root operations
208
+ if (methodName === "from" && (isDSLCall || isBareCall)) {
209
+ const operation = visitFromOperation(ast);
210
+ // Set current table in context for field tracking
211
+ if (operation) {
212
+ visitorContext.currentTable = operation.table;
213
+ }
214
+ // FROM doesn't have auto-params
215
+ return operation;
216
+ }
217
+ if (methodName === "insertInto" && (isDSLCall || isBareCall)) {
218
+ const operation = visitInsertOperation(ast);
219
+ // Set current table in context for field tracking
220
+ if (operation) {
221
+ visitorContext.currentTable = operation.table;
222
+ }
223
+ return operation;
224
+ }
225
+ if (methodName === "update" && (isDSLCall || isBareCall)) {
226
+ const operation = visitUpdateOperation(ast);
227
+ // Set current table in context for field tracking
228
+ if (operation) {
229
+ visitorContext.currentTable = operation.table;
230
+ }
231
+ return operation;
232
+ }
233
+ if (methodName === "deleteFrom" && (isDSLCall || isBareCall)) {
234
+ const operation = visitDeleteOperation(ast);
235
+ // Set current table in context for field tracking
236
+ if (operation) {
237
+ visitorContext.currentTable = operation.table;
238
+ }
239
+ return operation;
240
+ }
241
+ // For chained operations, first process the source
242
+ if (ast.callee.type === "MemberExpression") {
243
+ const memberExpr = ast.callee;
244
+ const source = visitQueryChain(memberExpr.object, visitorContext);
245
+ if (!source) {
246
+ return null;
247
+ }
248
+ // Visit specific operation based on method name
249
+ switch (methodName) {
250
+ case "where": {
251
+ // Handle WHERE for UPDATE and DELETE operations differently
252
+ if (source.operationType === "update") {
253
+ const result = visitWhereUpdateOperation(ast, source, visitorContext);
254
+ if (result) {
255
+ for (const [key, value] of Object.entries(result.autoParams)) {
256
+ visitorContext.autoParams.set(key, value);
257
+ }
258
+ return result.operation;
259
+ }
260
+ return null;
261
+ }
262
+ else if (source.operationType === "delete") {
263
+ const result = visitWhereDeleteOperation(ast, source, visitorContext);
264
+ if (result) {
265
+ for (const [key, value] of Object.entries(result.autoParams)) {
266
+ visitorContext.autoParams.set(key, value);
267
+ }
268
+ return result.operation;
269
+ }
270
+ return null;
271
+ }
272
+ // Regular WHERE for SELECT operations
273
+ const result = visitWhereOperation(ast, source, visitorContext);
274
+ if (result) {
275
+ // Merge auto-params back into context
276
+ for (const [key, value] of Object.entries(result.autoParams)) {
277
+ visitorContext.autoParams.set(key, value);
278
+ }
279
+ return result.operation;
280
+ }
281
+ return null;
282
+ }
283
+ case "select": {
284
+ const result = visitSelectOperation(ast, source, visitorContext);
285
+ if (result) {
286
+ // Merge auto-params back into context
287
+ for (const [key, value] of Object.entries(result.autoParams)) {
288
+ visitorContext.autoParams.set(key, value);
289
+ }
290
+ return result.operation;
291
+ }
292
+ return null;
293
+ }
294
+ case "orderBy":
295
+ case "orderByDescending": {
296
+ const result = visitOrderByOperation(ast, source, methodName, visitorContext);
297
+ if (result) {
298
+ // Merge auto-params back into context
299
+ for (const [key, value] of Object.entries(result.autoParams)) {
300
+ visitorContext.autoParams.set(key, value);
301
+ }
302
+ return result.operation;
303
+ }
304
+ return null;
305
+ }
306
+ case "thenBy":
307
+ case "thenByDescending": {
308
+ const result = visitThenByOperation(ast, source, methodName, visitorContext);
309
+ if (result) {
310
+ // Merge auto-params back into context
311
+ for (const [key, value] of Object.entries(result.autoParams)) {
312
+ visitorContext.autoParams.set(key, value);
313
+ }
314
+ return result.operation;
315
+ }
316
+ return null;
317
+ }
318
+ case "take": {
319
+ const result = visitTakeOperation(ast, source, methodName, visitorContext);
320
+ if (result) {
321
+ // Merge auto-params back into context
322
+ for (const [key, value] of Object.entries(result.autoParams)) {
323
+ visitorContext.autoParams.set(key, value);
324
+ }
325
+ return result.operation;
326
+ }
327
+ return null;
328
+ }
329
+ case "skip": {
330
+ const result = visitSkipOperation(ast, source, methodName, visitorContext);
331
+ if (result) {
332
+ // Merge auto-params back into context
333
+ for (const [key, value] of Object.entries(result.autoParams)) {
334
+ visitorContext.autoParams.set(key, value);
335
+ }
336
+ return result.operation;
337
+ }
338
+ return null;
339
+ }
340
+ case "distinct": {
341
+ const result = visitDistinctOperation(ast, source, methodName, visitorContext);
342
+ if (result) {
343
+ // No auto-params for distinct
344
+ return result.operation;
345
+ }
346
+ return null;
347
+ }
348
+ case "join": {
349
+ const result = visitJoinOperation(ast, source, methodName, visitorContext);
350
+ if (result) {
351
+ // Merge auto-params back into context if any
352
+ for (const [key, value] of Object.entries(result.autoParams)) {
353
+ visitorContext.autoParams.set(key, value);
354
+ }
355
+ // Update context with JOIN result shape for subsequent operations
356
+ const joinOp = result.operation;
357
+ if (joinOp.resultShape) {
358
+ visitorContext.currentResultShape = joinOp.resultShape;
359
+ // Create a virtual table parameter for the JOIN result
360
+ visitorContext.joinResultParam = "$joinResult";
361
+ visitorContext.tableParams.add("$joinResult");
362
+ }
363
+ return result.operation;
364
+ }
365
+ return null;
366
+ }
367
+ case "groupJoin": {
368
+ const result = visitGroupJoinOperation(ast, source, methodName, visitorContext);
369
+ if (result) {
370
+ for (const [key, value] of Object.entries(result.autoParams)) {
371
+ visitorContext.autoParams.set(key, value);
372
+ }
373
+ const groupJoinOp = result.operation;
374
+ if (groupJoinOp.resultShape) {
375
+ visitorContext.currentResultShape = groupJoinOp.resultShape;
376
+ visitorContext.joinResultParam = "$groupJoin";
377
+ visitorContext.tableParams.add("$groupJoin");
378
+ }
379
+ return result.operation;
380
+ }
381
+ return null;
382
+ }
383
+ case "selectMany": {
384
+ const result = visitSelectManyOperation(ast, source, methodName, visitorContext);
385
+ if (result) {
386
+ for (const [key, value] of Object.entries(result.autoParams)) {
387
+ visitorContext.autoParams.set(key, value);
388
+ }
389
+ const selectManyOp = result.operation;
390
+ if (selectManyOp.resultShape) {
391
+ visitorContext.currentResultShape = selectManyOp.resultShape;
392
+ visitorContext.joinResultParam = "$selectMany";
393
+ visitorContext.tableParams.add("$selectMany");
394
+ }
395
+ return result.operation;
396
+ }
397
+ return null;
398
+ }
399
+ case "groupBy": {
400
+ const result = visitGroupByOperation(ast, source, methodName, visitorContext);
401
+ if (result) {
402
+ // Merge auto-params back into context if any
403
+ for (const [key, value] of Object.entries(result.autoParams)) {
404
+ visitorContext.autoParams.set(key, value);
405
+ }
406
+ return result.operation;
407
+ }
408
+ return null;
409
+ }
410
+ case "count": {
411
+ const result = visitCountOperation(ast, source, methodName, visitorContext);
412
+ if (result) {
413
+ // Merge auto-params back into context if any
414
+ for (const [key, value] of Object.entries(result.autoParams)) {
415
+ visitorContext.autoParams.set(key, value);
416
+ }
417
+ return result.operation;
418
+ }
419
+ return null;
420
+ }
421
+ case "sum": {
422
+ const result = visitSumOperation(ast, source, methodName, visitorContext);
423
+ if (result) {
424
+ // Merge auto-params back into context if any
425
+ for (const [key, value] of Object.entries(result.autoParams)) {
426
+ visitorContext.autoParams.set(key, value);
427
+ }
428
+ return result.operation;
429
+ }
430
+ return null;
431
+ }
432
+ case "average":
433
+ case "avg": {
434
+ const result = visitAverageOperation(ast, source, methodName, visitorContext);
435
+ if (result) {
436
+ // Merge auto-params back into context if any
437
+ for (const [key, value] of Object.entries(result.autoParams)) {
438
+ visitorContext.autoParams.set(key, value);
439
+ }
440
+ return result.operation;
441
+ }
442
+ return null;
443
+ }
444
+ case "min": {
445
+ const result = visitMinOperation(ast, source, methodName, visitorContext);
446
+ if (result) {
447
+ // Merge auto-params back into context if any
448
+ for (const [key, value] of Object.entries(result.autoParams)) {
449
+ visitorContext.autoParams.set(key, value);
450
+ }
451
+ return result.operation;
452
+ }
453
+ return null;
454
+ }
455
+ case "max": {
456
+ const result = visitMaxOperation(ast, source, methodName, visitorContext);
457
+ if (result) {
458
+ // Merge auto-params back into context if any
459
+ for (const [key, value] of Object.entries(result.autoParams)) {
460
+ visitorContext.autoParams.set(key, value);
461
+ }
462
+ return result.operation;
463
+ }
464
+ return null;
465
+ }
466
+ case "first":
467
+ case "firstOrDefault": {
468
+ const result = visitFirstOperation(ast, source, methodName, visitorContext);
469
+ if (result) {
470
+ // Merge auto-params back into context if any
471
+ for (const [key, value] of Object.entries(result.autoParams)) {
472
+ visitorContext.autoParams.set(key, value);
473
+ }
474
+ return result.operation;
475
+ }
476
+ return null;
477
+ }
478
+ case "single":
479
+ case "singleOrDefault": {
480
+ const result = visitSingleOperation(ast, source, methodName, visitorContext);
481
+ if (result) {
482
+ // Merge auto-params back into context if any
483
+ for (const [key, value] of Object.entries(result.autoParams)) {
484
+ visitorContext.autoParams.set(key, value);
485
+ }
486
+ return result.operation;
487
+ }
488
+ return null;
489
+ }
490
+ case "last":
491
+ case "lastOrDefault": {
492
+ const result = visitLastOperation(ast, source, methodName, visitorContext);
493
+ if (result) {
494
+ // Merge auto-params back into context if any
495
+ for (const [key, value] of Object.entries(result.autoParams)) {
496
+ visitorContext.autoParams.set(key, value);
497
+ }
498
+ return result.operation;
499
+ }
500
+ return null;
501
+ }
502
+ case "any": {
503
+ const result = visitAnyOperation(ast, source, methodName, visitorContext);
504
+ if (result) {
505
+ // Merge auto-params back into context if any
506
+ for (const [key, value] of Object.entries(result.autoParams)) {
507
+ visitorContext.autoParams.set(key, value);
508
+ }
509
+ return result.operation;
510
+ }
511
+ return null;
512
+ }
513
+ case "all": {
514
+ const result = visitAllOperation(ast, source, methodName, visitorContext);
515
+ if (result) {
516
+ // Merge auto-params back into context if any
517
+ for (const [key, value] of Object.entries(result.autoParams)) {
518
+ visitorContext.autoParams.set(key, value);
519
+ }
520
+ return result.operation;
521
+ }
522
+ return null;
523
+ }
524
+ case "contains": {
525
+ const result = visitContainsOperation(ast, source, methodName, visitorContext);
526
+ if (result) {
527
+ // Merge auto-params back into context
528
+ for (const [key, value] of Object.entries(result.autoParams)) {
529
+ visitorContext.autoParams.set(key, value);
530
+ }
531
+ return result.operation;
532
+ }
533
+ return null;
534
+ }
535
+ case "reverse": {
536
+ const result = visitReverseOperation(ast, source, methodName, visitorContext);
537
+ if (result) {
538
+ // No auto-params for reverse
539
+ return result.operation;
540
+ }
541
+ return null;
542
+ }
543
+ // INSERT operations
544
+ case "values": {
545
+ if (source.operationType !== "insert") {
546
+ throw new Error("values() can only be called on INSERT operations");
547
+ }
548
+ const result = visitValuesOperation(ast, source, visitorContext);
549
+ if (result) {
550
+ for (const [key, value] of Object.entries(result.autoParams)) {
551
+ visitorContext.autoParams.set(key, value);
552
+ }
553
+ return result.operation;
554
+ }
555
+ return null;
556
+ }
557
+ case "returning": {
558
+ if (source.operationType === "insert") {
559
+ const result = visitReturningOperation(ast, source, visitorContext);
560
+ if (result) {
561
+ for (const [key, value] of Object.entries(result.autoParams)) {
562
+ visitorContext.autoParams.set(key, value);
563
+ }
564
+ return result.operation;
565
+ }
566
+ return null;
567
+ }
568
+ else if (source.operationType === "update") {
569
+ const result = visitReturningUpdateOperation(ast, source, visitorContext);
570
+ if (result) {
571
+ for (const [key, value] of Object.entries(result.autoParams)) {
572
+ visitorContext.autoParams.set(key, value);
573
+ }
574
+ return result.operation;
575
+ }
576
+ return null;
577
+ }
578
+ throw new Error("returning() can only be called on INSERT or UPDATE operations");
579
+ }
580
+ // UPDATE operations
581
+ case "set": {
582
+ if (source.operationType !== "update") {
583
+ throw new Error("set() can only be called on UPDATE operations");
584
+ }
585
+ const result = visitSetOperation(ast, source, visitorContext);
586
+ if (result) {
587
+ for (const [key, value] of Object.entries(result.autoParams)) {
588
+ visitorContext.autoParams.set(key, value);
589
+ }
590
+ return result.operation;
591
+ }
592
+ return null;
593
+ }
594
+ case "allowFullTableUpdate": {
595
+ if (source.operationType !== "update") {
596
+ throw new Error("allowFullTableUpdate() can only be called on UPDATE operations");
597
+ }
598
+ const result = visitAllowFullUpdateOperation(ast, source);
599
+ if (result) {
600
+ for (const [key, value] of Object.entries(result.autoParams)) {
601
+ visitorContext.autoParams.set(key, value);
602
+ }
603
+ return result.operation;
604
+ }
605
+ return null;
606
+ }
607
+ // DELETE operations
608
+ case "allowFullTableDelete": {
609
+ if (source.operationType !== "delete") {
610
+ throw new Error("allowFullTableDelete() can only be called on DELETE operations");
611
+ }
612
+ const result = visitAllowFullDeleteOperation(ast, source);
613
+ if (result) {
614
+ for (const [key, value] of Object.entries(result.autoParams)) {
615
+ visitorContext.autoParams.set(key, value);
616
+ }
617
+ return result.operation;
618
+ }
619
+ return null;
620
+ }
621
+ default:
622
+ // Handle WHERE based on source type
623
+ if (methodName === "where") {
624
+ if (source.operationType === "update") {
625
+ const result = visitWhereUpdateOperation(ast, source, visitorContext);
626
+ if (result) {
627
+ for (const [key, value] of Object.entries(result.autoParams)) {
628
+ visitorContext.autoParams.set(key, value);
629
+ }
630
+ return result.operation;
631
+ }
632
+ return null;
633
+ }
634
+ else if (source.operationType === "delete") {
635
+ const result = visitWhereDeleteOperation(ast, source, visitorContext);
636
+ if (result) {
637
+ for (const [key, value] of Object.entries(result.autoParams)) {
638
+ visitorContext.autoParams.set(key, value);
639
+ }
640
+ return result.operation;
641
+ }
642
+ return null;
643
+ }
644
+ }
645
+ console.warn(`Unknown query method: ${methodName}`);
646
+ return null;
647
+ }
648
+ }
649
+ return null;
650
+ }
651
+ /**
652
+ * Get method name from call expression
653
+ */
654
+ function getMethodName(ast) {
655
+ if (ast.callee.type === "Identifier") {
656
+ return ast.callee.name;
657
+ }
658
+ if (ast.callee.type === "MemberExpression") {
659
+ const memberExpr = ast.callee;
660
+ if (memberExpr.property.type === "Identifier") {
661
+ return memberExpr.property.name;
662
+ }
663
+ }
664
+ return null;
665
+ }
666
+ //# sourceMappingURL=ast-visitor.js.map