@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,121 @@
1
+ /**
2
+ * JOIN result selector visitor
3
+ * Handles result selector expressions in JOIN operations
4
+ */
5
+ import { visitJoinExpression } from "./expression.js";
6
+ /**
7
+ * Validate that a property value in JOIN result selector is allowed
8
+ */
9
+ function validateJoinResultProperty(value, propertyName, context) {
10
+ // Remove parentheses
11
+ let expr = value;
12
+ while (expr.type === "ParenthesizedExpression") {
13
+ expr = expr.expression;
14
+ }
15
+ // Check allowed patterns:
16
+ // 1. Direct table reference: d (where d is a JOIN parameter)
17
+ // 2. Reference from joined object: joined.d (where joined is outer param)
18
+ // 3. Spread is handled separately
19
+ if (expr.type === "Identifier") {
20
+ const identName = expr.name;
21
+ // Check if this is the previous JOIN result parameter
22
+ if (context.joinResultParam === identName) {
23
+ return; // Valid - it's the previous JOIN result
24
+ }
25
+ // Otherwise must be a JOIN parameter (u, d, o, etc.)
26
+ if (!context.joinParams?.has(identName)) {
27
+ throw new Error(`Invalid value for property '${propertyName}' in JOIN result selector. ` +
28
+ `'${identName}' is not a table reference. ` +
29
+ `Only table references are allowed (e.g., { user: u, dept: d })`);
30
+ }
31
+ return; // Valid
32
+ }
33
+ if (expr.type === "MemberExpression") {
34
+ const memberExpr = expr;
35
+ if (memberExpr.object.type === "Identifier" && memberExpr.property.type === "Identifier") {
36
+ const objName = memberExpr.object.name;
37
+ // Check if this is accessing a property from the joined result
38
+ if (context.joinResultParam === objName) {
39
+ // This is like joined.u or joined.dept - valid
40
+ return;
41
+ }
42
+ }
43
+ }
44
+ // Any other pattern is invalid
45
+ throw new Error(`Invalid value for property '${propertyName}' in JOIN result selector. ` +
46
+ `Only table references are allowed. Valid patterns: ` +
47
+ `{ u: u, d: d } or { user: joined.u, dept: joined.d } or { ...joined, o: o }. ` +
48
+ `No computed values, field selections, or complex expressions allowed.`);
49
+ }
50
+ /**
51
+ * Visit JOIN result selector with proper parameter tracking
52
+ */
53
+ export function visitJoinResultSelector(node, context, startCounter) {
54
+ let currentCounter = startCounter;
55
+ const autoParams = {};
56
+ // Unwrap parenthesized expressions
57
+ let expr = node;
58
+ while (expr.type === "ParenthesizedExpression") {
59
+ expr = expr.expression;
60
+ }
61
+ // Handle object expressions
62
+ if (expr.type === "ObjectExpression") {
63
+ const properties = {};
64
+ const objExpr = expr;
65
+ for (const prop of objExpr.properties) {
66
+ if (prop.type === "SpreadElement") {
67
+ // Handle spread operator: ...joined
68
+ const spreadArg = prop.argument;
69
+ if (spreadArg && spreadArg.type === "Identifier") {
70
+ // This is spreading a parameter (like ...joined)
71
+ // We'll handle this as copying all properties
72
+ // For now, mark it as a special case
73
+ const valueExpr = visitJoinExpression(spreadArg, context, currentCounter);
74
+ if (valueExpr && valueExpr.value) {
75
+ // Store spread as a special marker
76
+ properties["...spread"] = valueExpr.value;
77
+ currentCounter = valueExpr.counter;
78
+ }
79
+ }
80
+ else {
81
+ throw new Error("Invalid spread in JOIN result selector. " +
82
+ "Only spreading of the joined parameter is allowed (e.g., ...joined)");
83
+ }
84
+ }
85
+ else if (prop.type === "Property" && prop.key.type === "Identifier") {
86
+ const key = prop.key.name;
87
+ // Validate the property value is allowed in JOIN result selector
88
+ validateJoinResultProperty(prop.value, key, context);
89
+ const valueExpr = visitJoinExpression(prop.value, context, currentCounter);
90
+ if (valueExpr && valueExpr.value) {
91
+ properties[key] = valueExpr.value;
92
+ currentCounter = valueExpr.counter;
93
+ Object.assign(autoParams, valueExpr.autoParams);
94
+ }
95
+ }
96
+ else {
97
+ throw new Error("Invalid property type in JOIN result selector. " +
98
+ "Only simple property assignments and spread are allowed");
99
+ }
100
+ }
101
+ return {
102
+ expression: {
103
+ type: "object",
104
+ properties,
105
+ },
106
+ autoParams,
107
+ counter: currentCounter,
108
+ };
109
+ }
110
+ // For non-object expressions, use the regular visitor
111
+ const result = visitJoinExpression(expr, context, currentCounter);
112
+ if (result) {
113
+ return {
114
+ expression: result.value,
115
+ autoParams: result.autoParams,
116
+ counter: result.counter,
117
+ };
118
+ }
119
+ return null;
120
+ }
121
+ //# sourceMappingURL=result-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-selector.js","sourceRoot":"","sources":["../../../src/visitors/join/result-selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * JOIN result shape builder
3
+ * Builds ResultShape from JOIN result selector expressions
4
+ */
5
+ import type { ResultShape, ShapeNode } from "../../query-tree/operations.js";
6
+ import type { Expression } from "../../expressions/expression.js";
7
+ /**
8
+ * Build a ResultShape from a JOIN result selector expression
9
+ * Preserves full nested structure for complete fidelity
10
+ */
11
+ export declare function buildResultShape(expr: Expression | undefined, outerParam: string | null, innerParam: string | null, previousShape?: ResultShape): ResultShape | undefined;
12
+ /**
13
+ * Recursively build a ShapeNode from an expression
14
+ */
15
+ export declare function buildShapeNode(expr: Expression, outerParam: string | null, innerParam: string | null, previousShape?: ResultShape): ShapeNode | undefined;
16
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../src/visitors/join/shape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAIV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACV,UAAU,EAIX,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,aAAa,CAAC,EAAE,WAAW,GAC1B,WAAW,GAAG,SAAS,CAsBzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,aAAa,CAAC,EAAE,WAAW,GAC1B,SAAS,GAAG,SAAS,CAgJvB"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * JOIN result shape builder
3
+ * Builds ResultShape from JOIN result selector expressions
4
+ */
5
+ /**
6
+ * Build a ResultShape from a JOIN result selector expression
7
+ * Preserves full nested structure for complete fidelity
8
+ */
9
+ export function buildResultShape(expr, outerParam, innerParam, previousShape) {
10
+ if (!expr || expr.type !== "object") {
11
+ return undefined;
12
+ }
13
+ const rootNode = buildShapeNode(expr, outerParam, innerParam, previousShape);
14
+ // The root node should be an object shape
15
+ if (rootNode && rootNode.type === "object") {
16
+ return rootNode;
17
+ }
18
+ // If we got here but expr was an object, create an empty shape
19
+ // This is a fallback for when we can't fully process the shape
20
+ if (expr.type === "object") {
21
+ return {
22
+ type: "object",
23
+ properties: new Map(),
24
+ };
25
+ }
26
+ return undefined;
27
+ }
28
+ /**
29
+ * Recursively build a ShapeNode from an expression
30
+ */
31
+ export function buildShapeNode(expr, outerParam, innerParam, previousShape) {
32
+ switch (expr.type) {
33
+ case "object": {
34
+ const objExpr = expr;
35
+ const properties = new Map();
36
+ for (const [propName, propExpr] of Object.entries(objExpr.properties)) {
37
+ // Check if this is a spread marker
38
+ if (propName === "...spread" && previousShape) {
39
+ // Copy all properties from the previous shape
40
+ for (const [prevPropName, prevNode] of previousShape.properties) {
41
+ properties.set(prevPropName, prevNode);
42
+ }
43
+ }
44
+ else {
45
+ const node = buildShapeNode(propExpr, outerParam, innerParam, previousShape);
46
+ if (node) {
47
+ properties.set(propName, node);
48
+ }
49
+ }
50
+ }
51
+ const result = {
52
+ type: "object",
53
+ properties,
54
+ };
55
+ return result;
56
+ }
57
+ case "param": {
58
+ // Parameter expressions should not appear in JOIN result selectors
59
+ // The visitor should have thrown an error before we get here
60
+ // But if somehow we get here, we should not process it
61
+ break;
62
+ }
63
+ case "reference": {
64
+ // Handle table references (e.g., { u, d } in JOIN result selector)
65
+ const refExpr = expr;
66
+ // Check if this has a ColumnSource
67
+ if (refExpr.source) {
68
+ if (refExpr.source.type === "joinParam") {
69
+ return {
70
+ type: "reference",
71
+ sourceTable: refExpr.source.paramIndex,
72
+ };
73
+ }
74
+ }
75
+ // Fallback: Check if this uses the old table field with $param marker
76
+ if (refExpr.table && refExpr.table.startsWith("$param")) {
77
+ const paramIndex = parseInt(refExpr.table.substring(6), 10);
78
+ return {
79
+ type: "reference",
80
+ sourceTable: paramIndex,
81
+ };
82
+ }
83
+ // Fallback: Check parameter names
84
+ if (outerParam && refExpr.table === outerParam) {
85
+ return {
86
+ type: "reference",
87
+ sourceTable: 0,
88
+ };
89
+ }
90
+ if (innerParam && refExpr.table === innerParam) {
91
+ return {
92
+ type: "reference",
93
+ sourceTable: 1,
94
+ };
95
+ }
96
+ return undefined;
97
+ }
98
+ case "column": {
99
+ const colExpr = expr;
100
+ // Check if this has a ColumnSource
101
+ if (colExpr.source) {
102
+ if (colExpr.source.type === "joinParam") {
103
+ return {
104
+ type: "column",
105
+ sourceTable: colExpr.source.paramIndex,
106
+ columnName: colExpr.name,
107
+ };
108
+ }
109
+ }
110
+ // Fallback: Check if this uses the old table field with $param marker
111
+ if (colExpr.table && colExpr.table.startsWith("$param")) {
112
+ const paramIndex = parseInt(colExpr.table.substring(6), 10);
113
+ // It's a column from that table
114
+ return {
115
+ type: "column",
116
+ sourceTable: paramIndex,
117
+ columnName: colExpr.name,
118
+ };
119
+ }
120
+ // Fallback: Check if this is a property access using parameter names (e.g., u.name)
121
+ // This is a secondary check for cases where parameter names are provided
122
+ if (outerParam && colExpr.table === outerParam) {
123
+ return {
124
+ type: "column",
125
+ sourceTable: 0,
126
+ columnName: colExpr.name,
127
+ };
128
+ }
129
+ if (innerParam && colExpr.table === innerParam) {
130
+ return {
131
+ type: "column",
132
+ sourceTable: 1,
133
+ columnName: colExpr.name,
134
+ };
135
+ }
136
+ // Direct parameter reference without table qualifier (e.g., { orderItem: oi })
137
+ if (!colExpr.table) {
138
+ if (outerParam && colExpr.name === outerParam) {
139
+ return {
140
+ type: "reference",
141
+ sourceTable: 0,
142
+ };
143
+ }
144
+ if (innerParam && colExpr.name === innerParam) {
145
+ return {
146
+ type: "reference",
147
+ sourceTable: 1,
148
+ };
149
+ }
150
+ }
151
+ return undefined;
152
+ }
153
+ // Add more cases as needed (arithmetic, concat, etc.)
154
+ }
155
+ return undefined;
156
+ }
157
+ //# sourceMappingURL=shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../../../src/visitors/join/shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ORDER BY-specific context
3
+ * Manages state for ORDER BY key selector parsing
4
+ */
5
+ export interface OrderByContext {
6
+ tableParams: Set<string>;
7
+ queryParams: Set<string>;
8
+ autoParams: Map<string, unknown>;
9
+ autoParamCounter: number;
10
+ currentTable?: string;
11
+ }
12
+ /**
13
+ * Create an ORDER BY parsing context
14
+ */
15
+ export declare function createOrderByContext(tableParams: Set<string>, queryParams: Set<string>, startCounter?: number): OrderByContext;
16
+ /**
17
+ * Generate auto-parameter name for literal values
18
+ */
19
+ export declare function createAutoParam(context: OrderByContext, value: unknown): string;
20
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/visitors/orderby/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAE7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAGzB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAGzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IAGzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,YAAY,GAAE,MAAU,GACvB,cAAc,CAOhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAK/E"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ORDER BY-specific context
3
+ * Manages state for ORDER BY key selector parsing
4
+ */
5
+ /**
6
+ * Create an ORDER BY parsing context
7
+ */
8
+ export function createOrderByContext(tableParams, queryParams, startCounter = 0) {
9
+ return {
10
+ tableParams: new Set(tableParams),
11
+ queryParams: new Set(queryParams),
12
+ autoParams: new Map(),
13
+ autoParamCounter: startCounter,
14
+ };
15
+ }
16
+ /**
17
+ * Generate auto-parameter name for literal values
18
+ */
19
+ export function createAutoParam(context, value) {
20
+ context.autoParamCounter++;
21
+ const paramName = `__p${context.autoParamCounter}`;
22
+ context.autoParams.set(paramName, value);
23
+ return paramName;
24
+ }
25
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/visitors/orderby/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAwB,EACxB,WAAwB,EACxB,eAAuB,CAAC;IAExB,OAAO;QACL,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC;QACjC,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC;QACjC,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,gBAAgB,EAAE,YAAY;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB,EAAE,KAAc;IACrE,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ORDER BY and THEN BY operation visitors
3
+ * Re-exports from separate files
4
+ */
5
+ export { visitOrderByOperation } from "./orderby.js";
6
+ export { visitThenByOperation } from "./thenby.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitors/orderby/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ORDER BY and THEN BY operation visitors
3
+ * Re-exports from separate files
4
+ */
5
+ export { visitOrderByOperation } from "./orderby.js";
6
+ export { visitThenByOperation } from "./thenby.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitors/orderby/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ORDER BY key selector visitor
3
+ * Extracts the sorting key from lambda expressions
4
+ */
5
+ import type { ValueExpression } from "../../expressions/expression.js";
6
+ import type { Expression as ASTExpression } from "../../parser/ast-types.js";
7
+ import type { OrderByContext } from "./context.js";
8
+ /**
9
+ * Visit key selector expression for ORDER BY
10
+ * Returns ValueExpression that can be used as sort key
11
+ */
12
+ export declare function visitKeySelector(node: ASTExpression, context: OrderByContext): ValueExpression | null;
13
+ //# sourceMappingURL=key-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-selector.d.ts","sourceRoot":"","sources":["../../../src/visitors/orderby/key-selector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACV,UAAU,IAAI,aAAa,EAO5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,cAAc,GACtB,eAAe,GAAG,IAAI,CAuCxB"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * ORDER BY key selector visitor
3
+ * Extracts the sorting key from lambda expressions
4
+ */
5
+ import { createAutoParam } from "./context.js";
6
+ /**
7
+ * Visit key selector expression for ORDER BY
8
+ * Returns ValueExpression that can be used as sort key
9
+ */
10
+ export function visitKeySelector(node, context) {
11
+ if (!node)
12
+ return null;
13
+ switch (node.type) {
14
+ case "MemberExpression":
15
+ return visitMemberAccess(node, context);
16
+ case "Identifier":
17
+ return visitIdentifier(node, context);
18
+ case "Literal":
19
+ case "NumericLiteral":
20
+ case "StringLiteral":
21
+ case "BooleanLiteral":
22
+ case "NullLiteral":
23
+ return visitLiteral(node, context);
24
+ case "BinaryExpression":
25
+ return visitBinaryExpression(node, context);
26
+ case "CallExpression":
27
+ return visitMethodCall(node, context);
28
+ case "UnaryExpression":
29
+ return visitUnaryExpression(node, context);
30
+ case "ConditionalExpression":
31
+ // TODO: Support CASE WHEN for complex sorting
32
+ return null;
33
+ case "ParenthesizedExpression": {
34
+ // Unwrap parentheses
35
+ const paren = node;
36
+ return visitKeySelector(paren.expression, context);
37
+ }
38
+ default:
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Visit member access (e.g., x.name, x.address.city)
44
+ */
45
+ function visitMemberAccess(node, context) {
46
+ if (!node.computed && node.property.type === "Identifier") {
47
+ const propertyName = node.property.name;
48
+ // Simple member access: x.name
49
+ if (node.object.type === "Identifier") {
50
+ const objectName = node.object.name;
51
+ // Check if this is accessing a JOIN result property
52
+ const extContext = context;
53
+ if (extContext.joinResultParam === objectName && extContext.currentResultShape) {
54
+ const shapeProp = extContext.currentResultShape.properties.get(propertyName);
55
+ if (shapeProp) {
56
+ if (shapeProp.type === "column") {
57
+ // Direct column from JOIN result
58
+ return {
59
+ type: "column",
60
+ name: shapeProp.columnName || propertyName,
61
+ source: { type: "joinResult", tableIndex: shapeProp.sourceTable || 0 },
62
+ };
63
+ }
64
+ }
65
+ }
66
+ // Table parameter column
67
+ if (context.tableParams.has(objectName)) {
68
+ return {
69
+ type: "column",
70
+ name: propertyName,
71
+ };
72
+ }
73
+ // Query parameter property
74
+ if (context.queryParams.has(objectName)) {
75
+ return {
76
+ type: "param",
77
+ param: objectName,
78
+ property: propertyName,
79
+ };
80
+ }
81
+ }
82
+ // Nested member access: x.address.city
83
+ if (node.object.type === "MemberExpression") {
84
+ const innerColumn = visitMemberAccess(node.object, context);
85
+ if (innerColumn && innerColumn.type === "column") {
86
+ return {
87
+ type: "column",
88
+ name: `${innerColumn.name}.${propertyName}`,
89
+ };
90
+ }
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+ /**
96
+ * Visit identifier
97
+ */
98
+ function visitIdentifier(node, context) {
99
+ const name = node.name;
100
+ // Table parameter (entire row - unusual for ORDER BY)
101
+ if (context.tableParams.has(name)) {
102
+ return {
103
+ type: "column",
104
+ name,
105
+ };
106
+ }
107
+ // Query parameter
108
+ if (context.queryParams.has(name)) {
109
+ return {
110
+ type: "param",
111
+ param: name,
112
+ };
113
+ }
114
+ return null;
115
+ }
116
+ /**
117
+ * Visit literal value
118
+ */
119
+ function visitLiteral(node, context) {
120
+ // NULL is special - not parameterized
121
+ if (node.value === null) {
122
+ return {
123
+ type: "constant",
124
+ value: null,
125
+ valueType: "null",
126
+ };
127
+ }
128
+ // Auto-parameterize other literals
129
+ const paramName = createAutoParam(context, node.value);
130
+ return {
131
+ type: "param",
132
+ param: paramName,
133
+ };
134
+ }
135
+ /**
136
+ * Visit binary expression (arithmetic for computed sort keys)
137
+ */
138
+ function visitBinaryExpression(node, context) {
139
+ // Only handle arithmetic operators for ORDER BY
140
+ if (!["+", "-", "*", "/", "%"].includes(node.operator)) {
141
+ return null;
142
+ }
143
+ const left = visitKeySelector(node.left, context);
144
+ const right = visitKeySelector(node.right, context);
145
+ if (!left || !right)
146
+ return null;
147
+ // Check for string concatenation
148
+ if (node.operator === "+" && (isStringExpression(left) || isStringExpression(right))) {
149
+ return {
150
+ type: "concat",
151
+ left,
152
+ right,
153
+ };
154
+ }
155
+ // Regular arithmetic
156
+ return {
157
+ type: "arithmetic",
158
+ operator: node.operator,
159
+ left,
160
+ right,
161
+ };
162
+ }
163
+ /**
164
+ * Visit method call (e.g., x.name.toLowerCase())
165
+ */
166
+ function visitMethodCall(node, context) {
167
+ if (node.callee.type !== "MemberExpression")
168
+ return null;
169
+ const memberCallee = node.callee;
170
+ if (memberCallee.property.type !== "Identifier")
171
+ return null;
172
+ const methodName = memberCallee.property.name;
173
+ // String methods for sorting
174
+ if (["toLowerCase", "toUpperCase"].includes(methodName)) {
175
+ const obj = visitKeySelector(memberCallee.object, context);
176
+ if (!obj)
177
+ return null;
178
+ return {
179
+ type: "stringMethod",
180
+ object: obj,
181
+ method: methodName,
182
+ };
183
+ }
184
+ return null;
185
+ }
186
+ /**
187
+ * Visit unary expression
188
+ */
189
+ function visitUnaryExpression(node, context) {
190
+ // Unary minus for negative sorting
191
+ if (node.operator === "-") {
192
+ if (node.argument.type === "NumericLiteral" || node.argument.type === "Literal") {
193
+ const lit = node.argument;
194
+ if (typeof lit.value === "number") {
195
+ const value = -lit.value;
196
+ const paramName = createAutoParam(context, value);
197
+ return {
198
+ type: "param",
199
+ param: paramName,
200
+ };
201
+ }
202
+ }
203
+ // Negate other expressions
204
+ const arg = visitKeySelector(node.argument, context);
205
+ if (arg) {
206
+ return {
207
+ type: "arithmetic",
208
+ operator: "*",
209
+ left: { type: "constant", value: -1 },
210
+ right: arg,
211
+ };
212
+ }
213
+ }
214
+ // Unary plus (pass through)
215
+ if (node.operator === "+") {
216
+ return visitKeySelector(node.argument, context);
217
+ }
218
+ return null;
219
+ }
220
+ /**
221
+ * Check if expression is likely a string
222
+ */
223
+ function isStringExpression(expr) {
224
+ if (expr.type === "constant") {
225
+ return typeof expr.value === "string";
226
+ }
227
+ if (expr.type === "concat") {
228
+ return true;
229
+ }
230
+ if (expr.type === "column") {
231
+ const name = expr.name.toLowerCase();
232
+ return name.includes("name") || name.includes("title") || name.includes("description");
233
+ }
234
+ return false;
235
+ }
236
+ //# sourceMappingURL=key-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-selector.js","sourceRoot":"","sources":["../../../src/visitors/orderby/key-selector.ts"],"names":[],"mappings":"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"}