@uwdata/mosaic-sql 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/LICENSE +47 -0
  2. package/README.md +0 -2
  3. package/dist/src/ast/aggregate.d.ts +82 -0
  4. package/dist/src/ast/aggregate.d.ts.map +1 -0
  5. package/dist/src/ast/aggregate.js +180 -0
  6. package/dist/src/ast/aggregate.js.map +1 -0
  7. package/dist/src/ast/between-op.d.ts +46 -0
  8. package/dist/src/ast/between-op.d.ts.map +1 -0
  9. package/dist/src/ast/between-op.js +60 -0
  10. package/dist/src/ast/between-op.js.map +1 -0
  11. package/dist/src/ast/binary-op.d.ts +21 -0
  12. package/dist/src/ast/binary-op.d.ts.map +1 -0
  13. package/dist/src/ast/binary-op.js +29 -0
  14. package/dist/src/ast/binary-op.js.map +1 -0
  15. package/dist/src/ast/case.d.ts +53 -0
  16. package/dist/src/ast/case.d.ts.map +1 -0
  17. package/dist/src/ast/case.js +75 -0
  18. package/dist/src/ast/case.js.map +1 -0
  19. package/dist/src/ast/cast.d.ts +18 -0
  20. package/dist/src/ast/cast.d.ts.map +1 -0
  21. package/dist/src/ast/cast.js +26 -0
  22. package/dist/src/ast/cast.js.map +1 -0
  23. package/dist/src/ast/collate.d.ts +18 -0
  24. package/dist/src/ast/collate.d.ts.map +1 -0
  25. package/dist/src/ast/collate.js +25 -0
  26. package/dist/src/ast/collate.js.map +1 -0
  27. package/dist/src/ast/column-param.d.ts +23 -0
  28. package/dist/src/ast/column-param.d.ts.map +1 -0
  29. package/dist/src/ast/column-param.js +29 -0
  30. package/dist/src/ast/column-param.js.map +1 -0
  31. package/dist/src/ast/column-ref.d.ts +40 -0
  32. package/dist/src/ast/column-ref.d.ts.map +1 -0
  33. package/dist/src/ast/column-ref.js +58 -0
  34. package/dist/src/ast/column-ref.js.map +1 -0
  35. package/dist/src/ast/fragment.d.ts +20 -0
  36. package/dist/src/ast/fragment.d.ts.map +1 -0
  37. package/dist/src/ast/fragment.js +26 -0
  38. package/dist/src/ast/fragment.js.map +1 -0
  39. package/dist/src/ast/from.d.ts +22 -0
  40. package/dist/src/ast/from.d.ts.map +1 -0
  41. package/dist/src/ast/from.js +37 -0
  42. package/dist/src/ast/from.js.map +1 -0
  43. package/dist/src/ast/function.d.ts +18 -0
  44. package/dist/src/ast/function.d.ts.map +1 -0
  45. package/dist/src/ast/function.js +26 -0
  46. package/dist/src/ast/function.js.map +1 -0
  47. package/dist/src/ast/in-op.d.ts +18 -0
  48. package/dist/src/ast/in-op.d.ts.map +1 -0
  49. package/dist/src/ast/in-op.js +25 -0
  50. package/dist/src/ast/in-op.js.map +1 -0
  51. package/dist/src/ast/interval.d.ts +18 -0
  52. package/dist/src/ast/interval.d.ts.map +1 -0
  53. package/dist/src/ast/interval.js +25 -0
  54. package/dist/src/ast/interval.js.map +1 -0
  55. package/dist/src/ast/list.d.ts +15 -0
  56. package/dist/src/ast/list.d.ts.map +1 -0
  57. package/dist/src/ast/list.js +21 -0
  58. package/dist/src/ast/list.js.map +1 -0
  59. package/dist/src/ast/literal.d.ts +16 -0
  60. package/dist/src/ast/literal.d.ts.map +1 -0
  61. package/dist/src/ast/literal.js +53 -0
  62. package/dist/src/ast/literal.js.map +1 -0
  63. package/dist/src/ast/logical-op.d.ts +32 -0
  64. package/dist/src/ast/logical-op.d.ts.map +1 -0
  65. package/dist/src/ast/logical-op.js +46 -0
  66. package/dist/src/ast/logical-op.js.map +1 -0
  67. package/dist/src/ast/node.d.ts +25 -0
  68. package/dist/src/ast/node.d.ts.map +1 -0
  69. package/dist/src/ast/node.js +36 -0
  70. package/dist/src/ast/node.js.map +1 -0
  71. package/dist/src/ast/order-by.d.ts +21 -0
  72. package/dist/src/ast/order-by.d.ts.map +1 -0
  73. package/dist/src/ast/order-by.js +36 -0
  74. package/dist/src/ast/order-by.js.map +1 -0
  75. package/dist/src/ast/param.d.ts +20 -0
  76. package/dist/src/ast/param.d.ts.map +1 -0
  77. package/dist/src/ast/param.js +28 -0
  78. package/dist/src/ast/param.js.map +1 -0
  79. package/dist/src/ast/query.d.ts +334 -0
  80. package/dist/src/ast/query.d.ts.map +1 -0
  81. package/dist/src/ast/query.js +640 -0
  82. package/dist/src/ast/query.js.map +1 -0
  83. package/dist/src/ast/sample.d.ts +27 -0
  84. package/dist/src/ast/sample.d.ts.map +1 -0
  85. package/dist/src/ast/sample.js +38 -0
  86. package/dist/src/ast/sample.js.map +1 -0
  87. package/dist/src/ast/select.d.ts +19 -0
  88. package/dist/src/ast/select.d.ts.map +1 -0
  89. package/dist/src/ast/select.js +35 -0
  90. package/dist/src/ast/select.js.map +1 -0
  91. package/dist/src/ast/subquery.d.ts +16 -0
  92. package/dist/src/ast/subquery.d.ts.map +1 -0
  93. package/dist/src/ast/subquery.js +21 -0
  94. package/dist/src/ast/subquery.js.map +1 -0
  95. package/dist/src/ast/table-ref.d.ts +24 -0
  96. package/dist/src/ast/table-ref.d.ts.map +1 -0
  97. package/dist/src/ast/table-ref.js +35 -0
  98. package/dist/src/ast/table-ref.js.map +1 -0
  99. package/dist/src/ast/unary-op.d.ts +40 -0
  100. package/dist/src/ast/unary-op.d.ts.map +1 -0
  101. package/dist/src/ast/unary-op.js +52 -0
  102. package/dist/src/ast/unary-op.js.map +1 -0
  103. package/dist/src/ast/unnest.d.ts +19 -0
  104. package/dist/src/ast/unnest.d.ts.map +1 -0
  105. package/dist/src/ast/unnest.js +29 -0
  106. package/dist/src/ast/unnest.js.map +1 -0
  107. package/dist/src/ast/verbatim.d.ts +18 -0
  108. package/dist/src/ast/verbatim.d.ts.map +1 -0
  109. package/dist/src/ast/verbatim.js +25 -0
  110. package/dist/src/ast/verbatim.js.map +1 -0
  111. package/dist/src/ast/window-frame.d.ts +54 -0
  112. package/dist/src/ast/window-frame.d.ts.map +1 -0
  113. package/dist/src/ast/window-frame.js +79 -0
  114. package/dist/src/ast/window-frame.js.map +1 -0
  115. package/dist/src/ast/window.d.ts +128 -0
  116. package/dist/src/ast/window.d.ts.map +1 -0
  117. package/dist/src/ast/window.js +194 -0
  118. package/dist/src/ast/window.js.map +1 -0
  119. package/dist/src/ast/with.d.ts +25 -0
  120. package/dist/src/ast/with.d.ts.map +1 -0
  121. package/dist/src/ast/with.js +36 -0
  122. package/dist/src/ast/with.js.map +1 -0
  123. package/dist/src/constants.d.ts +40 -0
  124. package/dist/src/constants.d.ts.map +1 -0
  125. package/dist/src/constants.js +40 -0
  126. package/dist/src/constants.js.map +1 -0
  127. package/dist/src/functions/aggregate.d.ts +236 -0
  128. package/dist/src/functions/aggregate.d.ts.map +1 -0
  129. package/dist/src/functions/aggregate.js +308 -0
  130. package/dist/src/functions/aggregate.js.map +1 -0
  131. package/dist/src/functions/case.d.ts +13 -0
  132. package/dist/src/functions/case.d.ts.map +1 -0
  133. package/dist/src/functions/case.js +17 -0
  134. package/dist/src/functions/case.js.map +1 -0
  135. package/dist/src/functions/cast.d.ts +23 -0
  136. package/dist/src/functions/cast.d.ts.map +1 -0
  137. package/dist/src/functions/cast.js +32 -0
  138. package/dist/src/functions/cast.js.map +1 -0
  139. package/dist/src/functions/collate.d.ts +10 -0
  140. package/dist/src/functions/collate.d.ts.map +1 -0
  141. package/dist/src/functions/collate.js +12 -0
  142. package/dist/src/functions/collate.js.map +1 -0
  143. package/dist/src/functions/column.d.ts +10 -0
  144. package/dist/src/functions/column.d.ts.map +1 -0
  145. package/dist/src/functions/column.js +17 -0
  146. package/dist/src/functions/column.js.map +1 -0
  147. package/dist/src/functions/cte.d.ts +13 -0
  148. package/dist/src/functions/cte.d.ts.map +1 -0
  149. package/dist/src/functions/cte.js +14 -0
  150. package/dist/src/functions/cte.js.map +1 -0
  151. package/dist/src/functions/datetime.d.ts +32 -0
  152. package/dist/src/functions/datetime.d.ts.map +1 -0
  153. package/dist/src/functions/datetime.js +45 -0
  154. package/dist/src/functions/datetime.js.map +1 -0
  155. package/dist/src/functions/interval.d.ts +48 -0
  156. package/dist/src/functions/interval.d.ts.map +1 -0
  157. package/dist/src/functions/interval.js +66 -0
  158. package/dist/src/functions/interval.js.map +1 -0
  159. package/dist/src/functions/list.d.ts +31 -0
  160. package/dist/src/functions/list.d.ts.map +1 -0
  161. package/dist/src/functions/list.js +49 -0
  162. package/dist/src/functions/list.js.map +1 -0
  163. package/dist/src/functions/literal.d.ts +16 -0
  164. package/dist/src/functions/literal.d.ts.map +1 -0
  165. package/dist/src/functions/literal.js +20 -0
  166. package/dist/src/functions/literal.js.map +1 -0
  167. package/dist/src/functions/numeric.d.ts +80 -0
  168. package/dist/src/functions/numeric.d.ts.map +1 -0
  169. package/dist/src/functions/numeric.js +110 -0
  170. package/dist/src/functions/numeric.js.map +1 -0
  171. package/dist/src/functions/operators.d.ts +169 -0
  172. package/dist/src/functions/operators.d.ts.map +1 -0
  173. package/dist/src/functions/operators.js +235 -0
  174. package/dist/src/functions/operators.js.map +1 -0
  175. package/dist/src/functions/order-by.d.ts +15 -0
  176. package/dist/src/functions/order-by.d.ts.map +1 -0
  177. package/dist/src/functions/order-by.js +19 -0
  178. package/dist/src/functions/order-by.js.map +1 -0
  179. package/dist/src/functions/spatial.d.ts +32 -0
  180. package/dist/src/functions/spatial.d.ts.map +1 -0
  181. package/dist/src/functions/spatial.js +44 -0
  182. package/dist/src/functions/spatial.js.map +1 -0
  183. package/dist/src/functions/sql-template-tag.d.ts +13 -0
  184. package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
  185. package/dist/src/functions/sql-template-tag.js +44 -0
  186. package/dist/src/functions/sql-template-tag.js.map +1 -0
  187. package/dist/src/functions/string.d.ts +49 -0
  188. package/dist/src/functions/string.d.ts.map +1 -0
  189. package/dist/src/functions/string.js +67 -0
  190. package/dist/src/functions/string.js.map +1 -0
  191. package/dist/src/functions/table-ref.d.ts +10 -0
  192. package/dist/src/functions/table-ref.d.ts.map +1 -0
  193. package/dist/src/functions/table-ref.js +13 -0
  194. package/dist/src/functions/table-ref.js.map +1 -0
  195. package/dist/src/functions/unnest.d.ts +10 -0
  196. package/dist/src/functions/unnest.d.ts.map +1 -0
  197. package/dist/src/functions/unnest.js +12 -0
  198. package/dist/src/functions/unnest.js.map +1 -0
  199. package/dist/src/functions/util.d.ts +7 -0
  200. package/dist/src/functions/util.d.ts.map +1 -0
  201. package/dist/src/functions/util.js +9 -0
  202. package/dist/src/functions/util.js.map +1 -0
  203. package/dist/src/functions/window-frame.d.ts +41 -0
  204. package/dist/src/functions/window-frame.d.ts.map +1 -0
  205. package/dist/src/functions/window-frame.js +52 -0
  206. package/dist/src/functions/window-frame.js.map +1 -0
  207. package/dist/src/functions/window.d.ts +74 -0
  208. package/dist/src/functions/window.d.ts.map +1 -0
  209. package/dist/src/functions/window.js +96 -0
  210. package/dist/src/functions/window.js.map +1 -0
  211. package/dist/src/index.d.ts +73 -0
  212. package/dist/src/index.d.ts.map +1 -0
  213. package/{src → dist/src}/index.js +8 -8
  214. package/dist/src/index.js.map +1 -0
  215. package/dist/src/load/create.d.ts +10 -0
  216. package/dist/src/load/create.d.ts.map +1 -0
  217. package/dist/src/load/create.js +14 -0
  218. package/dist/src/load/create.js.map +1 -0
  219. package/dist/src/load/extension.d.ts +2 -0
  220. package/dist/src/load/extension.d.ts.map +1 -0
  221. package/dist/src/load/extension.js +4 -0
  222. package/dist/src/load/extension.js.map +1 -0
  223. package/dist/src/load/load.d.ts +18 -0
  224. package/dist/src/load/load.d.ts.map +1 -0
  225. package/dist/src/load/load.js +80 -0
  226. package/dist/src/load/load.js.map +1 -0
  227. package/dist/src/load/sql-from.d.ts +14 -0
  228. package/dist/src/load/sql-from.d.ts.map +1 -0
  229. package/dist/src/load/sql-from.js +29 -0
  230. package/dist/src/load/sql-from.js.map +1 -0
  231. package/dist/src/transforms/bin-1d.d.ts +16 -0
  232. package/dist/src/transforms/bin-1d.d.ts.map +1 -0
  233. package/dist/src/transforms/bin-1d.js +21 -0
  234. package/dist/src/transforms/bin-1d.js.map +1 -0
  235. package/dist/src/transforms/bin-2d.d.ts +19 -0
  236. package/dist/src/transforms/bin-2d.d.ts.map +1 -0
  237. package/dist/src/transforms/bin-2d.js +27 -0
  238. package/dist/src/transforms/bin-2d.js.map +1 -0
  239. package/dist/src/transforms/bin-date.d.ts +31 -0
  240. package/dist/src/transforms/bin-date.d.ts.map +1 -0
  241. package/dist/src/transforms/bin-date.js +20 -0
  242. package/dist/src/transforms/bin-date.js.map +1 -0
  243. package/dist/src/transforms/bin-histogram.d.ts +37 -0
  244. package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
  245. package/dist/src/transforms/bin-histogram.js +32 -0
  246. package/dist/src/transforms/bin-histogram.js.map +1 -0
  247. package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
  248. package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
  249. package/dist/src/transforms/bin-linear-1d.js +25 -0
  250. package/dist/src/transforms/bin-linear-1d.js.map +1 -0
  251. package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
  252. package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
  253. package/dist/src/transforms/bin-linear-2d.js +49 -0
  254. package/dist/src/transforms/bin-linear-2d.js.map +1 -0
  255. package/dist/src/transforms/filter-query.d.ts +12 -0
  256. package/dist/src/transforms/filter-query.d.ts.map +1 -0
  257. package/dist/src/transforms/filter-query.js +39 -0
  258. package/dist/src/transforms/filter-query.js.map +1 -0
  259. package/dist/src/transforms/line-density.d.ts +24 -0
  260. package/dist/src/transforms/line-density.d.ts.map +1 -0
  261. package/dist/src/transforms/line-density.js +98 -0
  262. package/dist/src/transforms/line-density.js.map +1 -0
  263. package/dist/src/transforms/m4.d.ts +19 -0
  264. package/dist/src/transforms/m4.d.ts.map +1 -0
  265. package/dist/src/transforms/m4.js +38 -0
  266. package/dist/src/transforms/m4.js.map +1 -0
  267. package/dist/src/transforms/scales.d.ts +30 -0
  268. package/dist/src/transforms/scales.d.ts.map +1 -0
  269. package/dist/src/transforms/scales.js +103 -0
  270. package/dist/src/transforms/scales.js.map +1 -0
  271. package/dist/src/transforms/util/bin-step.d.ts +50 -0
  272. package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
  273. package/dist/src/transforms/util/bin-step.js +53 -0
  274. package/dist/src/transforms/util/bin-step.js.map +1 -0
  275. package/dist/src/transforms/util/time-interval.d.ts +14 -0
  276. package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
  277. package/dist/src/transforms/util/time-interval.js +88 -0
  278. package/dist/src/transforms/util/time-interval.js.map +1 -0
  279. package/dist/src/types.d.ts +49 -0
  280. package/dist/src/types.d.ts.map +1 -0
  281. package/dist/src/types.js +2 -0
  282. package/dist/src/types.js.map +1 -0
  283. package/dist/src/util/ast.d.ts +62 -0
  284. package/dist/src/util/ast.d.ts.map +1 -0
  285. package/{src → dist/src}/util/ast.js +36 -41
  286. package/dist/src/util/ast.js.map +1 -0
  287. package/dist/src/util/function.d.ts +56 -0
  288. package/dist/src/util/function.d.ts.map +1 -0
  289. package/dist/src/util/function.js +73 -0
  290. package/dist/src/util/function.js.map +1 -0
  291. package/dist/src/util/identity.d.ts +6 -0
  292. package/dist/src/util/identity.d.ts.map +1 -0
  293. package/dist/src/util/identity.js +8 -0
  294. package/dist/src/util/identity.js.map +1 -0
  295. package/dist/src/util/string.d.ts +4 -0
  296. package/dist/src/util/string.d.ts.map +1 -0
  297. package/dist/src/util/string.js +14 -0
  298. package/dist/src/util/string.js.map +1 -0
  299. package/dist/src/util/type-check.d.ts +17 -0
  300. package/dist/src/util/type-check.d.ts.map +1 -0
  301. package/dist/src/util/type-check.js +28 -0
  302. package/dist/src/util/type-check.js.map +1 -0
  303. package/dist/src/visit/clone.d.ts +7 -0
  304. package/dist/src/visit/clone.d.ts.map +1 -0
  305. package/dist/src/visit/clone.js +52 -0
  306. package/dist/src/visit/clone.js.map +1 -0
  307. package/dist/src/visit/recurse.d.ts +2 -0
  308. package/dist/src/visit/recurse.d.ts.map +1 -0
  309. package/dist/src/visit/recurse.js +37 -0
  310. package/dist/src/visit/recurse.js.map +1 -0
  311. package/dist/src/visit/rewrite.d.ts +9 -0
  312. package/dist/src/visit/rewrite.d.ts.map +1 -0
  313. package/dist/src/visit/rewrite.js +39 -0
  314. package/dist/src/visit/rewrite.js.map +1 -0
  315. package/dist/src/visit/visitors.d.ts +32 -0
  316. package/dist/src/visit/visitors.d.ts.map +1 -0
  317. package/dist/src/visit/visitors.js +95 -0
  318. package/dist/src/visit/visitors.js.map +1 -0
  319. package/dist/src/visit/walk.d.ts +21 -0
  320. package/dist/src/visit/walk.d.ts.map +1 -0
  321. package/dist/src/visit/walk.js +32 -0
  322. package/dist/src/visit/walk.js.map +1 -0
  323. package/package.json +13 -7
  324. package/src/ast/{aggregate.js → aggregate.ts} +49 -60
  325. package/src/ast/{between-op.js → between-op.ts} +19 -26
  326. package/src/ast/binary-op.ts +31 -0
  327. package/src/ast/{case.js → case.ts} +29 -44
  328. package/src/ast/{cast.js → cast.ts} +8 -14
  329. package/src/ast/{collate.js → collate.ts} +8 -14
  330. package/src/ast/column-param.ts +34 -0
  331. package/src/ast/{column-ref.js → column-ref.ts} +16 -25
  332. package/src/ast/fragment.ts +28 -0
  333. package/src/ast/{from.js → from.ts} +12 -21
  334. package/src/ast/{function.js → function.ts} +8 -14
  335. package/src/ast/{in-op.js → in-op.ts} +8 -14
  336. package/src/ast/{interval.js → interval.ts} +8 -14
  337. package/src/ast/list.ts +23 -0
  338. package/src/ast/{literal.js → literal.ts} +6 -9
  339. package/src/ast/logical-op.ts +50 -0
  340. package/src/ast/{node.js → node.ts} +10 -13
  341. package/src/ast/order-by.ts +38 -0
  342. package/src/ast/{param.js → param.ts} +6 -12
  343. package/src/ast/{query.js → query.ts} +224 -204
  344. package/src/ast/sample.ts +47 -0
  345. package/src/ast/{select.js → select.ts} +10 -16
  346. package/src/ast/{subquery.js → subquery.ts} +9 -8
  347. package/src/ast/{table-ref.js → table-ref.ts} +7 -12
  348. package/src/ast/{unary-op.js → unary-op.ts} +16 -23
  349. package/src/ast/unnest.ts +31 -0
  350. package/src/ast/verbatim.ts +27 -0
  351. package/src/ast/{window-frame.js → window-frame.ts} +37 -47
  352. package/src/ast/window.ts +246 -0
  353. package/src/ast/{with.js → with.ts} +19 -20
  354. package/src/{constants.js → constants.ts} +2 -0
  355. package/src/functions/aggregate.ts +344 -0
  356. package/src/functions/{case.js → case.ts} +5 -8
  357. package/src/functions/{cast.js → cast.ts} +9 -13
  358. package/src/functions/{collate.js → collate.ts} +4 -7
  359. package/src/functions/{column.js → column.ts} +9 -10
  360. package/src/functions/{cte.js → cte.ts} +9 -6
  361. package/src/functions/{datetime.js → datetime.ts} +12 -20
  362. package/src/functions/interval.ts +74 -0
  363. package/src/functions/list.ts +63 -0
  364. package/src/functions/{literal.js → literal.ts} +5 -7
  365. package/src/functions/numeric.ts +125 -0
  366. package/src/functions/operators.ts +272 -0
  367. package/src/functions/order-by.ts +21 -0
  368. package/src/functions/spatial.ts +50 -0
  369. package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
  370. package/src/functions/string.ts +79 -0
  371. package/src/functions/{table-ref.js → table-ref.ts} +4 -4
  372. package/src/functions/unnest.ts +13 -0
  373. package/src/functions/util.ts +10 -0
  374. package/src/functions/window-frame.ts +58 -0
  375. package/src/functions/{window.js → window.ts} +18 -35
  376. package/src/index.ts +79 -0
  377. package/src/load/{create.js → create.ts} +9 -3
  378. package/src/load/extension.ts +3 -0
  379. package/src/load/{load.js → load.ts} +25 -10
  380. package/src/load/{sql-from.js → sql-from.ts} +14 -7
  381. package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
  382. package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
  383. package/src/transforms/bin-date.ts +48 -0
  384. package/src/transforms/bin-histogram.ts +61 -0
  385. package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
  386. package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
  387. package/src/transforms/{filter-query.js → filter-query.ts} +10 -14
  388. package/src/transforms/{line-density.js → line-density.ts} +19 -17
  389. package/src/transforms/{m4.js → m4.ts} +17 -14
  390. package/src/transforms/{scales.js → scales.ts} +57 -14
  391. package/src/transforms/util/bin-step.ts +100 -0
  392. package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
  393. package/src/types.ts +5 -39
  394. package/src/util/ast.ts +104 -0
  395. package/src/util/{function.js → function.ts} +40 -31
  396. package/src/util/identity.ts +7 -0
  397. package/src/util/{string.js → string.ts} +4 -4
  398. package/src/util/type-check.ts +31 -0
  399. package/src/visit/{clone.js → clone.ts} +10 -10
  400. package/src/visit/{recurse.js → recurse.ts} +3 -1
  401. package/src/visit/{rewrite.js → rewrite.ts} +7 -7
  402. package/src/visit/{visitors.js → visitors.ts} +22 -30
  403. package/src/visit/walk.ts +46 -0
  404. package/src/ast/binary-op.js +0 -40
  405. package/src/ast/column-param.js +0 -40
  406. package/src/ast/fragment.js +0 -26
  407. package/src/ast/logical-op.js +0 -67
  408. package/src/ast/order-by.js +0 -48
  409. package/src/ast/sample.js +0 -53
  410. package/src/ast/verbatim.js +0 -33
  411. package/src/ast/window.js +0 -260
  412. package/src/functions/aggregate.js +0 -347
  413. package/src/functions/interval.js +0 -83
  414. package/src/functions/numeric.js +0 -143
  415. package/src/functions/operators.js +0 -301
  416. package/src/functions/order-by.js +0 -27
  417. package/src/functions/spatial.js +0 -59
  418. package/src/functions/string.js +0 -85
  419. package/src/functions/util.js +0 -14
  420. package/src/functions/window-frame.js +0 -61
  421. package/src/index-types.ts +0 -2
  422. package/src/load/extension.js +0 -3
  423. package/src/transforms/bin-date.js +0 -38
  424. package/src/transforms/bin-histogram.js +0 -52
  425. package/src/transforms/util/bin-step.js +0 -79
  426. package/src/util/type-check.js +0 -33
  427. package/src/visit/walk.js +0 -34
  428. package/tsconfig.json +0 -8
  429. package/vitest.config.ts +0 -3
