@uwdata/mosaic-sql 0.16.2 → 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 (469) hide show
  1. package/LICENSE +1 -1
  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/{types → src}/ast/param.d.ts +11 -11
  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/{types → src}/ast/with.d.ts +15 -22
  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/{types → src}/functions/case.d.ts +7 -7
  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/{types → src}/functions/cte.d.ts +7 -7
  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/{types → src}/functions/literal.d.ts +8 -8
  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/{types → src}/functions/sql-template-tag.d.ts +8 -10
  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/{types → src}/functions/window.d.ts +24 -39
  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 +16 -12
  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/{types → src}/types.d.ts +6 -19
  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/{types → src}/util/ast.d.ts +26 -25
  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/{types → src}/visit/visitors.d.ts +14 -16
  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 +12 -10
  308. package/src/ast/aggregate.ts +198 -0
  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.ts +27 -0
  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.ts +40 -0
  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.ts +39 -0
  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} +193 -205
  327. package/src/ast/sample.ts +47 -0
  328. package/src/ast/{select.js → select.ts} +10 -16
  329. package/src/ast/subquery.ts +24 -0
  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.js → verbatim.ts} +9 -8
  333. package/src/ast/window-frame.ts +97 -0
  334. package/src/ast/window.ts +246 -0
  335. package/src/ast/{with.js → with.ts} +19 -20
  336. package/src/{constants.js → constants.ts} +5 -6
  337. package/src/functions/aggregate.ts +344 -0
  338. package/src/functions/{case.js → case.ts} +5 -8
  339. package/src/functions/{cast.js → cast.ts} +9 -13
  340. package/src/functions/collate.ts +13 -0
  341. package/src/functions/{column.js → column.ts} +9 -10
  342. package/src/functions/{cte.js → cte.ts} +9 -6
  343. package/src/functions/datetime.ts +50 -0
  344. package/src/functions/interval.ts +74 -0
  345. package/src/functions/{literal.js → literal.ts} +6 -7
  346. package/src/functions/numeric.ts +125 -0
  347. package/src/functions/operators.ts +272 -0
  348. package/src/functions/order-by.ts +21 -0
  349. package/src/functions/spatial.ts +50 -0
  350. package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
  351. package/src/functions/string.ts +79 -0
  352. package/src/functions/{table-ref.js → table-ref.ts} +4 -4
  353. package/src/functions/util.ts +10 -0
  354. package/src/functions/window-frame.ts +58 -0
  355. package/src/functions/{window.js → window.ts} +18 -35
  356. package/src/index.ts +75 -0
  357. package/src/load/{create.js → create.ts} +9 -3
  358. package/src/load/extension.ts +3 -0
  359. package/src/load/{load.js → load.ts} +26 -11
  360. package/src/load/{sql-from.js → sql-from.ts} +14 -7
  361. package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
  362. package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
  363. package/src/transforms/bin-date.ts +48 -0
  364. package/src/transforms/bin-histogram.ts +61 -0
  365. package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
  366. package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
  367. package/src/transforms/filter-query.ts +40 -0
  368. package/src/transforms/{line-density.js → line-density.ts} +19 -17
  369. package/src/transforms/{m4.js → m4.ts} +17 -14
  370. package/src/transforms/{scales.js → scales.ts} +57 -14
  371. package/src/transforms/util/bin-step.ts +100 -0
  372. package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
  373. package/src/types.ts +5 -30
  374. package/src/util/ast.ts +104 -0
  375. package/src/util/{function.js → function.ts} +40 -31
  376. package/src/util/identity.ts +7 -0
  377. package/src/util/{string.js → string.ts} +4 -4
  378. package/src/util/type-check.ts +31 -0
  379. package/src/visit/clone.ts +53 -0
  380. package/src/visit/{recurse.js → recurse.ts} +18 -6
  381. package/src/visit/{rewrite.js → rewrite.ts} +10 -18
  382. package/src/visit/{visitors.js → visitors.ts} +22 -30
  383. package/src/visit/walk.ts +46 -0
  384. package/dist/types/ast/aggregate.d.ts +0 -71
  385. package/dist/types/ast/between-op.d.ts +0 -46
  386. package/dist/types/ast/binary-op.d.ts +0 -28
  387. package/dist/types/ast/case.d.ts +0 -67
  388. package/dist/types/ast/cast.d.ts +0 -21
  389. package/dist/types/ast/column-param.d.ts +0 -23
  390. package/dist/types/ast/column-ref.d.ts +0 -40
  391. package/dist/types/ast/fragment.d.ts +0 -14
  392. package/dist/types/ast/from.d.ts +0 -21
  393. package/dist/types/ast/function.d.ts +0 -21
  394. package/dist/types/ast/in-op.d.ts +0 -21
  395. package/dist/types/ast/interval.d.ts +0 -21
  396. package/dist/types/ast/literal.d.ts +0 -15
  397. package/dist/types/ast/logical-op.d.ts +0 -46
  398. package/dist/types/ast/node.d.ts +0 -24
  399. package/dist/types/ast/order-by.d.ts +0 -29
  400. package/dist/types/ast/query.d.ts +0 -320
  401. package/dist/types/ast/sample.d.ts +0 -42
  402. package/dist/types/ast/select.d.ts +0 -22
  403. package/dist/types/ast/table-ref.d.ts +0 -25
  404. package/dist/types/ast/unary-op.d.ts +0 -39
  405. package/dist/types/ast/verbatim.d.ts +0 -9
  406. package/dist/types/ast/window.d.ts +0 -180
  407. package/dist/types/constants.d.ts +0 -38
  408. package/dist/types/functions/aggregate.d.ts +0 -236
  409. package/dist/types/functions/cast.d.ts +0 -26
  410. package/dist/types/functions/column.d.ts +0 -11
  411. package/dist/types/functions/datetime.d.ts +0 -45
  412. package/dist/types/functions/numeric.d.ts +0 -95
  413. package/dist/types/functions/operators.d.ts +0 -200
  414. package/dist/types/functions/order-by.d.ts +0 -18
  415. package/dist/types/functions/spatial.d.ts +0 -38
  416. package/dist/types/functions/string.d.ts +0 -57
  417. package/dist/types/functions/table-ref.d.ts +0 -9
  418. package/dist/types/functions/util.d.ts +0 -8
  419. package/dist/types/index-types.d.ts +0 -2
  420. package/dist/types/index.d.ts +0 -59
  421. package/dist/types/load/create.d.ts +0 -8
  422. package/dist/types/load/extension.d.ts +0 -1
  423. package/dist/types/load/load.d.ts +0 -12
  424. package/dist/types/load/sql-from.d.ts +0 -11
  425. package/dist/types/transforms/bin-1d.d.ts +0 -15
  426. package/dist/types/transforms/bin-2d.d.ts +0 -19
  427. package/dist/types/transforms/bin-date.d.ts +0 -44
  428. package/dist/types/transforms/bin-histogram.d.ts +0 -51
  429. package/dist/types/transforms/bin-linear-1d.d.ts +0 -12
  430. package/dist/types/transforms/bin-linear-2d.d.ts +0 -19
  431. package/dist/types/transforms/line-density.d.ts +0 -24
  432. package/dist/types/transforms/m4.d.ts +0 -21
  433. package/dist/types/transforms/scales.d.ts +0 -1
  434. package/dist/types/transforms/util/bin-step.d.ts +0 -61
  435. package/dist/types/transforms/util/time-interval.d.ts +0 -13
  436. package/dist/types/util/function.d.ts +0 -56
  437. package/dist/types/util/string.d.ts +0 -3
  438. package/dist/types/util/type-check.d.ts +0 -22
  439. package/dist/types/visit/recurse.d.ts +0 -28
  440. package/dist/types/visit/rewrite.d.ts +0 -10
  441. package/dist/types/visit/walk.d.ts +0 -10
  442. package/jsconfig.json +0 -11
  443. package/src/ast/aggregate.js +0 -167
  444. package/src/ast/binary-op.js +0 -40
  445. package/src/ast/column-param.js +0 -40
  446. package/src/ast/fragment.js +0 -26
  447. package/src/ast/from.js +0 -40
  448. package/src/ast/logical-op.js +0 -67
  449. package/src/ast/node.js +0 -29
  450. package/src/ast/order-by.js +0 -48
  451. package/src/ast/sample.js +0 -53
  452. package/src/ast/window.js +0 -294
  453. package/src/functions/aggregate.js +0 -347
  454. package/src/functions/datetime.js +0 -68
  455. package/src/functions/numeric.js +0 -143
  456. package/src/functions/operators.js +0 -301
  457. package/src/functions/order-by.js +0 -27
  458. package/src/functions/spatial.js +0 -59
  459. package/src/functions/string.js +0 -85
  460. package/src/functions/util.js +0 -14
  461. package/src/index-types.ts +0 -2
  462. package/src/load/extension.js +0 -3
  463. package/src/transforms/bin-date.js +0 -37
  464. package/src/transforms/bin-histogram.js +0 -52
  465. package/src/transforms/util/bin-step.js +0 -79
  466. package/src/util/type-check.js +0 -33
  467. package/src/visit/walk.js +0 -35
  468. package/tsconfig.json +0 -12
  469. package/vitest.config.ts +0 -3
