@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,27 @@
1
+ import { SQLNode } from './node.js';
2
+ export type SampleMethod = 'reservoir' | 'bernoulli' | 'system';
3
+ export declare class SampleClauseNode extends SQLNode {
4
+ /** The sample size as either a row count or percentage. */
5
+ readonly size: number;
6
+ /** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
7
+ readonly perc: boolean;
8
+ /** The sampling method. */
9
+ readonly method?: SampleMethod;
10
+ /** The random seed. */
11
+ readonly seed?: number;
12
+ /**
13
+ * Instantiate a sample clause node.
14
+ * @param size The sample size as either a row count or percentage.
15
+ * @param perc Flag indicating if the sampling unit is
16
+ * rows (`false`) or a percentage (`true`).
17
+ * @param method The sampling method. If unspecified,
18
+ * a default method is applied based on the sampling unit.
19
+ * @param seed The random seed.
20
+ */
21
+ constructor(size: number, perc?: boolean, method?: SampleMethod, seed?: number);
22
+ /**
23
+ * Generate a SQL query string for this node.
24
+ */
25
+ toString(): string;
26
+ }
27
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhE,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,OAAe,EACrB,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,MAAM;IASf;;OAEG;IACH,QAAQ;CAMT"}
@@ -0,0 +1,38 @@
1
+ import { SAMPLE_CLAUSE } from '../constants.js';
2
+ import { SQLNode } from './node.js';
3
+ export class SampleClauseNode extends SQLNode {
4
+ /** The sample size as either a row count or percentage. */
5
+ size;
6
+ /** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
7
+ perc;
8
+ /** The sampling method. */
9
+ method;
10
+ /** The random seed. */
11
+ seed;
12
+ /**
13
+ * Instantiate a sample clause node.
14
+ * @param size The sample size as either a row count or percentage.
15
+ * @param perc Flag indicating if the sampling unit is
16
+ * rows (`false`) or a percentage (`true`).
17
+ * @param method The sampling method. If unspecified,
18
+ * a default method is applied based on the sampling unit.
19
+ * @param seed The random seed.
20
+ */
21
+ constructor(size, perc = false, method, seed) {
22
+ super(SAMPLE_CLAUSE);
23
+ this.size = size;
24
+ this.perc = perc;
25
+ this.method = method;
26
+ this.seed = seed;
27
+ }
28
+ /**
29
+ * Generate a SQL query string for this node.
30
+ */
31
+ toString() {
32
+ const { size, perc, method, seed } = this;
33
+ const m = method ? `${method} ` : '';
34
+ const s = seed != null ? ` REPEATABLE (${seed})` : '';
35
+ return `${m}(${size}${perc ? '%' : ' ROWS'})${s}`;
36
+ }
37
+ }
38
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAClD,IAAI,CAAS;IACtB,0EAA0E;IACjE,IAAI,CAAU;IACvB,2BAA2B;IAClB,MAAM,CAAgB;IAC/B,uBAAuB;IACd,IAAI,CAAU;IAEvB;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,OAAgB,KAAK,EACrB,MAAqB,EACrB,IAAa;QAEb,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { ExprNode } from './node.js';
2
+ import { SQLNode } from './node.js';
3
+ export declare class SelectClauseNode extends SQLNode {
4
+ /** The select expression. */
5
+ readonly expr: ExprNode;
6
+ /** The output name. */
7
+ readonly alias: string;
8
+ /**
9
+ * Instantiate a select node.
10
+ * @param expr The select expression.
11
+ * @param alias The output name.
12
+ */
13
+ constructor(expr: ExprNode, alias: string);
14
+ /**
15
+ * Generate a SQL query string for this node.
16
+ */
17
+ toString(): string;
18
+ }
19
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/ast/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;gBACS,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;IAMzC;;OAEG;IACH,QAAQ;CAMT"}
@@ -0,0 +1,35 @@
1
+ import { SELECT_CLAUSE } from '../constants.js';
2
+ import { quoteIdentifier } from '../util/string.js';
3
+ import { ColumnRefNode } from './column-ref.js';
4
+ import { SQLNode } from './node.js';
5
+ export class SelectClauseNode extends SQLNode {
6
+ /** The select expression. */
7
+ expr;
8
+ /** The output name. */
9
+ alias;
10
+ /**
11
+ * Instantiate a select node.
12
+ * @param expr The select expression.
13
+ * @param alias The output name.
14
+ */
15
+ constructor(expr, alias) {
16
+ super(SELECT_CLAUSE);
17
+ this.expr = expr;
18
+ this.alias = alias;
19
+ }
20
+ /**
21
+ * Generate a SQL query string for this node.
22
+ */
23
+ toString() {
24
+ const { expr, alias } = this;
25
+ return !alias || isColumnRefFor(expr, alias)
26
+ ? `${expr}`
27
+ : `${expr} AS ${quoteIdentifier(alias)}`;
28
+ }
29
+ }
30
+ function isColumnRefFor(expr, name) {
31
+ return expr instanceof ColumnRefNode
32
+ && expr.table == null
33
+ && expr.column === name;
34
+ }
35
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/ast/select.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAC3C,6BAA6B;IACpB,IAAI,CAAW;IACxB,uBAAuB;IACd,KAAK,CAAS;IAEvB;;;;OAIG;IACH,YAAY,IAAc,EAAE,KAAa;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC7B,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;YAC1C,CAAC,CAAC,GAAG,IAAI,EAAE;YACX,CAAC,CAAC,GAAG,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7C,CAAC;CACF;AAED,SAAS,cAAc,CAAC,IAAa,EAAE,IAAY;IACjD,OAAO,IAAI,YAAY,aAAa;WAC/B,IAAI,CAAC,KAAK,IAAI,IAAI;WAClB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Query } from './query.js';
2
+ import { ExprNode } from './node.js';
3
+ export declare class ScalarSubqueryNode extends ExprNode {
4
+ /** The scalar subquery. */
5
+ readonly subquery: Query;
6
+ /**
7
+ * Instantiate a scalar subquery node.
8
+ * @param subquery The scalar subquery.
9
+ */
10
+ constructor(subquery: Query);
11
+ /**
12
+ * Generate a SQL query string for this node.
13
+ */
14
+ toString(): string;
15
+ }
16
+ //# sourceMappingURL=subquery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subquery.d.ts","sourceRoot":"","sources":["../../../src/ast/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAEzB;;;OAGG;gBACS,QAAQ,EAAE,KAAK;IAK3B;;OAEG;IACH,QAAQ;CAGT"}
@@ -0,0 +1,21 @@
1
+ import { SCALAR_SUBQUERY } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+ export class ScalarSubqueryNode extends ExprNode {
4
+ /** The scalar subquery. */
5
+ subquery;
6
+ /**
7
+ * Instantiate a scalar subquery node.
8
+ * @param subquery The scalar subquery.
9
+ */
10
+ constructor(subquery) {
11
+ super(SCALAR_SUBQUERY);
12
+ this.subquery = subquery;
13
+ }
14
+ /**
15
+ * Generate a SQL query string for this node.
16
+ */
17
+ toString() {
18
+ return `(${this.subquery})`;
19
+ }
20
+ }
21
+ //# sourceMappingURL=subquery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../../src/ast/subquery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,2BAA2B;IAClB,QAAQ,CAAQ;IAEzB;;;OAGG;IACH,YAAY,QAAe;QACzB,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { ExprNode } from './node.js';
2
+ /**
3
+ * Check if a value is a table reference node.
4
+ * @param value The value to check.
5
+ */
6
+ export declare function isTableRef(value: unknown): value is TableRefNode;
7
+ export declare class TableRefNode extends ExprNode {
8
+ /** The table name, including namespaces. */
9
+ readonly table: string[];
10
+ /**
11
+ * Instantiate a table reference node.
12
+ * @param table The table name.
13
+ */
14
+ constructor(table: string | string[]);
15
+ /**
16
+ * The table name without database or schema namespaces.
17
+ */
18
+ get name(): string;
19
+ /**
20
+ * Generate a SQL query string for this node.
21
+ */
22
+ toString(): string;
23
+ }
24
+ //# sourceMappingURL=table-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-ref.d.ts","sourceRoot":"","sources":["../../../src/ast/table-ref.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEhE;AAED,qBAAa,YAAa,SAAQ,QAAQ;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;gBACS,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAKpC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,QAAQ;CAGT"}
@@ -0,0 +1,35 @@
1
+ import { TABLE_REF } from '../constants.js';
2
+ import { quoteIdentifier } from '../util/string.js';
3
+ import { ExprNode } from './node.js';
4
+ /**
5
+ * Check if a value is a table reference node.
6
+ * @param value The value to check.
7
+ */
8
+ export function isTableRef(value) {
9
+ return value instanceof TableRefNode;
10
+ }
11
+ export class TableRefNode extends ExprNode {
12
+ /** The table name, including namespaces. */
13
+ table;
14
+ /**
15
+ * Instantiate a table reference node.
16
+ * @param table The table name.
17
+ */
18
+ constructor(table) {
19
+ super(TABLE_REF);
20
+ this.table = [table].flat();
21
+ }
22
+ /**
23
+ * The table name without database or schema namespaces.
24
+ */
25
+ get name() {
26
+ return this.table[this.table.length - 1];
27
+ }
28
+ /**
29
+ * Generate a SQL query string for this node.
30
+ */
31
+ toString() {
32
+ return this.table.map(t => quoteIdentifier(t)).join('.');
33
+ }
34
+ }
35
+ //# sourceMappingURL=table-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-ref.js","sourceRoot":"","sources":["../../../src/ast/table-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,4CAA4C;IACnC,KAAK,CAAW;IAEzB;;;OAGG;IACH,YAAY,KAAwB;QAClC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ import { ExprNode } from './node.js';
2
+ declare class AbstractUnaryOpNode extends ExprNode {
3
+ /** The operator type. */
4
+ readonly op: string;
5
+ /** The input expression. */
6
+ readonly expr: ExprNode;
7
+ /**
8
+ * Instantiate an abstract unary operator node.
9
+ * @param type The node type.
10
+ * @param op The operator type.
11
+ * @param expr The input expression.
12
+ */
13
+ constructor(type: string, op: string, expr: ExprNode);
14
+ }
15
+ export declare class UnaryOpNode extends AbstractUnaryOpNode {
16
+ /**
17
+ * Instantiate a unary operator node.
18
+ * @param op The operator type.
19
+ * @param expr The input expression.
20
+ */
21
+ constructor(op: string, expr: ExprNode);
22
+ /**
23
+ * Generate a SQL query string for this node.
24
+ */
25
+ toString(): string;
26
+ }
27
+ export declare class UnaryPostfixOpNode extends AbstractUnaryOpNode {
28
+ /**
29
+ * Instantiate a unary operator node.
30
+ * @param op The operator type.
31
+ * @param expr The input expression.
32
+ */
33
+ constructor(op: string, expr: ExprNode);
34
+ /**
35
+ * Generate a SQL query string for this node.
36
+ */
37
+ toString(): string;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=unary-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unary-op.d.ts","sourceRoot":"","sources":["../../../src/ast/unary-op.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,cAAM,mBAAoB,SAAQ,QAAQ;IACxC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB;;;;;OAKG;gBACS,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;CAKrD;AAED,qBAAa,WAAY,SAAQ,mBAAmB;IAClD;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;IAItC;;OAEG;IACH,QAAQ;CAGT;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;IAItC;;OAEG;IACH,QAAQ;CAGT"}
@@ -0,0 +1,52 @@
1
+ import { UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+ class AbstractUnaryOpNode extends ExprNode {
4
+ /** The operator type. */
5
+ op;
6
+ /** The input expression. */
7
+ expr;
8
+ /**
9
+ * Instantiate an abstract unary operator node.
10
+ * @param type The node type.
11
+ * @param op The operator type.
12
+ * @param expr The input expression.
13
+ */
14
+ constructor(type, op, expr) {
15
+ super(type);
16
+ this.op = op;
17
+ this.expr = expr;
18
+ }
19
+ }
20
+ export class UnaryOpNode extends AbstractUnaryOpNode {
21
+ /**
22
+ * Instantiate a unary operator node.
23
+ * @param op The operator type.
24
+ * @param expr The input expression.
25
+ */
26
+ constructor(op, expr) {
27
+ super(UNARY_OPERATOR, op, expr);
28
+ }
29
+ /**
30
+ * Generate a SQL query string for this node.
31
+ */
32
+ toString() {
33
+ return `(${this.op} ${this.expr})`;
34
+ }
35
+ }
36
+ export class UnaryPostfixOpNode extends AbstractUnaryOpNode {
37
+ /**
38
+ * Instantiate a unary operator node.
39
+ * @param op The operator type.
40
+ * @param expr The input expression.
41
+ */
42
+ constructor(op, expr) {
43
+ super(UNARY_POSTFIX_OPERATOR, op, expr);
44
+ }
45
+ /**
46
+ * Generate a SQL query string for this node.
47
+ */
48
+ toString() {
49
+ return `(${this.expr} ${this.op})`;
50
+ }
51
+ }
52
+ //# sourceMappingURL=unary-op.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unary-op.js","sourceRoot":"","sources":["../../../src/ast/unary-op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,mBAAoB,SAAQ,QAAQ;IACxC,yBAAyB;IAChB,EAAE,CAAS;IACpB,4BAA4B;IACnB,IAAI,CAAW;IAExB;;;;;OAKG;IACH,YAAY,IAAY,EAAE,EAAU,EAAE,IAAc;QAClD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,mBAAmB;IAClD;;;;OAIG;IACH,YAAY,EAAU,EAAE,IAAc;QACpC,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,mBAAmB;IACzD;;;;OAIG;IACH,YAAY,EAAU,EAAE,IAAc;QACpC,KAAK,CAAC,sBAAsB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { ExprNode } from './node.js';
2
+ export declare class UnnestNode extends ExprNode {
3
+ /** An expression that resolves to a list or a struct */
4
+ readonly expr: ExprNode;
5
+ readonly recursive: boolean;
6
+ readonly maxDepth: number;
7
+ /**
8
+ * Instantiate an Unnest node.
9
+ * @param expr
10
+ * @param recursive
11
+ * @param maxDepth
12
+ */
13
+ constructor(expr: ExprNode, recursive?: boolean, maxDepth?: number);
14
+ /**
15
+ * Generate a SQL query string for this node.
16
+ */
17
+ toString(): string;
18
+ }
19
+ //# sourceMappingURL=unnest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unnest.d.ts","sourceRoot":"","sources":["../../../src/ast/unnest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,UAAW,SAAQ,QAAQ;IACtC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;gBACS,IAAI,EAAE,QAAQ,EAAE,SAAS,UAAQ,EAAE,QAAQ,SAAI;IAO3D;;OAEG;IACH,QAAQ;CAKT"}
@@ -0,0 +1,29 @@
1
+ import { UNNEST } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+ export class UnnestNode extends ExprNode {
4
+ /** An expression that resolves to a list or a struct */
5
+ expr;
6
+ recursive;
7
+ maxDepth;
8
+ /**
9
+ * Instantiate an Unnest node.
10
+ * @param expr
11
+ * @param recursive
12
+ * @param maxDepth
13
+ */
14
+ constructor(expr, recursive = false, maxDepth = 0) {
15
+ super(UNNEST);
16
+ this.expr = expr;
17
+ this.recursive = recursive;
18
+ this.maxDepth = maxDepth;
19
+ }
20
+ /**
21
+ * Generate a SQL query string for this node.
22
+ */
23
+ toString() {
24
+ const recursive = this.recursive ? ', recursive := true' : '';
25
+ const maxDepth = this.maxDepth > 0 ? `, max_depth := ${this.maxDepth}` : '';
26
+ return `UNNEST(${this.expr}${recursive}${maxDepth})`;
27
+ }
28
+ }
29
+ //# sourceMappingURL=unnest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unnest.js","sourceRoot":"","sources":["../../../src/ast/unnest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,wDAAwD;IAC/C,IAAI,CAAW;IACf,SAAS,CAAU;IACnB,QAAQ,CAAS;IAE1B;;;;;OAKG;IACH,YAAY,IAAc,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC;QACzD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,UAAU,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { ExprNode } from './node.js';
2
+ export declare class VerbatimNode extends ExprNode {
3
+ /** The verbatim content to include. */
4
+ readonly value: string;
5
+ /** A type hint for analyzing verbatim content. */
6
+ readonly hint?: string;
7
+ /**
8
+ * Instantiate a raw node with verbatim content.
9
+ * @param value The verbatim content to include.
10
+ * @param hint A type hint for analyzing verbatim content.
11
+ */
12
+ constructor(value: string, hint?: string);
13
+ /**
14
+ * Generate a SQL query string for this node.
15
+ */
16
+ toString(): string;
17
+ }
18
+ //# sourceMappingURL=verbatim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbatim.d.ts","sourceRoot":"","sources":["../../../src/ast/verbatim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,YAAa,SAAQ,QAAQ;IACxC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;gBACS,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAMxC;;OAEG;IACH,QAAQ;CAGT"}
@@ -0,0 +1,25 @@
1
+ import { VERBATIM } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+ export class VerbatimNode extends ExprNode {
4
+ /** The verbatim content to include. */
5
+ value;
6
+ /** A type hint for analyzing verbatim content. */
7
+ hint;
8
+ /**
9
+ * Instantiate a raw node with verbatim content.
10
+ * @param value The verbatim content to include.
11
+ * @param hint A type hint for analyzing verbatim content.
12
+ */
13
+ constructor(value, hint) {
14
+ super(VERBATIM);
15
+ this.value = value;
16
+ this.hint = hint;
17
+ }
18
+ /**
19
+ * Generate a SQL query string for this node.
20
+ */
21
+ toString() {
22
+ return this.value;
23
+ }
24
+ }
25
+ //# sourceMappingURL=verbatim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbatim.js","sourceRoot":"","sources":["../../../src/ast/verbatim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,uCAAuC;IAC9B,KAAK,CAAS;IACvB,kDAAkD;IACzC,IAAI,CAAU;IAEvB;;;;OAIG;IACH,YAAY,KAAa,EAAE,IAAa;QACtC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import { type ParamLike } from '../types.js';
2
+ import { type ExprNode, SQLNode } from './node.js';
3
+ import { ParamNode } from './param.js';
4
+ export type FrameValue = ExprNode | number | null;
5
+ export type FrameExtent = [FrameValue, FrameValue] | ParamLike;
6
+ export type FrameScope = 'PRECEDING' | 'FOLLOWING' | 'CURRENT ROW';
7
+ export type FrameType = 'ROWS' | 'RANGE' | 'GROUPS';
8
+ export type FrameExclude = 'NO OTHERS' | 'CURRENT ROW' | 'TIES' | 'GROUP';
9
+ export declare const ROWS = "ROWS";
10
+ export declare const RANGE = "RANGE";
11
+ export declare const GROUPS = "GROUPS";
12
+ export declare const PRECEDING = "PRECEDING";
13
+ export declare const FOLLOWING = "FOLLOWING";
14
+ export declare const CURRENT_ROW = "CURRENT ROW";
15
+ export declare const UNBOUNDED = "UNBOUNDED";
16
+ export declare class WindowFrameNode extends SQLNode {
17
+ /** The frame type, one of ROWS, RANGE, or GROUPS. */
18
+ readonly frameType: FrameType;
19
+ /** The window frame extent. */
20
+ readonly extent: [unknown, unknown] | ParamNode;
21
+ /** The window frame exclusion criteria. */
22
+ readonly exclude?: FrameExclude;
23
+ /**
24
+ * Instantiate a window frame definition node.
25
+ * @param frameType The frame type, one of ROWS, RANGE, or GROUPS.
26
+ * @param extent The window frame extent.
27
+ * @param exclude The window frame exclusion criteria.
28
+ */
29
+ constructor(frameType: FrameType, extent: FrameExtent, exclude?: FrameExclude);
30
+ /**
31
+ * Generate a SQL query string for this node.
32
+ */
33
+ toString(): string;
34
+ }
35
+ export declare class WindowFrameExprNode extends SQLNode {
36
+ /** The window frame extent. */
37
+ readonly scope: FrameScope;
38
+ /**
39
+ * The window frame extent expression. This value should be null
40
+ * in the case of current row or unbounded extent values.
41
+ */
42
+ readonly expr: FrameValue | null;
43
+ /**
44
+ * Instantiate a window frame definition node.
45
+ * @param scope The frame scope, one of PRECEDING, FOLLOWING, or CURRENT ROW.
46
+ * @param expr The window frame extent expression.
47
+ */
48
+ constructor(scope: FrameScope, expr?: FrameValue | null);
49
+ /**
50
+ * Generate a SQL query string for this node.
51
+ */
52
+ toString(): string;
53
+ }
54
+ //# sourceMappingURL=window-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-frame.d.ts","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,QAAQ,EAAU,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAI,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1E,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEhC;;;;;OAKG;gBAED,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,YAAY;IAQxB;;OAEG;IACH,QAAQ;CAST;AAUD,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;gBACS,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,UAAU,GAAG,IAAW;IAM7D;;OAEG;IACH,QAAQ;CAMT"}
@@ -0,0 +1,79 @@
1
+ import { WINDOW_EXTENT_EXPR, WINDOW_FRAME } from '../constants.js';
2
+ import { isParamLike } from '../util/type-check.js';
3
+ import { isNode, SQLNode } from './node.js';
4
+ import { ParamNode } from './param.js';
5
+ export const ROWS = 'ROWS';
6
+ export const RANGE = 'RANGE';
7
+ export const GROUPS = 'GROUPS';
8
+ export const PRECEDING = 'PRECEDING';
9
+ export const FOLLOWING = 'FOLLOWING';
10
+ export const CURRENT_ROW = 'CURRENT ROW';
11
+ export const UNBOUNDED = 'UNBOUNDED';
12
+ export class WindowFrameNode extends SQLNode {
13
+ /** The frame type, one of ROWS, RANGE, or GROUPS. */
14
+ frameType;
15
+ /** The window frame extent. */
16
+ extent;
17
+ /** The window frame exclusion criteria. */
18
+ exclude;
19
+ /**
20
+ * Instantiate a window frame definition node.
21
+ * @param frameType The frame type, one of ROWS, RANGE, or GROUPS.
22
+ * @param extent The window frame extent.
23
+ * @param exclude The window frame exclusion criteria.
24
+ */
25
+ constructor(frameType, extent, exclude) {
26
+ super(WINDOW_FRAME);
27
+ this.frameType = frameType;
28
+ this.extent = isParamLike(extent) ? new ParamNode(extent) : extent;
29
+ this.exclude = exclude;
30
+ }
31
+ /**
32
+ * Generate a SQL query string for this node.
33
+ */
34
+ toString() {
35
+ const { frameType, exclude, extent } = this;
36
+ const [prev, next] = isNode(extent)
37
+ ? extent.value
38
+ : extent;
39
+ const a = asFrameExpr(prev, PRECEDING);
40
+ const b = asFrameExpr(next, FOLLOWING);
41
+ return `${frameType} BETWEEN ${a} AND ${b}${exclude ? ` ${exclude}` : ''}`;
42
+ }
43
+ }
44
+ function asFrameExpr(value, scope) {
45
+ return value instanceof WindowFrameExprNode ? value
46
+ : value != null && typeof value !== 'number' ? `${value} ${scope}`
47
+ : value === 0 ? CURRENT_ROW
48
+ : !(value && Number.isFinite(value)) ? `${UNBOUNDED} ${scope}`
49
+ : `${Math.abs(value)} ${scope}`;
50
+ }
51
+ export class WindowFrameExprNode extends SQLNode {
52
+ /** The window frame extent. */
53
+ scope;
54
+ /**
55
+ * The window frame extent expression. This value should be null
56
+ * in the case of current row or unbounded extent values.
57
+ */
58
+ expr;
59
+ /**
60
+ * Instantiate a window frame definition node.
61
+ * @param scope The frame scope, one of PRECEDING, FOLLOWING, or CURRENT ROW.
62
+ * @param expr The window frame extent expression.
63
+ */
64
+ constructor(scope, expr = null) {
65
+ super(WINDOW_EXTENT_EXPR);
66
+ this.scope = scope;
67
+ this.expr = expr;
68
+ }
69
+ /**
70
+ * Generate a SQL query string for this node.
71
+ */
72
+ toString() {
73
+ const { scope, expr } = this;
74
+ return scope === CURRENT_ROW
75
+ ? scope
76
+ : `${expr ?? UNBOUNDED} ${scope}`;
77
+ }
78
+ }
79
+ //# sourceMappingURL=window-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-frame.js","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"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"}