@@ -0,0 +1,49 @@
1
+ import { ColumnRefNode } from './ast/column-ref.js';
2
+ import { ExprNode, SQLNode } from './ast/node.js';
3
+ import { TableRefNode } from './ast/table-ref.js';
4
+ import { Query } from './ast/query.js';
5
+ import { WithClauseNode } from './ast/with.js';
6
+ /**
7
+ * Interface representing a dynamic parameter value.
8
+ */
9
+ export interface ParamLike {
10
+ /** The current parameter value. */
11
+ value: unknown;
12
+ /** Add an event listener callback. */
13
+ addEventListener(type: string, callback: EventCallback): void;
14
+ /** Remove an event listener callback. */
15
+ removeEventListener(type: string, callback: EventCallback): void;
16
+ }
17
+ /**
18
+ * Expression value input to SQL builder method.
19
+ */
20
+ export type ExprValue = ExprNode | ParamLike | string | number | boolean | Date | null;
21
+ /**
22
+ * Expression values that may be nested in arrays.
23
+ */
24
+ export type ExprVarArgs = MaybeArray<ExprValue>;
25
+ /**
26
+ * String-typed expression value.
27
+ */
28
+ export type StringValue = ExprNode | ParamLike | string;
29
+ /**
30
+ * Number-typed expression value.
31
+ */
32
+ export type NumberValue = ExprNode | ParamLike | number;
33
+ /**
34
+ * Event listener callback function.
35
+ */
36
+ export type EventCallback = <T>(value: unknown) => Promise<T> | undefined;
37
+ /** Valid window function names. */
38
+ export type WindowFunctionName = 'cume_dist' | 'dense_rank' | 'first_value' | 'lag' | 'last_value' | 'lead' | 'nth_value' | 'ntile' | 'percent_rank' | 'rank_dense' | 'rank' | 'row_number';
39
+ export type MaybeArray<T> = T | T[];
40
+ export type SelectEntry = null | string | ColumnRefNode | [string, ExprNode] | Record<string, ExprValue>;
41
+ export type SelectExpr = MaybeArray<SelectEntry>;
42
+ export type WithEntry = WithClauseNode | Record<string, Query>;
43
+ export type WithExpr = MaybeArray<WithEntry>;
44
+ export type FromEntry = string | TableRefNode | SQLNode | [string, SQLNode] | Record<string, string | SQLNode>;
45
+ export type FromExpr = MaybeArray<FromEntry>;
46
+ export type FilterExpr = MaybeArray<string | boolean | ExprNode>;
47
+ export type GroupByExpr = MaybeArray<string | ExprNode>;
48
+ export type OrderByExpr = MaybeArray<string | ExprNode>;
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9D,yCAAyC;IACzC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAE1E,mCAAmC;AACnC,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,YAAY,GACZ,aAAa,GACb,KAAK,GACL,YAAY,GACZ,MAAM,GACN,WAAW,GACX,OAAO,GACP,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,CAAC;AAEjB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAEpC,MAAM,MAAM,WAAW,GACnB,IAAI,GACJ,MAAM,GACN,aAAa,GACb,CAAC,MAAM,EAAE,QAAQ,CAAC,GAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE9B,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAEjD,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAE7C,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,YAAY,GACZ,OAAO,GACP,CAAC,MAAM,EAAE,OAAO,CAAC,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAErC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ import type { ColumnRefNode } from '../ast/column-ref.js';
2
+ import type { TableRefNode } from '../ast/table-ref.js';
3
+ import { ExprNode, type SQLNode } from '../ast/node.js';
4
+ import { WindowDefNode } from '../ast/window.js';
5
+ /**
6
+ * Interpret a value as a SQL AST node. String values are assumed to be
7
+ * column references. All other primitive values are interpreted as
8
+ * SQL literals. Dynamic parameters are interpreted as param AST nodes,
9
+ * while existing AST nodes are left as-is.
10
+ * @param value The value to interpret as a SQL AST node.
11
+ */
12
+ export declare function asNode(value: unknown): ExprNode;
13
+ /**
14
+ * Interpret a value as a verbatim SQL AST node. String values will be
15
+ * passed through to queries as verbatim text. All other primitive values
16
+ * are interpreted as SQL literals. Dynamic parameters are interpreted
17
+ * as param AST nodes, while existing AST nodes are left as-is.
18
+ * @param value The value to interpret as a verbatim AST node.
19
+ */
20
+ export declare function asVerbatim(value: unknown): ExprNode;
21
+ /**
22
+ * Interpret a value as a literal AST node. All other primitive values
23
+ * are interpreted as SQL literals. Dynamic parameters are interpreted
24
+ * as param AST nodes, while existing AST nodes are left as-is.
25
+ * @param value The value to interpret as a literal AST node.
26
+ */
27
+ export declare function asLiteral(value: unknown): ExprNode;
28
+ /**
29
+ * Interpret a value as a table reference AST node. String values are parsed
30
+ * assuming dot ('.') delimiters (as in `schema.table`). Array values are
31
+ * interpreted as pre-parsed name paths (as in `['schema', 'table']`). Any
32
+ * other values are left as-is.
33
+ * @param value The value to interpret as a table reference AST node.
34
+ */
35
+ export declare function asTableRef(value?: string | string[] | TableRefNode): TableRefNode | undefined;
36
+ /**
37
+ * Try to interpret a value as a table reference AST node. String values are
38
+ * parsed assuming dot ('.') delimiters (as in `schema.table`). Array values
39
+ * are interpreted as pre-parsed name paths (as in `['schema', 'table']`). Any
40
+ * other values are left as-is.
41
+ * @param value The value to interpret as a table reference.
42
+ */
43
+ export declare function maybeTableRef(value: string | string[] | SQLNode): SQLNode;
44
+ /**
45
+ * Parse a string as a column reference, potentially with
46
+ * dot ('.') delimited table, schema, and database references.
47
+ * @param ref The column reference string.
48
+ */
49
+ export declare function parseColumnRef(ref: string): ColumnRefNode;
50
+ /**
51
+ * Parse a string as a table reference, potentially with
52
+ * dot ('.') delimited schema and database references.
53
+ * @param ref The table reference string.
54
+ */
55
+ export declare function parseTableRef(ref: string): TableRefNode;
56
+ /**
57
+ * Create a new window definition node. The return value is an empty
58
+ * window definition. Use chained calls such as `partitionby` and `orderby`
59
+ * to specify the window settings.
60
+ */
61
+ export declare function over(): WindowDefNode;
62
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/util/ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAI/C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAInD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAIlD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAE7F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,CAEzE;AAQD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,IAAI,kBAEnB"}
@@ -1,7 +1,3 @@
1
- /**
2
- * @import { ColumnRefNode } from '../ast/column-ref.js'
3
- * @import { TableRefNode } from '../ast/table-ref.js'
4
- */
5
1
  import { ExprNode } from '../ast/node.js';
