@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,162 @@
1
+ /**
2
+ * JOIN expression visitor
3
+ * Handles expressions within JOIN context with parameter tracking
4
+ */
5
+ /**
6
+ * Visit expressions in JOIN context with parameter tracking
7
+ */
8
+ export function visitJoinExpression(node, context, startCounter) {
9
+ let currentCounter = startCounter;
10
+ const autoParams = {};
11
+ switch (node.type) {
12
+ case "MemberExpression": {
13
+ const member = node;
14
+ if (member.object.type === "Identifier" && member.property.type === "Identifier") {
15
+ const objName = member.object.name;
16
+ const propName = member.property.name;
17
+ // Check if this is accessing a property from a previous JOIN's result
18
+ if (context.joinResultParam === objName && context.currentResultShape) {
19
+ // Look up the property in the result shape
20
+ const resultShape = context.currentResultShape;
21
+ const shapeProp = resultShape.properties.get(propName);
22
+ if (shapeProp) {
23
+ if (shapeProp.type === "column") {
24
+ // Return the actual column reference from the result shape
25
+ return {
26
+ value: {
27
+ type: "column",
28
+ name: shapeProp.columnName || propName,
29
+ source: { type: "joinParam", paramIndex: shapeProp.sourceTable || 0 },
30
+ },
31
+ autoParams,
32
+ counter: currentCounter,
33
+ };
34
+ }
35
+ else if (shapeProp.type === "reference") {
36
+ // It's a table reference - return it as a reference
37
+ return {
38
+ value: {
39
+ type: "reference",
40
+ source: { type: "joinParam", paramIndex: shapeProp.sourceTable || 0 },
41
+ },
42
+ autoParams,
43
+ counter: currentCounter,
44
+ };
45
+ }
46
+ }
47
+ }
48
+ // Check if this is a JOIN parameter
49
+ if (context.joinParams?.has(objName)) {
50
+ const tableIndex = context.joinParams.get(objName);
51
+ return {
52
+ value: {
53
+ type: "column",
54
+ name: propName,
55
+ source: { type: "joinParam", paramIndex: tableIndex || 0 },
56
+ },
57
+ autoParams,
58
+ counter: currentCounter,
59
+ };
60
+ }
61
+ // Regular table parameter
62
+ if (context.tableParams.has(objName)) {
63
+ return {
64
+ value: {
65
+ type: "column",
66
+ name: propName,
67
+ table: objName,
68
+ },
69
+ autoParams,
70
+ counter: currentCounter,
71
+ };
72
+ }
73
+ }
74
+ break;
75
+ }
76
+ case "Identifier": {
77
+ const ident = node;
78
+ const identName = ident.name;
79
+ // FIRST check if this is the previous JOIN result parameter
80
+ if (identName === context.joinResultParam && context.currentResultShape) {
81
+ // This is the entire result from the previous JOIN
82
+ // We need to preserve its structure
83
+ // Convert the shape to an object expression that preserves the structure
84
+ const convertShapeToExpression = (shape) => {
85
+ if (shape.type === "reference") {
86
+ const refShape = shape;
87
+ return {
88
+ type: "reference",
89
+ source: { type: "joinParam", paramIndex: refShape.sourceTable || 0 },
90
+ };
91
+ }
92
+ else if (shape.type === "column") {
93
+ const colShape = shape;
94
+ return {
95
+ type: "column",
96
+ name: colShape.columnName,
97
+ source: { type: "joinParam", paramIndex: colShape.sourceTable || 0 },
98
+ };
99
+ }
100
+ else if (shape.type === "object") {
101
+ const objShape = shape;
102
+ const objExpr = {
103
+ type: "object",
104
+ properties: {},
105
+ };
106
+ for (const [key, node] of objShape.properties) {
107
+ objExpr.properties[key] = convertShapeToExpression(node);
108
+ }
109
+ return objExpr;
110
+ }
111
+ // Default fallback for array or unknown types
112
+ return { type: "constant", value: null, valueType: "null" };
113
+ };
114
+ // Convert the ResultShape to an object expression
115
+ const resultShape = {
116
+ type: "object",
117
+ properties: {},
118
+ };
119
+ for (const [key, node] of context.currentResultShape.properties) {
120
+ resultShape.properties[key] = convertShapeToExpression(node);
121
+ }
122
+ const shapeAsObject = resultShape;
123
+ return {
124
+ value: shapeAsObject,
125
+ autoParams,
126
+ counter: currentCounter,
127
+ };
128
+ }
129
+ // Otherwise check if this is a JOIN parameter (u or d in the result selector)
130
+ if (context.joinParams?.has(identName)) {
131
+ // Return a reference to the entire table
132
+ const tableIndex = context.joinParams.get(identName);
133
+ return {
134
+ value: {
135
+ type: "reference",
136
+ source: { type: "joinParam", paramIndex: tableIndex || 0 },
137
+ },
138
+ autoParams,
139
+ counter: currentCounter,
140
+ };
141
+ }
142
+ break;
143
+ }
144
+ case "Literal": {
145
+ const lit = node;
146
+ currentCounter++;
147
+ const paramName = `__p${currentCounter}`;
148
+ autoParams[paramName] = lit.value;
149
+ return {
150
+ value: {
151
+ type: "param",
152
+ param: paramName,
153
+ },
154
+ autoParams,
155
+ counter: currentCounter,
156
+ };
157
+ }
158
+ // Add more cases as needed
159
+ }
160
+ return { value: null, autoParams, counter: currentCounter };
161
+ }
162
+ //# sourceMappingURL=expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/visitors/join/expression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * JOIN operation visitors
3
+ * Re-exports from separate files
4
+ */
5
+ export { visitJoinOperation } from "./join.js";
6
+ export { visitJoinResultSelector } from "./result-selector.js";
7
+ export { visitJoinExpression } from "./expression.js";
8
+ export { buildResultShape, buildShapeNode } from "./shape.js";
9
+ export type { JoinContext } from "./context.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitors/join/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * JOIN operation visitors
3
+ * Re-exports from separate files
4
+ */
5
+ export { visitJoinOperation } from "./join.js";
6
+ export { visitJoinResultSelector } from "./result-selector.js";
7
+ export { visitJoinExpression } from "./expression.js";
8
+ export { buildResultShape, buildShapeNode } from "./shape.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitors/join/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * JOIN operation visitor
3
+ * Handles JOIN operations with various forms
4
+ */
5
+ import type { JoinOperation, QueryOperation } from "../../query-tree/operations.js";
6
+ import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
7
+ import type { VisitorContext } from "../types.js";
8
+ export declare function visitJoinOperation(ast: ASTCallExpression, source: QueryOperation, _methodName: string, visitorContext: VisitorContext): {
9
+ operation: JoinOperation;
10
+ autoParams: Record<string, unknown>;
11
+ } | null;
12
+ //# sourceMappingURL=join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/visitors/join/join.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAKf,MAAM,gCAAgC,CAAC;AAMxC,OAAO,KAAK,EACV,cAAc,IAAI,iBAAiB,EAIpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B;IAAE,SAAS,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CA4Z1E"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * JOIN operation visitor
3
+ * Handles JOIN operations with various forms
4
+ */
5
+ import { getParameterName, getReturnExpression } from "../visitor-utils.js";
6
+ import { visitGenericExpression } from "../shared/generic-visitor.js";
7
+ import { visitAstToQueryOperation } from "../ast-visitor.js";
8
+ import { visitJoinResultSelector } from "./result-selector.js";
9
+ import { buildResultShape } from "./shape.js";
10
+ export function visitJoinOperation(ast, source, _methodName, visitorContext) {
11
+ // Handle 2-argument form: join(inner, predicate)
12
+ if (ast.arguments && ast.arguments.length === 2) {
13
+ const firstArg = ast.arguments[0];
14
+ const predicateArg = ast.arguments[1];
15
+ // Parse inner source
16
+ const innerSourceResult = firstArg
17
+ ? visitAstToQueryOperation(firstArg, visitorContext.tableParams, visitorContext.queryParams, visitorContext)
18
+ : null;
19
+ const innerSource = innerSourceResult?.operation || null;
20
+ // Update visitor context with inner source's auto-params and counter
21
+ if (innerSourceResult?.autoParams) {
22
+ // Find the highest param number used
23
+ let maxParamNum = visitorContext.autoParamCounter;
24
+ for (const key of Object.keys(innerSourceResult.autoParams)) {
25
+ if (key.startsWith("__p")) {
26
+ const num = parseInt(key.substring(3), 10);
27
+ if (!isNaN(num) && num > maxParamNum) {
28
+ maxParamNum = num;
29
+ }
30
+ }
31
+ }
32
+ // Update the counter to be the next available number
33
+ visitorContext.autoParamCounter = maxParamNum;
34
+ }
35
+ if (innerSource && predicateArg && predicateArg.type === "ArrowFunctionExpression") {
36
+ const predicateArrow = predicateArg;
37
+ const params = predicateArrow.params;
38
+ // Get the two parameters (outer, inner)
39
+ const outerParam = params && params[0]
40
+ ? getParameterName({
41
+ params: [params[0]],
42
+ body: predicateArrow.body,
43
+ })
44
+ : null;
45
+ const innerParam = params && params[1]
46
+ ? getParameterName({
47
+ params: [params[1]],
48
+ body: predicateArrow.body,
49
+ })
50
+ : null;
51
+ if (outerParam && innerParam) {
52
+ // Create context for predicate evaluation
53
+ const predicateContext = new Set(visitorContext.tableParams);
54
+ predicateContext.add(outerParam);
55
+ predicateContext.add(innerParam);
56
+ // Get predicate body
57
+ let bodyExpr = null;
58
+ if (predicateArrow.body.type === "BlockStatement") {
59
+ bodyExpr = getReturnExpression(predicateArrow.body.body);
60
+ }
61
+ else {
62
+ bodyExpr = predicateArrow.body;
63
+ }
64
+ if (bodyExpr) {
65
+ const result = visitGenericExpression(bodyExpr, predicateContext, visitorContext.queryParams, visitorContext.autoParams, visitorContext.autoParamCounter);
66
+ if (result && result.expression) {
67
+ // Update the counter after this expression
68
+ visitorContext.autoParamCounter = result.counter;
69
+ // Merge autoParams back to context
70
+ for (const [key, value] of Object.entries(result.autoParams)) {
71
+ visitorContext.autoParams.set(key, value);
72
+ }
73
+ const expr = result.expression;
74
+ // Extract join keys from equality comparison (u.id === ud.userId)
75
+ if (expr.type === "comparison" && expr.operator === "==") {
76
+ const comparisonExpr = expr;
77
+ const leftCol = comparisonExpr.left;
78
+ const rightCol = comparisonExpr.right;
79
+ let outerKey = null;
80
+ let innerKey = null;
81
+ // Determine which side is outer and which is inner based on table reference
82
+ if (leftCol?.type === "column" && rightCol?.type === "column") {
83
+ // Check if left column references outer param
84
+ if (leftCol.table === outerParam || !leftCol.table) {
85
+ outerKey = leftCol.name;
86
+ innerKey = rightCol.name;
87
+ }
88
+ else if (leftCol.table === innerParam) {
89
+ innerKey = leftCol.name;
90
+ outerKey = rightCol.name;
91
+ }
92
+ }
93
+ if (outerKey && innerKey) {
94
+ const autoParams = {};
95
+ // Merge auto params from inner source
96
+ if (innerSourceResult?.autoParams) {
97
+ Object.assign(autoParams, innerSourceResult.autoParams);
98
+ }
99
+ // Merge auto params from predicate
100
+ if (result.autoParams) {
101
+ Object.assign(autoParams, result.autoParams);
102
+ }
103
+ return {
104
+ operation: {
105
+ type: "queryOperation",
106
+ operationType: "join",
107
+ source,
108
+ inner: innerSource,
109
+ outerKey,
110
+ innerKey,
111
+ },
112
+ autoParams,
113
+ };
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ // Handle 4-argument form: join(inner, outerKeySelector, innerKeySelector, resultSelector)
122
+ if (ast.arguments && ast.arguments.length >= 4) {
123
+ // join(inner, outerKeySelector, innerKeySelector, resultSelector)
124
+ const firstArg = ast.arguments[0];
125
+ const innerSourceResult = firstArg
126
+ ? visitAstToQueryOperation(firstArg, visitorContext.tableParams, visitorContext.queryParams, visitorContext)
127
+ : null;
128
+ const innerSource = innerSourceResult?.operation || null;
129
+ // Update visitor context with inner source's auto-params and counter
130
+ if (innerSourceResult?.autoParams) {
131
+ // Find the highest param number used
132
+ let maxParamNum = visitorContext.autoParamCounter;
133
+ for (const key of Object.keys(innerSourceResult.autoParams)) {
134
+ if (key.startsWith("__p")) {
135
+ const num = parseInt(key.substring(3), 10);
136
+ if (!isNaN(num) && num > maxParamNum) {
137
+ maxParamNum = num;
138
+ }
139
+ }
140
+ }
141
+ // Update the counter to be the next available number
142
+ visitorContext.autoParamCounter = maxParamNum;
143
+ }
144
+ const outerKeySelectorAst = ast.arguments[1];
145
+ const innerKeySelectorAst = ast.arguments[2];
146
+ const resultSelectorAst = ast.arguments[3]; // Capture the result selector
147
+ let outerKey = null;
148
+ let innerKey = null;
149
+ let outerKeySource = undefined;
150
+ let outerParam = null;
151
+ let innerParam = null;
152
+ const autoParams = {};
153
+ // Check if source operation is a JOIN with a result shape
154
+ const sourceJoin = source.operationType === "join" ? source : null;
155
+ const previousResultShape = sourceJoin?.resultShape;
156
+ // Process outer key selector
157
+ if (outerKeySelectorAst && outerKeySelectorAst.type === "ArrowFunctionExpression") {
158
+ const outerArrow = outerKeySelectorAst;
159
+ const paramName = getParameterName(outerArrow);
160
+ // Create a context with the result shape if we're chaining JOINs
161
+ const outerContext = {
162
+ tableParams: new Set(visitorContext.tableParams),
163
+ queryParams: new Set(visitorContext.queryParams),
164
+ };
165
+ if (paramName) {
166
+ outerContext.tableParams.add(paramName);
167
+ if (previousResultShape) {
168
+ outerContext.currentResultShape = previousResultShape;
169
+ outerContext.joinResultParam = paramName;
170
+ }
171
+ }
172
+ // Handle both Expression body and BlockStatement body
173
+ let bodyExpr = null;
174
+ if (outerArrow.body.type === "BlockStatement") {
175
+ // For block statements, look for a return statement
176
+ bodyExpr = getReturnExpression(outerArrow.body.body);
177
+ }
178
+ else {
179
+ bodyExpr = outerArrow.body;
180
+ }
181
+ if (bodyExpr) {
182
+ const result = visitGenericExpression(bodyExpr, outerContext.tableParams, outerContext.queryParams, visitorContext.autoParams, visitorContext.autoParamCounter);
183
+ if (result) {
184
+ const expr = result.expression;
185
+ Object.assign(autoParams, result.autoParams);
186
+ // Update the counter
187
+ visitorContext.autoParamCounter = result.counter;
188
+ // Merge autoParams back to context
189
+ for (const [key, value] of Object.entries(result.autoParams)) {
190
+ visitorContext.autoParams.set(key, value);
191
+ }
192
+ if (expr && expr.type === "column") {
193
+ const colExpr = expr;
194
+ // For nested paths like orderItem.product_id, we get the final column name
195
+ outerKey = colExpr.name;
196
+ // Track which source table this key comes from
197
+ if (colExpr.source && colExpr.source.type === "joinResult") {
198
+ outerKeySource = colExpr.source.tableIndex;
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ if (innerKeySelectorAst && innerKeySelectorAst.type === "ArrowFunctionExpression") {
205
+ const innerArrow = innerKeySelectorAst;
206
+ const paramName = getParameterName(innerArrow);
207
+ const innerContext = {
208
+ tableParams: new Set(visitorContext.tableParams),
209
+ queryParams: new Set(visitorContext.queryParams),
210
+ };
211
+ if (paramName) {
212
+ innerContext.tableParams.add(paramName);
213
+ }
214
+ // Handle both Expression body and BlockStatement body
215
+ let bodyExpr = null;
216
+ if (innerArrow.body.type === "BlockStatement") {
217
+ // For block statements, look for a return statement
218
+ bodyExpr = getReturnExpression(innerArrow.body.body);
219
+ }
220
+ else {
221
+ bodyExpr = innerArrow.body;
222
+ }
223
+ if (bodyExpr) {
224
+ const result = visitGenericExpression(bodyExpr, innerContext.tableParams, innerContext.queryParams, visitorContext.autoParams, visitorContext.autoParamCounter);
225
+ if (result) {
226
+ const expr = result.expression;
227
+ Object.assign(autoParams, result.autoParams);
228
+ // Update the counter
229
+ visitorContext.autoParamCounter = result.counter;
230
+ // Merge autoParams back to context
231
+ for (const [key, value] of Object.entries(result.autoParams)) {
232
+ visitorContext.autoParams.set(key, value);
233
+ }
234
+ if (expr && expr.type === "column") {
235
+ innerKey = expr.name;
236
+ }
237
+ }
238
+ }
239
+ }
240
+ // Process the result selector
241
+ let resultSelector = undefined;
242
+ if (resultSelectorAst && resultSelectorAst.type === "ArrowFunctionExpression") {
243
+ const resultArrow = resultSelectorAst;
244
+ // Store the parameter names for the result selector
245
+ // These will be needed to map properties back to their source tables
246
+ const params = resultArrow.params;
247
+ outerParam =
248
+ params && params[0] && params[0].type === "Identifier"
249
+ ? params[0].name
250
+ : null;
251
+ innerParam =
252
+ params && params[1] && params[1].type === "Identifier"
253
+ ? params[1].name
254
+ : null;
255
+ // Create a special context that tracks which parameter maps to which table
256
+ const resultContext = {
257
+ tableParams: new Set(visitorContext.tableParams),
258
+ queryParams: new Set(visitorContext.queryParams),
259
+ joinParams: new Map(), // parameter name -> table index (0 for outer, 1+ for inner)
260
+ };
261
+ // If we're chaining JOINs and the outer param comes from a previous JOIN result,
262
+ // pass through its shape information
263
+ if (outerParam && previousResultShape) {
264
+ resultContext.currentResultShape = previousResultShape;
265
+ resultContext.joinResultParam = outerParam;
266
+ }
267
+ // For chained JOINs, we need to determine the correct table index for the inner param
268
+ let innerTableIndex = 1;
269
+ if (previousResultShape) {
270
+ // Count the number of tables already in the result shape
271
+ // This tells us what index the new inner table should have
272
+ let maxTableIndex = 0;
273
+ for (const [, node] of previousResultShape.properties) {
274
+ const findMaxIndex = (n) => {
275
+ if (n.type === "reference" || n.type === "column") {
276
+ return n.sourceTable || 0;
277
+ }
278
+ else if (n.type === "object") {
279
+ const objNode = n;
280
+ let max = 0;
281
+ for (const [, child] of objNode.properties) {
282
+ max = Math.max(max, findMaxIndex(child));
283
+ }
284
+ return max;
285
+ }
286
+ return 0;
287
+ };
288
+ maxTableIndex = Math.max(maxTableIndex, findMaxIndex(node));
289
+ }
290
+ innerTableIndex = maxTableIndex + 1;
291
+ }
292
+ if (outerParam) {
293
+ // Note: outerParam doesn't get a single index for chained JOINs
294
+ // It represents the entire previous JOIN result, not a single table
295
+ // We don't add it to joinParams for chained JOINs, it's handled differently
296
+ if (!previousResultShape) {
297
+ resultContext.joinParams?.set(outerParam, 0);
298
+ }
299
+ resultContext.tableParams.add(outerParam); // Also add to tableParams for validation
300
+ }
301
+ if (innerParam) {
302
+ resultContext.joinParams?.set(innerParam, innerTableIndex);
303
+ resultContext.tableParams.add(innerParam); // Also add to tableParams for validation
304
+ }
305
+ // Convert the result selector body to an expression
306
+ let bodyExpr = null;
307
+ if (resultArrow.body.type === "BlockStatement") {
308
+ bodyExpr = getReturnExpression(resultArrow.body.body);
309
+ }
310
+ else {
311
+ bodyExpr = resultArrow.body;
312
+ }
313
+ if (bodyExpr) {
314
+ // Use a custom visitor that tracks JOIN parameters
315
+ const result = visitJoinResultSelector(bodyExpr, resultContext, visitorContext.autoParamCounter);
316
+ if (result) {
317
+ resultSelector = result.expression || undefined;
318
+ Object.assign(autoParams, result.autoParams);
319
+ visitorContext.autoParamCounter = result.counter;
320
+ }
321
+ }
322
+ }
323
+ if (innerSource && outerKey && innerKey) {
324
+ // Build the result shape from the result selector
325
+ const resultShape = buildResultShape(resultSelector, outerParam, innerParam, previousResultShape);
326
+ // Merge auto params from inner source if present
327
+ if (innerSourceResult?.autoParams) {
328
+ Object.assign(autoParams, innerSourceResult.autoParams);
329
+ }
330
+ return {
331
+ operation: {
332
+ type: "queryOperation",
333
+ operationType: "join",
334
+ source,
335
+ inner: innerSource,
336
+ outerKey,
337
+ innerKey,
338
+ outerKeySource, // Track which source table the key comes from
339
+ resultSelector, // Include the result selector
340
+ resultShape, // Include the result shape
341
+ },
342
+ autoParams,
343
+ };
344
+ }
345
+ }
346
+ return null;
347
+ }
348
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/visitors/join/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * JOIN result selector visitor
3
+ * Handles result selector expressions in JOIN operations
4
+ */
5
+ import type { Expression } from "../../expressions/expression.js";
6
+ import type { Expression as ASTExpression } from "../../parser/ast-types.js";
7
+ import type { JoinContext } from "./context.js";
8
+ /**
9
+ * Visit JOIN result selector with proper parameter tracking
10
+ */
11
+ export declare function visitJoinResultSelector(node: ASTExpression, context: JoinContext, startCounter: number): {
12
+ expression: Expression | null;
13
+ autoParams: Record<string, unknown>;
14
+ counter: number;
15
+ } | null;
16
+ //# sourceMappingURL=result-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-selector.d.ts","sourceRoot":"","sources":["../../../src/visitors/join/result-selector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,UAAU,IAAI,aAAa,EAM5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA+DhD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,MAAM,GACnB;IAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgFhG"}