@devrev/meerkat-core 0.0.97 → 0.0.99

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 (370) hide show
  1. package/package.json +2 -2
  2. package/src/ast-builder/ast-builder.js +97 -0
  3. package/src/ast-builder/ast-builder.js.map +1 -0
  4. package/src/ast-deserializer/ast-deserializer.js +17 -0
  5. package/src/ast-deserializer/ast-deserializer.js.map +1 -0
  6. package/src/ast-serializer/ast-serializer.js +8 -0
  7. package/src/ast-serializer/ast-serializer.js.map +1 -0
  8. package/src/ast-validator/dimension-validator.js +49 -0
  9. package/src/ast-validator/dimension-validator.js.map +1 -0
  10. package/src/ast-validator/index.js +12 -0
  11. package/src/ast-validator/index.js.map +1 -0
  12. package/src/ast-validator/measure-validator.js +155 -0
  13. package/src/ast-validator/measure-validator.js.map +1 -0
  14. package/{ast-validator → src/ast-validator}/tests/test-data.js +692 -890
  15. package/src/ast-validator/tests/test-data.js.map +1 -0
  16. package/src/ast-validator/types.js +3 -0
  17. package/src/ast-validator/types.js.map +1 -0
  18. package/src/ast-validator/utils.js +24 -0
  19. package/src/ast-validator/utils.js.map +1 -0
  20. package/src/context-params/context-params-ast.js +42 -0
  21. package/src/context-params/context-params-ast.js.map +1 -0
  22. package/src/cube-filter-transformer/and/and.js +14 -0
  23. package/src/cube-filter-transformer/and/and.js.map +1 -0
  24. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +145 -0
  25. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
  26. package/src/cube-filter-transformer/contains/contains.js +62 -0
  27. package/src/cube-filter-transformer/contains/contains.js.map +1 -0
  28. package/src/cube-filter-transformer/equals/equals-array.js +71 -0
  29. package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
  30. package/src/cube-filter-transformer/equals/equals.js +36 -0
  31. package/src/cube-filter-transformer/equals/equals.js.map +1 -0
  32. package/src/cube-filter-transformer/factory.js +120 -0
  33. package/src/cube-filter-transformer/factory.js.map +1 -0
  34. package/src/cube-filter-transformer/gt/gt.js +28 -0
  35. package/src/cube-filter-transformer/gt/gt.js.map +1 -0
  36. package/src/cube-filter-transformer/gte/gte.js +28 -0
  37. package/src/cube-filter-transformer/gte/gte.js.map +1 -0
  38. package/src/cube-filter-transformer/in/in.js +69 -0
  39. package/src/cube-filter-transformer/in/in.js.map +1 -0
  40. package/src/cube-filter-transformer/in-date-range/in-date-range.js +21 -0
  41. package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
  42. package/src/cube-filter-transformer/lt/lt.js +28 -0
  43. package/src/cube-filter-transformer/lt/lt.js.map +1 -0
  44. package/src/cube-filter-transformer/lte/lte.js +28 -0
  45. package/src/cube-filter-transformer/lte/lte.js.map +1 -0
  46. package/src/cube-filter-transformer/not/not.js +14 -0
  47. package/src/cube-filter-transformer/not/not.js.map +1 -0
  48. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +21 -0
  49. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
  50. package/src/cube-filter-transformer/not-contains/not-contains.js +62 -0
  51. package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
  52. package/src/cube-filter-transformer/not-equals/not-equals-array.js +21 -0
  53. package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
  54. package/src/cube-filter-transformer/not-equals/not-equals.js +36 -0
  55. package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
  56. package/src/cube-filter-transformer/not-in/not-in.js +76 -0
  57. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
  58. package/src/cube-filter-transformer/not-set/not-set.js +23 -0
  59. package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
  60. package/src/cube-filter-transformer/or/or.js +14 -0
  61. package/src/cube-filter-transformer/or/or.js.map +1 -0
  62. package/src/cube-filter-transformer/set/set.js +23 -0
  63. package/src/cube-filter-transformer/set/set.js.map +1 -0
  64. package/src/cube-group-by-transformer/cube-group-by-transformer.d.ts +2 -1
  65. package/src/cube-group-by-transformer/cube-group-by-transformer.js +25 -0
  66. package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
  67. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js +42 -0
  68. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
  69. package/src/cube-measure-transformer/cube-measure-transformer.js +142 -0
  70. package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
  71. package/src/cube-order-by-transformer/cube-order-by-transformer.d.ts +2 -1
  72. package/src/cube-order-by-transformer/cube-order-by-transformer.js +40 -0
  73. package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
  74. package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
  75. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
  76. package/src/filter-params/filter-params-ast.js +114 -0
  77. package/src/filter-params/filter-params-ast.js.map +1 -0
  78. package/src/get-filter-params-sql/get-filter-params-sql.js +25 -0
  79. package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
  80. package/src/get-final-base-sql/get-final-base-sql.js +28 -0
  81. package/src/get-final-base-sql/get-final-base-sql.js.map +1 -0
  82. package/{get-wrapped-base-query-with-projections → src/get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +48 -61
  83. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
  84. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +91 -0
  85. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
  86. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +32 -0
  87. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
  88. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +32 -0
  89. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
  90. package/src/index.js +37 -0
  91. package/src/index.js.map +1 -0
  92. package/src/joins/joins.js +162 -0
  93. package/src/joins/joins.js.map +1 -0
  94. package/src/member-formatters/constants.js +6 -0
  95. package/src/member-formatters/constants.js.map +1 -0
  96. package/src/member-formatters/get-alias.d.ts +15 -0
  97. package/src/member-formatters/get-alias.js +42 -0
  98. package/src/member-formatters/get-alias.js.map +1 -0
  99. package/src/member-formatters/get-namespaced-key.d.ts +1 -0
  100. package/src/member-formatters/get-namespaced-key.js +6 -0
  101. package/src/member-formatters/get-namespaced-key.js.map +1 -0
  102. package/src/member-formatters/index.d.ts +2 -0
  103. package/src/member-formatters/index.js +15 -0
  104. package/src/member-formatters/index.js.map +1 -0
  105. package/src/member-formatters/member-key-to-safe-key.js +9 -0
  106. package/src/member-formatters/member-key-to-safe-key.js.map +1 -0
  107. package/src/member-formatters/split-into-data-source-and-fields.js +10 -0
  108. package/src/member-formatters/split-into-data-source-and-fields.js.map +1 -0
  109. package/src/resolution/resolution.d.ts +4 -3
  110. package/src/resolution/resolution.js +141 -0
  111. package/src/resolution/resolution.js.map +1 -0
  112. package/src/resolution/types.js +5 -0
  113. package/src/resolution/types.js.map +1 -0
  114. package/src/types/cube-types/index.js +6 -0
  115. package/src/types/cube-types/index.js.map +1 -0
  116. package/src/types/cube-types/query.js +8 -0
  117. package/src/types/cube-types/query.js.map +1 -0
  118. package/src/types/cube-types/table.d.ts +2 -0
  119. package/src/types/cube-types/table.js +3 -0
  120. package/src/types/cube-types/table.js.map +1 -0
  121. package/src/types/duckdb-serialization-types/index.js +11 -0
  122. package/src/types/duckdb-serialization-types/index.js.map +1 -0
  123. package/{types → src/types}/duckdb-serialization-types/serialization/Constraint.js +6 -19
  124. package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
  125. package/{types → src/types}/duckdb-serialization-types/serialization/CreateInfo.js +10 -29
  126. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
  127. package/{types → src/types}/duckdb-serialization-types/serialization/Expression.js +6 -19
  128. package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
  129. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +28 -0
  130. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
  131. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +10 -0
  132. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
  133. package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
  134. package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
  135. package/{types → src/types}/duckdb-serialization-types/serialization/Nodes.js +17 -45
  136. package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
  137. package/{types → src/types}/duckdb-serialization-types/serialization/ParseInfo.js +20 -54
  138. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
  139. package/{types → src/types}/duckdb-serialization-types/serialization/ParsedExpression.js +6 -19
  140. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
  141. package/{types → src/types}/duckdb-serialization-types/serialization/QueryNode.js +8 -24
  142. package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
  143. package/{types → src/types}/duckdb-serialization-types/serialization/ResultModifier.js +4 -9
  144. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
  145. package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
  146. package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
  147. package/{types → src/types}/duckdb-serialization-types/serialization/TableFilter.js +4 -9
  148. package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
  149. package/{types → src/types}/duckdb-serialization-types/serialization/TableRef.js +8 -24
  150. package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
  151. package/{types → src/types}/duckdb-serialization-types/serialization/Types.js +4 -9
  152. package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
  153. package/src/types/duckdb-serialization-types/serialization/example.js +109 -0
  154. package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
  155. package/src/types/utils.js +69 -0
  156. package/src/types/utils.js.map +1 -0
  157. package/{utils → src/utils}/__fixtures__/joins.fixtures.js +228 -316
  158. package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
  159. package/src/utils/base-ast.js +49 -0
  160. package/src/utils/base-ast.js.map +1 -0
  161. package/src/utils/cube-filter-enrichment.js +53 -0
  162. package/src/utils/cube-filter-enrichment.js.map +1 -0
  163. package/{utils → src/utils}/cube-to-table-schema.js +25 -38
  164. package/src/utils/cube-to-table-schema.js.map +1 -0
  165. package/src/utils/cube-type-to-duckdb-type.js +12 -0
  166. package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
  167. package/src/utils/find-in-table-schema.d.ts +3 -1
  168. package/src/utils/find-in-table-schema.js +55 -0
  169. package/src/utils/find-in-table-schema.js.map +1 -0
  170. package/src/utils/get-column-names-from-ast.js +45 -0
  171. package/src/utils/get-column-names-from-ast.js.map +1 -0
  172. package/src/utils/get-possible-nodes.js +146 -0
  173. package/src/utils/get-possible-nodes.js.map +1 -0
  174. package/src/utils/get-type-info.js +34 -0
  175. package/src/utils/get-type-info.js.map +1 -0
  176. package/src/utils/is-array-member-type.js +8 -0
  177. package/src/utils/is-array-member-type.js.map +1 -0
  178. package/src/utils/key-from-measures-dimension.js +32 -0
  179. package/src/utils/key-from-measures-dimension.js.map +1 -0
  180. package/src/utils/meerkat-placeholder-replacer.js +10 -0
  181. package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
  182. package/src/utils/modify-meerkat-filter.d.ts +2 -3
  183. package/src/utils/modify-meerkat-filter.js +24 -0
  184. package/src/utils/modify-meerkat-filter.js.map +1 -0
  185. package/{utils → src/utils}/type-guards.js +10 -28
  186. package/src/utils/type-guards.js.map +1 -0
  187. package/ast-builder/ast-builder.js +0 -90
  188. package/ast-builder/ast-builder.js.map +0 -1
  189. package/ast-deserializer/ast-deserializer.js +0 -30
  190. package/ast-deserializer/ast-deserializer.js.map +0 -1
  191. package/ast-serializer/ast-serializer.js +0 -12
  192. package/ast-serializer/ast-serializer.js.map +0 -1
  193. package/ast-validator/dimension-validator.js +0 -54
  194. package/ast-validator/dimension-validator.js.map +0 -1
  195. package/ast-validator/index.js +0 -25
  196. package/ast-validator/index.js.map +0 -1
  197. package/ast-validator/measure-validator.js +0 -163
  198. package/ast-validator/measure-validator.js.map +0 -1
  199. package/ast-validator/tests/test-data.js.map +0 -1
  200. package/ast-validator/types.js +0 -3
  201. package/ast-validator/types.js.map +0 -1
  202. package/ast-validator/utils.js +0 -35
  203. package/ast-validator/utils.js.map +0 -1
  204. package/context-params/context-params-ast.js +0 -55
  205. package/context-params/context-params-ast.js.map +0 -1
  206. package/cube-filter-transformer/and/and.js +0 -18
  207. package/cube-filter-transformer/and/and.js.map +0 -1
  208. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js +0 -160
  209. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
  210. package/cube-filter-transformer/contains/contains.js +0 -71
  211. package/cube-filter-transformer/contains/contains.js.map +0 -1
  212. package/cube-filter-transformer/equals/equals-array.js +0 -77
  213. package/cube-filter-transformer/equals/equals-array.js.map +0 -1
  214. package/cube-filter-transformer/equals/equals.js +0 -37
  215. package/cube-filter-transformer/equals/equals.js.map +0 -1
  216. package/cube-filter-transformer/factory.js +0 -124
  217. package/cube-filter-transformer/factory.js.map +0 -1
  218. package/cube-filter-transformer/gt/gt.js +0 -30
  219. package/cube-filter-transformer/gt/gt.js.map +0 -1
  220. package/cube-filter-transformer/gte/gte.js +0 -30
  221. package/cube-filter-transformer/gte/gte.js.map +0 -1
  222. package/cube-filter-transformer/in/in.js +0 -78
  223. package/cube-filter-transformer/in/in.js.map +0 -1
  224. package/cube-filter-transformer/in-date-range/in-date-range.js +0 -24
  225. package/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
  226. package/cube-filter-transformer/lt/lt.js +0 -30
  227. package/cube-filter-transformer/lt/lt.js.map +0 -1
  228. package/cube-filter-transformer/lte/lte.js +0 -30
  229. package/cube-filter-transformer/lte/lte.js.map +0 -1
  230. package/cube-filter-transformer/not/not.js +0 -18
  231. package/cube-filter-transformer/not/not.js.map +0 -1
  232. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js +0 -24
  233. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
  234. package/cube-filter-transformer/not-contains/not-contains.js +0 -71
  235. package/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
  236. package/cube-filter-transformer/not-equals/not-equals-array.js +0 -26
  237. package/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
  238. package/cube-filter-transformer/not-equals/not-equals.js +0 -37
  239. package/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
  240. package/cube-filter-transformer/not-in/not-in.js +0 -85
  241. package/cube-filter-transformer/not-in/not-in.js.map +0 -1
  242. package/cube-filter-transformer/not-set/not-set.js +0 -27
  243. package/cube-filter-transformer/not-set/not-set.js.map +0 -1
  244. package/cube-filter-transformer/or/or.js +0 -18
  245. package/cube-filter-transformer/or/or.js.map +0 -1
  246. package/cube-filter-transformer/set/set.js +0 -27
  247. package/cube-filter-transformer/set/set.js.map +0 -1
  248. package/cube-group-by-transformer/cube-group-by-transformer.js +0 -25
  249. package/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
  250. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js +0 -42
  251. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
  252. package/cube-measure-transformer/cube-measure-transformer.js +0 -127
  253. package/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
  254. package/cube-order-by-transformer/cube-order-by-transformer.js +0 -39
  255. package/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
  256. package/cube-to-duckdb/cube-filter-to-duckdb.js +0 -3
  257. package/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
  258. package/filter-params/filter-params-ast.js +0 -115
  259. package/filter-params/filter-params-ast.js.map +0 -1
  260. package/get-filter-params-sql/get-filter-params-sql.js +0 -28
  261. package/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
  262. package/get-final-base-sql/get-final-base-sql.js +0 -30
  263. package/get-final-base-sql/get-final-base-sql.js.map +0 -1
  264. package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
  265. package/get-wrapped-base-query-with-projections/get-projection-clause.js +0 -87
  266. package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
  267. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +0 -33
  268. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
  269. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +0 -60
  270. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
  271. package/index.js +0 -66
  272. package/index.js.map +0 -1
  273. package/joins/joins.js +0 -170
  274. package/joins/joins.js.map +0 -1
  275. package/member-formatters/constants.js +0 -19
  276. package/member-formatters/constants.js.map +0 -1
  277. package/member-formatters/index.js +0 -23
  278. package/member-formatters/index.js.map +0 -1
  279. package/member-formatters/member-key-to-safe-key.js +0 -13
  280. package/member-formatters/member-key-to-safe-key.js.map +0 -1
  281. package/member-formatters/split-into-data-source-and-fields.js +0 -17
  282. package/member-formatters/split-into-data-source-and-fields.js.map +0 -1
  283. package/resolution/resolution.js +0 -128
  284. package/resolution/resolution.js.map +0 -1
  285. package/resolution/types.js +0 -10
  286. package/resolution/types.js.map +0 -1
  287. package/types/cube-types/index.d.js +0 -6
  288. package/types/cube-types/index.d.js.map +0 -1
  289. package/types/cube-types/index.js +0 -6
  290. package/types/cube-types/index.js.map +0 -1
  291. package/types/cube-types/query.d.js +0 -5
  292. package/types/cube-types/query.d.js.map +0 -1
  293. package/types/cube-types/query.js +0 -14
  294. package/types/cube-types/query.js.map +0 -1
  295. package/types/cube-types/table.d.js +0 -3
  296. package/types/cube-types/table.d.js.map +0 -1
  297. package/types/cube-types/table.js +0 -3
  298. package/types/cube-types/table.js.map +0 -1
  299. package/types/duckdb-serialization-types/index.d.js +0 -11
  300. package/types/duckdb-serialization-types/index.d.js.map +0 -1
  301. package/types/duckdb-serialization-types/index.js +0 -11
  302. package/types/duckdb-serialization-types/index.js.map +0 -1
  303. package/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
  304. package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
  305. package/types/duckdb-serialization-types/serialization/Expression.d.js +0 -3
  306. package/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
  307. package/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
  308. package/types/duckdb-serialization-types/serialization/LogicalOperator.js +0 -47
  309. package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
  310. package/types/duckdb-serialization-types/serialization/MacroFunction.js +0 -15
  311. package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
  312. package/types/duckdb-serialization-types/serialization/Misc.d.js +0 -3
  313. package/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
  314. package/types/duckdb-serialization-types/serialization/Misc.js +0 -3
  315. package/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
  316. package/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -3
  317. package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
  318. package/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
  319. package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
  320. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -3
  321. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
  322. package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
  323. package/types/duckdb-serialization-types/serialization/QueryNode.d.js +0 -3
  324. package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
  325. package/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
  326. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -3
  327. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
  328. package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
  329. package/types/duckdb-serialization-types/serialization/Statement.d.js +0 -3
  330. package/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
  331. package/types/duckdb-serialization-types/serialization/Statement.js +0 -3
  332. package/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
  333. package/types/duckdb-serialization-types/serialization/TableFilter.d.js +0 -3
  334. package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
  335. package/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
  336. package/types/duckdb-serialization-types/serialization/TableRef.d.js +0 -3
  337. package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
  338. package/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
  339. package/types/duckdb-serialization-types/serialization/Types.d.js +0 -3
  340. package/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
  341. package/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
  342. package/types/duckdb-serialization-types/serialization/example.js +0 -131
  343. package/types/duckdb-serialization-types/serialization/example.js.map +0 -1
  344. package/types/utils.js +0 -108
  345. package/types/utils.js.map +0 -1
  346. package/utils/__fixtures__/joins.fixtures.js.map +0 -1
  347. package/utils/base-ast.js +0 -63
  348. package/utils/base-ast.js.map +0 -1
  349. package/utils/cube-filter-enrichment.js +0 -63
  350. package/utils/cube-filter-enrichment.js.map +0 -1
  351. package/utils/cube-to-table-schema.js.map +0 -1
  352. package/utils/cube-type-to-duckdb-type.js +0 -17
  353. package/utils/cube-type-to-duckdb-type.js.map +0 -1
  354. package/utils/find-in-table-schema.js +0 -40
  355. package/utils/find-in-table-schema.js.map +0 -1
  356. package/utils/get-column-names-from-ast.js +0 -45
  357. package/utils/get-column-names-from-ast.js.map +0 -1
  358. package/utils/get-possible-nodes.js +0 -152
  359. package/utils/get-possible-nodes.js.map +0 -1
  360. package/utils/get-type-info.js +0 -44
  361. package/utils/get-type-info.js.map +0 -1
  362. package/utils/is-array-member-type.js +0 -12
  363. package/utils/is-array-member-type.js.map +0 -1
  364. package/utils/key-from-measures-dimension.js +0 -35
  365. package/utils/key-from-measures-dimension.js.map +0 -1
  366. package/utils/meerkat-placeholder-replacer.js +0 -14
  367. package/utils/meerkat-placeholder-replacer.js.map +0 -1
  368. package/utils/modify-meerkat-filter.js +0 -30
  369. package/utils/modify-meerkat-filter.js.map +0 -1
  370. package/utils/type-guards.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.notSetTransform = void 0;
4
+ const constants_1 = require("../../member-formatters/constants");
5
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
+ const notSetTransform = (query) => {
7
+ const { member } = query;
8
+ return {
9
+ class: Expression_1.ExpressionClass.OPERATOR,
10
+ type: Expression_1.ExpressionType.OPERATOR_IS_NULL,
11
+ alias: '',
12
+ children: [
13
+ {
14
+ class: 'COLUMN_REF',
15
+ type: 'COLUMN_REF',
16
+ alias: '',
17
+ column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
18
+ },
19
+ ],
20
+ };
21
+ };
22
+ exports.notSetTransform = notSetTransform;
23
+ //# sourceMappingURL=not-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-set.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-set/not-set.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAC1E,gGAGyE;AAGlE,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,gBAAgB;QACrC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.orDuckdbCondition = void 0;
4
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
+ const orDuckdbCondition = () => {
6
+ return {
7
+ class: Expression_1.ExpressionClass.CONJUNCTION,
8
+ type: Expression_1.ExpressionType.CONJUNCTION_OR,
9
+ alias: '',
10
+ children: [],
11
+ };
12
+ };
13
+ exports.orDuckdbCondition = orDuckdbCondition;
14
+ //# sourceMappingURL=or.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/or/or.ts"],"names":[],"mappings":";;;AACA,gGAAkH;AAE3G,MAAM,iBAAiB,GAAG,GAA0B,EAAE;IAC3D,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,WAAW;QAClC,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setTransform = void 0;
4
+ const constants_1 = require("../../member-formatters/constants");
5
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
+ const setTransform = (query) => {
7
+ const { member } = query;
8
+ return {
9
+ class: Expression_1.ExpressionClass.OPERATOR,
10
+ type: Expression_1.ExpressionType.OPERATOR_IS_NOT_NULL,
11
+ alias: '',
12
+ children: [
13
+ {
14
+ class: 'COLUMN_REF',
15
+ type: 'COLUMN_REF',
16
+ alias: '',
17
+ column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
18
+ },
19
+ ],
20
+ };
21
+ };
22
+ exports.setTransform = setTransform;
23
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/set/set.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAC1E,gGAGyE;AAGlE,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,oBAAoB;QACzC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB"}
@@ -1,6 +1,7 @@
1
+ import { TableSchema } from '../types/cube-types';
1
2
  import { Member } from '../types/cube-types/query';
2
3
  import { ExpressionClass, ExpressionType } from '../types/duckdb-serialization-types/serialization/Expression';
3
- export declare const cubeDimensionToGroupByAST: (dimensions: Member[]) => {
4
+ export declare const cubeDimensionToGroupByAST: (dimensions: Member[], tableSchema: TableSchema) => {
4
5
  class: ExpressionClass;
5
6
  type: ExpressionType;
6
7
  alias: string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeDimensionToGroupByAST = void 0;
4
+ const get_alias_1 = require("../member-formatters/get-alias");
5
+ const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
6
+ const cubeDimensionToGroupByAST = (dimensions, tableSchema) => {
7
+ const groupByAST = dimensions.map((dimension) => {
8
+ const dimensionAST = {
9
+ class: Expression_1.ExpressionClass.COLUMN_REF,
10
+ type: Expression_1.ExpressionType.COLUMN_REF,
11
+ alias: '',
12
+ column_names: [
13
+ (0, get_alias_1.getAliasFromSchema)({
14
+ name: dimension,
15
+ tableSchema,
16
+ aliasContext: { isAstIdentifier: true },
17
+ }),
18
+ ],
19
+ };
20
+ return dimensionAST;
21
+ });
22
+ return groupByAST;
23
+ };
24
+ exports.cubeDimensionToGroupByAST = cubeDimensionToGroupByAST;
25
+ //# sourceMappingURL=cube-group-by-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-group-by-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-group-by-transformer/cube-group-by-transformer.ts"],"names":[],"mappings":";;;AAAA,8DAAoE;AAGpE,6FAGsE;AAE/D,MAAM,yBAAyB,GAAG,CACvC,UAAoB,EACpB,WAAwB,EACxB,EAAE;IACF,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC9C,MAAM,YAAY,GAAG;YACnB,KAAK,EAAE,4BAAe,CAAC,UAAU;YACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;YAC/B,KAAK,EAAE,EAAE;YACT,YAAY,EAAE;gBACZ,IAAA,8BAAkB,EAAC;oBACjB,IAAI,EAAE,SAAS;oBACf,WAAW;oBACX,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;iBACxC,CAAC;aACH;SACF,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAtBW,QAAA,yBAAyB,6BAsBpC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeLimitOffsetToAST = void 0;
4
+ const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
5
+ const ResultModifier_1 = require("../types/duckdb-serialization-types/serialization/ResultModifier");
6
+ const cubeLimitOffsetToAST = (limit, offset) => {
7
+ return {
8
+ type: ResultModifier_1.ResultModifierType.LIMIT_MODIFIER,
9
+ limit: limit
10
+ ? {
11
+ class: Expression_1.ExpressionClass.CONSTANT,
12
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
13
+ alias: '',
14
+ value: {
15
+ type: {
16
+ id: 'INTEGER',
17
+ type_info: null,
18
+ },
19
+ is_null: false,
20
+ value: limit,
21
+ },
22
+ }
23
+ : null,
24
+ offset: offset
25
+ ? {
26
+ class: Expression_1.ExpressionClass.CONSTANT,
27
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
28
+ alias: '',
29
+ value: {
30
+ type: {
31
+ id: 'INTEGER',
32
+ type_info: null,
33
+ },
34
+ is_null: false,
35
+ value: offset,
36
+ },
37
+ }
38
+ : null,
39
+ };
40
+ };
41
+ exports.cubeLimitOffsetToAST = cubeLimitOffsetToAST;
42
+ //# sourceMappingURL=cube-limit-offset-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-limit-offset-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-limit-offset-transformer/cube-limit-offset-transformer.ts"],"names":[],"mappings":";;;AAAA,6FAA+G;AAC/G,qGAAsG;AAE/F,MAAM,oBAAoB,GAAG,CAClC,KAAqB,EACrB,MAAsB,EACtB,EAAE;IACF,OAAO;QACL,IAAI,EAAE,mCAAkB,CAAC,cAAc;QACvC,KAAK,EAAE,KAAK;YACV,CAAC,CAAC;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,SAAS;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK;iBACb;aACF;YACH,CAAC,CAAC,IAAI;QACR,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,SAAS;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM;iBACd;aACF;YACH,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyProjectionToSQLQuery = exports.getAllColumnUsedInMeasures = exports.getSelectReplacedSql = exports.cubeMeasureToSQLSelectString = void 0;
4
+ const member_formatters_1 = require("../member-formatters");
5
+ const split_into_data_source_and_fields_1 = require("../member-formatters/split-into-data-source-and-fields");
6
+ const meerkat_placeholder_replacer_1 = require("../utils/meerkat-placeholder-replacer");
7
+ const cubeMeasureToSQLSelectString = (measures, tableSchema) => {
8
+ let base = 'SELECT';
9
+ for (let i = 0; i < measures.length; i++) {
10
+ const measure = measures[i];
11
+ if (measure === '*') {
12
+ base += ` ${tableSchema.name}.*`;
13
+ continue;
14
+ }
15
+ const [tableSchemaName, measureKeyWithoutTable] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(measure);
16
+ const aliasKey = (0, member_formatters_1.getAliasFromSchema)({
17
+ name: measure,
18
+ tableSchema,
19
+ aliasContext: {
20
+ isAstIdentifier: false,
21
+ },
22
+ });
23
+ const measureSchema = tableSchema.measures.find((m) => m.name === measureKeyWithoutTable);
24
+ if (!measureSchema) {
25
+ continue;
26
+ }
27
+ if (i > 0) {
28
+ base += ', ';
29
+ }
30
+ let meerkatReplacedSqlString = (0, meerkat_placeholder_replacer_1.meerkatPlaceholderReplacer)(measureSchema.sql, tableSchema.name);
31
+ /**
32
+ * Here we extract the columns used in the measure and replace them with the safeKey.
33
+ * We need to do this because the columns used in the measure are not directly available in the joined table.
34
+ * Thus we need to project them and use them in the join.
35
+ */
36
+ const columnsUsedInMeasure = getColumnsFromSQL(meerkatReplacedSqlString, tableSchemaName);
37
+ //Replace all the columnsUsedInMeasure with safeKey
38
+ columnsUsedInMeasure === null || columnsUsedInMeasure === void 0 ? void 0 : columnsUsedInMeasure.forEach((measureKey) => {
39
+ const [_, column] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(measureKey);
40
+ const memberKey = (0, member_formatters_1.getNamespacedKey)(tableSchemaName, column);
41
+ const columnKey = (0, member_formatters_1.getAliasFromSchema)({
42
+ name: memberKey,
43
+ tableSchema,
44
+ aliasContext: {
45
+ isAstIdentifier: false,
46
+ },
47
+ });
48
+ meerkatReplacedSqlString = meerkatReplacedSqlString.replace(memberKey, columnKey);
49
+ });
50
+ base += ` ${meerkatReplacedSqlString} AS ${aliasKey} `;
51
+ }
52
+ return base;
53
+ };
54
+ exports.cubeMeasureToSQLSelectString = cubeMeasureToSQLSelectString;
55
+ const addDimensionToSQLProjection = (dimensions, selectString, tableSchema) => {
56
+ if (dimensions.length === 0) {
57
+ return selectString;
58
+ }
59
+ let newSelectString = selectString;
60
+ for (let i = 0; i < dimensions.length; i++) {
61
+ const dimension = dimensions[i];
62
+ const [_, dimensionKeyWithoutTable] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(dimension);
63
+ const dimensionSchema = tableSchema.dimensions.find((m) => m.name === dimensionKeyWithoutTable);
64
+ const aliasKey = (0, member_formatters_1.getAliasFromSchema)({
65
+ name: dimension,
66
+ tableSchema,
67
+ aliasContext: {
68
+ isAstIdentifier: false,
69
+ },
70
+ });
71
+ if (!dimensionSchema) {
72
+ continue;
73
+ }
74
+ if (i > 0) {
75
+ newSelectString += ',';
76
+ }
77
+ // since alias key is expected to have been unfurled in the base query, we can just use it as is.
78
+ newSelectString += ` ${aliasKey}`;
79
+ }
80
+ return newSelectString;
81
+ };
82
+ const getSelectReplacedSql = (sql, selectString) => {
83
+ /*
84
+ ** Replaces the select portion of a SQL string with the selectString passed.
85
+ */
86
+ const selectRegex = /SELECT\s\*/;
87
+ const match = sql.match(selectRegex);
88
+ if (!match) {
89
+ return sql;
90
+ }
91
+ const selectIndex = match.index;
92
+ if (selectIndex === undefined) {
93
+ throw new Error('SELECT * not found in SQL string');
94
+ }
95
+ const selectLength = match[0].length;
96
+ const beforeSelect = sql.substring(0, selectIndex);
97
+ const afterSelect = sql.substring(selectIndex + selectLength);
98
+ return `${beforeSelect}${selectString}${afterSelect}`;
99
+ };
100
+ exports.getSelectReplacedSql = getSelectReplacedSql;
101
+ /**
102
+ * Get all the columns used in the measures.
103
+ * This is used for extracting the columns used in the measures needed for the projection.
104
+ * Example: The joins implementation uses this to get the columns used in the measures to join the tables.
105
+ * like the SQL for the measure is `SUM(table.total)` and the table name is `table`, then the column used is `total`
106
+ * table cannot be used directly here because the joined table would have column name ambiguity.
107
+ * Thus these columns are projected and directly used in the join.
108
+ */
109
+ const getAllColumnUsedInMeasures = (measures, tableSchema) => {
110
+ let columns = [];
111
+ measures.forEach((measure) => {
112
+ const columnMatch = getColumnsFromSQL(measure.sql, tableSchema.name);
113
+ if (columnMatch && columnMatch.length > 0) {
114
+ columns = [...columns, ...columnMatch];
115
+ }
116
+ });
117
+ // Remove duplicates
118
+ return [...new Set(columns)];
119
+ };
120
+ exports.getAllColumnUsedInMeasures = getAllColumnUsedInMeasures;
121
+ const getColumnsFromSQL = (sql, tableName) => {
122
+ const regex = new RegExp(`(${tableName}\\.[a-zA-Z0-9_]+)`, 'g');
123
+ const columnMatch = sql.match(regex);
124
+ return columnMatch;
125
+ };
126
+ /**
127
+ * Replace the first SELECT * from the sqlToReplace with the cube measure
128
+ * @param measures
129
+ * @param tableSchema
130
+ * @param sqlToReplace
131
+ * @returns
132
+ */
133
+ const applyProjectionToSQLQuery = (dimensions, measures, tableSchema, sqlToReplace) => {
134
+ let measureSelectString = (0, exports.cubeMeasureToSQLSelectString)(measures, tableSchema);
135
+ if (measures.length > 0 && dimensions.length > 0) {
136
+ measureSelectString += ', ';
137
+ }
138
+ const selectString = addDimensionToSQLProjection(dimensions, measureSelectString, tableSchema);
139
+ return (0, exports.getSelectReplacedSql)(sqlToReplace, selectString);
140
+ };
141
+ exports.applyProjectionToSQLQuery = applyProjectionToSQLQuery;
142
+ //# sourceMappingURL=cube-measure-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-measure-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-measure-transformer/cube-measure-transformer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
+ import { TableSchema } from '../types/cube-types';
1
2
  import { ExpressionClass, ExpressionType } from '../types/duckdb-serialization-types/serialization/Expression';
2
3
  import { OrderType } from '../types/duckdb-serialization-types/serialization/Nodes';
3
4
  import { ResultModifierType } from '../types/duckdb-serialization-types/serialization/ResultModifier';
4
5
  export declare const cubeOrderByToAST: (order: {
5
6
  [key: string]: "asc" | "desc";
6
- }) => {
7
+ }, tableSchema: TableSchema) => {
7
8
  type: ResultModifierType;
8
9
  orders: {
9
10
  type: OrderType;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeOrderByToAST = void 0;
4
+ const get_alias_1 = require("../member-formatters/get-alias");
5
+ const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
6
+ const Nodes_1 = require("../types/duckdb-serialization-types/serialization/Nodes");
7
+ const ResultModifier_1 = require("../types/duckdb-serialization-types/serialization/ResultModifier");
8
+ const cubeOrderByToAST = (order, tableSchema) => {
9
+ const orderArr = [];
10
+ for (const key in order) {
11
+ const value = order[key];
12
+ const astOrderBy = value === 'asc' ? Nodes_1.OrderType.ASCENDING : Nodes_1.OrderType.DESCENDING;
13
+ const orderByAST = {
14
+ type: astOrderBy,
15
+ null_order: Nodes_1.OrderType.ORDER_DEFAULT,
16
+ expression: {
17
+ class: Expression_1.ExpressionClass.COLUMN_REF,
18
+ type: Expression_1.ExpressionType.COLUMN_REF,
19
+ alias: '',
20
+ /**
21
+ * We need to convert the key in the __ format as they are being projected in this format
22
+ */
23
+ column_names: [
24
+ (0, get_alias_1.getAliasFromSchema)({
25
+ name: key,
26
+ tableSchema,
27
+ aliasContext: { isAstIdentifier: true },
28
+ }),
29
+ ],
30
+ },
31
+ };
32
+ orderArr.push(orderByAST);
33
+ }
34
+ return {
35
+ type: ResultModifier_1.ResultModifierType.ORDER_MODIFIER,
36
+ orders: orderArr,
37
+ };
38
+ };
39
+ exports.cubeOrderByToAST = cubeOrderByToAST;
40
+ //# sourceMappingURL=cube-order-by-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-order-by-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-order-by-transformer/cube-order-by-transformer.ts"],"names":[],"mappings":";;;AAAA,8DAAoE;AAEpE,6FAGsE;AACtE,mFAAoF;AACpF,qGAAsG;AAE/F,MAAM,gBAAgB,GAAG,CAC9B,KAAwC,EACxC,WAAwB,EACxB,EAAE;IACF,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,UAAU,GACd,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAS,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAS,CAAC,UAAU,CAAC;QAC/D,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,iBAAS,CAAC,aAAa;YACnC,UAAU,EAAE;gBACV,KAAK,EAAE,4BAAe,CAAC,UAAU;gBACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;gBAC/B,KAAK,EAAE,EAAE;gBACT;;mBAEG;gBACH,YAAY,EAAE;oBACZ,IAAA,8BAAkB,EAAC;wBACjB,IAAI,EAAE,GAAG;wBACT,WAAW;wBACX,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;qBACxC,CAAC;iBACH;aACF;SACF,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3B;IACD,OAAO;QACL,IAAI,EAAE,mCAAkB,CAAC,cAAc;QACvC,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC,CAAC;AAlCW,QAAA,gBAAgB,oBAkC3B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cube-filter-to-duckdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-filter-to-duckdb.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-to-duckdb/cube-filter-to-duckdb.ts"],"names":[],"mappings":""}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyFilterParamsToBaseSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.getFilterByMemberKey = exports.traverseAndFilter = void 0;
4
+ const ast_builder_1 = require("../ast-builder/ast-builder");
5
+ /**
6
+ * Get the query filter with only where filterKey matches
7
+ */
8
+ const traverseAndFilter = (filter, callback) => {
9
+ if ('member' in filter) {
10
+ return callback(filter) ? filter : null;
11
+ }
12
+ if ('and' in filter) {
13
+ const filteredAndFilters = filter.and
14
+ .map((subFilter) => (0, exports.traverseAndFilter)(subFilter, callback))
15
+ .filter(Boolean);
16
+ const obj = filteredAndFilters.length > 0 ? { and: filteredAndFilters } : null;
17
+ return obj;
18
+ }
19
+ if ('or' in filter) {
20
+ const filteredOrFilters = filter.or
21
+ .map((subFilter) => (0, exports.traverseAndFilter)(subFilter, callback))
22
+ .filter(Boolean);
23
+ const obj = filteredOrFilters.length > 0 ? { or: filteredOrFilters } : null;
24
+ return obj;
25
+ }
26
+ return null;
27
+ };
28
+ exports.traverseAndFilter = traverseAndFilter;
29
+ const getFilterByMemberKey = (filters, memberKey) => {
30
+ if (!filters)
31
+ return [];
32
+ return filters
33
+ .map((filter) => (0, exports.traverseAndFilter)(filter, (value) => value.member === memberKey))
34
+ .filter(Boolean);
35
+ };
36
+ exports.getFilterByMemberKey = getFilterByMemberKey;
37
+ /**
38
+ * Syntax for filter params in SQL:
39
+ * FILTER_PARAMS.cube_name.member_name.filter(sql_expression)
40
+ * Example:
41
+ * SELECT *
42
+ * FROM orders
43
+ * WHERE ${FILTER_PARAMS.order_facts.date.filter('date')}
44
+ * @param sql
45
+ */
46
+ const detectAllFilterParamsFromSQL = (sql) => {
47
+ const regex = /\${FILTER_PARAMS\.(\w+\.\w+)\.filter\('(\w+)'\)}/g;
48
+ const matches = [];
49
+ let match;
50
+ while ((match = regex.exec(sql)) !== null) {
51
+ matches.push({
52
+ memberKey: match[1],
53
+ filterExpression: match[2],
54
+ matchKey: match[0],
55
+ });
56
+ }
57
+ return matches;
58
+ };
59
+ exports.detectAllFilterParamsFromSQL = detectAllFilterParamsFromSQL;
60
+ const getFilterParamsAST = (query, tableSchema, filterType = 'PROJECTION_FILTER') => {
61
+ const filterParamKeys = (0, exports.detectAllFilterParamsFromSQL)(tableSchema.sql);
62
+ const filterParamsAST = [];
63
+ for (const filterParamKey of filterParamKeys) {
64
+ const filters = (0, exports.getFilterByMemberKey)(query.filters, filterParamKey.memberKey);
65
+ if (filters && filters.length > 0) {
66
+ filterParamsAST.push({
67
+ memberKey: filterParamKey.memberKey,
68
+ matchKey: filterParamKey.matchKey,
69
+ ast: (0, ast_builder_1.cubeToDuckdbAST)({ filters, measures: [], dimensions: [] }, tableSchema, {
70
+ filterType
71
+ }),
72
+ });
73
+ }
74
+ }
75
+ return filterParamsAST;
76
+ };
77
+ exports.getFilterParamsAST = getFilterParamsAST;
78
+ const replaceWhereClauseWithFiltersParamsSQL = (baseSQL, filterParamsSQL) => {
79
+ let finalSQL = baseSQL;
80
+ for (const filterParam of filterParamsSQL) {
81
+ /**
82
+ * Get SQL expression after WHERE clause
83
+ */
84
+ const whereClause = filterParam.sql.split('WHERE')[1];
85
+ /**
86
+ * Replace filter param with SQL expression
87
+ */
88
+ finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
89
+ }
90
+ return finalSQL;
91
+ };
92
+ const applyFilterParamsToBaseSQL = (baseSQL, filterParamsSQL) => {
93
+ let finalSQL = replaceWhereClauseWithFiltersParamsSQL(baseSQL, filterParamsSQL);
94
+ for (const filterParam of filterParamsSQL) {
95
+ /**
96
+ * Get SQL expression after WHERE clause
97
+ */
98
+ const whereClause = filterParam.sql.split('WHERE')[1];
99
+ /**
100
+ * Replace filter param with SQL expression
101
+ */
102
+ finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
103
+ }
104
+ /**
105
+ * Find all remaining filter params and replace them with TRUE
106
+ */
107
+ const remainingFilterParams = (0, exports.detectAllFilterParamsFromSQL)(finalSQL);
108
+ for (const filterParam of remainingFilterParams) {
109
+ finalSQL = finalSQL.replace(filterParam.matchKey, 'TRUE');
110
+ }
111
+ return finalSQL;
112
+ };
113
+ exports.applyFilterParamsToBaseSQL = applyFilterParamsToBaseSQL;
114
+ //# sourceMappingURL=filter-params-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-params-ast.js","sourceRoot":"","sources":["../../../../meerkat-core/src/filter-params/filter-params-ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFilterParamsSQL = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ast_deserializer_1 = require("../ast-deserializer/ast-deserializer");
6
+ const filter_params_ast_1 = require("../filter-params/filter-params-ast");
7
+ const getFilterParamsSQL = ({ query, tableSchema, filterType, getQueryOutput }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
+ const filterParamsAST = (0, filter_params_ast_1.getFilterParamsAST)(query, tableSchema, filterType);
9
+ const filterParamsSQL = [];
10
+ for (const filterParamAST of filterParamsAST) {
11
+ if (!filterParamAST.ast) {
12
+ continue;
13
+ }
14
+ const queryOutput = yield getQueryOutput((0, ast_deserializer_1.astDeserializerQuery)(filterParamAST.ast));
15
+ const sql = (0, ast_deserializer_1.deserializeQuery)(queryOutput);
16
+ filterParamsSQL.push({
17
+ memberKey: filterParamAST.memberKey,
18
+ sql: sql,
19
+ matchKey: filterParamAST.matchKey,
20
+ });
21
+ }
22
+ return filterParamsSQL;
23
+ });
24
+ exports.getFilterParamsSQL = getFilterParamsSQL;
25
+ //# sourceMappingURL=get-filter-params-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-filter-params-sql.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-filter-params-sql/get-filter-params-sql.ts"],"names":[],"mappings":";;;;AAAA,2EAA8F;AAC9F,0EAAwE;AAGjE,MAAM,kBAAkB,GAAG,CAAO,EACvC,KAAK,EACL,WAAW,EACX,UAAU,EACV,cAAc,EAMf,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,IAAA,sCAAkB,EACxC,KAAK,EACL,WAAW,EACX,UAAU,CACX,CAAC;IACF,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACvB,SAAS;SACV;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAA,uCAAoB,EAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;QAClF,MAAM,GAAG,GAAG,IAAA,mCAAgB,EAAC,WAAW,CAAC,CAAC;QAE1C,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,cAAc,CAAC,QAAQ;SAClC,CAAC,CAAC;KACJ;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAA,CAAC;AAhCW,QAAA,kBAAkB,sBAgC7B"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFinalBaseSQL = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const filter_params_ast_1 = require("../filter-params/filter-params-ast");
6
+ const get_filter_params_sql_1 = require("../get-filter-params-sql/get-filter-params-sql");
7
+ const get_wrapped_base_query_with_projections_1 = require("../get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections");
8
+ const getFinalBaseSQL = ({ query, getQueryOutput, tableSchema, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
9
+ /**
10
+ * Apply transformation to the supplied base query.
11
+ * This involves updating the filter placeholder with the actual filter values.
12
+ */
13
+ const baseFilterParamsSQL = yield (0, get_filter_params_sql_1.getFilterParamsSQL)({
14
+ query: query,
15
+ tableSchema,
16
+ filterType: 'BASE_FILTER',
17
+ getQueryOutput,
18
+ });
19
+ const baseSQL = (0, filter_params_ast_1.applyFilterParamsToBaseSQL)(tableSchema.sql, baseFilterParamsSQL);
20
+ const baseSQLWithFilterProjection = (0, get_wrapped_base_query_with_projections_1.getWrappedBaseQueryWithProjections)({
21
+ baseQuery: baseSQL,
22
+ tableSchema,
23
+ query: query,
24
+ });
25
+ return baseSQLWithFilterProjection;
26
+ });
27
+ exports.getFinalBaseSQL = getFinalBaseSQL;
28
+ //# sourceMappingURL=get-final-base-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-final-base-sql.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-final-base-sql/get-final-base-sql.ts"],"names":[],"mappings":";;;;AAAA,0EAAgF;AAChF,0FAAoF;AACpF,gJAAwI;AAIjI,MAAM,eAAe,GAAG,CAAO,EACpC,KAAK,EACL,cAAc,EACd,WAAW,GACiF,EAAE,EAAE;IAChG;;;OAGG;IACH,MAAM,mBAAmB,GAAG,MAAM,IAAA,0CAAkB,EAAC;QACnD,KAAK,EAAE,KAAK;QACZ,WAAW;QACX,UAAU,EAAE,aAAa;QACzB,cAAc;KACf,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAA,8CAA0B,EACxC,WAAW,CAAC,GAAG,EACf,mBAAmB,CACpB,CAAC;IACF,MAAM,2BAA2B,GAAG,IAAA,4EAAkC,EAAC;QACrE,SAAS,EAAE,OAAO;QAClB,WAAW;QACX,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,OAAO,2BAA2B,CAAC;AACrC,CAAC,CAAA,CAAC;AAzBW,QAAA,eAAe,mBAyB1B"}