6
2
  import { ParamNode } from '../ast/param.js';
7
3
  import { WindowDefNode } from '../ast/window.js';
@@ -10,90 +6,89 @@ import { literal, verbatim } from '../functions/literal.js';
10
6
  import { tableRef } from '../functions/table-ref.js';
11
7
  import { parseIdentifier } from './string.js';
12
8
  import { isArray, isParamLike, isString } from './type-check.js';
13
-
14
9
  /**
15
10
  * Interpret a value as a SQL AST node. String values are assumed to be
16
11
  * column references. All other primitive values are interpreted as
17
12
  * SQL literals. Dynamic parameters are interpreted as param AST nodes,
18
13
  * while existing AST nodes are left as-is.
19
- * @param {*} value The value to interpret as a SQL AST node.
20
- * @returns {ExprNode}
14
+ * @param value The value to interpret as a SQL AST node.
21
15
  */
22
16
  export function asNode(value) {
23
- return isString(value)
24
- ? parseColumnRef(value)
25
- : asLiteral(value);
17
+ return isString(value)
18
+ ? parseColumnRef(value)
19
+ : asLiteral(value);
26
20
  }
27
-
28
21
  /**
29
22
  * Interpret a value as a verbatim SQL AST node. String values will be
30
23
  * passed through to queries as verbatim text. All other primitive values
31
24
  * are interpreted as SQL literals. Dynamic parameters are interpreted
32
25
  * as param AST nodes, while existing AST nodes are left as-is.
33
- * @param {*} value The value to interpret as a verbatim AST node.
34
- * @returns {ExprNode}
26
+ * @param value The value to interpret as a verbatim AST node.
35
27
  */
