@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,146 @@
1
+ /**
2
+ * Parse result cache implementation using LRU (Least Recently Used) eviction
3
+ */
4
+ /**
5
+ * LRU cache node
6
+ */
7
+ class LRUNode {
8
+ constructor(key, value, prev = null, next = null) {
9
+ this.key = key;
10
+ this.value = value;
11
+ this.prev = prev;
12
+ this.next = next;
13
+ }
14
+ }
15
+ /**
16
+ * LRU cache implementation for parse results
17
+ */
18
+ export class ParseCache {
19
+ constructor(capacity) {
20
+ this.capacity = capacity;
21
+ this.cache = new Map();
22
+ this.head = null;
23
+ this.tail = null;
24
+ }
25
+ /**
26
+ * Get a cached parse result
27
+ */
28
+ get(key) {
29
+ const node = this.cache.get(key);
30
+ if (!node) {
31
+ return undefined;
32
+ }
33
+ // Move to front (most recently used)
34
+ this.moveToFront(node);
35
+ return node.value;
36
+ }
37
+ /**
38
+ * Store a parse result in the cache
39
+ */
40
+ set(key, value) {
41
+ if (this.capacity <= 0) {
42
+ return;
43
+ }
44
+ const existing = this.cache.get(key);
45
+ if (existing) {
46
+ // Update existing node
47
+ existing.value = value;
48
+ this.moveToFront(existing);
49
+ return;
50
+ }
51
+ // Create new node
52
+ const node = new LRUNode(key, value);
53
+ this.cache.set(key, node);
54
+ this.addToFront(node);
55
+ // Evict least recently used if over capacity
56
+ if (this.cache.size > this.capacity) {
57
+ this.evictLRU();
58
+ }
59
+ }
60
+ /**
61
+ * Clear all cached entries
62
+ */
63
+ clear() {
64
+ this.cache.clear();
65
+ this.head = null;
66
+ this.tail = null;
67
+ }
68
+ /**
69
+ * Update the cache capacity
70
+ */
71
+ setCapacity(capacity) {
72
+ this.capacity = capacity;
73
+ if (capacity <= 0) {
74
+ this.clear();
75
+ return;
76
+ }
77
+ // Evict oldest entries if current size exceeds new capacity
78
+ while (this.cache.size > capacity) {
79
+ this.evictLRU();
80
+ }
81
+ }
82
+ /**
83
+ * Get current cache size
84
+ */
85
+ size() {
86
+ return this.cache.size;
87
+ }
88
+ /**
89
+ * Move node to front of LRU list
90
+ */
91
+ moveToFront(node) {
92
+ if (node === this.head) {
93
+ return;
94
+ }
95
+ // Remove from current position
96
+ this.removeNode(node);
97
+ // Add to front
98
+ this.addToFront(node);
99
+ }
100
+ /**
101
+ * Add node to front of LRU list
102
+ */
103
+ addToFront(node) {
104
+ node.next = this.head;
105
+ node.prev = null;
106
+ if (this.head) {
107
+ this.head.prev = node;
108
+ }
109
+ this.head = node;
110
+ if (!this.tail) {
111
+ this.tail = node;
112
+ }
113
+ }
114
+ /**
115
+ * Remove node from LRU list
116
+ */
117
+ removeNode(node) {
118
+ if (node.prev) {
119
+ node.prev.next = node.next;
120
+ }
121
+ else {
122
+ this.head = node.next;
123
+ }
124
+ if (node.next) {
125
+ node.next.prev = node.prev;
126
+ }
127
+ else {
128
+ this.tail = node.prev;
129
+ }
130
+ }
131
+ /**
132
+ * Evict least recently used entry
133
+ */
134
+ evictLRU() {
135
+ if (!this.tail) {
136
+ return;
137
+ }
138
+ this.cache.delete(this.tail.key);
139
+ this.removeNode(this.tail);
140
+ }
141
+ }
142
+ /**
143
+ * Singleton parse cache instance
144
+ */
145
+ export const parseCache = new ParseCache(1024);
146
+ //# sourceMappingURL=parse-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-cache.js","sourceRoot":"","sources":["../../src/parser/parse-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Main parsing function for query builder functions
3
+ */
4
+ import type { QueryOperation } from "../query-tree/operations.js";
5
+ import type { createQueryHelpers } from "../linq/functions.js";
6
+ import type { ParseQueryOptions } from "./types.js";
7
+ import type { VisitorContextSnapshot } from "../visitors/types.js";
8
+ /**
9
+ * Result of parsing a query, including auto-extracted parameters
10
+ */
11
+ export interface ParseResult {
12
+ operation: QueryOperation;
13
+ autoParams: Record<string, string | number | boolean | null>;
14
+ autoParamInfos?: Record<string, unknown>;
15
+ contextSnapshot: VisitorContextSnapshot;
16
+ }
17
+ /**
18
+ * Parses a query builder function into a QueryOperation tree with auto-extracted parameters
19
+ * @param queryBuilder The function that builds the query with DSL context, params, and optional helpers
20
+ * @param options Parse options including cache control
21
+ * @returns The parsed result containing operation tree and auto-params, or null if parsing fails
22
+ */
23
+ export declare function parseQuery<TContext, TParams, TQuery>(queryBuilder: ((ctx: TContext) => TQuery) | ((ctx: TContext, params: TParams) => TQuery) | ((ctx: TContext, params: TParams, helpers: ReturnType<typeof createQueryHelpers>) => TQuery), options?: ParseQueryOptions): ParseResult | null;
24
+ //# sourceMappingURL=parse-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-query.d.ts","sourceRoot":"","sources":["../../src/parser/parse-query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,EAAE,sBAAsB,CAAC;CACzC;AA0CD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAClD,YAAY,EACR,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC,GAC3B,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,GAC5C,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,KAAK,MAAM,CAAC,EAChG,OAAO,GAAE,iBAAsB,GAC9B,WAAW,GAAG,IAAI,CAgFpB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Main parsing function for query builder functions
3
+ */
4
+ import { parseJavaScript } from "./oxc-parser.js";
5
+ import { convertAstToQueryOperationWithParams } from "./ast-visitor.js";
6
+ import { normalizeJoins } from "./normalize-joins.js";
7
+ import { wrapWindowFilters } from "./normalize-window-filters.js";
8
+ import { parseCache } from "./parse-cache.js";
9
+ import { getParseCacheConfig } from "./parse-cache-config.js";
10
+ import { snapshotVisitorContext } from "../visitors/types.js";
11
+ /**
12
+ * Deep freeze an object to make it immutable
13
+ */
14
+ function deepFreeze(obj) {
15
+ Object.freeze(obj);
16
+ Object.getOwnPropertyNames(obj).forEach((prop) => {
17
+ const value = obj[prop];
18
+ if (value !== null && (typeof value === "object" || typeof value === "function")) {
19
+ deepFreeze(value);
20
+ }
21
+ });
22
+ return obj;
23
+ }
24
+ /**
25
+ * Freeze a parse result for caching
26
+ */
27
+ function freezeParseResult(result) {
28
+ return deepFreeze({
29
+ operation: result.operation,
30
+ autoParams: result.autoParams,
31
+ autoParamInfos: result.autoParamInfos,
32
+ contextSnapshot: result.contextSnapshot,
33
+ });
34
+ }
35
+ /**
36
+ * Clone a cached parse result to return to caller
37
+ */
38
+ function cloneParseResult(cached) {
39
+ return {
40
+ operation: cached.operation, // Frozen, safe to reuse
41
+ autoParams: { ...cached.autoParams }, // Clone params object
42
+ autoParamInfos: cached.autoParamInfos ? { ...cached.autoParamInfos } : undefined,
43
+ contextSnapshot: cached.contextSnapshot,
44
+ };
45
+ }
46
+ /**
47
+ * Parses a query builder function into a QueryOperation tree with auto-extracted parameters
48
+ * @param queryBuilder The function that builds the query with DSL context, params, and optional helpers
49
+ * @param options Parse options including cache control
50
+ * @returns The parsed result containing operation tree and auto-params, or null if parsing fails
51
+ */
52
+ export function parseQuery(queryBuilder, options = {}) {
53
+ try {
54
+ // 1. Convert function to string
55
+ const fnString = queryBuilder.toString();
56
+ // 2. Check cache if enabled
57
+ const config = getParseCacheConfig();
58
+ const useCache = config.enabled && config.capacity > 0 && options.cache !== false;
59
+ if (useCache) {
60
+ const cached = parseCache.get(fnString);
61
+ if (cached) {
62
+ return cloneParseResult(cached);
63
+ }
64
+ }
65
+ // 3. Parse with OXC to get AST
66
+ const program = parseJavaScript(fnString);
67
+ if (!program) {
68
+ return null;
69
+ }
70
+ // Extract the first statement's expression (the arrow function)
71
+ const programNode = program;
72
+ if (!programNode.body || programNode.body.length === 0) {
73
+ return null;
74
+ }
75
+ const firstStatement = programNode.body[0];
76
+ if (!firstStatement ||
77
+ firstStatement.type !== "ExpressionStatement" ||
78
+ !firstStatement.expression) {
79
+ return null;
80
+ }
81
+ const ast = firstStatement.expression;
82
+ // 4. Convert AST to QueryOperation tree with auto-params
83
+ const result = convertAstToQueryOperationWithParams(ast);
84
+ if (!result.operation) {
85
+ return null;
86
+ }
87
+ // Apply normalization passes
88
+ let normalizedOperation = result.operation
89
+ ? normalizeJoins(result.operation)
90
+ : null;
91
+ if (!normalizedOperation) {
92
+ return null;
93
+ }
94
+ // Apply window filter wrapping normalization
95
+ normalizedOperation = wrapWindowFilters(normalizedOperation);
96
+ const parseResult = {
97
+ operation: normalizedOperation,
98
+ autoParams: result.autoParams,
99
+ autoParamInfos: result.autoParamInfos,
100
+ contextSnapshot: snapshotVisitorContext(result.visitorContext),
101
+ };
102
+ // Cache the result if caching is enabled
103
+ if (useCache) {
104
+ const frozen = freezeParseResult(parseResult);
105
+ parseCache.set(fnString, frozen);
106
+ return cloneParseResult(frozen);
107
+ }
108
+ return parseResult;
109
+ }
110
+ catch (error) {
111
+ console.error("Failed to parse query:", error);
112
+ if (error instanceof Error) {
113
+ console.error("Stack trace:", error.stack);
114
+ }
115
+ return null;
116
+ }
117
+ }
118
+ //# sourceMappingURL=parse-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-query.js","sourceRoot":"","sources":["../../src/parser/parse-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Options for controlling query parsing behavior
3
+ */
4
+ export interface ParseQueryOptions {
5
+ /**
6
+ * Whether to use the parse result cache
7
+ * @default true
8
+ */
9
+ cache?: boolean;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import type { DatabaseSchema } from "../linq/database-context.js";
2
+ import type { QueryBuilder } from "../linq/query-builder.js";
3
+ import type { QueryHelpers } from "../linq/functions.js";
4
+ import type { Deletable, DeletableComplete } from "../linq/deletable.js";
5
+ import type { ParseQueryOptions } from "../parser/types.js";
6
+ import type { QueryOperation } from "../query-tree/operations.js";
7
+ import { type VisitorContextSnapshot } from "../visitors/types.js";
8
+ export interface DeletePlan<TRecord, TParams> {
9
+ readonly kind: "delete";
10
+ readonly operation: QueryOperation;
11
+ readonly autoParams: Record<string, unknown>;
12
+ readonly autoParamInfos?: Record<string, unknown>;
13
+ readonly contextSnapshot: VisitorContextSnapshot;
14
+ readonly parseOptions?: ParseQueryOptions;
15
+ readonly __type?: {
16
+ record: TRecord;
17
+ params: TParams;
18
+ };
19
+ }
20
+ type DeletePlanState<TRecord, TParams> = DeletePlan<TRecord, TParams>;
21
+ export interface DeletePlanSql {
22
+ operation: QueryOperation;
23
+ params: Record<string, unknown>;
24
+ autoParamInfos?: Record<string, unknown>;
25
+ }
26
+ export declare class DeletePlanHandleInitial<TRecord, TParams> {
27
+ private readonly state;
28
+ constructor(state: DeletePlanState<TRecord, TParams>);
29
+ where(predicate: (item: TRecord) => boolean): DeletePlanHandleComplete<TRecord, TParams>;
30
+ where<ExtraParams extends object = Record<string, never>>(predicate: (item: TRecord, params: TParams & ExtraParams) => boolean): DeletePlanHandleComplete<TRecord, TParams & ExtraParams>;
31
+ allowFullTableDelete(): DeletePlanHandleComplete<TRecord, TParams>;
32
+ finalize(_params: TParams): DeletePlanSql;
33
+ toPlan(): DeletePlan<TRecord, TParams>;
34
+ }
35
+ export declare class DeletePlanHandleComplete<TRecord, TParams> {
36
+ private readonly state;
37
+ constructor(state: DeletePlanState<TRecord, TParams>);
38
+ finalize(params: TParams): DeletePlanSql;
39
+ toPlan(): DeletePlan<TRecord, TParams>;
40
+ execute(_params: TParams): Promise<void>;
41
+ }
42
+ export declare function defineDelete<TSchema, TParams = {}, TQuery = unknown>(schema: DatabaseSchema<TSchema>, builder: (queryBuilder: QueryBuilder<TSchema>, params: TParams, helpers?: QueryHelpers) => TQuery, options?: ParseQueryOptions): TQuery extends DeletableComplete<infer TTable> ? DeletePlanHandleComplete<TTable, TParams> : TQuery extends Deletable<infer TTable> ? DeletePlanHandleInitial<TTable, TParams> : never;
43
+ export {};
44
+ //# sourceMappingURL=delete-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-plan.d.ts","sourceRoot":"","sources":["../../src/plans/delete-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { parseJavaScript } from "../parser/oxc-parser.js";
2
+ import { normalizeJoins } from "../parser/normalize-joins.js";
3
+ import { wrapWindowFilters } from "../parser/normalize-window-filters.js";
4
+ import { parseQuery } from "../parser/parse-query.js";
5
+ import { restoreVisitorContext, snapshotVisitorContext, } from "../visitors/types.js";
6
+ import { visitWhereDeleteOperation } from "../visitors/delete/where-delete.js";
7
+ import { visitAllowFullDeleteOperation } from "../visitors/delete/allow-full-delete.js";
8
+ function createInitialState(parseResult, options) {
9
+ const operationClone = cloneOperationTree(parseResult.operation);
10
+ return {
11
+ kind: "delete",
12
+ operation: operationClone,
13
+ autoParams: { ...parseResult.autoParams },
14
+ autoParamInfos: parseResult.autoParamInfos ? { ...parseResult.autoParamInfos } : undefined,
15
+ contextSnapshot: parseResult.contextSnapshot,
16
+ parseOptions: options,
17
+ };
18
+ }
19
+ function createState(base, nextOperation, visitorContext) {
20
+ const nextSnapshot = snapshotVisitorContext(visitorContext);
21
+ const autoParamEntries = Array.from(visitorContext.autoParams.entries());
22
+ const autoParams = Object.fromEntries(autoParamEntries);
23
+ const autoParamInfos = visitorContext.autoParamInfos
24
+ ? Object.fromEntries(visitorContext.autoParamInfos.entries())
25
+ : base.autoParamInfos;
26
+ const normalizedOperation = wrapWindowFilters(normalizeJoins(cloneOperationTree(nextOperation)));
27
+ return {
28
+ kind: "delete",
29
+ operation: normalizedOperation,
30
+ autoParams,
31
+ autoParamInfos,
32
+ contextSnapshot: nextSnapshot,
33
+ parseOptions: base.parseOptions,
34
+ };
35
+ }
36
+ // -----------------------------------------------------------------------------
37
+ // Plan handle stages
38
+ // -----------------------------------------------------------------------------
39
+ // Initial stage - only table is specified
40
+ export class DeletePlanHandleInitial {
41
+ constructor(state) {
42
+ this.state = state;
43
+ }
44
+ // Implementation
45
+ where(predicate) {
46
+ const nextState = appendWhereDelete(this.state, predicate);
47
+ return new DeletePlanHandleComplete(nextState);
48
+ }
49
+ allowFullTableDelete() {
50
+ const nextState = appendAllowFullDelete(this.state);
51
+ return new DeletePlanHandleComplete(nextState);
52
+ }
53
+ finalize(_params) {
54
+ // Initial stage without WHERE clause - this would be dangerous SQL
55
+ throw new Error("DELETE requires a WHERE clause or explicit allowFullTableDelete");
56
+ }
57
+ toPlan() {
58
+ return this.state;
59
+ }
60
+ }
61
+ // After where() or allowFullTableDelete() is called
62
+ export class DeletePlanHandleComplete {
63
+ constructor(state) {
64
+ this.state = state;
65
+ }
66
+ finalize(params) {
67
+ const merged = mergeParams(this.state.autoParams, params);
68
+ return {
69
+ operation: this.state.operation,
70
+ params: merged,
71
+ autoParamInfos: this.state.autoParamInfos,
72
+ };
73
+ }
74
+ toPlan() {
75
+ return this.state;
76
+ }
77
+ execute(_params) {
78
+ return Promise.reject(new Error("execute() is not implemented. Use adapter methods (toSql/executeDelete) instead."));
79
+ }
80
+ }
81
+ // Overload for direct table name - DISABLED FOR NOW
82
+ // export function defineDelete<
83
+ // TSchema,
84
+ // // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- {} is correct for extensible empty object
85
+ // TParams = {},
86
+ // TTable extends keyof TSchema = keyof TSchema,
87
+ // >(
88
+ // schema: DatabaseSchema<TSchema>,
89
+ // table: TTable,
90
+ // options?: ParseQueryOptions,
91
+ // ): DeletePlanHandleInitial<TSchema[TTable], TParams>;
92
+ // Implementation
93
+ export function defineDelete(_schema, builder, options) {
94
+ // Parse the builder function to get the operation
95
+ const parseResult = parseQuery(builder, options);
96
+ if (!parseResult || parseResult.operation.operationType !== "delete") {
97
+ throw new Error("Failed to parse delete builder or not a delete operation");
98
+ }
99
+ const initialState = createInitialState(parseResult, options);
100
+ // Check the state of the parsed operation to return the appropriate handle
101
+ const deleteOp = parseResult.operation;
102
+ // Check if WHERE clause or allowFullTableDelete is present
103
+ if (deleteOp.predicate || deleteOp.allowFullTableDelete) {
104
+ return new DeletePlanHandleComplete(initialState);
105
+ }
106
+ return new DeletePlanHandleInitial(initialState);
107
+ }
108
+ // -----------------------------------------------------------------------------
109
+ // Helper functions for individual operations
110
+ // -----------------------------------------------------------------------------
111
+ function appendWhereDelete(state, predicate) {
112
+ const visitorContext = restoreVisitorContext(state.contextSnapshot);
113
+ const lambda = parseLambdaExpression(predicate, "where");
114
+ const call = createMethodCall("where", lambda);
115
+ const result = visitWhereDeleteOperation(call, state.operation, visitorContext);
116
+ if (!result) {
117
+ throw new Error("Failed to append where clause to delete plan");
118
+ }
119
+ visitorContext.autoParams = mergeAutoParams(visitorContext.autoParams, result.autoParams);
120
+ return createState(state, result.operation, visitorContext);
121
+ }
122
+ function appendAllowFullDelete(state) {
123
+ const visitorContext = restoreVisitorContext(state.contextSnapshot);
124
+ const call = createMethodCall("allowFullTableDelete");
125
+ const result = visitAllowFullDeleteOperation(call, state.operation);
126
+ if (!result) {
127
+ throw new Error("Failed to append allowFullTableDelete to delete plan");
128
+ }
129
+ return createState(state, result.operation, visitorContext);
130
+ }
131
+ // -----------------------------------------------------------------------------
132
+ // AST helpers
133
+ // -----------------------------------------------------------------------------
134
+ function parseLambdaExpression(lambda, label) {
135
+ const source = lambda.toString();
136
+ const program = parseJavaScript(source);
137
+ const body = program.body?.[0];
138
+ if (!body || body.type !== "ExpressionStatement") {
139
+ throw new Error(`${label} expects an arrow function expression`);
140
+ }
141
+ const expression = body.expression;
142
+ if (expression.type !== "ArrowFunctionExpression") {
143
+ throw new Error(`${label} expects an arrow function expression`);
144
+ }
145
+ return expression;
146
+ }
147
+ function createMethodCall(methodName, argument) {
148
+ return {
149
+ type: "CallExpression",
150
+ callee: {
151
+ type: "MemberExpression",
152
+ object: {
153
+ type: "Identifier",
154
+ name: "__plan",
155
+ },
156
+ property: {
157
+ type: "Identifier",
158
+ name: methodName,
159
+ },
160
+ computed: false,
161
+ optional: false,
162
+ },
163
+ arguments: argument ? [argument] : [],
164
+ optional: false,
165
+ };
166
+ }
167
+ function mergeAutoParams(existing, additions) {
168
+ const result = new Map(existing);
169
+ for (const [key, value] of Object.entries(additions)) {
170
+ result.set(key, value);
171
+ }
172
+ return result;
173
+ }
174
+ function mergeParams(autoParams, params) {
175
+ return {
176
+ ...autoParams,
177
+ ...params,
178
+ };
179
+ }
180
+ function cloneOperationTree(operation) {
181
+ // Deep clone that preserves Maps and other complex structures
182
+ function deepClone(obj) {
183
+ if (obj === null || typeof obj !== "object") {
184
+ return obj;
185
+ }
186
+ // Handle Map instances
187
+ if (obj instanceof Map) {
188
+ const clonedMap = new Map();
189
+ for (const [key, value] of obj) {
190
+ clonedMap.set(key, deepClone(value));
191
+ }
192
+ return clonedMap;
193
+ }
194
+ // Handle Array instances
195
+ if (Array.isArray(obj)) {
196
+ return obj.map((item) => deepClone(item));
197
+ }
198
+ // Handle regular objects
199
+ const clonedObj = {};
200
+ for (const key in obj) {
201
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
202
+ clonedObj[key] = deepClone(obj[key]);
203
+ }
204
+ }
205
+ return clonedObj;
206
+ }
207
+ return deepClone(operation);
208
+ }
209
+ //# sourceMappingURL=delete-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-plan.js","sourceRoot":"","sources":["../../src/plans/delete-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { DatabaseSchema } from "../linq/database-context.js";
2
+ import type { QueryBuilder } from "../linq/query-builder.js";
3
+ import type { QueryHelpers } from "../linq/functions.js";
4
+ import type { Insertable, InsertableWithReturning } from "../linq/insertable.js";
5
+ import type { ParseQueryOptions } from "../parser/types.js";
6
+ import type { QueryOperation } from "../query-tree/operations.js";
7
+ import { type VisitorContextSnapshot } from "../visitors/types.js";
8
+ export interface InsertPlan<TRecord, TParams> {
9
+ readonly kind: "insert";
10
+ readonly operation: QueryOperation;
11
+ readonly autoParams: Record<string, unknown>;
12
+ readonly autoParamInfos?: Record<string, unknown>;
13
+ readonly contextSnapshot: VisitorContextSnapshot;
14
+ readonly parseOptions?: ParseQueryOptions;
15
+ readonly __type?: {
16
+ record: TRecord;
17
+ params: TParams;
18
+ };
19
+ }
20
+ type InsertPlanState<TRecord, TParams> = InsertPlan<TRecord, TParams>;
21
+ export interface InsertPlanSql {
22
+ operation: QueryOperation;
23
+ params: Record<string, unknown>;
24
+ autoParamInfos?: Record<string, unknown>;
25
+ }
26
+ export declare class InsertPlanHandleInitial<TRecord, TParams> {
27
+ private readonly state;
28
+ constructor(state: InsertPlanState<TRecord, TParams>);
29
+ values(values: Partial<TRecord>): InsertPlanHandleWithValues<TRecord, TParams>;
30
+ finalize(_params: TParams): InsertPlanSql;
31
+ toPlan(): InsertPlan<TRecord, TParams>;
32
+ }
33
+ export declare class InsertPlanHandleWithValues<TRecord, TParams> {
34
+ private readonly state;
35
+ constructor(state: InsertPlanState<TRecord, TParams>);
36
+ returning<TResult>(selector: (item: TRecord) => TResult): InsertPlanHandleWithReturning<TResult, TParams>;
37
+ finalize(params: TParams): InsertPlanSql;
38
+ toPlan(): InsertPlan<TRecord, TParams>;
39
+ execute(_params: TParams): Promise<void>;
40
+ }
41
+ export declare class InsertPlanHandleWithReturning<TResult, TParams> {
42
+ private readonly state;
43
+ constructor(state: InsertPlanState<TResult, TParams>);
44
+ finalize(params: TParams): InsertPlanSql;
45
+ toPlan(): InsertPlan<TResult, TParams>;
46
+ execute(_params: TParams): Promise<TResult>;
47
+ }
48
+ export declare function defineInsert<TSchema, TParams = {}, TQuery = unknown>(schema: DatabaseSchema<TSchema>, builder: (queryBuilder: QueryBuilder<TSchema>, params: TParams, helpers?: QueryHelpers) => TQuery, options?: ParseQueryOptions): TQuery extends InsertableWithReturning<unknown, infer TReturning> ? InsertPlanHandleWithReturning<TReturning, TParams> : TQuery extends Insertable<infer TTable> ? InsertPlanHandleInitial<TTable, TParams> : never;
49
+ export {};
50
+ //# sourceMappingURL=insert-plan.d.ts.map