package/src/ast/window.js DELETED
@@ -1,294 +0,0 @@
1
- /**
2
- * @import { AggregateNode } from './aggregate.js'
3
- * @import { ExprVarArgs, WindowFunctionName } from '../types.js'
4
- * @import { ParamLike } from '../types.js'
5
- */
6
- import { WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_FRAME } from '../constants.js';
7
- import { exprList } from '../util/function.js';
8
- import { quoteIdentifier } from '../util/string.js';
9
- import { isParamLike } from '../util/type-check.js';
10
- import { FunctionNode } from './function.js';
11
- import { ExprNode, isNode, SQLNode } from './node.js';
12
- import { ParamNode } from './param.js';
13
-
14
- /**
15
- * @typedef {[any, any] | ParamLike} FrameExtent
16
- */
17
-
18
- export class WindowClauseNode extends SQLNode {
19
- /**
20
- * Instantiate a window clause node.
21
- * @param {string} name The window name.
22
- * @param {WindowDefNode} def The window definition.
23
- */
24
- constructor(name, def) {
25
- super(WINDOW_CLAUSE);
26
- /**
27
- * The window name.
28
- * @type {string}
29
- * @readonly
30
- */
31
- this.name = name;
32
- /**
33
- * The window definition.
34
- * @type {WindowDefNode}
35
- * @readonly
36
- */
37
- this.def = def;
38
- }
39
-
40
- toString() {
41
- return `${quoteIdentifier(this.name)} AS ${this.def}`;
42
- }
43
- }
44
-
45
- export class WindowNode extends ExprNode {
46
- /**
47
- * Instantiate a window node.
48
- * @param {WindowFunctionNode | AggregateNode} func The window function call.
49
- * @param {WindowDefNode} [over] The window definition or name.
50
- */
51
- constructor(func, over = new WindowDefNode()) {
52
- super(WINDOW);
53
- /**
54
- * @type {WindowFunctionNode | AggregateNode}
55
- * @readonly
56
- */
57
- this.func = func;
58
- /**
59
- * @type {WindowDefNode}
60
- * @readonly
61
- */
62
- this.def = over;
63
- }
64
-
65
- /**
66
- * Return an updated window over a named window definition.
67
- * @param {string} name The window definition name.
68
- * @returns {WindowNode} A new window node.
69
- */
70
- over(name) {
71
- return new WindowNode(this.func, this.def.over(name));
72
- }
73
-
74
- /**
75
- * Return an updated window with the given partitions.
76
- * @param {...ExprVarArgs} expr The partition by criteria.
77
- * @returns {WindowNode} A new window node.
78
- */
79
- partitionby(...expr) {
80
- return new WindowNode(this.func, this.def.partitionby(...expr));
81
- }
82
-
83
- /**
84
- * Return an updated window with the given ordering.
85
- * @param {...ExprVarArgs} expr The order by criteria.
86
- * @returns {WindowNode} A new window node.
87
- */
88
- orderby(...expr) {
89
- return new WindowNode(this.func, this.def.orderby(...expr));
90
- }
91
-
92
- /**
93
- * Return an updated window with the given rows frame.
94
- * @param {FrameExtent} extent The row-based window frame extent.
95
- * @returns {WindowNode} A new window node.
96
- */
97
- rows(extent) {
98
- return new WindowNode(this.func, this.def.rows(extent));
99
- }
100
-
101
- /**
102
- * Return an updated window with the given range frame.
103
- * @param {FrameExtent} extent The range-based window frame extent.
104
- * @returns {WindowNode} A new window node.
105
- */
106
- range(extent) {
107
- return new WindowNode(this.func, this.def.range(extent));
108
- }
109
-
110
- /**
111
- * Generate a SQL query string for this node.
112
- * @returns {string}
113
- */
114
- toString() {
115
- return `${this.func} OVER ${this.def}`;
116
- }
117
- }
118
-
119
- export class WindowFunctionNode extends FunctionNode {
120
- /**
121
- * Instantiate a window function call node.
122
- * @param {WindowFunctionName} name The function name.
123
- * @param {ExprNode[]} [args=[]] The function arguments.
124
- */
125
- constructor(name, args) {
126
- super(name, args);
127
- }
128
- }
129
-
130
- export class WindowDefNode extends SQLNode {
131
- /**
132
- * Instantiate a window definition node.
133
- * @param {string} [name] The base window definition name.
134
- * @param {ExprNode[]} [partition] The partition by criteria.
135
- * @param {ExprNode[]} [order] The order by criteria.
136
- * @param {WindowFrameNode} [frame] The window frame definition.
137
- */
138
- constructor(name, partition, order, frame) {
139
- super(WINDOW_DEF);
140
- /**
141
- * The base window definition name.
142
- * @type {string}
143
- * @readonly
144
- */
145
- this.name = name;
146
- /**
147
- * The partition by criteria.
148
- * @type {ExprNode[]}
149
- * @readonly
150
- */
151
- this.partition = partition;
152
- /**
153
- * The order by criteria.
154
- * @type {ExprNode[]}
155
- * @readonly
156
- */
157
- this.order = order;
158
- /**
159
- * The window frame definition.
160
- * @type {WindowFrameNode}
161
- * @readonly
162
- */
163
- this.frame = frame;
164
- }
165
-
166
- /**
167
- * Return an updated window definition with the given base name.
168
- * @param {string} name The base window definition name.
169
- * @returns {WindowDefNode} A new window definition node.
170
- */
171
- over(name) {
172
- return deriveDef(this, { name });
173
- }
174
-
175
- /**
176
- * Return an updated window definition with the given partitions.
177
- * @param {...ExprVarArgs} expr The partition by criteria.
178
- * @returns {WindowDefNode} A new window definition node.
179
- */
180
- partitionby(...expr) {
181
- return deriveDef(this, { partition: exprList(expr) });
182
- }
183
-
184
- /**
185
- * Return an updated window definition with the given ordering.
186
- * @param {...ExprVarArgs} expr The order by criteria.
187
- * @returns {WindowDefNode} A new window definition node.
188
- */
189
- orderby(...expr) {
190
- return deriveDef(this, { order: exprList(expr) });
191
- }
192
-
193
- /**
194
- * Return an updated window definition with the given rows frame.
195
- * @param {FrameExtent} extent The row-based window frame extent.
196
- * @returns {WindowDefNode} A new window definition node.
197
- */
198
- rows(extent) {
199
- return deriveDef(this, { frame: new WindowFrameNode(extent) });
200
- }
201
-
202
- /**
203
- * Return an updated window definition with the given range frame.
204
- * @param {FrameExtent} extent The range-based window frame extent.
205
- * @returns {WindowDefNode} A new window definition node.
206
- */
207
- range(extent) {
208
- return deriveDef(this, { frame: new WindowFrameNode(extent, true) });
209
- }
210
-
211
- /**
212
- * Generate a SQL query string for this node.
213
- * @returns {string}
214
- */
215
- toString() {
216
- const { name, partition, order, frame } = this;
217
- const base = name && quoteIdentifier(name);
218
- const def = [
219
- base,
220
- partition?.length && `PARTITION BY ${partition.join(', ')}`,
221
- order?.length && `ORDER BY ${order.join(', ')}`,
222
- frame
223
- ].filter(x => x);
224
- return base && def.length < 2 ? base : `(${def.join(' ')})`;
225
- }
226
- }
227
-
228
- export class WindowFrameNode extends SQLNode {
229
- /**
230
- * Instantiate a window frame definition node.
231
- * @param {FrameExtent} extent The frame extent as [preceding, following]
232
- * row or interval offsets.
233
- * @param {boolean} [range] The frame type: `true` for range, otherwise rows.
234
- * @param {ExprNode} [exclude] The window exclusion criteria.
235
- */
236
- constructor(extent, range = false, exclude = undefined) {
237
- super(WINDOW_FRAME);
238
- /**
239
- * The frame extent as [preceding, following] row or interval offsets.
240
- * @type {ParamNode | [any, any]}
241
- * @readonly
242
- */
243
- this.extent = isParamLike(extent) ? new ParamNode(extent) : extent;
244
- /**
245
- * The frame type: `true` for range, otherwise rows.
246
- * @type {boolean}
247
- * @readonly
248
- */
249
- this.range = range;
250
- /**
251
- * The window exclusion criteria.
252
- * @type {ExprNode}
253
- * @readonly
254
- */
255
- this.exclude = exclude;
256
- }
257
-
258
- /**
259
- * Generate a SQL query string for this node.
260
- * @returns {string}
261
- */
262
- toString() {
263
- const { range, exclude, extent } = this;
264
- const type = range ? 'RANGE' : 'ROWS';
265
- const [prev, next] = isNode(extent) ? extent.value : extent;
266
- const a = frameValue(prev, 'PRECEDING');
267
- const b = frameValue(next, 'FOLLOWING');
268
- return `${type} BETWEEN ${a} AND ${b}${exclude ? ` ${exclude}` : ''}`;
269
- }
270
- }
271
-
272
- /**
273
- * Derive a new window definition node from an existing one.
274
- * @param {WindowDefNode} def The existing window definition.
275
- * @param {object} options An options object with new definition properties.
276
- * @param {string} [options.name] The base window definition name.
277
- * @param {ExprNode[]} [options.partition] The partition by criteria.
278
- * @param {ExprNode[]} [options.order] The order by criteria.
279
- * @param {WindowFrameNode} [options.frame] The window frame definition.
280
- */
281
- function deriveDef(def, options) {
282
- return new WindowDefNode(
283
- options.name ?? def.name,
284
- options.partition ?? def.partition,
285
- options.order ?? def.order,
286
- options.frame ?? def.frame
287
- );
288
- }
289
-
290
- function frameValue(value, order) {
291
- return value === 0 ? 'CURRENT ROW'
292
- : Number.isFinite(value) ? `${Math.abs(value)} ${order}`
293
- : `UNBOUNDED ${order}`;
294
- }
@@ -1,347 +0,0 @@
1
- /**
2
- * @import { AggregateNode } from '../ast/aggregate.js'
3
- * @import { ExprValue } from '../types.js'
4
- */
5
- import { aggFn } from '../util/function.js';
6
-
7
- /**
8
- * Compute an arg_max aggregate.
9
- * @param {ExprValue} y The argument to return.
10
- * @param {ExprValue} x The expression to maximize.
11
- * @returns {AggregateNode} A SQL aggregate function call.
12
- */
13
- export function argmax(y, x) {
14
- return aggFn('arg_max', y, x);
15
- }
16
-
17
- /**
18
- * Compute an arg_min aggregate.
19
- * @param {ExprValue} y The argument to return.
20
- * @param {ExprValue} x The expression to minimize.
21
- * @returns {AggregateNode} A SQL aggregate function call.
22
- */
23
- export function argmin(y, x) {
24
- return aggFn('arg_min', y, x);
25
- }
26
-
27
- /**
28
- * Compute an array aggregation.
29
- * @param {ExprValue} expr The expression to aggregate.
30
- * @returns {AggregateNode} A SQL aggregate function call.
31
- */
32
- export function arrayAgg(expr) {
33
- return aggFn('array_agg', expr);
34
- }
35
-
36
- /**
37
- * Compute an average aggregate.
38
- * @param {ExprValue} expr The expression to aggregate.
39
- * @returns {AggregateNode} A SQL aggregate function call.
40
- */
41
- export function avg(expr) {
42
- return aggFn('avg', expr);
43
- }
44
-
45
- /**
46
- * Compute a correlation aggregate.
47
- * @param {ExprValue} x The x expression to aggregate.
48
- * @param {ExprValue} y The y expression to aggregate.
49
- * @returns {AggregateNode} A SQL aggregate function call.
50
- */
51
- export function corr(x, y) {
52
- return aggFn('corr', x, y);
53
- }
54
-
55
- /**
56
- * Compute a count aggregate.
57
- * @param {ExprValue} [expr] An optional expression
58
- * to count. If specified, only non-null expression values are counted.
59
- * If omitted, all rows within a group are counted.
60
- * @returns {AggregateNode} A SQL aggregate function call.
61
- */
62
- export function count(expr) {
63
- return aggFn('count', expr);
64
- }
65
-
66
- /**
67
- * Compute a sample covariance aggregate.
68
- * @param {ExprValue} x The x expression to aggregate.
69
- * @param {ExprValue} y The y expression to aggregate.
70
- * @returns {AggregateNode} A SQL aggregate function call.
71
- */
72
- export function covariance(x, y) {
73
- return aggFn('covar_samp', x, y);
74
- }
75
-
76
- /**
77
- * Compute a population covariance aggregate.
78
- * @param {ExprValue} x The x expression to aggregate.
79
- * @param {ExprValue} y The y expression to aggregate.
80
- * @returns {AggregateNode} A SQL aggregate function call.
81
- */
82
- export function covarPop(x, y) {
83
- return aggFn('covar_pop', x, y);
84
- }
85
-
86
- /**
87
- * Compute an entropy aggregate.
88
- * @param {ExprValue} expr The expression to aggregate.
89
- * @returns {AggregateNode} A SQL aggregate function call.
90
- */
91
- export function entropy(expr) {
92
- return aggFn('entropy', expr);
93
- }
94
-
95
- /**
96
- * Compute a first aggregate.
97
- * @param {ExprValue} expr The expression to aggregate.
98
- * @returns {AggregateNode} A SQL aggregate function call.
99
- */
100
- export function first(expr) {
101
- return aggFn('first', expr);
102
- }
103
-
104
- /**
105
- * Compute a geomean aggregate.
106
- * @param {ExprValue} expr The expression to aggregate.
107
- * @returns {AggregateNode} A SQL aggregate function call.
108
- */
109
- export function geomean(expr) {
110
- return aggFn('geomean', expr);
111
- }
112
-
113
- /**
114
- * Compute a sample kurtosis aggregate.
115
- * @param {ExprValue} expr The expression to aggregate.
116
- * @returns {AggregateNode} A SQL aggregate function call.
117
- */
118
- export function kurtosis(expr) {
119
- return aggFn('kurtosis', expr);
120
- }
121
-
122
- /**
123
- * Compute a median absolute deviation (MAD) aggregate.
124
- * @param {ExprValue} expr The expression to aggregate.
125
- * @returns {AggregateNode} A SQL aggregate function call.
126
- */
127
- export function mad(expr) {
128
- return aggFn('mad', expr);
129
- }
130
-
131
- /**
132
- * Compute a maximum aggregate.
133
- * @param {ExprValue} expr The expression to aggregate.
134
- * @returns {AggregateNode} A SQL aggregate function call.
135
- */
136
- export function max(expr) {
137
- return aggFn('max', expr);
138
- }
139
-
140
- /**
141
- * Compute a median aggregate.
142
- * @param {ExprValue} expr The expression to aggregate.
143
- * @returns {AggregateNode} A SQL aggregate function call.
144
- */
145
- export function median(expr) {
146
- return aggFn('median', expr);
147
- }
148
-
149
- /**
150
- * Compute a minimum aggregate.
151
- * @param {ExprValue} expr The expression to aggregate.
152
- * @returns {AggregateNode} A SQL aggregate function call.
153
- */
154
- export function min(expr) {
155
- return aggFn('min', expr);
156
- }
157
-
158
- /**
159
- * Compute a mode aggregate.
160
- * @param {ExprValue} expr The expression to aggregate.
161
- * @returns {AggregateNode} A SQL aggregate function call.
162
- */
163
- export function mode(expr) {
164
- return aggFn('mode', expr);
165
- }
166
-
167
- /**
168
- * Compute a last aggregate.
169
- * @param {ExprValue} expr The expression to aggregate.
170
- * @returns {AggregateNode} A SQL aggregate function call.
171
- */
172
- export function last(expr) {
173
- return aggFn('last', expr);
174
- }
175
-
176
- /**
177
- * Compute a product aggregate.
178
- * @param {ExprValue} expr The expression to aggregate.
179
- * @returns {AggregateNode} A SQL aggregate function call.
180
- */
181
- export function product(expr) {
182
- return aggFn('product', expr);
183
- }
184
-
185
- /**
186
- * Compute a quantile aggregate.
187
- * @param {ExprValue} expr The expression to aggregate.
188
- * @param {ExprValue} p The quantile value.
189
- * @returns {AggregateNode} A SQL aggregate function call.
190
- */
191
- export function quantile(expr, p) {
192
- return aggFn('quantile', expr, p);
193
- }
194
-
195
- /**
196
- * Compute a linear regression reg_avgX aggregate.
197
- * @param {ExprValue} x The x expression to aggregate.
198
- * @param {ExprValue} y The y expression to aggregate.
199
- * @returns {AggregateNode} A SQL aggregate function call.
200
- */
201
- export function regrAvgX(x, y) {
202
- return aggFn('regr_avgx', x, y);
203
- }
204
-
205
- /**
206
- * Compute a linear regression reg_avgY aggregate.
207
- * @param {ExprValue} x The x expression to aggregate.
208
- * @param {ExprValue} y The y expression to aggregate.
209
- * @returns {AggregateNode} A SQL aggregate function call.
210
- */
211
- export function regrAvgY(x, y) {
212
- return aggFn('regr_avgy', x, y);
213
- }
214
-
215
- /**
216
- * Compute a linear regression count aggregate.
217
- * This returns the count of rows where both x and y are non-null.
218
- * @param {ExprValue} x The x expression to aggregate.
219
- * @param {ExprValue} y The y expression to aggregate.
220
- * @returns {AggregateNode} A SQL aggregate function call.
221
- */
222
- export function regrCount(x, y) {
223
- return aggFn('regr_count', x, y);
224
- }
225
-
226
- /**
227
- * Compute a linear regression intercept aggregate.
228
- * @param {ExprValue} x The x expression to aggregate.
229
- * @param {ExprValue} y The y expression to aggregate.
230
- * @returns {AggregateNode} A SQL aggregate function call.
231
- */
232
- export function regrIntercept(x, y) {
233
- return aggFn('regr_intercept', x, y);
234
- }
235
-
236
- /**
237
- * Compute a linear regression R^2 aggregate.
238
- * @param {ExprValue} x The x expression to aggregate.
239
- * @param {ExprValue} y The y expression to aggregate.
240
- * @returns {AggregateNode} A SQL aggregate function call.
241
- */
242
- export function regrR2(x, y) {
243
- return aggFn('regr_r2', x, y);
244
- }
245
-
246
- /**
247
- * Compute a linear regression regr_sxx aggregate.
248
- * @param {ExprValue} x The x expression to aggregate.
249
- * @param {ExprValue} y The y expression to aggregate.
250
- * @returns {AggregateNode} A SQL aggregate function call.
251
- */
252
- export function regrSXX(x, y) {
253
- return aggFn('regr_sxx', x, y);
254
- }
255
-
256
- /**
257
- * Compute a linear regression regr_sxy aggregate.
258
- * @param {ExprValue} x The x expression to aggregate.
259
- * @param {ExprValue} y The y expression to aggregate.
260
- * @returns {AggregateNode} A SQL aggregate function call.
261
- */
262
- export function regrSXY(x, y) {
263
- return aggFn('regr_sxy', x, y);
264
- }
265
-
266
- /**
267
- * Compute a linear regression regr_syy aggregate.
268
- * @param {ExprValue} x The x expression to aggregate.
269
- * @param {ExprValue} y The y expression to aggregate.
270
- * @returns {AggregateNode} A SQL aggregate function call.
271
- */
272
- export function regrSYY(x, y) {
273
- return aggFn('regr_syy', x, y);
274
- }
275
-
276
- /**
277
- * Compute a linear regression slope aggregate.
278
- * @param {ExprValue} x The x expression to aggregate.
279
- * @param {ExprValue} y The y expression to aggregate.
280
- * @returns {AggregateNode} A SQL aggregate function call.
281
- */
282
- export function regrSlope(x, y) {
283
- return aggFn('regr_slope', x, y);
284
- }
285
-
286
- /**
287
- * Compute a skewness aggregate.
288
- * @param {ExprValue} expr The expression to aggregate.
289
- * @returns {AggregateNode} A SQL aggregate function call.
290
- */
291
- export function skewness(expr) {
292
- return aggFn('skewness', expr);
293
- }
294
-
295
- /**
296
- * Compute a sample standard deviation aggregate.
297
- * @param {ExprValue} expr The expression to aggregate.
298
- * @returns {AggregateNode} A SQL aggregate function call.
299
- */
300
- export function stddev(expr) {
301
- return aggFn('stddev', expr);
302
- }
303
-
304
- /**
305
- * Compute a population standard deviation aggregate.
306
- * @param {ExprValue} expr The expression to aggregate.
307
- * @returns {AggregateNode} A SQL aggregate function call.
308
- */
309
- export function stddevPop(expr) {
310
- return aggFn('stddev_pop', expr);
311
- }
312
-
313
- /**
314
- * Compute a string aggregation.
315
- * @param {ExprValue} expr The expression to aggregate.
316
- * @returns {AggregateNode} A SQL aggregate function call.
317
- */
318
- export function stringAgg(expr) {
319
- return aggFn('string_agg', expr);
320
- }
321
-
322
- /**
323
- * Compute a sum aggregate.
324
- * @param {ExprValue} expr The expression to aggregate.
325
- * @returns {AggregateNode} A SQL aggregate function call.
326
- */
327
- export function sum(expr) {
328
- return aggFn('sum', expr);
329
- }
330
-
331
- /**
332
- * Compute a sample variance aggregate.
333
- * @param {ExprValue} expr The expression to aggregate.
334
- * @returns {AggregateNode} A SQL aggregate function call.
335
- */
336
- export function variance(expr) {
337
- return aggFn('var_samp', expr);
338
- }
339
-
340
- /**
341
- * Compute a population variance aggregate.
342
- * @param {ExprValue} expr The expression to aggregate.
343
- * @returns {AggregateNode} A SQL aggregate function call.
344
- */
345
- export function varPop(expr) {
346
- return aggFn('var_pop', expr);
347
- }
@@ -1,68 +0,0 @@
1
- /**
2
- * @import { FunctionNode } from '../ast/function.js'
3
- * @import { ExprValue } from '../types.js'
4
- */
5
- import { IntervalNode } from '../ast/interval.js';
6
- import { asNode } from '../util/ast.js';
7
- import { fn } from '../util/function.js';
8
-
9
- /**
10
- * Create a new interval.
11
- * @param {string} unit The interval unit, such as day or year.
12
- * @param {number} steps The number interval unit steps.
13
- * @returns {IntervalNode}
14
- */
15
- export function interval(unit, steps) {
16
- return new IntervalNode(unit, steps);
17
- }
18
-
19
- /**
20
- * Given a date/time value, return the milliseconds since the UNIX epoch.
21
- * @param {ExprValue} expr The date/time expression.
22
- * @returns {FunctionNode}
23
- */
24
- export function epoch_ms(expr) {
25
- return fn('epoch_ms', expr);
26
- }
27
-
28
- /**
29
- * Perform data binning according to the provided interval unit and steps.
30
- * @param {ExprValue} expr The date/time expression to bin.
31
- * @param {string} unit The datetime interval unit to bin by.
32
- * @param {number} [steps=1] The number of interval steps.
33
- * @returns {FunctionNode}
34
- */
35
- export function dateBin(expr, unit, steps = 1) {
36
- return fn('time_bucket', interval(unit, steps), expr);
37
- }
38
-
39
- /**
40
- * Map date/times to a month value, all within the same year for comparison.
41
- * The resulting value is still date-typed.
42
- * @param {ExprValue} expr The date/time expression.
43
- * @returns {FunctionNode}
44
- */
45
- export function dateMonth(expr) {
46
- return fn('make_date', 2012, fn('month', expr), 1);
47
- }
48
-
49
- /**
50
- * Map date/times to a month and day value, all within the same year for
51
- * comparison. The resulting value is still date-typed.
52
- * @param {ExprValue} expr The date/time expression.
53
- * @returns {FunctionNode}
54
- */
55
- export function dateMonthDay(expr) {
56
- const d = asNode(expr);
57
- return fn('make_date', 2012, fn('month', d), fn('day', d));
58
- }
59
-
60
- /**
61
- * Map date/times to a day of the month value, all within the same year and month
62
- * for comparison. The resulting value is still date-typed.
63
- * @param {ExprValue} expr The date/time expression.
64
- * @returns {FunctionNode}
65
- */
66
- export function dateDay(expr) {
67
- return fn('make_date', 2012, 1, fn('day', expr));
68
- }