36
28
  export function asVerbatim(value) {
37
- return isString(value)
38
- ? verbatim(value)
39
- : asLiteral(value);
29
+ return isString(value)
30
+ ? verbatim(value)
31
+ : asLiteral(value);
40
32
  }
41
-
42
33
  /**
43
34
  * Interpret a value as a literal AST node. All other primitive values
44
35
  * are interpreted as SQL literals. Dynamic parameters are interpreted
45
36
  * as param AST nodes, while existing AST nodes are left as-is.
46
- * @param {*} value The value to interpret as a literal AST node.
47
- * @returns {ExprNode}
37
+ * @param value The value to interpret as a literal AST node.
48
38
  */
49
39
  export function asLiteral(value) {
50
- return value instanceof ExprNode ? value
51
- : isParamLike(value) ? new ParamNode(value)
52
- : literal(value);
40
+ return value instanceof ExprNode ? value
41
+ : isParamLike(value) ? new ParamNode(value)
42
+ : literal(value);
53
43
  }
54
-
55
44
  /**
56
45
  * Interpret a value as a table reference AST node. String values are parsed
57
46
  * assuming dot ('.') delimiters (as in `schema.table`). Array values are
58
47
  * interpreted as pre-parsed name paths (as in `['schema', 'table']`). Any
59
48
  * other values are left as-is.
60
- * @param {string | string[] | TableRefNode} value The value to interpret as a
61
- * table reference AST node.
62
- * @returns {TableRefNode}
49
+ * @param value The value to interpret as a table reference AST node.
63
50
  */
