@devrev/meerkat-core 0.0.96 → 0.0.98

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 (358) hide show
  1. package/README.md +70 -6
  2. package/package.json +2 -2
  3. package/src/ast-builder/ast-builder.js +91 -0
  4. package/src/ast-builder/ast-builder.js.map +1 -0
  5. package/src/ast-deserializer/ast-deserializer.js +17 -0
  6. package/src/ast-deserializer/ast-deserializer.js.map +1 -0
  7. package/src/ast-serializer/ast-serializer.js +8 -0
  8. package/src/ast-serializer/ast-serializer.js.map +1 -0
  9. package/src/ast-validator/dimension-validator.js +49 -0
  10. package/src/ast-validator/dimension-validator.js.map +1 -0
  11. package/src/ast-validator/index.js +12 -0
  12. package/src/ast-validator/index.js.map +1 -0
  13. package/src/ast-validator/measure-validator.js +155 -0
  14. package/src/ast-validator/measure-validator.js.map +1 -0
  15. package/{ast-validator → src/ast-validator}/tests/test-data.js +692 -890
  16. package/src/ast-validator/tests/test-data.js.map +1 -0
  17. package/src/ast-validator/types.js +3 -0
  18. package/src/ast-validator/types.js.map +1 -0
  19. package/src/ast-validator/utils.js +24 -0
  20. package/src/ast-validator/utils.js.map +1 -0
  21. package/src/context-params/context-params-ast.js +42 -0
  22. package/src/context-params/context-params-ast.js.map +1 -0
  23. package/src/cube-filter-transformer/and/and.js +14 -0
  24. package/src/cube-filter-transformer/and/and.js.map +1 -0
  25. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +145 -0
  26. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
  27. package/src/cube-filter-transformer/contains/contains.js +62 -0
  28. package/src/cube-filter-transformer/contains/contains.js.map +1 -0
  29. package/src/cube-filter-transformer/equals/equals-array.js +71 -0
  30. package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
  31. package/src/cube-filter-transformer/equals/equals.js +36 -0
  32. package/src/cube-filter-transformer/equals/equals.js.map +1 -0
  33. package/src/cube-filter-transformer/factory.js +120 -0
  34. package/src/cube-filter-transformer/factory.js.map +1 -0
  35. package/src/cube-filter-transformer/gt/gt.js +28 -0
  36. package/src/cube-filter-transformer/gt/gt.js.map +1 -0
  37. package/src/cube-filter-transformer/gte/gte.js +28 -0
  38. package/src/cube-filter-transformer/gte/gte.js.map +1 -0
  39. package/src/cube-filter-transformer/in/in.js +69 -0
  40. package/src/cube-filter-transformer/in/in.js.map +1 -0
  41. package/src/cube-filter-transformer/in-date-range/in-date-range.js +21 -0
  42. package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
  43. package/src/cube-filter-transformer/lt/lt.js +28 -0
  44. package/src/cube-filter-transformer/lt/lt.js.map +1 -0
  45. package/src/cube-filter-transformer/lte/lte.js +28 -0
  46. package/src/cube-filter-transformer/lte/lte.js.map +1 -0
  47. package/src/cube-filter-transformer/not/not.js +14 -0
  48. package/src/cube-filter-transformer/not/not.js.map +1 -0
  49. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +21 -0
  50. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
  51. package/src/cube-filter-transformer/not-contains/not-contains.js +62 -0
  52. package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
  53. package/src/cube-filter-transformer/not-equals/not-equals-array.js +21 -0
  54. package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
  55. package/src/cube-filter-transformer/not-equals/not-equals.js +36 -0
  56. package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
  57. package/src/cube-filter-transformer/not-in/not-in.js +76 -0
  58. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
  59. package/src/cube-filter-transformer/not-set/not-set.js +23 -0
  60. package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
  61. package/src/cube-filter-transformer/or/or.js +14 -0
  62. package/src/cube-filter-transformer/or/or.js.map +1 -0
  63. package/src/cube-filter-transformer/set/set.js +23 -0
  64. package/src/cube-filter-transformer/set/set.js.map +1 -0
  65. package/src/cube-group-by-transformer/cube-group-by-transformer.js +19 -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 +124 -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.js +34 -0
  72. package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
  73. package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
  74. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
  75. package/src/filter-params/filter-params-ast.js +114 -0
  76. package/src/filter-params/filter-params-ast.js.map +1 -0
  77. package/src/get-filter-params-sql/get-filter-params-sql.js +25 -0
  78. package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
  79. package/src/get-final-base-sql/get-final-base-sql.js +28 -0
  80. package/src/get-final-base-sql/get-final-base-sql.js.map +1 -0
  81. package/{get-wrapped-base-query-with-projections → src/get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +39 -64
  82. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
  83. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +83 -0
  84. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
  85. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +32 -0
  86. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
  87. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +32 -0
  88. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
  89. package/src/index.js +37 -0
  90. package/src/index.js.map +1 -0
  91. package/src/joins/joins.js +162 -0
  92. package/src/joins/joins.js.map +1 -0
  93. package/src/member-formatters/constants.js +6 -0
  94. package/src/member-formatters/constants.js.map +1 -0
  95. package/src/member-formatters/index.js +10 -0
  96. package/src/member-formatters/index.js.map +1 -0
  97. package/src/member-formatters/member-key-to-safe-key.js +9 -0
  98. package/src/member-formatters/member-key-to-safe-key.js.map +1 -0
  99. package/src/member-formatters/split-into-data-source-and-fields.js +10 -0
  100. package/src/member-formatters/split-into-data-source-and-fields.js.map +1 -0
  101. package/src/resolution/resolution.js +112 -0
  102. package/src/resolution/resolution.js.map +1 -0
  103. package/src/resolution/types.js +5 -0
  104. package/src/resolution/types.js.map +1 -0
  105. package/src/types/cube-types/index.js +6 -0
  106. package/src/types/cube-types/index.js.map +1 -0
  107. package/src/types/cube-types/query.js +8 -0
  108. package/src/types/cube-types/query.js.map +1 -0
  109. package/src/types/cube-types/table.js +3 -0
  110. package/src/types/cube-types/table.js.map +1 -0
  111. package/src/types/duckdb-serialization-types/index.js +11 -0
  112. package/src/types/duckdb-serialization-types/index.js.map +1 -0
  113. package/{types → src/types}/duckdb-serialization-types/serialization/Constraint.js +6 -19
  114. package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
  115. package/{types → src/types}/duckdb-serialization-types/serialization/CreateInfo.js +10 -29
  116. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
  117. package/{types → src/types}/duckdb-serialization-types/serialization/Expression.js +6 -19
  118. package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
  119. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +28 -0
  120. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
  121. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +10 -0
  122. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
  123. package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
  124. package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
  125. package/{types → src/types}/duckdb-serialization-types/serialization/Nodes.js +17 -45
  126. package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
  127. package/{types → src/types}/duckdb-serialization-types/serialization/ParseInfo.js +20 -54
  128. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
  129. package/{types → src/types}/duckdb-serialization-types/serialization/ParsedExpression.js +6 -19
  130. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
  131. package/{types → src/types}/duckdb-serialization-types/serialization/QueryNode.js +8 -24
  132. package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
  133. package/{types → src/types}/duckdb-serialization-types/serialization/ResultModifier.js +4 -9
  134. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
  135. package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
  136. package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
  137. package/{types → src/types}/duckdb-serialization-types/serialization/TableFilter.js +4 -9
  138. package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
  139. package/{types → src/types}/duckdb-serialization-types/serialization/TableRef.js +8 -24
  140. package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
  141. package/{types → src/types}/duckdb-serialization-types/serialization/Types.js +4 -9
  142. package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
  143. package/src/types/duckdb-serialization-types/serialization/example.js +109 -0
  144. package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
  145. package/src/types/utils.js +69 -0
  146. package/src/types/utils.js.map +1 -0
  147. package/{utils → src/utils}/__fixtures__/joins.fixtures.js +228 -316
  148. package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
  149. package/src/utils/base-ast.js +49 -0
  150. package/src/utils/base-ast.js.map +1 -0
  151. package/src/utils/cube-filter-enrichment.js +53 -0
  152. package/src/utils/cube-filter-enrichment.js.map +1 -0
  153. package/{utils → src/utils}/cube-to-table-schema.js +25 -38
  154. package/src/utils/cube-to-table-schema.js.map +1 -0
  155. package/src/utils/cube-type-to-duckdb-type.js +12 -0
  156. package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
  157. package/src/utils/find-in-table-schema.js +28 -0
  158. package/src/utils/find-in-table-schema.js.map +1 -0
  159. package/src/utils/get-column-names-from-ast.js +45 -0
  160. package/src/utils/get-column-names-from-ast.js.map +1 -0
  161. package/src/utils/get-possible-nodes.js +146 -0
  162. package/src/utils/get-possible-nodes.js.map +1 -0
  163. package/src/utils/get-type-info.js +34 -0
  164. package/src/utils/get-type-info.js.map +1 -0
  165. package/src/utils/is-array-member-type.js +8 -0
  166. package/src/utils/is-array-member-type.js.map +1 -0
  167. package/src/utils/key-from-measures-dimension.js +32 -0
  168. package/src/utils/key-from-measures-dimension.js.map +1 -0
  169. package/src/utils/meerkat-placeholder-replacer.js +10 -0
  170. package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
  171. package/src/utils/modify-meerkat-filter.js +24 -0
  172. package/src/utils/modify-meerkat-filter.js.map +1 -0
  173. package/{utils → src/utils}/type-guards.js +10 -28
  174. package/src/utils/type-guards.js.map +1 -0
  175. package/ast-builder/ast-builder.js +0 -90
  176. package/ast-builder/ast-builder.js.map +0 -1
  177. package/ast-deserializer/ast-deserializer.js +0 -30
  178. package/ast-deserializer/ast-deserializer.js.map +0 -1
  179. package/ast-serializer/ast-serializer.js +0 -12
  180. package/ast-serializer/ast-serializer.js.map +0 -1
  181. package/ast-validator/dimension-validator.js +0 -54
  182. package/ast-validator/dimension-validator.js.map +0 -1
  183. package/ast-validator/index.js +0 -25
  184. package/ast-validator/index.js.map +0 -1
  185. package/ast-validator/measure-validator.js +0 -163
  186. package/ast-validator/measure-validator.js.map +0 -1
  187. package/ast-validator/tests/test-data.js.map +0 -1
  188. package/ast-validator/types.js +0 -3
  189. package/ast-validator/types.js.map +0 -1
  190. package/ast-validator/utils.js +0 -35
  191. package/ast-validator/utils.js.map +0 -1
  192. package/context-params/context-params-ast.js +0 -55
  193. package/context-params/context-params-ast.js.map +0 -1
  194. package/cube-filter-transformer/and/and.js +0 -18
  195. package/cube-filter-transformer/and/and.js.map +0 -1
  196. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js +0 -160
  197. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
  198. package/cube-filter-transformer/contains/contains.js +0 -71
  199. package/cube-filter-transformer/contains/contains.js.map +0 -1
  200. package/cube-filter-transformer/equals/equals-array.js +0 -77
  201. package/cube-filter-transformer/equals/equals-array.js.map +0 -1
  202. package/cube-filter-transformer/equals/equals.js +0 -37
  203. package/cube-filter-transformer/equals/equals.js.map +0 -1
  204. package/cube-filter-transformer/factory.js +0 -124
  205. package/cube-filter-transformer/factory.js.map +0 -1
  206. package/cube-filter-transformer/gt/gt.js +0 -30
  207. package/cube-filter-transformer/gt/gt.js.map +0 -1
  208. package/cube-filter-transformer/gte/gte.js +0 -30
  209. package/cube-filter-transformer/gte/gte.js.map +0 -1
  210. package/cube-filter-transformer/in/in.js +0 -78
  211. package/cube-filter-transformer/in/in.js.map +0 -1
  212. package/cube-filter-transformer/in-date-range/in-date-range.js +0 -24
  213. package/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
  214. package/cube-filter-transformer/lt/lt.js +0 -30
  215. package/cube-filter-transformer/lt/lt.js.map +0 -1
  216. package/cube-filter-transformer/lte/lte.js +0 -30
  217. package/cube-filter-transformer/lte/lte.js.map +0 -1
  218. package/cube-filter-transformer/not/not.js +0 -18
  219. package/cube-filter-transformer/not/not.js.map +0 -1
  220. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js +0 -24
  221. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
  222. package/cube-filter-transformer/not-contains/not-contains.js +0 -71
  223. package/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
  224. package/cube-filter-transformer/not-equals/not-equals-array.js +0 -26
  225. package/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
  226. package/cube-filter-transformer/not-equals/not-equals.js +0 -37
  227. package/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
  228. package/cube-filter-transformer/not-in/not-in.js +0 -85
  229. package/cube-filter-transformer/not-in/not-in.js.map +0 -1
  230. package/cube-filter-transformer/not-set/not-set.js +0 -27
  231. package/cube-filter-transformer/not-set/not-set.js.map +0 -1
  232. package/cube-filter-transformer/or/or.js +0 -18
  233. package/cube-filter-transformer/or/or.js.map +0 -1
  234. package/cube-filter-transformer/set/set.js +0 -27
  235. package/cube-filter-transformer/set/set.js.map +0 -1
  236. package/cube-group-by-transformer/cube-group-by-transformer.js +0 -25
  237. package/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
  238. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js +0 -42
  239. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
  240. package/cube-measure-transformer/cube-measure-transformer.js +0 -127
  241. package/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
  242. package/cube-order-by-transformer/cube-order-by-transformer.js +0 -39
  243. package/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
  244. package/cube-to-duckdb/cube-filter-to-duckdb.js +0 -3
  245. package/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
  246. package/filter-params/filter-params-ast.js +0 -115
  247. package/filter-params/filter-params-ast.js.map +0 -1
  248. package/get-filter-params-sql/get-filter-params-sql.js +0 -28
  249. package/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
  250. package/get-final-base-sql/get-final-base-sql.js +0 -30
  251. package/get-final-base-sql/get-final-base-sql.js.map +0 -1
  252. package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
  253. package/get-wrapped-base-query-with-projections/get-projection-clause.js +0 -87
  254. package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
  255. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +0 -33
  256. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
  257. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +0 -60
  258. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
  259. package/index.js +0 -66
  260. package/index.js.map +0 -1
  261. package/joins/joins.js +0 -170
  262. package/joins/joins.js.map +0 -1
  263. package/member-formatters/constants.js +0 -19
  264. package/member-formatters/constants.js.map +0 -1
  265. package/member-formatters/index.js +0 -23
  266. package/member-formatters/index.js.map +0 -1
  267. package/member-formatters/member-key-to-safe-key.js +0 -13
  268. package/member-formatters/member-key-to-safe-key.js.map +0 -1
  269. package/member-formatters/split-into-data-source-and-fields.js +0 -17
  270. package/member-formatters/split-into-data-source-and-fields.js.map +0 -1
  271. package/resolution/resolution.js +0 -128
  272. package/resolution/resolution.js.map +0 -1
  273. package/resolution/types.js +0 -10
  274. package/resolution/types.js.map +0 -1
  275. package/types/cube-types/index.d.js +0 -6
  276. package/types/cube-types/index.d.js.map +0 -1
  277. package/types/cube-types/index.js +0 -6
  278. package/types/cube-types/index.js.map +0 -1
  279. package/types/cube-types/query.d.js +0 -5
  280. package/types/cube-types/query.d.js.map +0 -1
  281. package/types/cube-types/query.js +0 -14
  282. package/types/cube-types/query.js.map +0 -1
  283. package/types/cube-types/table.d.js +0 -3
  284. package/types/cube-types/table.d.js.map +0 -1
  285. package/types/cube-types/table.js +0 -3
  286. package/types/cube-types/table.js.map +0 -1
  287. package/types/duckdb-serialization-types/index.d.js +0 -11
  288. package/types/duckdb-serialization-types/index.d.js.map +0 -1
  289. package/types/duckdb-serialization-types/index.js +0 -11
  290. package/types/duckdb-serialization-types/index.js.map +0 -1
  291. package/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
  292. package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
  293. package/types/duckdb-serialization-types/serialization/Expression.d.js +0 -3
  294. package/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
  295. package/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
  296. package/types/duckdb-serialization-types/serialization/LogicalOperator.js +0 -47
  297. package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
  298. package/types/duckdb-serialization-types/serialization/MacroFunction.js +0 -15
  299. package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
  300. package/types/duckdb-serialization-types/serialization/Misc.d.js +0 -3
  301. package/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
  302. package/types/duckdb-serialization-types/serialization/Misc.js +0 -3
  303. package/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
  304. package/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -3
  305. package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
  306. package/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
  307. package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
  308. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -3
  309. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
  310. package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
  311. package/types/duckdb-serialization-types/serialization/QueryNode.d.js +0 -3
  312. package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
  313. package/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
  314. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -3
  315. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
  316. package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
  317. package/types/duckdb-serialization-types/serialization/Statement.d.js +0 -3
  318. package/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
  319. package/types/duckdb-serialization-types/serialization/Statement.js +0 -3
  320. package/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
  321. package/types/duckdb-serialization-types/serialization/TableFilter.d.js +0 -3
  322. package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
  323. package/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
  324. package/types/duckdb-serialization-types/serialization/TableRef.d.js +0 -3
  325. package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
  326. package/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
  327. package/types/duckdb-serialization-types/serialization/Types.d.js +0 -3
  328. package/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
  329. package/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
  330. package/types/duckdb-serialization-types/serialization/example.js +0 -131
  331. package/types/duckdb-serialization-types/serialization/example.js.map +0 -1
  332. package/types/utils.js +0 -108
  333. package/types/utils.js.map +0 -1
  334. package/utils/__fixtures__/joins.fixtures.js.map +0 -1
  335. package/utils/base-ast.js +0 -63
  336. package/utils/base-ast.js.map +0 -1
  337. package/utils/cube-filter-enrichment.js +0 -63
  338. package/utils/cube-filter-enrichment.js.map +0 -1
  339. package/utils/cube-to-table-schema.js.map +0 -1
  340. package/utils/cube-type-to-duckdb-type.js +0 -17
  341. package/utils/cube-type-to-duckdb-type.js.map +0 -1
  342. package/utils/find-in-table-schema.js +0 -40
  343. package/utils/find-in-table-schema.js.map +0 -1
  344. package/utils/get-column-names-from-ast.js +0 -45
  345. package/utils/get-column-names-from-ast.js.map +0 -1
  346. package/utils/get-possible-nodes.js +0 -152
  347. package/utils/get-possible-nodes.js.map +0 -1
  348. package/utils/get-type-info.js +0 -44
  349. package/utils/get-type-info.js.map +0 -1
  350. package/utils/is-array-member-type.js +0 -12
  351. package/utils/is-array-member-type.js.map +0 -1
  352. package/utils/key-from-measures-dimension.js +0 -35
  353. package/utils/key-from-measures-dimension.js.map +0 -1
  354. package/utils/meerkat-placeholder-replacer.js +0 -14
  355. package/utils/meerkat-placeholder-replacer.js.map +0 -1
  356. package/utils/modify-meerkat-filter.js +0 -30
  357. package/utils/modify-meerkat-filter.js.map +0 -1
  358. 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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeDimensionToGroupByAST = void 0;
4
+ const member_formatters_1 = require("../member-formatters");
5
+ const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
6
+ const cubeDimensionToGroupByAST = (dimensions) => {
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: [(0, member_formatters_1.memberKeyToSafeKey)(dimension)],
13
+ };
14
+ return dimensionAST;
15
+ });
16
+ return groupByAST;
17
+ };
18
+ exports.cubeDimensionToGroupByAST = cubeDimensionToGroupByAST;
19
+ //# 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,4DAA0D;AAE1D,6FAGsE;AAE/D,MAAM,yBAAyB,GAAG,CAAC,UAAoB,EAAE,EAAE;IAChE,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,CAAC,IAAA,sCAAkB,EAAC,SAAS,CAAC,CAAC;SAC9C,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAbW,QAAA,yBAAyB,6BAapC"}
@@ -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,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyProjectionToSQLQuery = exports.getAllColumnUsedInMeasures = exports.getSelectReplacedSql = exports.cubeMeasureToSQLSelectString = void 0;
4
+ const member_key_to_safe_key_1 = require("../member-formatters/member-key-to-safe-key");
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_key_to_safe_key_1.memberKeyToSafeKey)(measure);
17
+ const measureSchema = tableSchema.measures.find((m) => m.name === measureKeyWithoutTable);
18
+ if (!measureSchema) {
19
+ continue;
20
+ }
21
+ if (i > 0) {
22
+ base += ', ';
23
+ }
24
+ let meerkatReplacedSqlString = (0, meerkat_placeholder_replacer_1.meerkatPlaceholderReplacer)(measureSchema.sql, tableSchema.name);
25
+ /**
26
+ * Here we extract the columns used in the measure and replace them with the safeKey.
27
+ * We need to do this because the columns used in the measure are not directly available in the joined table.
28
+ * Thus we need to project them and use them in the join.
29
+ */
30
+ const columnsUsedInMeasure = getColumnsFromSQL(meerkatReplacedSqlString, tableSchemaName);
31
+ //Replace all the columnsUsedInMeasure with safeKey
32
+ columnsUsedInMeasure === null || columnsUsedInMeasure === void 0 ? void 0 : columnsUsedInMeasure.forEach((measureKey) => {
33
+ const [_, column] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(measureKey);
34
+ const memberKey = `${tableSchemaName}.${column}`;
35
+ const columnKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(memberKey);
36
+ meerkatReplacedSqlString = meerkatReplacedSqlString.replace(memberKey, columnKey);
37
+ });
38
+ base += ` ${meerkatReplacedSqlString} AS ${aliasKey} `;
39
+ }
40
+ return base;
41
+ };
42
+ exports.cubeMeasureToSQLSelectString = cubeMeasureToSQLSelectString;
43
+ const addDimensionToSQLProjection = (dimensions, selectString, tableSchema) => {
44
+ if (dimensions.length === 0) {
45
+ return selectString;
46
+ }
47
+ let newSelectString = selectString;
48
+ for (let i = 0; i < dimensions.length; i++) {
49
+ const dimension = dimensions[i];
50
+ const [_, dimensionKeyWithoutTable] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(dimension);
51
+ const dimensionSchema = tableSchema.dimensions.find((m) => m.name === dimensionKeyWithoutTable);
52
+ const aliasKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(dimension);
53
+ if (!dimensionSchema) {
54
+ continue;
55
+ }
56
+ if (i > 0) {
57
+ newSelectString += ',';
58
+ }
59
+ // since alias key is expected to have been unfurled in the base query, we can just use it as is.
60
+ newSelectString += ` ${aliasKey}`;
61
+ }
62
+ return newSelectString;
63
+ };
64
+ const getSelectReplacedSql = (sql, selectString) => {
65
+ /*
66
+ ** Replaces the select portion of a SQL string with the selectString passed.
67
+ */
68
+ const selectRegex = /SELECT\s\*/;
69
+ const match = sql.match(selectRegex);
70
+ if (!match) {
71
+ return sql;
72
+ }
73
+ const selectIndex = match.index;
74
+ if (selectIndex === undefined) {
75
+ throw new Error('SELECT * not found in SQL string');
76
+ }
77
+ const selectLength = match[0].length;
78
+ const beforeSelect = sql.substring(0, selectIndex);
79
+ const afterSelect = sql.substring(selectIndex + selectLength);
80
+ return `${beforeSelect}${selectString}${afterSelect}`;
81
+ };
82
+ exports.getSelectReplacedSql = getSelectReplacedSql;
83
+ /**
84
+ * Get all the columns used in the measures.
85
+ * This is used for extracting the columns used in the measures needed for the projection.
86
+ * Example: The joins implementation uses this to get the columns used in the measures to join the tables.
87
+ * like the SQL for the measure is `SUM(table.total)` and the table name is `table`, then the column used is `total`
88
+ * table cannot be used directly here because the joined table would have column name ambiguity.
89
+ * Thus these columns are projected and directly used in the join.
90
+ */
91
+ const getAllColumnUsedInMeasures = (measures, tableSchema) => {
92
+ let columns = [];
93
+ measures.forEach((measure) => {
94
+ const columnMatch = getColumnsFromSQL(measure.sql, tableSchema.name);
95
+ if (columnMatch && columnMatch.length > 0) {
96
+ columns = [...columns, ...columnMatch];
97
+ }
98
+ });
99
+ // Remove duplicates
100
+ return [...new Set(columns)];
101
+ };
102
+ exports.getAllColumnUsedInMeasures = getAllColumnUsedInMeasures;
103
+ const getColumnsFromSQL = (sql, tableName) => {
104
+ const regex = new RegExp(`(${tableName}\\.[a-zA-Z0-9_]+)`, 'g');
105
+ const columnMatch = sql.match(regex);
106
+ return columnMatch;
107
+ };
108
+ /**
109
+ * Replace the first SELECT * from the sqlToReplace with the cube measure
110
+ * @param measures
111
+ * @param tableSchema
112
+ * @param sqlToReplace
113
+ * @returns
114
+ */
115
+ const applyProjectionToSQLQuery = (dimensions, measures, tableSchema, sqlToReplace) => {
116
+ let measureSelectString = (0, exports.cubeMeasureToSQLSelectString)(measures, tableSchema);
117
+ if (measures.length > 0 && dimensions.length > 0) {
118
+ measureSelectString += ', ';
119
+ }
120
+ const selectString = addDimensionToSQLProjection(dimensions, measureSelectString, tableSchema);
121
+ return (0, exports.getSelectReplacedSql)(sqlToReplace, selectString);
122
+ };
123
+ exports.applyProjectionToSQLQuery = applyProjectionToSQLQuery;
124
+ //# 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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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeOrderByToAST = void 0;
4
+ const member_key_to_safe_key_1 = require("../member-formatters/member-key-to-safe-key");
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) => {
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: [(0, member_key_to_safe_key_1.memberKeyToSafeKey)(key)],
24
+ },
25
+ };
26
+ orderArr.push(orderByAST);
27
+ }
28
+ return {
29
+ type: ResultModifier_1.ResultModifierType.ORDER_MODIFIER,
30
+ orders: orderArr,
31
+ };
32
+ };
33
+ exports.cubeOrderByToAST = cubeOrderByToAST;
34
+ //# 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,wFAAiF;AACjF,6FAGsE;AACtE,mFAAoF;AACpF,qGAAsG;AAE/F,MAAM,gBAAgB,GAAG,CAAC,KAAwC,EAAE,EAAE;IAC3E,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,CAAC,IAAA,2CAAkB,EAAC,GAAG,CAAC,CAAC;aACxC;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;AAzBW,QAAA,gBAAgB,oBAyB3B"}
@@ -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"}