@uwdata/mosaic-sql 0.17.0 → 0.18.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 (409) 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/literal.d.ts +16 -0
  56. package/dist/src/ast/literal.d.ts.map +1 -0
  57. package/dist/src/ast/literal.js +53 -0
  58. package/dist/src/ast/literal.js.map +1 -0
  59. package/dist/src/ast/logical-op.d.ts +32 -0
  60. package/dist/src/ast/logical-op.d.ts.map +1 -0
  61. package/dist/src/ast/logical-op.js +46 -0
  62. package/dist/src/ast/logical-op.js.map +1 -0
  63. package/dist/src/ast/node.d.ts +25 -0
  64. package/dist/src/ast/node.d.ts.map +1 -0
  65. package/dist/src/ast/node.js +36 -0
  66. package/dist/src/ast/node.js.map +1 -0
  67. package/dist/src/ast/order-by.d.ts +21 -0
  68. package/dist/src/ast/order-by.d.ts.map +1 -0
  69. package/dist/src/ast/order-by.js +36 -0
  70. package/dist/src/ast/order-by.js.map +1 -0
  71. package/dist/src/ast/param.d.ts +20 -0
  72. package/dist/src/ast/param.d.ts.map +1 -0
  73. package/dist/src/ast/param.js +28 -0
  74. package/dist/src/ast/param.js.map +1 -0
  75. package/dist/src/ast/query.d.ts +294 -0
  76. package/dist/src/ast/query.d.ts.map +1 -0
  77. package/dist/src/ast/query.js +584 -0
  78. package/dist/src/ast/query.js.map +1 -0
  79. package/dist/src/ast/sample.d.ts +27 -0
  80. package/dist/src/ast/sample.d.ts.map +1 -0
  81. package/dist/src/ast/sample.js +38 -0
  82. package/dist/src/ast/sample.js.map +1 -0
  83. package/dist/src/ast/select.d.ts +19 -0
  84. package/dist/src/ast/select.d.ts.map +1 -0
  85. package/dist/src/ast/select.js +35 -0
  86. package/dist/src/ast/select.js.map +1 -0
  87. package/dist/src/ast/subquery.d.ts +16 -0
  88. package/dist/src/ast/subquery.d.ts.map +1 -0
  89. package/dist/src/ast/subquery.js +21 -0
  90. package/dist/src/ast/subquery.js.map +1 -0
  91. package/dist/src/ast/table-ref.d.ts +24 -0
  92. package/dist/src/ast/table-ref.d.ts.map +1 -0
  93. package/dist/src/ast/table-ref.js +35 -0
  94. package/dist/src/ast/table-ref.js.map +1 -0
  95. package/dist/src/ast/unary-op.d.ts +40 -0
  96. package/dist/src/ast/unary-op.d.ts.map +1 -0
  97. package/dist/src/ast/unary-op.js +52 -0
  98. package/dist/src/ast/unary-op.js.map +1 -0
  99. package/dist/src/ast/verbatim.d.ts +18 -0
  100. package/dist/src/ast/verbatim.d.ts.map +1 -0
  101. package/dist/src/ast/verbatim.js +25 -0
  102. package/dist/src/ast/verbatim.js.map +1 -0
  103. package/dist/src/ast/window-frame.d.ts +54 -0
  104. package/dist/src/ast/window-frame.d.ts.map +1 -0
  105. package/dist/src/ast/window-frame.js +79 -0
  106. package/dist/src/ast/window-frame.js.map +1 -0
  107. package/dist/src/ast/window.d.ts +128 -0
  108. package/dist/src/ast/window.d.ts.map +1 -0
  109. package/dist/src/ast/window.js +194 -0
  110. package/dist/src/ast/window.js.map +1 -0
  111. package/dist/src/ast/with.d.ts +25 -0
  112. package/dist/src/ast/with.d.ts.map +1 -0
  113. package/dist/src/ast/with.js +36 -0
  114. package/dist/src/ast/with.js.map +1 -0
  115. package/dist/src/constants.d.ts +38 -0
  116. package/dist/src/constants.d.ts.map +1 -0
  117. package/dist/src/constants.js +38 -0
  118. package/dist/src/constants.js.map +1 -0
  119. package/dist/src/functions/aggregate.d.ts +236 -0
  120. package/dist/src/functions/aggregate.d.ts.map +1 -0
  121. package/dist/src/functions/aggregate.js +308 -0
  122. package/dist/src/functions/aggregate.js.map +1 -0
  123. package/dist/src/functions/case.d.ts +13 -0
  124. package/dist/src/functions/case.d.ts.map +1 -0
  125. package/dist/src/functions/case.js +17 -0
  126. package/dist/src/functions/case.js.map +1 -0
  127. package/dist/src/functions/cast.d.ts +23 -0
  128. package/dist/src/functions/cast.d.ts.map +1 -0
  129. package/dist/src/functions/cast.js +32 -0
  130. package/dist/src/functions/cast.js.map +1 -0
  131. package/dist/src/functions/collate.d.ts +10 -0
  132. package/dist/src/functions/collate.d.ts.map +1 -0
  133. package/dist/src/functions/collate.js +12 -0
  134. package/dist/src/functions/collate.js.map +1 -0
  135. package/dist/src/functions/column.d.ts +10 -0
  136. package/dist/src/functions/column.d.ts.map +1 -0
  137. package/dist/src/functions/column.js +17 -0
  138. package/dist/src/functions/column.js.map +1 -0
  139. package/dist/src/functions/cte.d.ts +13 -0
  140. package/dist/src/functions/cte.d.ts.map +1 -0
  141. package/dist/src/functions/cte.js +14 -0
  142. package/dist/src/functions/cte.js.map +1 -0
  143. package/dist/src/functions/datetime.d.ts +32 -0
  144. package/dist/src/functions/datetime.d.ts.map +1 -0
  145. package/dist/src/functions/datetime.js +45 -0
  146. package/dist/src/functions/datetime.js.map +1 -0
  147. package/dist/src/functions/interval.d.ts +48 -0
  148. package/dist/src/functions/interval.d.ts.map +1 -0
  149. package/dist/src/functions/interval.js +66 -0
  150. package/dist/src/functions/interval.js.map +1 -0
  151. package/dist/src/functions/literal.d.ts +16 -0
  152. package/dist/src/functions/literal.d.ts.map +1 -0
  153. package/dist/src/functions/literal.js +20 -0
  154. package/dist/src/functions/literal.js.map +1 -0
  155. package/dist/src/functions/numeric.d.ts +80 -0
  156. package/dist/src/functions/numeric.d.ts.map +1 -0
  157. package/dist/src/functions/numeric.js +110 -0
  158. package/dist/src/functions/numeric.js.map +1 -0
  159. package/dist/src/functions/operators.d.ts +169 -0
  160. package/dist/src/functions/operators.d.ts.map +1 -0
  161. package/dist/src/functions/operators.js +235 -0
  162. package/dist/src/functions/operators.js.map +1 -0
  163. package/dist/src/functions/order-by.d.ts +15 -0
  164. package/dist/src/functions/order-by.d.ts.map +1 -0
  165. package/dist/src/functions/order-by.js +19 -0
  166. package/dist/src/functions/order-by.js.map +1 -0
  167. package/dist/src/functions/spatial.d.ts +32 -0
  168. package/dist/src/functions/spatial.d.ts.map +1 -0
  169. package/dist/src/functions/spatial.js +44 -0
  170. package/dist/src/functions/spatial.js.map +1 -0
  171. package/dist/src/functions/sql-template-tag.d.ts +13 -0
  172. package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
  173. package/dist/src/functions/sql-template-tag.js +44 -0
  174. package/dist/src/functions/sql-template-tag.js.map +1 -0
  175. package/dist/src/functions/string.d.ts +49 -0
  176. package/dist/src/functions/string.d.ts.map +1 -0
  177. package/dist/src/functions/string.js +67 -0
  178. package/dist/src/functions/string.js.map +1 -0
  179. package/dist/src/functions/table-ref.d.ts +10 -0
  180. package/dist/src/functions/table-ref.d.ts.map +1 -0
  181. package/dist/src/functions/table-ref.js +13 -0
  182. package/dist/src/functions/table-ref.js.map +1 -0
  183. package/dist/src/functions/util.d.ts +7 -0
  184. package/dist/src/functions/util.d.ts.map +1 -0
  185. package/dist/src/functions/util.js +9 -0
  186. package/dist/src/functions/util.js.map +1 -0
  187. package/dist/src/functions/window-frame.d.ts +41 -0
  188. package/dist/src/functions/window-frame.d.ts.map +1 -0
  189. package/dist/src/functions/window-frame.js +52 -0
  190. package/dist/src/functions/window-frame.js.map +1 -0
  191. package/dist/src/functions/window.d.ts +74 -0
  192. package/dist/src/functions/window.d.ts.map +1 -0
  193. package/dist/src/functions/window.js +96 -0
  194. package/dist/src/functions/window.js.map +1 -0
  195. package/dist/src/index.d.ts +69 -0
  196. package/dist/src/index.d.ts.map +1 -0
  197. package/{src → dist/src}/index.js +4 -8
  198. package/dist/src/index.js.map +1 -0
  199. package/dist/src/load/create.d.ts +10 -0
  200. package/dist/src/load/create.d.ts.map +1 -0
  201. package/dist/src/load/create.js +14 -0
  202. package/dist/src/load/create.js.map +1 -0
  203. package/dist/src/load/extension.d.ts +2 -0
  204. package/dist/src/load/extension.d.ts.map +1 -0
  205. package/dist/src/load/extension.js +4 -0
  206. package/dist/src/load/extension.js.map +1 -0
  207. package/dist/src/load/load.d.ts +18 -0
  208. package/dist/src/load/load.d.ts.map +1 -0
  209. package/dist/src/load/load.js +80 -0
  210. package/dist/src/load/load.js.map +1 -0
  211. package/dist/src/load/sql-from.d.ts +14 -0
  212. package/dist/src/load/sql-from.d.ts.map +1 -0
  213. package/dist/src/load/sql-from.js +29 -0
  214. package/dist/src/load/sql-from.js.map +1 -0
  215. package/dist/src/transforms/bin-1d.d.ts +16 -0
  216. package/dist/src/transforms/bin-1d.d.ts.map +1 -0
  217. package/dist/src/transforms/bin-1d.js +21 -0
  218. package/dist/src/transforms/bin-1d.js.map +1 -0
  219. package/dist/src/transforms/bin-2d.d.ts +19 -0
  220. package/dist/src/transforms/bin-2d.d.ts.map +1 -0
  221. package/dist/src/transforms/bin-2d.js +27 -0
  222. package/dist/src/transforms/bin-2d.js.map +1 -0
  223. package/dist/src/transforms/bin-date.d.ts +31 -0
  224. package/dist/src/transforms/bin-date.d.ts.map +1 -0
  225. package/dist/src/transforms/bin-date.js +20 -0
  226. package/dist/src/transforms/bin-date.js.map +1 -0
  227. package/dist/src/transforms/bin-histogram.d.ts +37 -0
  228. package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
  229. package/dist/src/transforms/bin-histogram.js +32 -0
  230. package/dist/src/transforms/bin-histogram.js.map +1 -0
  231. package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
  232. package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
  233. package/dist/src/transforms/bin-linear-1d.js +25 -0
  234. package/dist/src/transforms/bin-linear-1d.js.map +1 -0
  235. package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
  236. package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
  237. package/dist/src/transforms/bin-linear-2d.js +49 -0
  238. package/dist/src/transforms/bin-linear-2d.js.map +1 -0
  239. package/dist/src/transforms/filter-query.d.ts +12 -0
  240. package/dist/src/transforms/filter-query.d.ts.map +1 -0
  241. package/dist/src/transforms/filter-query.js +39 -0
  242. package/dist/src/transforms/filter-query.js.map +1 -0
  243. package/dist/src/transforms/line-density.d.ts +24 -0
  244. package/dist/src/transforms/line-density.d.ts.map +1 -0
  245. package/dist/src/transforms/line-density.js +98 -0
  246. package/dist/src/transforms/line-density.js.map +1 -0
  247. package/dist/src/transforms/m4.d.ts +19 -0
  248. package/dist/src/transforms/m4.d.ts.map +1 -0
  249. package/dist/src/transforms/m4.js +38 -0
  250. package/dist/src/transforms/m4.js.map +1 -0
  251. package/dist/src/transforms/scales.d.ts +30 -0
  252. package/dist/src/transforms/scales.d.ts.map +1 -0
  253. package/dist/src/transforms/scales.js +103 -0
  254. package/dist/src/transforms/scales.js.map +1 -0
  255. package/dist/src/transforms/util/bin-step.d.ts +50 -0
  256. package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
  257. package/dist/src/transforms/util/bin-step.js +53 -0
  258. package/dist/src/transforms/util/bin-step.js.map +1 -0
  259. package/dist/src/transforms/util/time-interval.d.ts +14 -0
  260. package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
  261. package/dist/src/transforms/util/time-interval.js +88 -0
  262. package/dist/src/transforms/util/time-interval.js.map +1 -0
  263. package/dist/src/types.d.ts +49 -0
  264. package/dist/src/types.d.ts.map +1 -0
  265. package/dist/src/types.js +2 -0
  266. package/dist/src/types.js.map +1 -0
  267. package/dist/src/util/ast.d.ts +62 -0
  268. package/dist/src/util/ast.d.ts.map +1 -0
  269. package/{src → dist/src}/util/ast.js +36 -41
  270. package/dist/src/util/ast.js.map +1 -0
  271. package/dist/src/util/function.d.ts +56 -0
  272. package/dist/src/util/function.d.ts.map +1 -0
  273. package/dist/src/util/function.js +73 -0
  274. package/dist/src/util/function.js.map +1 -0
  275. package/dist/src/util/identity.d.ts +6 -0
  276. package/dist/src/util/identity.d.ts.map +1 -0
  277. package/dist/src/util/identity.js +8 -0
  278. package/dist/src/util/identity.js.map +1 -0
  279. package/dist/src/util/string.d.ts +4 -0
  280. package/dist/src/util/string.d.ts.map +1 -0
  281. package/dist/src/util/string.js +14 -0
  282. package/dist/src/util/string.js.map +1 -0
  283. package/dist/src/util/type-check.d.ts +17 -0
  284. package/dist/src/util/type-check.d.ts.map +1 -0
  285. package/dist/src/util/type-check.js +28 -0
  286. package/dist/src/util/type-check.js.map +1 -0
  287. package/dist/src/visit/clone.d.ts +7 -0
  288. package/dist/src/visit/clone.d.ts.map +1 -0
  289. package/dist/src/visit/clone.js +52 -0
  290. package/dist/src/visit/clone.js.map +1 -0
  291. package/dist/src/visit/recurse.d.ts +2 -0
  292. package/dist/src/visit/recurse.d.ts.map +1 -0
  293. package/dist/src/visit/recurse.js +36 -0
  294. package/dist/src/visit/recurse.js.map +1 -0
  295. package/dist/src/visit/rewrite.d.ts +9 -0
  296. package/dist/src/visit/rewrite.d.ts.map +1 -0
  297. package/dist/src/visit/rewrite.js +39 -0
  298. package/dist/src/visit/rewrite.js.map +1 -0
  299. package/dist/src/visit/visitors.d.ts +32 -0
  300. package/dist/src/visit/visitors.d.ts.map +1 -0
  301. package/dist/src/visit/visitors.js +95 -0
  302. package/dist/src/visit/visitors.js.map +1 -0
  303. package/dist/src/visit/walk.d.ts +21 -0
  304. package/dist/src/visit/walk.d.ts.map +1 -0
  305. package/dist/src/visit/walk.js +32 -0
  306. package/dist/src/visit/walk.js.map +1 -0
  307. package/package.json +13 -7
  308. package/src/ast/{aggregate.js → aggregate.ts} +49 -60
  309. package/src/ast/{between-op.js → between-op.ts} +19 -26
  310. package/src/ast/binary-op.ts +31 -0
  311. package/src/ast/{case.js → case.ts} +29 -44
  312. package/src/ast/{cast.js → cast.ts} +8 -14
  313. package/src/ast/{collate.js → collate.ts} +8 -14
  314. package/src/ast/column-param.ts +34 -0
  315. package/src/ast/{column-ref.js → column-ref.ts} +16 -25
  316. package/src/ast/fragment.ts +28 -0
  317. package/src/ast/{from.js → from.ts} +12 -21
  318. package/src/ast/{function.js → function.ts} +8 -14
  319. package/src/ast/{in-op.js → in-op.ts} +8 -14
  320. package/src/ast/{interval.js → interval.ts} +8 -14
  321. package/src/ast/{literal.js → literal.ts} +6 -9
  322. package/src/ast/logical-op.ts +50 -0
  323. package/src/ast/{node.js → node.ts} +10 -13
  324. package/src/ast/order-by.ts +38 -0
  325. package/src/ast/{param.js → param.ts} +6 -12
  326. package/src/ast/{query.js → query.ts} +159 -203
  327. package/src/ast/sample.ts +47 -0
  328. package/src/ast/{select.js → select.ts} +10 -16
  329. package/src/ast/{subquery.js → subquery.ts} +9 -8
  330. package/src/ast/{table-ref.js → table-ref.ts} +7 -12
  331. package/src/ast/{unary-op.js → unary-op.ts} +16 -23
  332. package/src/ast/verbatim.ts +27 -0
  333. package/src/ast/{window-frame.js → window-frame.ts} +37 -47
  334. package/src/ast/window.ts +246 -0
  335. package/src/ast/{with.js → with.ts} +19 -20
  336. package/src/functions/aggregate.ts +344 -0
  337. package/src/functions/{case.js → case.ts} +5 -8
  338. package/src/functions/{cast.js → cast.ts} +9 -13
  339. package/src/functions/{collate.js → collate.ts} +4 -7
  340. package/src/functions/{column.js → column.ts} +9 -10
  341. package/src/functions/{cte.js → cte.ts} +9 -6
  342. package/src/functions/{datetime.js → datetime.ts} +12 -20
  343. package/src/functions/interval.ts +74 -0
  344. package/src/functions/{literal.js → literal.ts} +5 -7
  345. package/src/functions/numeric.ts +125 -0
  346. package/src/functions/operators.ts +272 -0
  347. package/src/functions/order-by.ts +21 -0
  348. package/src/functions/spatial.ts +50 -0
  349. package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
  350. package/src/functions/string.ts +79 -0
  351. package/src/functions/{table-ref.js → table-ref.ts} +4 -4
  352. package/src/functions/util.ts +10 -0
  353. package/src/functions/window-frame.ts +58 -0
  354. package/src/functions/{window.js → window.ts} +18 -35
  355. package/src/index.ts +75 -0
  356. package/src/load/{create.js → create.ts} +9 -3
  357. package/src/load/extension.ts +3 -0
  358. package/src/load/{load.js → load.ts} +25 -10
  359. package/src/load/{sql-from.js → sql-from.ts} +14 -7
  360. package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
  361. package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
  362. package/src/transforms/bin-date.ts +48 -0
  363. package/src/transforms/bin-histogram.ts +61 -0
  364. package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
  365. package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
  366. package/src/transforms/{filter-query.js → filter-query.ts} +10 -14
  367. package/src/transforms/{line-density.js → line-density.ts} +19 -17
  368. package/src/transforms/{m4.js → m4.ts} +17 -14
  369. package/src/transforms/{scales.js → scales.ts} +57 -14
  370. package/src/transforms/util/bin-step.ts +100 -0
  371. package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
  372. package/src/types.ts +5 -39
  373. package/src/util/ast.ts +104 -0
  374. package/src/util/{function.js → function.ts} +40 -31
  375. package/src/util/identity.ts +7 -0
  376. package/src/util/{string.js → string.ts} +4 -4
  377. package/src/util/type-check.ts +31 -0
  378. package/src/visit/{clone.js → clone.ts} +10 -10
  379. package/src/visit/{recurse.js → recurse.ts} +1 -1
  380. package/src/visit/{rewrite.js → rewrite.ts} +7 -7
  381. package/src/visit/{visitors.js → visitors.ts} +22 -30
  382. package/src/visit/walk.ts +46 -0
  383. package/src/ast/binary-op.js +0 -40
  384. package/src/ast/column-param.js +0 -40
  385. package/src/ast/fragment.js +0 -26
  386. package/src/ast/logical-op.js +0 -67
  387. package/src/ast/order-by.js +0 -48
  388. package/src/ast/sample.js +0 -53
  389. package/src/ast/verbatim.js +0 -33
  390. package/src/ast/window.js +0 -260
  391. package/src/functions/aggregate.js +0 -347
  392. package/src/functions/interval.js +0 -83
  393. package/src/functions/numeric.js +0 -143
  394. package/src/functions/operators.js +0 -301
  395. package/src/functions/order-by.js +0 -27
  396. package/src/functions/spatial.js +0 -59
  397. package/src/functions/string.js +0 -85
  398. package/src/functions/util.js +0 -14
  399. package/src/functions/window-frame.js +0 -61
  400. package/src/index-types.ts +0 -2
  401. package/src/load/extension.js +0 -3
  402. package/src/transforms/bin-date.js +0 -38
  403. package/src/transforms/bin-histogram.js +0 -52
  404. package/src/transforms/util/bin-step.js +0 -79
  405. package/src/util/type-check.js +0 -33
  406. package/src/visit/walk.js +0 -34
  407. package/tsconfig.json +0 -8
  408. package/vitest.config.ts +0 -3
  409. /package/src/{constants.js → constants.ts} +0 -0