64
51
  export function asTableRef(value) {
65
- return isString(value) ? parseTableRef(value)
66
- : isArray(value) ? tableRef(value)
67
- : value;
52
+ return getTableRef(value);
53
+ }
54
+ /**
55
+ * Try to interpret a value as a table reference AST node. String values are
56
+ * parsed assuming dot ('.') delimiters (as in `schema.table`). Array values
57
+ * are interpreted as pre-parsed name paths (as in `['schema', 'table']`). Any
58
+ * other values are left as-is.
59
+ * @param value The value to interpret as a table reference.
60
+ */
61
+ export function maybeTableRef(value) {
62
+ return getTableRef(value);
63
+ }
64
+ function getTableRef(value) {
65
+ return isString(value) ? parseTableRef(value)
66
+ : isArray(value) ? tableRef(value)
67
+ : value;
68
68
  }
69
-
70
69
  /**
71
70
  * Parse a string as a column reference, potentially with
72
71
  * dot ('.') delimited table, schema, and database references.
73
- * @param {string} ref The column reference string.
74
- * @returns {ColumnRefNode}
72
+ * @param ref The column reference string.
75
73
  */
76
74
  export function parseColumnRef(ref) {
77
- const ids = parseIdentifier(ref);
78
- return column(ids.pop(), tableRef(ids));
75
+ const ids = parseIdentifier(ref);
76
+ return column(ids.pop(), tableRef(ids));
79
77
  }
80
-
81
78
  /**
82
79
  * Parse a string as a table reference, potentially with
83
80
  * dot ('.') delimited schema and database references.
84
- * @param {string} ref The table reference string.
85
- * @returns {TableRefNode}
81
+ * @param ref The table reference string.
86
82
  */
87
83
  export function parseTableRef(ref) {
88
- return tableRef(parseIdentifier(ref));
84
+ return tableRef(parseIdentifier(ref));
89
85
  }
90
-
91
86
  /**
92
87
  * Create a new window definition node. The return value is an empty
93
88
  * window definition. Use chained calls such as `partitionby` and `orderby`
94
89
  * to specify the window settings.
95
- * @returns {WindowDefNode}
96
90
  */
97
91
  export function over() {
98
- return new WindowDefNode();
92
+ return new WindowDefNode();
99
93
  }
94
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/util/ast.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK;QACtC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAwC;IACjE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAkC;IAC9D,OAAO,WAAW,CAAC,KAAK,CAAE,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAI,KAA6B;IACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAE;YACnC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI;IAClB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { ExprNode, SQLNode } from '../ast/node.js';
2
+ import type { WindowFunctionName } from '../types.js';
3
+ import { AggregateNode } from '../ast/aggregate.js';
4
+ import { FunctionNode } from '../ast/function.js';
5
+ import { WindowNode } from '../ast/window.js';
6
+ /**
7
+ * Test if an AST node is a specific function call.
8
+ * @param node The SQL AST node to test.
9
+ * @param name The function name.
10
+ */
11
+ export declare function isFunctionCall(node: SQLNode, name: string): node is FunctionNode;
12
+ /**
13
+ * Create a new function call AST node.
14
+ * @param name The function name.
15
+ * @param args The function arguments.
16
+ */
17
+ export declare function fn(name: string, ...args: unknown[]): FunctionNode;
18
+ /**
19
+ * Create a new aggregate function AST node.
20
+ * @param name The function name.
21
+ * @param args The function arguments.
22
+ */
23
+ export declare function aggFn(name: string, ...args: unknown[]): AggregateNode;
24
+ /**
25
+ * Create a new window AST node. The output node has an empty window
26
+ * definition. Use chained calls such as `partitionby` and `orderby`
27
+ * to specify the window settings.
28
+ * @param name The function name.
29
+ * @param args The function arguments.
30
+ */
31
+ export declare function winFn(name: WindowFunctionName, ...args: unknown[]): WindowNode;
32
+ /**
33
+ * Process a list of expression inputs. Nested arrays are flattened,
34
+ * null results are removed, and each input is cast to a SQL AST node.
35
+ * @param list The list of expression inputs.
36
+ * @param cast A function that casts an input value
37
+ * to a desired type. By default, `asNode` is used to coerce
38
+ * inputs to AST nodes as needed.
39
+ */
40
+ export declare function exprList<T>(list: unknown[], cast: ((x: unknown) => T)): T[];
41
+ /**
42
+ * Process a list of expression inputs. Nested arrays are flattened,
43
+ * null results are removed, and each input is cast (as needed) to
44
+ * be a proper SQL AST node. By default, strings are assumed to be
45
+ * column names, while other primitive values map to SQL literals.
46
+ * Use an alternative *cast* function to change this behavior.
47
+ * @param list The list of expression inputs.
48
+ */
49
+ export declare function nodeList(list: unknown[]): ExprNode[];
50
+ /**
51
+ * Process a list of function arguments, stripping any undefined
52
+ * values from the end of the list.
53
+ * @param list The input function arguments.
54
+ */
55
+ export declare function argsList<T>(list: T[]): T[];
56
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/util/function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAsB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGlE;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GACX,IAAI,IAAI,YAAY,CAEtB;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,kBAAkB,EACxB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,UAAU,CAIZ;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,OAAO,EAAE,EACf,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,GACxB,CAAC,EAAE,CAEL;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAK1C"}
@@ -0,0 +1,73 @@
1
+ import { AggregateNode } from '../ast/aggregate.js';
2
+ import { FunctionNode } from '../ast/function.js';
3
+ import { WindowFunctionNode, WindowNode } from '../ast/window.js';
4
+ import { asNode } from './ast.js';
5
+ /**
6
+ * Test if an AST node is a specific function call.
7
+ * @param node The SQL AST node to test.
8
+ * @param name The function name.
9
+ */
10
+ export function isFunctionCall(node, name) {
11
+ return node instanceof FunctionNode && node.name === name;
12
+ }
13
+ /**
14
+ * Create a new function call AST node.
15
+ * @param name The function name.
16
+ * @param args The function arguments.
17
+ */
18
+ export function fn(name, ...args) {
19
+ return new FunctionNode(name, argsList(args).map(asNode));
20
+ }
21
+ /**
22
+ * Create a new aggregate function AST node.
23
+ * @param name The function name.
24
+ * @param args The function arguments.
25
+ */
26
+ export function aggFn(name, ...args) {
27
+ return new AggregateNode(name, argsList(args).map(asNode));
28
+ }
29
+ /**
30
+ * Create a new window AST node. The output node has an empty window
31
+ * definition. Use chained calls such as `partitionby` and `orderby`
32
+ * to specify the window settings.
33
+ * @param name The function name.
34
+ * @param args The function arguments.
35
+ */
36
+ export function winFn(name, ...args) {
37
+ return new WindowNode(new WindowFunctionNode(name, argsList(args).map(asNode)));
38
+ }
39
+ /**
40
+ * Process a list of expression inputs. Nested arrays are flattened,
41
+ * null results are removed, and each input is cast to a SQL AST node.
42
+ * @param list The list of expression inputs.
43
+ * @param cast A function that casts an input value
44
+ * to a desired type. By default, `asNode` is used to coerce
45
+ * inputs to AST nodes as needed.
46
+ */
47
+ export function exprList(list, cast) {
48
+ return list.flat().filter(x => x != null).map(x => cast(x));
49
+ }
50
+ /**
51
+ * Process a list of expression inputs. Nested arrays are flattened,
52
+ * null results are removed, and each input is cast (as needed) to
53
+ * be a proper SQL AST node. By default, strings are assumed to be
54
+ * column names, while other primitive values map to SQL literals.
55
+ * Use an alternative *cast* function to change this behavior.
56
+ * @param list The list of expression inputs.
57
+ */
58
+ export function nodeList(list) {
59
+ return exprList(list, asNode);
60
+ }
61
+ /**
62
+ * Process a list of function arguments, stripping any undefined
63
+ * values from the end of the list.
64
+ * @param list The input function arguments.
65
+ */
66
+ export function argsList(list) {
67
+ const n = list.length;
68
+ let i = n;
69
+ for (; i > 0 && list[i - 1] === undefined; --i)
70
+ ;
71
+ return i < n ? list.slice(0, i) : list;
72
+ }
73
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/util/function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAa,EACb,IAAY;IAEZ,OAAO,IAAI,YAAY,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,EAAE,CAAC,IAAY,EAAE,GAAG,IAAe;IACjD,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,GAAG,IAAe;IACpD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CACnB,IAAwB,EACxB,GAAG,IAAe;IAElB,OAAO,IAAI,UAAU,CACnB,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAe,EACf,IAAyB;IAEzB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAe;IACtC,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAI,IAAS;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,EAAE,CAAC;QAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Identity function.
3
+ * @param x
4
+ */
5
+ export declare function identity<T>(x: T): T;
6
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/util/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAE/B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Identity function.
3
+ * @param x
4
+ */
5
+ export function identity(x) {
6
+ return x;
7
+ }
8
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/util/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAI,CAAI;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function parseIdentifier(id: string): string[];
2
+ export declare function quoteIdentifier(value: unknown): string;
3
+ export declare function unquote(s?: string): string | undefined;
4
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/util/string.ts"],"names":[],"mappings":"AACA,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,YAEzC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,UAE7C;AAED,wBAAgB,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,sBAEjC"}
@@ -0,0 +1,14 @@
1
+ // TODO: handle case where identifiers are already quoted?
2
+ export function parseIdentifier(id) {
3
+ return id.split('.');
4
+ }
5
+ export function quoteIdentifier(value) {
6
+ return `"${value}"`;
7
+ }
8
+ export function unquote(s) {
9
+ return s && isDoubleQuoted(s) ? s.slice(1, -1) : s;
10
+ }
11
+ function isDoubleQuoted(s) {
12
+ return s[0] === '"' && s[s.length - 1] === '"';
13
+ }
14
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/util/string.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,IAAI,KAAK,GAAG,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ParamLike } from '../types.js';
2
+ /**
3
+ * Check if a value is a string.
4
+ * @param value The value to check.
5
+ */
6
+ export declare function isString(value: unknown): value is string;
7
+ /**
8
+ * Check if a value is an array.
9
+ * @param value The value to check.
10
+ */
11
+ export declare function isArray(value: unknown): value is Array<unknown>;
12
+ /**
13
+ * Check if a value is a dynamic parameter.
14
+ * @param value The value to check.
15
+ */
16
+ export declare function isParamLike(value: unknown): value is ParamLike;
17
+ //# sourceMappingURL=type-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../../src/util/type-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAE/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAQ9D"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Check if a value is a string.
3
+ * @param value The value to check.
4
+ */
5
+ export function isString(value) {
6
+ return typeof value === 'string';
7
+ }
8
+ /**
9
+ * Check if a value is an array.
10
+ * @param value The value to check.
11
+ */
12
+ export function isArray(value) {
13
+ return Array.isArray(value);
14
+ }
15
+ /**
16
+ * Check if a value is a dynamic parameter.
17
+ * @param value The value to check.
18
+ */
19
+ export function isParamLike(value) {
20
+ if (value) {
21
+ const v = value;
22
+ return typeof v?.addEventListener === 'function'
23
+ && v.dynamic !== false
24
+ && 'value' in v;
25
+ }
26
+ return false;
27
+ }
28
+ //# sourceMappingURL=type-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/util/type-check.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,KAA+B,CAAC;QAC1C,OAAO,OAAO,CAAC,EAAE,gBAAgB,KAAK,UAAU;eAC3C,CAAC,CAAC,OAAO,KAAK,KAAK;eACnB,OAAO,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Create a deep clone of the given SQL AST node and all children nodes.
3
+ * @param node The node to deeply clone.
4
+ * @returns The cloned node.
5
+ */
6
+ export declare function deepClone<T>(node: T): T;
7
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/visit/clone.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAkBvC"}
@@ -0,0 +1,52 @@
1
+ import { isNode } from '../ast/node.js';
2
+ import { recurse } from './recurse.js';
3
+ /**
4
+ * Create a deep clone of the given SQL AST node and all children nodes.
5
+ * @param node The node to deeply clone.
6
+ * @returns The cloned node.
7
+ */
8
+ export function deepClone(node) {
9
+ const clone = shallowClone(node);
10
+ if (isNode(node)) {
11
+ const props = recurse[node.type];
12
+ const n = props?.length ?? 0;
13
+ for (let i = 0; i < n; ++i) {
14
+ const key = props[i];
15
+ // @ts-expect-error allow assignment
16
+ const value = node[key];
17
+ // @ts-expect-error allow assignment
18
+ clone[key] = Array.isArray(value)
19
+ ? value.map(v => deepClone(v))
20
+ : deepClone(value);
21
+ }
22
+ }
23
+ return clone;
24
+ }
25
+ /**
26
+ * Create a shallow clone of the given SQL AST node.
27
+ * @param node The node to clone.
28
+ * @returns The cloned node.
29
+ */
30
+ function shallowClone(node) {
31
+ /** @type {T} */
32
+ let clone;
33
+ if (!node || typeof node !== 'object') {
34
+ return node;
35
+ }
36
+ else if (isNode(node)) {
37
+ clone = node.clone();
38
+ }
39
+ else if (node instanceof Date) {
40
+ // @ts-expect-error node is known to be Date
41
+ return new Date(+node);
42
+ }
43
+ else if (Array.isArray(node)) {
44
+ // @ts-expect-error allow slice
45
+ return node.slice();
46
+ }
47
+ else {
48
+ return { ...node };
49
+ }
50
+ return clone;
51
+ }
52
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/visit/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAI,IAAO;IAClC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,oCAAoC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,oCAAoC;YACpC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAI,IAAO;IAC9B,gBAAgB;IAChB,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QAChC,4CAA4C;QAC5C,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,+BAA+B;QAC/B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const recurse: Record<string, string[]>;
2
+ //# sourceMappingURL=recurse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recurse.d.ts","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAkC5C,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../constants.js';
2
+ export const recurse = {
3
+ [AGGREGATE]: ['args', 'order', 'filter'],
4
+ [BETWEEN_OPERATOR]: ['expr', 'extent'],
5
+ [BINARY_OPERATOR]: ['left', 'right'],
6
+ [CASE]: ['expr', '_when', '_else'],
7
+ [CAST]: ['expr'],
8
+ [COLLATE]: ['expr'],
9
+ [COLUMN_PARAM]: ['param', 'table'],
10
+ [COLUMN_REF]: ['table'],
11
+ [DESCRIBE_QUERY]: ['query'],
12
+ [EXPRESSION]: ['node'],
13
+ [FRAGMENT]: ['spans'],
14
+ [FROM_CLAUSE]: ['expr'],
15
+ [FUNCTION]: ['args'],
16
+ [IN_OPERATOR]: ['expr', 'values'],
17
+ [LOGICAL_OPERATOR]: ['clauses'],
18
+ [NOT_BETWEEN_OPERATOR]: ['expr', 'extent'],
19
+ [ORDER_BY]: ['expr'],
20
+ [PARAM]: ['value'],
21
+ [SCALAR_SUBQUERY]: ['subquery'],
22
+ [SELECT_CLAUSE]: ['expr'],
23
+ [SELECT_QUERY]: ['_with', '_select', '_from', '_where', '_sample', '_groupby', '_having', '_window', '_qualify', '_orderby'],
24
+ [SET_OPERATION]: ['queries', '_orderby'],
25
+ [UNARY_OPERATOR]: ['expr'],
26
+ [UNARY_POSTFIX_OPERATOR]: ['expr'],
27
+ [UNNEST]: ['expr'],
28
+ [WHEN]: ['when', 'then'],
29
+ [WINDOW]: ['func', 'def'],
30
+ [WINDOW_CLAUSE]: ['def'],
31
+ [WINDOW_DEF]: ['partition', 'order', 'framedef'],
32
+ [WINDOW_EXTENT_EXPR]: ['expr'],
33
+ [WINDOW_FRAME]: ['extent'],
34
+ [WINDOW_FUNCTION]: ['args'],
35
+ [WITH_CLAUSE]: ['query']
36
+ };
37
+ //# sourceMappingURL=recurse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recurse.js","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,KAAK,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,MAAM,EACN,IAAI,EACJ,MAAM,EACN,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAA6B;IAC/C,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IACxC,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACtC,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACpC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IAClC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IAChB,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;IACnB,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;IACvB,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC;IAC3B,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC;IACtB,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC;IACrB,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC;IACvB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;IACpB,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACjC,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC;IAC/B,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1C,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;IACpB,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;IAClB,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC;IAC/B,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC;IACzB,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5H,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACxC,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC;IAC1B,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;IAClB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACzB,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC;IACxB,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;IAChD,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC;IAC9B,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC;IAC1B,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC;IAC3B,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC;CACzB,CAAC"}