@@ -2,30 +2,24 @@ import { COLLATE } from '../constants.js';
2
2
  import { ExprNode } from './node.js';
3
3
 
4
4
  export class CollateNode extends ExprNode {
5
+ /** The expression to collate. */
6
+ readonly expr: ExprNode;
7
+ /** The collation type. */
8
+ readonly collation: string;
9
+
5
10
  /**
6
11
  * Instantiate a collate node.
7
- * @param {ExprNode} expr The expression to collate.
8
- * @param {string} collation The collation type.
12
+ * @param expr The expression to collate.
13
+ * @param collation The collation type.
9
14
  */
10
- constructor(expr, collation) {
15
+ constructor(expr: ExprNode, collation: string) {
11
16
  super(COLLATE);
12
- /**
13
- * The expression to collate.
14
- * @type {ExprNode}
15
- * @readonly
16
- */
17
17
  this.expr = expr;
18
- /**
19
- * The collation type.
20
- * @type {string}
21
- * @readonly
22
- */
23
18
  this.collation = collation;
24
19
  }
25
20
 
26
21
  /**
27
22
  * Generate a SQL query string for this node.
28
- * @returns {string}
29
23
  */
30
24
  toString() {
31
25
  return `${this.expr} ${COLLATE} ${this.collation}`;
@@ -0,0 +1,34 @@
1
+ import type { ParamNode } from './param.js';
2
+ import type { TableRefNode } from './table-ref.js';
3
+ import { COLUMN_PARAM } from '../constants.js';
4
+ import { ColumnRefNode } from './column-ref.js';
5
+
6
+ /**
7
+ * Check if a value is a dynamic column reference node.
8
+ * @param value The value to check.
9
+ */
10
+ export function isColumnParam(value: unknown): value is ColumnParamNode {
11
+ return value instanceof ColumnParamNode;
12
+ }
13
+
14
+ export class ColumnParamNode extends ColumnRefNode {
15
+ /** The column name as a parameter node */
16
+ readonly param: ParamNode;
17
+
18
+ /**
19
+ * Instantiate a column param node.
20
+ * @param param The column name as a parameter node.
21
+ * @param table The table reference.
22
+ */
23
+ constructor(param: ParamNode, table?: TableRefNode) {
24
+ super(COLUMN_PARAM, table);
25
+ this.param = param;
26
+ }
27
+
28
+ /**
29
+ * Returns the column name.
30
+ */
31
+ get column() {
32
+ return `${this.param.value}`;
33
+ }
34
+ }
@@ -1,45 +1,39 @@
1
- /**
2
- * @import { TableRefNode } from './table-ref.js'
3
- */
1
+ import type { TableRefNode } from './table-ref.js';
4
2
  import { COLUMN_REF } from '../constants.js';
5
3
  import { quoteIdentifier } from '../util/string.js';
6
4
  import { ExprNode } from './node.js';
7
5
 
8
6
  /**
9
7
  * Check if a value is a column reference node.
10
- * @param {*} value The value to check.
11
- * @returns {value is ColumnRefNode}
8
+ * @param value The value to check.
12
9
  */
13
- export function isColumnRef(value) {
10
+ export function isColumnRef(value: unknown): value is ColumnRefNode {
14
11
  return value instanceof ColumnRefNode;
15
12
  }
16
13
 
17
14
  export class ColumnRefNode extends ExprNode {
15
+ /** The table reference. */
16
+ readonly table?: TableRefNode;
17
+
18
18
  /**
19
19
  * Instantiate a column reference node.
20
- * @param {TableRefNode} [table] The table reference.
20
+ * @param type The AST node type.
21
+ * @param table The table reference.
21
22
  */
22
- constructor(type, table) {
23
+ constructor(type: string, table?: TableRefNode) {
23
24
  super(type);
24
- /**
25
- * The table reference.
26
- * @type {TableRefNode}
27
- * @readonly
28
- */
29
25
  this.table = table;
30
26
  }
31
27
 
32
28
  /**
33
29
  * Returns the column name.
34
- * @returns {string}
35
30
  */
36
31
  get column() {
37
- return null; // subclasses to override
32
+ return ''; // subclasses to override
38
33
  }
39
34
 
40
35
  /**
41
36
  * Generate a SQL query string for this node.
42
- * @returns {string}
43
37
  */
44
38
  toString() {
45
39
  const { column, table } = this;
@@ -50,24 +44,21 @@ export class ColumnRefNode extends ExprNode {
50
44
  }
51
45
 
52
46
  export class ColumnNameRefNode extends ColumnRefNode {
47
+ /** The column name. */
48
+ readonly name: string;
49
+
53
50
  /**
54
51
  * Instantiate a column reference node.
55
- * @param {string} name The column name.
56
- * @param {TableRefNode} [table] The table reference.
52
+ * @param name The column name.
53
+ * @param table The table reference.
57
54
  */
58
- constructor(name, table) {
55
+ constructor(name: string, table?: TableRefNode) {
59
56
  super(COLUMN_REF, table);
60
- /**
61
- * The column name.
62
- * @type {string}
63
- * @readonly
64
- */
65
57
  this.name = name;
66
58
  }
67
59
 
68
60
  /**
69
61
  * Returns the column name.
70
- * @returns {string}
71
62
  */
72
63
  get column() {
73
64
  return this.name;
@@ -0,0 +1,28 @@
1
+ import { FRAGMENT } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+
4
+ /**
5
+ * A SQL AST node made up of disjoint fragments that are combined to form
6
+ * a coherent expression. Along with verbatim content, this class serves
7
+ * as an "escape hatch" for handling more unstructured SQL content.
8
+ */
9
+ export class FragmentNode extends ExprNode {
10
+ /** The consecutive parts making up the fragment. */
11
+ readonly spans: ExprNode[];
12
+
13
+ /**
14
+ * Instantiate a fragment node with arbitrary content.
15
+ * @param spans The consecutive parts making up the fragment.
16
+ */
17
+ constructor(spans: ExprNode[]) {
18
+ super(FRAGMENT);
19
+ this.spans = spans;
20
+ }
21
+
22
+ /**
23
+ * Generate a SQL query string for this node.
24
+ */
25
+ toString() {
26
+ return this.spans.join('');
27
+ }
28
+ }
@@ -1,4 +1,4 @@
1
- /** @import { SampleClauseNode } from './sample.js' */
1
+ import type { SampleClauseNode } from './sample.js';
2
2
  import { FROM_CLAUSE } from '../constants.js';
3
3
  import { quoteIdentifier } from '../util/string.js';
4
4
  import { SQLNode } from './node.js';
@@ -6,37 +6,28 @@ import { isQuery } from './query.js';
6
6
  import { isTableRef } from './table-ref.js';
7
7
 
8
8
  export class FromClauseNode extends SQLNode {
9
+ /** The from expression. */
10
+ readonly expr: SQLNode;
11
+ /** The output name. */
12
+ readonly alias?: string;
13
+ /** The table sample. */
14
+ readonly sample?: SampleClauseNode;
15
+
9
16
  /**
10
17
  * Instantiate a from node.
11
- * @param {SQLNode} expr The from expression.
12
- * @param {string} [alias] The output name.
13
- * @param {SampleClauseNode} [sample] The table sample.
18
+ * @param expr The from expression.
19
+ * @param alias The output name.
20
+ * @param sample The table sample.
14
21
  */
15
- constructor(expr, alias, sample) {
22
+ constructor(expr: SQLNode, alias?: string, sample?: SampleClauseNode) {
16
23
  super(FROM_CLAUSE);
17
- /**
18
- * The from expression.
19
- * @type {SQLNode}
20
- * @readonly
21
- */
22
24
  this.expr = expr;
23
- /**
24
- * The output name.
25
- * @type {string}
26
- * @readonly
27
- */
28
25
  this.alias = alias;
29
- /**
30
- * The table sample.
31
- * @type {SampleClauseNode}
32
- * @readonly
33
- */
34
26
  this.sample = sample;
35
27
  }
36
28
 
37
29
  /**
38
30
  * Generate a SQL query string for this node.
39
- * @returns {string}
40
31
  */
41
32
  toString() {
42
33
  const { expr, alias, sample } = this;
@@ -2,30 +2,24 @@ import { FUNCTION } from '../constants.js';
2
2
  import { ExprNode } from './node.js';
3
3
 
4
4
  export class FunctionNode extends ExprNode {
5
+ /** The function name. */
6
+ readonly name: string;
7
+ /** The function arguments. */
8
+ readonly args: ExprNode[];
9
+
5
10
  /**
6
11
  * Instantiate a function node.
7
- * @param {string} name The function name.
8
- * @param {ExprNode[]} [args=[]] The function arguments.
12
+ * @param name The function name.
13
+ * @param args The function arguments.
9
14
  */
10
- constructor(name, args = []) {
15
+ constructor(name: string, args: ExprNode[] = []) {
11
16
  super(FUNCTION);
12
- /**
13
- * The function name.
14
- * @type {string}
15
- * @readonly
16
- */
17
17
  this.name = name;
18
- /**
19
- * The function arguments.
20
- * @type {ExprNode[]}
21
- * @readonly
22
- */
23
18
  this.args = args;
24
19
  }
25
20
 
26
21
  /**
27
22
  * Generate a SQL query string for this node.
28
- * @returns {string}
29
23
  */
30
24
  toString() {
31
25
  const { name, args } = this;
@@ -2,30 +2,24 @@ import { IN_OPERATOR } from '../constants.js';
2
2
  import { ExprNode } from './node.js';
3
3
 
4
4
  export class InOpNode extends ExprNode {
5
+ /** The input expression. */
6
+ readonly expr: ExprNode;
7
+ /** The value set. */
8
+ readonly values: ExprNode[];
9
+
5
10
  /**
6
11
  * Instantiate an in operator node.
7
- * @param {ExprNode} expr The input expression.
8
- * @param {ExprNode[]} values The value set.
12
+ * @param expr The input expression.
13
+ * @param values The value set.
9
14
  */
10
- constructor(expr, values) {
15
+ constructor(expr: ExprNode, values: ExprNode[]) {
11
16
  super(IN_OPERATOR);
12
- /**
13
- * The input expression.
14
- * @type {ExprNode}
15
- * @readonly
16
- */
17
17
  this.expr = expr;
18
- /**
19
- * The value set.
20
- * @type {ExprNode[]}
21
- * @readonly
22
- */
23
18
  this.values = values;
24
19
  }
25
20
 
26
21
  /**
27
22
  * Generate a SQL query string for this node.
28
- * @returns {string}
29
23
  */
30
24
  toString() {
31
25
  return `(${this.expr} IN (${this.values.join(', ')}))`;
@@ -2,30 +2,24 @@ import { INTERVAL } from '../constants.js';
2
2
  import { ExprNode } from './node.js';
3
3
 
4
4
  export class IntervalNode extends ExprNode {
5
+ /** The interval name. */
6
+ readonly name: string;
7
+ /** The interval steps. */
8
+ readonly steps: number;
9
+
5
10
  /**
6
11
  * Instantiate an interval node.
7
- * @param {string} name The interval name.
8
- * @param {number} [steps=1] The interval steps.
12
+ * @param name The interval name.
13
+ * @param steps The interval steps.
9
14
  */
10
- constructor(name, steps = 1) {
15
+ constructor(name: string, steps: number = 1) {
11
16
  super(INTERVAL);
12
- /**
13
- * The interval name.
14
- * @type {string}
15
- * @readonly
16
- */
17
17
  this.name = name;
18
- /**
19
- * The interval steps.
20
- * @type {number}
21
- * @readonly
22
- */
23
18
  this.steps = steps;
24
19
  }
25
20
 
26
21
  /**
27
22
  * Generate a SQL query string for this node.
28
- * @returns {string}
29
23
  */
30
24
  toString() {
31
25
  return `INTERVAL ${this.steps} ${this.name}`;
@@ -2,30 +2,27 @@ import { LITERAL } from '../constants.js';
2
2
  import { ExprNode } from './node.js';
3
3
 
4
4
  export class LiteralNode extends ExprNode {
5
+ /** The literal value. */
6
+ readonly value: unknown;
7
+
5
8
  /**
6
9
  * Instantiate an literal node.
7
- * @param {*} value The literal value.
10
+ * @param value The literal value.
8
11
  */
9
- constructor(value) {
12
+ constructor(value: unknown) {
10
13
  super(LITERAL);
11
- /**
12
- * The literal value.
13
- * @type {any}
14
- * @readonly
15
- */
16
14
  this.value = value;
17
15
  }
18
16
 
19
17
  /**
20
18
  * Generate a SQL query string for this node.
21
- * @returns {string}
22
19
  */
23
20
  toString() {
24
21
  return literalToSQL(this.value);
25
22
  }
26
23
  }
27
24
 
28
- export function literalToSQL(value) {
25
+ export function literalToSQL(value: unknown) {
29
26
  switch (typeof value) {
30
27
  case 'number':
31
28
  return Number.isFinite(value) ? `${value}` : 'NULL';
@@ -0,0 +1,50 @@
1
+ import { LOGICAL_OPERATOR } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+
4
+ export class LogicalOpNode<T extends ExprNode> extends ExprNode {
5
+ /** The logical operator */
6
+ readonly op: string;
7
+ /** The clause expressions. */
8
+ readonly clauses: T[];
9
+
10
+ /**
11
+ * Instantiate a logical operator node.
12
+ * @param op The logical operation.
13
+ * @param clauses The input clause expressions.
14
+ */
15
+ constructor(op: string, clauses: T[]) {
16
+ super(LOGICAL_OPERATOR);
17
+ this.op = op;
18
+ this.clauses = clauses;
19
+ }
20
+
21
+ /**
22
+ * Generate a SQL query string for this node.
23
+ */
24
+ toString() {
25
+ const c = this.clauses;
26
+ return c.length === 0 ? ''
27
+ : c.length === 1 ? `${c[0]}`
28
+ : `(${c.join(` ${this.op} `)})`;
29
+ }
30
+ }
31
+
32
+ export class AndNode<T extends ExprNode> extends LogicalOpNode<T> {
33
+ /**
34
+ * Instantiate a logical AND operator node.
35
+ * @param clauses The input clause expressions.
36
+ */
37
+ constructor(clauses: T[]) {
38
+ super('AND', clauses);
39
+ }
40
+ }
41
+
42
+ export class OrNode<T extends ExprNode> extends LogicalOpNode<T> {
43
+ /**
44
+ * Instantiate a logical OR operator node.
45
+ * @param clauses The input clause expressions.
46
+ */
47
+ constructor(clauses: T[]) {
48
+ super('OR', clauses);
49
+ }
50
+ }
@@ -1,32 +1,29 @@
1
1
  /**
2
2
  * Check if a value is a SQL AST node.
3
- * @param {*} value The value to check.
4
- * @returns {value is SQLNode}
3
+ * @param value The value to check.
5
4
  */
6
- export function isNode(value) {
5
+ export function isNode(value: unknown): value is SQLNode {
7
6
  return value instanceof SQLNode;
8
7
  }
9
8
 
10
9
  export class SQLNode {
10
+ /** The SQL AST node type. */
11
+ readonly type: string;
12
+
11
13
  /**
12
14
  * Instantiate a SQL AST node.
13
- * @param {string} type The SQL AST node type.
15
+ * @param type The SQL AST node type.
14
16
  */
15
- constructor(type) {
16
- /**
17
- * The SQL AST node type.
18
- * @type {string}
19
- * @readonly
20
- */
17
+ constructor(type: string) {
21
18
  this.type = type;
22
19
  }
23
20
 
24
21
  /**
25
22
  * Create a shallow clone of this SQL AST node.
26
- * @returns {this} The shallow clone node.
23
+ * @returns The shallow clone node.
27
24
  */
28
- clone() {
29
- // @ts-expect-error
25
+ clone(): this {
26
+ // @ts-expect-error use constructor
30
27
  const clone = new this.constructor();
31
28
  for (const key in this) {
32
29
  clone[key] = this[key];
@@ -0,0 +1,38 @@
1
+ import { ORDER_BY } from '../constants.js';
2
+ import { ExprNode } from './node.js';
3
+
4
+ export class OrderByNode extends ExprNode {
5
+ /** The expression to order by. */
6
+ readonly expr: ExprNode;
7
+ /** Flag indicating descending order. */
8
+ readonly desc?: boolean;
9
+ /** Flag indicating if null values should be sorted first. */
10
+ readonly nullsFirst?: boolean;
11
+
12
+ /**
13
+ * Instantiate an order by entry node.
14
+ * @param expr The expression to order by.
15
+ * @param desc Flag indicating descending order.
16
+ * @param nullsFirst Flag indicating if null values should be sorted first.
17
+ */
18
+ constructor(expr: ExprNode, desc?: boolean, nullsFirst?: boolean) {
19
+ super(ORDER_BY);
20
+ this.expr = expr;
21
+ this.desc = desc;
22
+ this.nullsFirst = nullsFirst;
23
+ }
24
+
25
+ /**
26
+ * Generate a SQL query string for this node.
27
+ */
28
+ toString() {
29
+ const { expr, desc, nullsFirst } = this;
30
+ const dir = desc ? ' DESC'
31
+ : desc === false ? ' ASC'
32
+ : '';
33
+ const nf = nullsFirst ? ' NULLS FIRST'
34
+ : nullsFirst === false ? ' NULLS LAST'
35
+ : '';
36
+ return `${expr}${dir}${nf}`;
37
+ }
38
+ }
@@ -1,28 +1,23 @@
1
- /**
2
- * @import { ParamLike } from '../types.js'
3
- */
1
+ import type { ParamLike } from '../types.js';
4
2
  import { PARAM } from '../constants.js';
5
3
  import { literalToSQL } from './literal.js';
6
4
  import { ExprNode } from './node.js';
7
5
 
8
6
  export class ParamNode extends ExprNode {
7
+ /** The dynamic parameter. */
8
+ readonly param: ParamLike;
9
+
9
10
  /**
10
11
  * Instantiate a param node with a dynamic parameter.
11
- * @param {ParamLike} param The dynamic parameter.
12
+ * @param param The dynamic parameter.
12
13
  */
13
- constructor(param) {
14
+ constructor(param: ParamLike) {
14
15
  super(PARAM);
15
- /**
16
- * The dynamic parameter.
17
- * @type {ParamLike}
18
- * @readonly
19
- */
20
16
  this.param = param;
21
17
  }
22
18
 
23
19
  /**
24
20
  * Returns the current parameter value.
25
- * @returns {*}
26
21
  */
27
22
  get value() {
28
23
  return this.param.value;
@@ -30,7 +25,6 @@ export class ParamNode extends ExprNode {
30
25
 
31
26
  /**
32
27
  * Generate a SQL query string for this node.
33
- * @returns {string}
34
28
  */
35
29
  toString() {
36
30
  return literalToSQL(this.value);