@devrev/meerkat-core 0.0.97 → 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 (357) hide show
  1. package/package.json +2 -2
  2. package/src/ast-builder/ast-builder.js +91 -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.js +19 -0
  65. package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
  66. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js +42 -0
  67. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
  68. package/src/cube-measure-transformer/cube-measure-transformer.js +124 -0
  69. package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
  70. package/src/cube-order-by-transformer/cube-order-by-transformer.js +34 -0
  71. package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
  72. package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
  73. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
  74. package/src/filter-params/filter-params-ast.js +114 -0
  75. package/src/filter-params/filter-params-ast.js.map +1 -0
  76. package/src/get-filter-params-sql/get-filter-params-sql.js +25 -0
  77. package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
  78. package/src/get-final-base-sql/get-final-base-sql.js +28 -0
  79. package/src/get-final-base-sql/get-final-base-sql.js.map +1 -0
  80. package/{get-wrapped-base-query-with-projections → src/get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +39 -64
  81. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
  82. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +83 -0
  83. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
  84. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +32 -0
  85. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
  86. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +32 -0
  87. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
  88. package/src/index.js +37 -0
  89. package/src/index.js.map +1 -0
  90. package/src/joins/joins.js +162 -0
  91. package/src/joins/joins.js.map +1 -0
  92. package/src/member-formatters/constants.js +6 -0
  93. package/src/member-formatters/constants.js.map +1 -0
  94. package/src/member-formatters/index.js +10 -0
  95. package/src/member-formatters/index.js.map +1 -0
  96. package/src/member-formatters/member-key-to-safe-key.js +9 -0
  97. package/src/member-formatters/member-key-to-safe-key.js.map +1 -0
  98. package/src/member-formatters/split-into-data-source-and-fields.js +10 -0
  99. package/src/member-formatters/split-into-data-source-and-fields.js.map +1 -0
  100. package/src/resolution/resolution.js +112 -0
  101. package/src/resolution/resolution.js.map +1 -0
  102. package/src/resolution/types.js +5 -0
  103. package/src/resolution/types.js.map +1 -0
  104. package/src/types/cube-types/index.js +6 -0
  105. package/src/types/cube-types/index.js.map +1 -0
  106. package/src/types/cube-types/query.js +8 -0
  107. package/src/types/cube-types/query.js.map +1 -0
  108. package/src/types/cube-types/table.js +3 -0
  109. package/src/types/cube-types/table.js.map +1 -0
  110. package/src/types/duckdb-serialization-types/index.js +11 -0
  111. package/src/types/duckdb-serialization-types/index.js.map +1 -0
  112. package/{types → src/types}/duckdb-serialization-types/serialization/Constraint.js +6 -19
  113. package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
  114. package/{types → src/types}/duckdb-serialization-types/serialization/CreateInfo.js +10 -29
  115. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
  116. package/{types → src/types}/duckdb-serialization-types/serialization/Expression.js +6 -19
  117. package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
  118. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +28 -0
  119. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
  120. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +10 -0
  121. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
  122. package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
  123. package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
  124. package/{types → src/types}/duckdb-serialization-types/serialization/Nodes.js +17 -45
  125. package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
  126. package/{types → src/types}/duckdb-serialization-types/serialization/ParseInfo.js +20 -54
  127. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
  128. package/{types → src/types}/duckdb-serialization-types/serialization/ParsedExpression.js +6 -19
  129. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
  130. package/{types → src/types}/duckdb-serialization-types/serialization/QueryNode.js +8 -24
  131. package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
  132. package/{types → src/types}/duckdb-serialization-types/serialization/ResultModifier.js +4 -9
  133. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
  134. package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
  135. package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
  136. package/{types → src/types}/duckdb-serialization-types/serialization/TableFilter.js +4 -9
  137. package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
  138. package/{types → src/types}/duckdb-serialization-types/serialization/TableRef.js +8 -24
  139. package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
  140. package/{types → src/types}/duckdb-serialization-types/serialization/Types.js +4 -9
  141. package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
  142. package/src/types/duckdb-serialization-types/serialization/example.js +109 -0
  143. package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
  144. package/src/types/utils.js +69 -0
  145. package/src/types/utils.js.map +1 -0
  146. package/{utils → src/utils}/__fixtures__/joins.fixtures.js +228 -316
  147. package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
  148. package/src/utils/base-ast.js +49 -0
  149. package/src/utils/base-ast.js.map +1 -0
  150. package/src/utils/cube-filter-enrichment.js +53 -0
  151. package/src/utils/cube-filter-enrichment.js.map +1 -0
  152. package/{utils → src/utils}/cube-to-table-schema.js +25 -38
  153. package/src/utils/cube-to-table-schema.js.map +1 -0
  154. package/src/utils/cube-type-to-duckdb-type.js +12 -0
  155. package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
  156. package/src/utils/find-in-table-schema.js +28 -0
  157. package/src/utils/find-in-table-schema.js.map +1 -0
  158. package/src/utils/get-column-names-from-ast.js +45 -0
  159. package/src/utils/get-column-names-from-ast.js.map +1 -0
  160. package/src/utils/get-possible-nodes.js +146 -0
  161. package/src/utils/get-possible-nodes.js.map +1 -0
  162. package/src/utils/get-type-info.js +34 -0
  163. package/src/utils/get-type-info.js.map +1 -0
  164. package/src/utils/is-array-member-type.js +8 -0
  165. package/src/utils/is-array-member-type.js.map +1 -0
  166. package/src/utils/key-from-measures-dimension.js +32 -0
  167. package/src/utils/key-from-measures-dimension.js.map +1 -0
  168. package/src/utils/meerkat-placeholder-replacer.js +10 -0
  169. package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
  170. package/src/utils/modify-meerkat-filter.js +24 -0
  171. package/src/utils/modify-meerkat-filter.js.map +1 -0
  172. package/{utils → src/utils}/type-guards.js +10 -28
  173. package/src/utils/type-guards.js.map +1 -0
  174. package/ast-builder/ast-builder.js +0 -90
  175. package/ast-builder/ast-builder.js.map +0 -1
  176. package/ast-deserializer/ast-deserializer.js +0 -30
  177. package/ast-deserializer/ast-deserializer.js.map +0 -1
  178. package/ast-serializer/ast-serializer.js +0 -12
  179. package/ast-serializer/ast-serializer.js.map +0 -1
  180. package/ast-validator/dimension-validator.js +0 -54
  181. package/ast-validator/dimension-validator.js.map +0 -1
  182. package/ast-validator/index.js +0 -25
  183. package/ast-validator/index.js.map +0 -1
  184. package/ast-validator/measure-validator.js +0 -163
  185. package/ast-validator/measure-validator.js.map +0 -1
  186. package/ast-validator/tests/test-data.js.map +0 -1
  187. package/ast-validator/types.js +0 -3
  188. package/ast-validator/types.js.map +0 -1
  189. package/ast-validator/utils.js +0 -35
  190. package/ast-validator/utils.js.map +0 -1
  191. package/context-params/context-params-ast.js +0 -55
  192. package/context-params/context-params-ast.js.map +0 -1
  193. package/cube-filter-transformer/and/and.js +0 -18
  194. package/cube-filter-transformer/and/and.js.map +0 -1
  195. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js +0 -160
  196. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
  197. package/cube-filter-transformer/contains/contains.js +0 -71
  198. package/cube-filter-transformer/contains/contains.js.map +0 -1
  199. package/cube-filter-transformer/equals/equals-array.js +0 -77
  200. package/cube-filter-transformer/equals/equals-array.js.map +0 -1
  201. package/cube-filter-transformer/equals/equals.js +0 -37
  202. package/cube-filter-transformer/equals/equals.js.map +0 -1
  203. package/cube-filter-transformer/factory.js +0 -124
  204. package/cube-filter-transformer/factory.js.map +0 -1
  205. package/cube-filter-transformer/gt/gt.js +0 -30
  206. package/cube-filter-transformer/gt/gt.js.map +0 -1
  207. package/cube-filter-transformer/gte/gte.js +0 -30
  208. package/cube-filter-transformer/gte/gte.js.map +0 -1
  209. package/cube-filter-transformer/in/in.js +0 -78
  210. package/cube-filter-transformer/in/in.js.map +0 -1
  211. package/cube-filter-transformer/in-date-range/in-date-range.js +0 -24
  212. package/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
  213. package/cube-filter-transformer/lt/lt.js +0 -30
  214. package/cube-filter-transformer/lt/lt.js.map +0 -1
  215. package/cube-filter-transformer/lte/lte.js +0 -30
  216. package/cube-filter-transformer/lte/lte.js.map +0 -1
  217. package/cube-filter-transformer/not/not.js +0 -18
  218. package/cube-filter-transformer/not/not.js.map +0 -1
  219. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js +0 -24
  220. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
  221. package/cube-filter-transformer/not-contains/not-contains.js +0 -71
  222. package/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
  223. package/cube-filter-transformer/not-equals/not-equals-array.js +0 -26
  224. package/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
  225. package/cube-filter-transformer/not-equals/not-equals.js +0 -37
  226. package/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
  227. package/cube-filter-transformer/not-in/not-in.js +0 -85
  228. package/cube-filter-transformer/not-in/not-in.js.map +0 -1
  229. package/cube-filter-transformer/not-set/not-set.js +0 -27
  230. package/cube-filter-transformer/not-set/not-set.js.map +0 -1
  231. package/cube-filter-transformer/or/or.js +0 -18
  232. package/cube-filter-transformer/or/or.js.map +0 -1
  233. package/cube-filter-transformer/set/set.js +0 -27
  234. package/cube-filter-transformer/set/set.js.map +0 -1
  235. package/cube-group-by-transformer/cube-group-by-transformer.js +0 -25
  236. package/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
  237. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js +0 -42
  238. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
  239. package/cube-measure-transformer/cube-measure-transformer.js +0 -127
  240. package/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
  241. package/cube-order-by-transformer/cube-order-by-transformer.js +0 -39
  242. package/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
  243. package/cube-to-duckdb/cube-filter-to-duckdb.js +0 -3
  244. package/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
  245. package/filter-params/filter-params-ast.js +0 -115
  246. package/filter-params/filter-params-ast.js.map +0 -1
  247. package/get-filter-params-sql/get-filter-params-sql.js +0 -28
  248. package/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
  249. package/get-final-base-sql/get-final-base-sql.js +0 -30
  250. package/get-final-base-sql/get-final-base-sql.js.map +0 -1
  251. package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
  252. package/get-wrapped-base-query-with-projections/get-projection-clause.js +0 -87
  253. package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
  254. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +0 -33
  255. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
  256. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +0 -60
  257. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
  258. package/index.js +0 -66
  259. package/index.js.map +0 -1
  260. package/joins/joins.js +0 -170
  261. package/joins/joins.js.map +0 -1
  262. package/member-formatters/constants.js +0 -19
  263. package/member-formatters/constants.js.map +0 -1
  264. package/member-formatters/index.js +0 -23
  265. package/member-formatters/index.js.map +0 -1
  266. package/member-formatters/member-key-to-safe-key.js +0 -13
  267. package/member-formatters/member-key-to-safe-key.js.map +0 -1
  268. package/member-formatters/split-into-data-source-and-fields.js +0 -17
  269. package/member-formatters/split-into-data-source-and-fields.js.map +0 -1
  270. package/resolution/resolution.js +0 -128
  271. package/resolution/resolution.js.map +0 -1
  272. package/resolution/types.js +0 -10
  273. package/resolution/types.js.map +0 -1
  274. package/types/cube-types/index.d.js +0 -6
  275. package/types/cube-types/index.d.js.map +0 -1
  276. package/types/cube-types/index.js +0 -6
  277. package/types/cube-types/index.js.map +0 -1
  278. package/types/cube-types/query.d.js +0 -5
  279. package/types/cube-types/query.d.js.map +0 -1
  280. package/types/cube-types/query.js +0 -14
  281. package/types/cube-types/query.js.map +0 -1
  282. package/types/cube-types/table.d.js +0 -3
  283. package/types/cube-types/table.d.js.map +0 -1
  284. package/types/cube-types/table.js +0 -3
  285. package/types/cube-types/table.js.map +0 -1
  286. package/types/duckdb-serialization-types/index.d.js +0 -11
  287. package/types/duckdb-serialization-types/index.d.js.map +0 -1
  288. package/types/duckdb-serialization-types/index.js +0 -11
  289. package/types/duckdb-serialization-types/index.js.map +0 -1
  290. package/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
  291. package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
  292. package/types/duckdb-serialization-types/serialization/Expression.d.js +0 -3
  293. package/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
  294. package/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
  295. package/types/duckdb-serialization-types/serialization/LogicalOperator.js +0 -47
  296. package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
  297. package/types/duckdb-serialization-types/serialization/MacroFunction.js +0 -15
  298. package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
  299. package/types/duckdb-serialization-types/serialization/Misc.d.js +0 -3
  300. package/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
  301. package/types/duckdb-serialization-types/serialization/Misc.js +0 -3
  302. package/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
  303. package/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -3
  304. package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
  305. package/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
  306. package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
  307. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -3
  308. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
  309. package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
  310. package/types/duckdb-serialization-types/serialization/QueryNode.d.js +0 -3
  311. package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
  312. package/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
  313. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -3
  314. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
  315. package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
  316. package/types/duckdb-serialization-types/serialization/Statement.d.js +0 -3
  317. package/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
  318. package/types/duckdb-serialization-types/serialization/Statement.js +0 -3
  319. package/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
  320. package/types/duckdb-serialization-types/serialization/TableFilter.d.js +0 -3
  321. package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
  322. package/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
  323. package/types/duckdb-serialization-types/serialization/TableRef.d.js +0 -3
  324. package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
  325. package/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
  326. package/types/duckdb-serialization-types/serialization/Types.d.js +0 -3
  327. package/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
  328. package/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
  329. package/types/duckdb-serialization-types/serialization/example.js +0 -131
  330. package/types/duckdb-serialization-types/serialization/example.js.map +0 -1
  331. package/types/utils.js +0 -108
  332. package/types/utils.js.map +0 -1
  333. package/utils/__fixtures__/joins.fixtures.js.map +0 -1
  334. package/utils/base-ast.js +0 -63
  335. package/utils/base-ast.js.map +0 -1
  336. package/utils/cube-filter-enrichment.js +0 -63
  337. package/utils/cube-filter-enrichment.js.map +0 -1
  338. package/utils/cube-to-table-schema.js.map +0 -1
  339. package/utils/cube-type-to-duckdb-type.js +0 -17
  340. package/utils/cube-type-to-duckdb-type.js.map +0 -1
  341. package/utils/find-in-table-schema.js +0 -40
  342. package/utils/find-in-table-schema.js.map +0 -1
  343. package/utils/get-column-names-from-ast.js +0 -45
  344. package/utils/get-column-names-from-ast.js.map +0 -1
  345. package/utils/get-possible-nodes.js +0 -152
  346. package/utils/get-possible-nodes.js.map +0 -1
  347. package/utils/get-type-info.js +0 -44
  348. package/utils/get-type-info.js.map +0 -1
  349. package/utils/is-array-member-type.js +0 -12
  350. package/utils/is-array-member-type.js.map +0 -1
  351. package/utils/key-from-measures-dimension.js +0 -35
  352. package/utils/key-from-measures-dimension.js.map +0 -1
  353. package/utils/meerkat-placeholder-replacer.js +0 -14
  354. package/utils/meerkat-placeholder-replacer.js.map +0 -1
  355. package/utils/modify-meerkat-filter.js +0 -30
  356. package/utils/modify-meerkat-filter.js.map +0 -1
  357. package/utils/type-guards.js.map +0 -1
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "cubeOrderByToAST", {
3
- enumerable: true,
4
- get: function() {
5
- return cubeOrderByToAST;
6
- }
7
- });
8
- const _memberkeytosafekey = require("../member-formatters/member-key-to-safe-key");
9
- const _Expression = require("../types/duckdb-serialization-types/serialization/Expression");
10
- const _Nodes = require("../types/duckdb-serialization-types/serialization/Nodes");
11
- const _ResultModifier = require("../types/duckdb-serialization-types/serialization/ResultModifier");
12
- const cubeOrderByToAST = (order)=>{
13
- const orderArr = [];
14
- for(const key in order){
15
- const value = order[key];
16
- const astOrderBy = value === 'asc' ? _Nodes.OrderType.ASCENDING : _Nodes.OrderType.DESCENDING;
17
- const orderByAST = {
18
- type: astOrderBy,
19
- null_order: _Nodes.OrderType.ORDER_DEFAULT,
20
- expression: {
21
- class: _Expression.ExpressionClass.COLUMN_REF,
22
- type: _Expression.ExpressionType.COLUMN_REF,
23
- alias: '',
24
- /**
25
- * We need to convert the key in the __ format as they are being projected in this format
26
- */ column_names: [
27
- (0, _memberkeytosafekey.memberKeyToSafeKey)(key)
28
- ]
29
- }
30
- };
31
- orderArr.push(orderByAST);
32
- }
33
- return {
34
- type: _ResultModifier.ResultModifierType.ORDER_MODIFIER,
35
- orders: orderArr
36
- };
37
- };
38
-
39
- //# sourceMappingURL=cube-order-by-transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/cube-order-by-transformer/cube-order-by-transformer.ts"],"sourcesContent":["import { memberKeyToSafeKey } from '../member-formatters/member-key-to-safe-key';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../types/duckdb-serialization-types/serialization/Expression';\nimport { OrderType } from '../types/duckdb-serialization-types/serialization/Nodes';\nimport { ResultModifierType } from '../types/duckdb-serialization-types/serialization/ResultModifier';\n\nexport const cubeOrderByToAST = (order: { [key: string]: 'asc' | 'desc' }) => {\n const orderArr = [];\n for (const key in order) {\n const value = order[key];\n const astOrderBy =\n value === 'asc' ? OrderType.ASCENDING : OrderType.DESCENDING;\n const orderByAST = {\n type: astOrderBy,\n null_order: OrderType.ORDER_DEFAULT,\n expression: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n /**\n * We need to convert the key in the __ format as they are being projected in this format\n */\n column_names: [memberKeyToSafeKey(key)],\n },\n };\n orderArr.push(orderByAST);\n }\n return {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: orderArr,\n };\n};\n"],"names":["cubeOrderByToAST","order","orderArr","key","value","astOrderBy","OrderType","ASCENDING","DESCENDING","orderByAST","type","null_order","ORDER_DEFAULT","expression","class","ExpressionClass","COLUMN_REF","ExpressionType","alias","column_names","memberKeyToSafeKey","push","ResultModifierType","ORDER_MODIFIER","orders"],"mappings":";+BAQaA;;;eAAAA;;;oCARsB;4BAI5B;uBACmB;gCACS;AAE5B,MAAMA,mBAAmB,CAACC;IAC/B,MAAMC,WAAW,EAAE;IACnB,IAAK,MAAMC,OAAOF,MAAO;QACvB,MAAMG,QAAQH,KAAK,CAACE,IAAI;QACxB,MAAME,aACJD,UAAU,QAAQE,gBAAS,CAACC,SAAS,GAAGD,gBAAS,CAACE,UAAU;QAC9D,MAAMC,aAAa;YACjBC,MAAML;YACNM,YAAYL,gBAAS,CAACM,aAAa;YACnCC,YAAY;gBACVC,OAAOC,2BAAe,CAACC,UAAU;gBACjCN,MAAMO,0BAAc,CAACD,UAAU;gBAC/BE,OAAO;gBACP;;SAEC,GACDC,cAAc;oBAACC,IAAAA,sCAAkB,EAACjB;iBAAK;YACzC;QACF;QACAD,SAASmB,IAAI,CAACZ;IAChB;IACA,OAAO;QACLC,MAAMY,kCAAkB,CAACC,cAAc;QACvCC,QAAQtB;IACV;AACF"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
-
3
- //# sourceMappingURL=cube-filter-to-duckdb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/cube-to-duckdb/cube-filter-to-duckdb.ts"],"names":[],"mappings":""}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- function _export(target, all) {
3
- for(var name in all)Object.defineProperty(target, name, {
4
- enumerable: true,
5
- get: all[name]
6
- });
7
- }
8
- _export(exports, {
9
- applyFilterParamsToBaseSQL: function() {
10
- return applyFilterParamsToBaseSQL;
11
- },
12
- detectAllFilterParamsFromSQL: function() {
13
- return detectAllFilterParamsFromSQL;
14
- },
15
- getFilterByMemberKey: function() {
16
- return getFilterByMemberKey;
17
- },
18
- getFilterParamsAST: function() {
19
- return getFilterParamsAST;
20
- },
21
- traverseAndFilter: function() {
22
- return traverseAndFilter;
23
- }
24
- });
25
- const _astbuilder = require("../ast-builder/ast-builder");
26
- const traverseAndFilter = (filter, callback)=>{
27
- if ('member' in filter) {
28
- return callback(filter) ? filter : null;
29
- }
30
- if ('and' in filter) {
31
- const filteredAndFilters = filter.and.map((subFilter)=>traverseAndFilter(subFilter, callback)).filter(Boolean);
32
- const obj = filteredAndFilters.length > 0 ? {
33
- and: filteredAndFilters
34
- } : null;
35
- return obj;
36
- }
37
- if ('or' in filter) {
38
- const filteredOrFilters = filter.or.map((subFilter)=>traverseAndFilter(subFilter, callback)).filter(Boolean);
39
- const obj = filteredOrFilters.length > 0 ? {
40
- or: filteredOrFilters
41
- } : null;
42
- return obj;
43
- }
44
- return null;
45
- };
46
- const getFilterByMemberKey = (filters, memberKey)=>{
47
- if (!filters) return [];
48
- return filters.map((filter)=>traverseAndFilter(filter, (value)=>value.member === memberKey)).filter(Boolean);
49
- };
50
- const detectAllFilterParamsFromSQL = (sql)=>{
51
- const regex = /\${FILTER_PARAMS\.(\w+\.\w+)\.filter\('(\w+)'\)}/g;
52
- const matches = [];
53
- let match;
54
- while((match = regex.exec(sql)) !== null){
55
- matches.push({
56
- memberKey: match[1],
57
- filterExpression: match[2],
58
- matchKey: match[0]
59
- });
60
- }
61
- return matches;
62
- };
63
- const getFilterParamsAST = (query, tableSchema, filterType = 'PROJECTION_FILTER')=>{
64
- const filterParamKeys = detectAllFilterParamsFromSQL(tableSchema.sql);
65
- const filterParamsAST = [];
66
- for (const filterParamKey of filterParamKeys){
67
- const filters = getFilterByMemberKey(query.filters, filterParamKey.memberKey);
68
- if (filters && filters.length > 0) {
69
- filterParamsAST.push({
70
- memberKey: filterParamKey.memberKey,
71
- matchKey: filterParamKey.matchKey,
72
- ast: (0, _astbuilder.cubeToDuckdbAST)({
73
- filters,
74
- measures: [],
75
- dimensions: []
76
- }, tableSchema, {
77
- filterType
78
- })
79
- });
80
- }
81
- }
82
- return filterParamsAST;
83
- };
84
- const replaceWhereClauseWithFiltersParamsSQL = (baseSQL, filterParamsSQL)=>{
85
- let finalSQL = baseSQL;
86
- for (const filterParam of filterParamsSQL){
87
- /**
88
- * Get SQL expression after WHERE clause
89
- */ const whereClause = filterParam.sql.split('WHERE')[1];
90
- /**
91
- * Replace filter param with SQL expression
92
- */ finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
93
- }
94
- return finalSQL;
95
- };
96
- const applyFilterParamsToBaseSQL = (baseSQL, filterParamsSQL)=>{
97
- let finalSQL = replaceWhereClauseWithFiltersParamsSQL(baseSQL, filterParamsSQL);
98
- for (const filterParam of filterParamsSQL){
99
- /**
100
- * Get SQL expression after WHERE clause
101
- */ const whereClause = filterParam.sql.split('WHERE')[1];
102
- /**
103
- * Replace filter param with SQL expression
104
- */ finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
105
- }
106
- /**
107
- * Find all remaining filter params and replace them with TRUE
108
- */ const remainingFilterParams = detectAllFilterParamsFromSQL(finalSQL);
109
- for (const filterParam of remainingFilterParams){
110
- finalSQL = finalSQL.replace(filterParam.matchKey, 'TRUE');
111
- }
112
- return finalSQL;
113
- };
114
-
115
- //# sourceMappingURL=filter-params-ast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/filter-params/filter-params-ast.ts"],"sourcesContent":["import { cubeToDuckdbAST } from '../ast-builder/ast-builder';\nimport {\n FilterType,\n LogicalAndFilter,\n LogicalOrFilter,\n MeerkatQueryFilter,\n Query,\n QueryFilter,\n TableSchema\n} from '../types/cube-types';\nimport { SelectStatement } from '../types/duckdb-serialization-types/serialization/Statement';\n\n/**\n * Get the query filter with only where filterKey matches\n */\n\nexport const traverseAndFilter = (\n filter: MeerkatQueryFilter,\n callback: (value: QueryFilter) => boolean\n): MeerkatQueryFilter | null => {\n if ('member' in filter) {\n return callback(filter) ? filter : null;\n }\n\n if ('and' in filter) {\n const filteredAndFilters = filter.and\n .map((subFilter) => traverseAndFilter(subFilter, callback))\n .filter(Boolean) as MeerkatQueryFilter[];\n const obj =\n filteredAndFilters.length > 0 ? { and: filteredAndFilters } : null;\n return obj as LogicalAndFilter;\n }\n\n if ('or' in filter) {\n const filteredOrFilters = filter.or\n .map((subFilter) => traverseAndFilter(subFilter, callback))\n .filter(Boolean);\n const obj = filteredOrFilters.length > 0 ? { or: filteredOrFilters } : null;\n return obj as LogicalOrFilter;\n }\n\n return null;\n};\n\n\nexport const getFilterByMemberKey = (\n filters: MeerkatQueryFilter[] | undefined,\n memberKey: string\n): MeerkatQueryFilter[] => {\n if (!filters) return [];\n return filters\n .map((filter) => traverseAndFilter(filter, (value) => value.member === memberKey))\n .filter(Boolean) as MeerkatQueryFilter[];\n};\n\n/**\n * Syntax for filter params in SQL:\n * FILTER_PARAMS.cube_name.member_name.filter(sql_expression)\n * Example:\n * SELECT *\n * FROM orders\n * WHERE ${FILTER_PARAMS.order_facts.date.filter('date')}\n * @param sql\n */\nexport const detectAllFilterParamsFromSQL = (\n sql: string\n): {\n memberKey: string;\n filterExpression: string;\n matchKey: string;\n}[] => {\n const regex = /\\${FILTER_PARAMS\\.(\\w+\\.\\w+)\\.filter\\('(\\w+)'\\)}/g;\n const matches = [];\n let match;\n while ((match = regex.exec(sql)) !== null) {\n matches.push({\n memberKey: match[1],\n filterExpression: match[2],\n matchKey: match[0],\n });\n }\n return matches;\n};\n\n\n\nexport const getFilterParamsAST = (\n query: Query,\n tableSchema: TableSchema,\n filterType: FilterType = 'PROJECTION_FILTER'\n): {\n memberKey: string;\n ast: SelectStatement | null;\n matchKey: string;\n}[] => {\n const filterParamKeys = detectAllFilterParamsFromSQL(tableSchema.sql);\n const filterParamsAST = [];\n \n for (const filterParamKey of filterParamKeys) {\n const filters = getFilterByMemberKey(\n query.filters,\n filterParamKey.memberKey\n );\n \n if (filters && filters.length > 0) {\n filterParamsAST.push({\n memberKey: filterParamKey.memberKey,\n matchKey: filterParamKey.matchKey,\n ast: cubeToDuckdbAST(\n { filters, measures: [], dimensions: [] },\n tableSchema,\n {\n filterType\n }\n ),\n });\n }\n }\n\n return filterParamsAST;\n};\n\ntype FilterParamsSQL = {\n memberKey: string;\n sql: string;\n matchKey: string;\n}\n\nconst replaceWhereClauseWithFiltersParamsSQL = (baseSQL: string, filterParamsSQL: FilterParamsSQL[]) => {\n let finalSQL = baseSQL;\n\n for (const filterParam of filterParamsSQL) {\n /**\n * Get SQL expression after WHERE clause\n */\n const whereClause = filterParam.sql.split('WHERE')[1];\n /**\n * Replace filter param with SQL expression\n */\n finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);\n }\n return finalSQL\n}\n\nexport const applyFilterParamsToBaseSQL = (\n baseSQL: string,\n filterParamsSQL: FilterParamsSQL[]\n) => {\n let finalSQL = replaceWhereClauseWithFiltersParamsSQL(baseSQL, filterParamsSQL);\n for (const filterParam of filterParamsSQL) {\n /**\n * Get SQL expression after WHERE clause\n */\n const whereClause = filterParam.sql.split('WHERE')[1];\n /**\n * Replace filter param with SQL expression\n */\n finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);\n }\n /**\n * Find all remaining filter params and replace them with TRUE\n */\n const remainingFilterParams = detectAllFilterParamsFromSQL(finalSQL);\n\n for (const filterParam of remainingFilterParams) {\n finalSQL = finalSQL.replace(filterParam.matchKey, 'TRUE');\n }\n return finalSQL;\n};\n"],"names":["applyFilterParamsToBaseSQL","detectAllFilterParamsFromSQL","getFilterByMemberKey","getFilterParamsAST","traverseAndFilter","filter","callback","filteredAndFilters","and","map","subFilter","Boolean","obj","length","filteredOrFilters","or","filters","memberKey","value","member","sql","regex","matches","match","exec","push","filterExpression","matchKey","query","tableSchema","filterType","filterParamKeys","filterParamsAST","filterParamKey","ast","cubeToDuckdbAST","measures","dimensions","replaceWhereClauseWithFiltersParamsSQL","baseSQL","filterParamsSQL","finalSQL","filterParam","whereClause","split","replace","remainingFilterParams"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "getFilterParamsSQL", {
3
- enumerable: true,
4
- get: function() {
5
- return getFilterParamsSQL;
6
- }
7
- });
8
- const _astdeserializer = require("../ast-deserializer/ast-deserializer");
9
- const _filterparamsast = require("../filter-params/filter-params-ast");
10
- const getFilterParamsSQL = async ({ query, tableSchema, filterType, getQueryOutput })=>{
11
- const filterParamsAST = (0, _filterparamsast.getFilterParamsAST)(query, tableSchema, filterType);
12
- const filterParamsSQL = [];
13
- for (const filterParamAST of filterParamsAST){
14
- if (!filterParamAST.ast) {
15
- continue;
16
- }
17
- const queryOutput = await getQueryOutput((0, _astdeserializer.astDeserializerQuery)(filterParamAST.ast));
18
- const sql = (0, _astdeserializer.deserializeQuery)(queryOutput);
19
- filterParamsSQL.push({
20
- memberKey: filterParamAST.memberKey,
21
- sql: sql,
22
- matchKey: filterParamAST.matchKey
23
- });
24
- }
25
- return filterParamsSQL;
26
- };
27
-
28
- //# sourceMappingURL=get-filter-params-sql.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-filter-params-sql/get-filter-params-sql.ts"],"sourcesContent":["import { astDeserializerQuery, deserializeQuery } from \"../ast-deserializer/ast-deserializer\";\nimport { getFilterParamsAST } from \"../filter-params/filter-params-ast\";\nimport { FilterType, Query, TableSchema } from \"../types/cube-types\";\n\nexport const getFilterParamsSQL = async ({\n query,\n tableSchema,\n filterType,\n getQueryOutput\n}: {\n query: Query;\n tableSchema: TableSchema;\n filterType?: FilterType;\n getQueryOutput: (query: string) => Promise<any>;\n}) => {\n const filterParamsAST = getFilterParamsAST(\n query,\n tableSchema,\n filterType\n );\n const filterParamsSQL = [];\n for (const filterParamAST of filterParamsAST) {\n if (!filterParamAST.ast) {\n continue;\n }\n\n const queryOutput = await getQueryOutput(astDeserializerQuery(filterParamAST.ast))\n const sql = deserializeQuery(queryOutput);\n\n filterParamsSQL.push({\n memberKey: filterParamAST.memberKey,\n sql: sql,\n matchKey: filterParamAST.matchKey,\n });\n }\n return filterParamsSQL;\n};\n"],"names":["getFilterParamsSQL","query","tableSchema","filterType","getQueryOutput","filterParamsAST","getFilterParamsAST","filterParamsSQL","filterParamAST","ast","queryOutput","astDeserializerQuery","sql","deserializeQuery","push","memberKey","matchKey"],"mappings":";+BAIaA;;;eAAAA;;;iCAJ0C;iCACpB;AAG5B,MAAMA,qBAAqB,OAAO,EACvCC,KAAK,EACLC,WAAW,EACXC,UAAU,EACVC,cAAc,EAMf;IACC,MAAMC,kBAAkBC,IAAAA,mCAAkB,EACxCL,OACAC,aACAC;IAEF,MAAMI,kBAAkB,EAAE;IAC1B,KAAK,MAAMC,kBAAkBH,gBAAiB;QAC5C,IAAI,CAACG,eAAeC,GAAG,EAAE;YACvB;QACF;QAEA,MAAMC,cAAc,MAAMN,eAAeO,IAAAA,qCAAoB,EAACH,eAAeC,GAAG;QAChF,MAAMG,MAAMC,IAAAA,iCAAgB,EAACH;QAE7BH,gBAAgBO,IAAI,CAAC;YACnBC,WAAWP,eAAeO,SAAS;YACnCH,KAAKA;YACLI,UAAUR,eAAeQ,QAAQ;QACnC;IACF;IACA,OAAOT;AACT"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "getFinalBaseSQL", {
3
- enumerable: true,
4
- get: function() {
5
- return getFinalBaseSQL;
6
- }
7
- });
8
- const _filterparamsast = require("../filter-params/filter-params-ast");
9
- const _getfilterparamssql = require("../get-filter-params-sql/get-filter-params-sql");
10
- const _getwrappedbasequerywithprojections = require("../get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections");
11
- const getFinalBaseSQL = async ({ query, getQueryOutput, tableSchema })=>{
12
- /**
13
- * Apply transformation to the supplied base query.
14
- * This involves updating the filter placeholder with the actual filter values.
15
- */ const baseFilterParamsSQL = await (0, _getfilterparamssql.getFilterParamsSQL)({
16
- query: query,
17
- tableSchema,
18
- filterType: 'BASE_FILTER',
19
- getQueryOutput
20
- });
21
- const baseSQL = (0, _filterparamsast.applyFilterParamsToBaseSQL)(tableSchema.sql, baseFilterParamsSQL);
22
- const baseSQLWithFilterProjection = (0, _getwrappedbasequerywithprojections.getWrappedBaseQueryWithProjections)({
23
- baseQuery: baseSQL,
24
- tableSchema,
25
- query: query
26
- });
27
- return baseSQLWithFilterProjection;
28
- };
29
-
30
- //# sourceMappingURL=get-final-base-sql.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-final-base-sql/get-final-base-sql.ts"],"sourcesContent":["import { applyFilterParamsToBaseSQL } from \"../filter-params/filter-params-ast\";\nimport { getFilterParamsSQL } from \"../get-filter-params-sql/get-filter-params-sql\";\nimport { getWrappedBaseQueryWithProjections } from \"../get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections\";\nimport { Query } from \"../types/cube-types/query\";\nimport { TableSchema } from \"../types/cube-types/table\";\n\nexport const getFinalBaseSQL = async ({\n query,\n getQueryOutput,\n tableSchema,\n}: { query: Query, tableSchema: TableSchema, getQueryOutput: (query: string) => Promise<any> }) => {\n /**\n * Apply transformation to the supplied base query.\n * This involves updating the filter placeholder with the actual filter values.\n */\n const baseFilterParamsSQL = await getFilterParamsSQL({\n query: query,\n tableSchema,\n filterType: 'BASE_FILTER',\n getQueryOutput,\n });\n const baseSQL = applyFilterParamsToBaseSQL(\n tableSchema.sql,\n baseFilterParamsSQL\n );\n const baseSQLWithFilterProjection = getWrappedBaseQueryWithProjections({\n baseQuery: baseSQL,\n tableSchema,\n query: query,\n });\n return baseSQLWithFilterProjection;\n};\n \n"],"names":["getFinalBaseSQL","query","getQueryOutput","tableSchema","baseFilterParamsSQL","getFilterParamsSQL","filterType","baseSQL","applyFilterParamsToBaseSQL","sql","baseSQLWithFilterProjection","getWrappedBaseQueryWithProjections","baseQuery"],"mappings":";+BAMaA;;;eAAAA;;;iCAN8B;oCACR;oDACgB;AAI5C,MAAMA,kBAAkB,OAAO,EACpCC,KAAK,EACLC,cAAc,EACdC,WAAW,EACiF;IAC5F;;;GAGC,GACD,MAAMC,sBAAsB,MAAMC,IAAAA,sCAAkB,EAAC;QACnDJ,OAAOA;QACPE;QACAG,YAAY;QACZJ;IACF;IACA,MAAMK,UAAUC,IAAAA,2CAA0B,EACxCL,YAAYM,GAAG,EACfL;IAEF,MAAMM,8BAA8BC,IAAAA,sEAAkC,EAAC;QACrEC,WAAWL;QACXJ;QACAF,OAAOA;IACT;IACA,OAAOS;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.ts"],"sourcesContent":["import { memberKeyToSafeKey } from '../member-formatters/member-key-to-safe-key';\nimport { splitIntoDataSourceAndFields } from '../member-formatters/split-into-data-source-and-fields';\nimport { MeerkatQueryFilter, Query, TableSchema } from '../types/cube-types';\nimport {\n findInDimensionSchema,\n findInMeasureSchema,\n} from '../utils/find-in-table-schema';\nimport { getModifiedSqlExpression, Modifier } from './sql-expression-modifiers';\n\nexport const getDimensionProjection = ({\n key,\n tableSchema,\n modifiers,\n query,\n}: {\n key: string;\n tableSchema: TableSchema;\n modifiers: Modifier[];\n query: Query;\n}) => {\n // Find the table access key\n const [tableName, measureWithoutTable] = splitIntoDataSourceAndFields(key);\n\n const foundMember = findInDimensionSchema(measureWithoutTable, tableSchema);\n if (!foundMember || tableName !== tableSchema.name) {\n // If the selected member is not found in the table schema or if it is already selected, continue.\n // If the selected member is not from the current table, don't create an alias.\n return {\n sql: undefined,\n foundMember: undefined,\n aliasKey: undefined,\n };\n }\n\n const modifiedSql = getModifiedSqlExpression({\n dimension: foundMember,\n key: key,\n modifiers: modifiers,\n sqlExpression: foundMember.sql,\n query,\n });\n\n const aliasKey = memberKeyToSafeKey(key);\n // Add the alias key to the set. So we have a reference to all the previously selected members.\n return { sql: `${modifiedSql} AS ${aliasKey}`, foundMember, aliasKey };\n};\n\nexport const getFilterMeasureProjection = ({\n key,\n tableSchema,\n measures,\n}: {\n key: string;\n tableSchema: TableSchema;\n measures: string[];\n}) => {\n const [tableName, measureWithoutTable] = splitIntoDataSourceAndFields(key);\n const foundMember = findInMeasureSchema(measureWithoutTable, tableSchema);\n const isMeasure = measures.includes(key);\n if (!foundMember || isMeasure || tableName !== tableSchema.name) {\n // If the selected member is not found in the table schema or if it is already selected, continue.\n // If the selected member is a measure, don't create an alias. Since measure computation is done in the outermost level of the query\n // If the selected member is not from the current table, don't create an alias.\n return {\n sql: undefined,\n foundMember: undefined,\n aliasKey: undefined,\n };\n }\n const aliasKey = memberKeyToSafeKey(key);\n return { sql: `${key} AS ${aliasKey}`, foundMember, aliasKey };\n};\n\nconst getFilterProjections = ({\n member,\n tableSchema,\n measures,\n query,\n}: {\n member: string;\n tableSchema: TableSchema;\n measures: string[];\n query: Query;\n}) => {\n const [, memberWithoutTable] = splitIntoDataSourceAndFields(member);\n const isDimension = findInDimensionSchema(memberWithoutTable, tableSchema);\n if (isDimension) {\n return getDimensionProjection({\n key: member,\n tableSchema,\n modifiers: [],\n query,\n });\n }\n const isMeasure = findInMeasureSchema(memberWithoutTable, tableSchema);\n if (isMeasure) {\n return getFilterMeasureProjection({ key: member, tableSchema, measures });\n }\n return {\n sql: undefined,\n foundMember: undefined,\n aliasKey: undefined,\n };\n};\n\nexport const getAliasedColumnsFromFilters = ({\n baseSql,\n meerkatFilters,\n tableSchema,\n aliasedColumnSet,\n query,\n}: {\n meerkatFilters?: MeerkatQueryFilter[];\n tableSchema: TableSchema;\n baseSql: string;\n aliasedColumnSet: Set<string>;\n query: Query;\n}) => {\n let sql = baseSql;\n const { measures } = query;\n meerkatFilters?.forEach((filter) => {\n if ('and' in filter) {\n // Traverse through the passed 'and' filters\n sql += getAliasedColumnsFromFilters({\n baseSql: '',\n meerkatFilters: filter.and,\n tableSchema,\n aliasedColumnSet,\n query,\n });\n }\n if ('or' in filter) {\n // Traverse through the passed 'or' filters\n sql += getAliasedColumnsFromFilters({\n baseSql: '',\n tableSchema,\n meerkatFilters: filter.or,\n aliasedColumnSet,\n query,\n });\n }\n if ('member' in filter) {\n const {\n aliasKey,\n foundMember,\n sql: memberSql,\n } = getFilterProjections({\n member: filter.member,\n tableSchema,\n measures,\n query,\n });\n if (!foundMember || aliasedColumnSet.has(aliasKey)) {\n // If the selected member is not found in the table schema or if it is already selected, continue.\n return;\n }\n if (aliasKey) {\n aliasedColumnSet.add(aliasKey);\n }\n // Add the alias key to the set. So we have a reference to all the previously selected members.\n sql += `, ${memberSql}`;\n }\n });\n return sql;\n};\n"],"names":["getAliasedColumnsFromFilters","getDimensionProjection","getFilterMeasureProjection","key","tableSchema","modifiers","query","tableName","measureWithoutTable","splitIntoDataSourceAndFields","foundMember","findInDimensionSchema","name","sql","undefined","aliasKey","modifiedSql","getModifiedSqlExpression","dimension","sqlExpression","memberKeyToSafeKey","measures","findInMeasureSchema","isMeasure","includes","getFilterProjections","member","memberWithoutTable","isDimension","baseSql","meerkatFilters","aliasedColumnSet","forEach","filter","and","or","memberSql","has","add"],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "getProjectionClause", {
3
- enumerable: true,
4
- get: function() {
5
- return getProjectionClause;
6
- }
7
- });
8
- const _cubemeasuretransformer = require("../cube-measure-transformer/cube-measure-transformer");
9
- const _memberkeytosafekey = require("../member-formatters/member-key-to-safe-key");
10
- const _splitintodatasourceandfields = require("../member-formatters/split-into-data-source-and-fields");
11
- const _getaliasedcolumnsfromfilters = require("./get-aliased-columns-from-filters");
12
- const _sqlexpressionmodifiers = require("./sql-expression-modifiers");
13
- const memberClauseAggregator = ({ member, aliasedColumnSet, acc, sql })=>{
14
- if (aliasedColumnSet.has(member) || !sql) {
15
- return acc;
16
- }
17
- aliasedColumnSet.add(member);
18
- acc.push(sql);
19
- return acc;
20
- };
21
- const getProjectionClause = (query, tableSchema, aliasedColumnSet)=>{
22
- const { measures, dimensions = [] } = query;
23
- const filteredDimensions = dimensions.filter((dimension)=>{
24
- const [dimensionDataSource] = (0, _splitintodatasourceandfields.splitIntoDataSourceAndFields)(dimension);
25
- return dimensionDataSource === tableSchema.name;
26
- });
27
- const filteredMeasures = measures.filter((measure)=>{
28
- const [measureDataSource] = (0, _splitintodatasourceandfields.splitIntoDataSourceAndFields)(measure);
29
- return measureDataSource === tableSchema.name;
30
- });
31
- const dimensionsProjectionsArr = filteredDimensions.reduce((acc, member, currentIndex, members)=>{
32
- const { sql: memberSql } = (0, _getaliasedcolumnsfromfilters.getDimensionProjection)({
33
- key: member,
34
- tableSchema,
35
- modifiers: _sqlexpressionmodifiers.MODIFIERS,
36
- query
37
- });
38
- return memberClauseAggregator({
39
- member: (0, _memberkeytosafekey.memberKeyToSafeKey)(member),
40
- aliasedColumnSet,
41
- acc,
42
- currentIndex,
43
- members,
44
- sql: memberSql
45
- });
46
- }, []);
47
- const dimensionsProjections = dimensionsProjectionsArr.join(', ');
48
- const measureProjectionsArr = filteredMeasures.reduce((acc, member, currentIndex, members)=>{
49
- const { sql: memberSql } = (0, _getaliasedcolumnsfromfilters.getFilterMeasureProjection)({
50
- key: member,
51
- tableSchema,
52
- measures
53
- });
54
- return memberClauseAggregator({
55
- member,
56
- aliasedColumnSet,
57
- acc,
58
- currentIndex,
59
- members,
60
- sql: memberSql
61
- });
62
- }, []);
63
- const measureProjections = measureProjectionsArr.join(', ');
64
- const usedMeasureObjects = tableSchema.measures.filter((measure)=>{
65
- return measures.findIndex((key)=>{
66
- const [, keyWithoutTable] = (0, _splitintodatasourceandfields.splitIntoDataSourceAndFields)(key);
67
- return keyWithoutTable === measure.name;
68
- }) !== -1;
69
- });
70
- const columnsUsedInMeasures = (0, _cubemeasuretransformer.getAllColumnUsedInMeasures)(usedMeasureObjects, tableSchema);
71
- let columnsUsedInMeasuresInProjection = '';
72
- columnsUsedInMeasures.forEach((column, index)=>{
73
- const safeKey = (0, _memberkeytosafekey.memberKeyToSafeKey)(column);
74
- columnsUsedInMeasuresInProjection += `${column} AS ${safeKey}`;
75
- if (index !== columnsUsedInMeasures.length - 1) {
76
- columnsUsedInMeasuresInProjection += ', ';
77
- }
78
- });
79
- const combinedStr = [
80
- dimensionsProjections,
81
- measureProjections,
82
- columnsUsedInMeasuresInProjection
83
- ];
84
- return combinedStr.filter((str)=>str.length > 0).join(', ');
85
- };
86
-
87
- //# sourceMappingURL=get-projection-clause.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-projection-clause.ts"],"sourcesContent":["import { getAllColumnUsedInMeasures } from '../cube-measure-transformer/cube-measure-transformer';\nimport { memberKeyToSafeKey } from '../member-formatters/member-key-to-safe-key';\nimport { splitIntoDataSourceAndFields } from '../member-formatters/split-into-data-source-and-fields';\nimport { Query, TableSchema } from '../types/cube-types';\nimport {\n getDimensionProjection,\n getFilterMeasureProjection,\n} from './get-aliased-columns-from-filters';\nimport { MODIFIERS } from './sql-expression-modifiers';\n\nconst memberClauseAggregator = ({\n member,\n aliasedColumnSet,\n acc,\n sql,\n}: {\n member: string;\n aliasedColumnSet: Set<string>;\n acc: string[];\n sql?: string;\n currentIndex: number;\n members: string[];\n}) => {\n if (aliasedColumnSet.has(member) || !sql) {\n return acc;\n }\n aliasedColumnSet.add(member);\n acc.push(sql);\n return acc;\n};\n\nexport const getProjectionClause = (\n query: Query,\n tableSchema: TableSchema,\n aliasedColumnSet: Set<string>\n) => {\n const { measures, dimensions = [] } = query;\n const filteredDimensions = dimensions.filter((dimension) => {\n const [dimensionDataSource] = splitIntoDataSourceAndFields(dimension);\n return dimensionDataSource === tableSchema.name;\n });\n const filteredMeasures = measures.filter((measure) => {\n const [measureDataSource] = splitIntoDataSourceAndFields(measure);\n return measureDataSource === tableSchema.name;\n });\n const dimensionsProjectionsArr = filteredDimensions.reduce(\n (acc, member, currentIndex, members) => {\n const { sql: memberSql } = getDimensionProjection({\n key: member,\n tableSchema,\n modifiers: MODIFIERS,\n query,\n });\n return memberClauseAggregator({\n member: memberKeyToSafeKey(member),\n aliasedColumnSet,\n acc,\n currentIndex,\n members,\n sql: memberSql,\n });\n },\n [] as string[]\n );\n const dimensionsProjections = dimensionsProjectionsArr.join(', ');\n\n const measureProjectionsArr = filteredMeasures.reduce(\n (acc, member, currentIndex, members) => {\n const { sql: memberSql } = getFilterMeasureProjection({\n key: member,\n tableSchema,\n measures,\n });\n return memberClauseAggregator({\n member,\n aliasedColumnSet,\n acc,\n currentIndex,\n members,\n sql: memberSql,\n });\n },\n [] as string[]\n );\n\n const measureProjections = measureProjectionsArr.join(', ');\n\n const usedMeasureObjects = tableSchema.measures.filter((measure) => {\n return (\n measures.findIndex((key) => {\n const [, keyWithoutTable] = splitIntoDataSourceAndFields(key);\n return keyWithoutTable === measure.name;\n }) !== -1\n );\n });\n const columnsUsedInMeasures = getAllColumnUsedInMeasures(\n usedMeasureObjects,\n tableSchema\n );\n\n let columnsUsedInMeasuresInProjection = '';\n columnsUsedInMeasures.forEach((column, index) => {\n const safeKey = memberKeyToSafeKey(column);\n columnsUsedInMeasuresInProjection += `${column} AS ${safeKey}`;\n if (index !== columnsUsedInMeasures.length - 1) {\n columnsUsedInMeasuresInProjection += ', ';\n }\n });\n\n const combinedStr = [\n dimensionsProjections,\n measureProjections,\n columnsUsedInMeasuresInProjection,\n ];\n\n return combinedStr.filter((str) => str.length > 0).join(', ');\n};\n"],"names":["getProjectionClause","memberClauseAggregator","member","aliasedColumnSet","acc","sql","has","add","push","query","tableSchema","measures","dimensions","filteredDimensions","filter","dimension","dimensionDataSource","splitIntoDataSourceAndFields","name","filteredMeasures","measure","measureDataSource","dimensionsProjectionsArr","reduce","currentIndex","members","memberSql","getDimensionProjection","key","modifiers","MODIFIERS","memberKeyToSafeKey","dimensionsProjections","join","measureProjectionsArr","getFilterMeasureProjection","measureProjections","usedMeasureObjects","findIndex","keyWithoutTable","columnsUsedInMeasures","getAllColumnUsedInMeasures","columnsUsedInMeasuresInProjection","forEach","column","index","safeKey","length","combinedStr","str"],"mappings":";+BA+BaA;;;eAAAA;;;wCA/B8B;oCACR;8CACU;8CAKtC;wCACmB;AAE1B,MAAMC,yBAAyB,CAAC,EAC9BC,MAAM,EACNC,gBAAgB,EAChBC,GAAG,EACHC,GAAG,EAQJ;IACC,IAAIF,iBAAiBG,GAAG,CAACJ,WAAW,CAACG,KAAK;QACxC,OAAOD;IACT;IACAD,iBAAiBI,GAAG,CAACL;IACrBE,IAAII,IAAI,CAACH;IACT,OAAOD;AACT;AAEO,MAAMJ,sBAAsB,CACjCS,OACAC,aACAP;IAEA,MAAM,EAAEQ,QAAQ,EAAEC,aAAa,EAAE,EAAE,GAAGH;IACtC,MAAMI,qBAAqBD,WAAWE,MAAM,CAAC,CAACC;QAC5C,MAAM,CAACC,oBAAoB,GAAGC,IAAAA,0DAA4B,EAACF;QAC3D,OAAOC,wBAAwBN,YAAYQ,IAAI;IACjD;IACA,MAAMC,mBAAmBR,SAASG,MAAM,CAAC,CAACM;QACxC,MAAM,CAACC,kBAAkB,GAAGJ,IAAAA,0DAA4B,EAACG;QACzD,OAAOC,sBAAsBX,YAAYQ,IAAI;IAC/C;IACA,MAAMI,2BAA2BT,mBAAmBU,MAAM,CACxD,CAACnB,KAAKF,QAAQsB,cAAcC;QAC1B,MAAM,EAAEpB,KAAKqB,SAAS,EAAE,GAAGC,IAAAA,oDAAsB,EAAC;YAChDC,KAAK1B;YACLQ;YACAmB,WAAWC,iCAAS;YACpBrB;QACF;QACA,OAAOR,uBAAuB;YAC5BC,QAAQ6B,IAAAA,sCAAkB,EAAC7B;YAC3BC;YACAC;YACAoB;YACAC;YACApB,KAAKqB;QACP;IACF,GACA,EAAE;IAEJ,MAAMM,wBAAwBV,yBAAyBW,IAAI,CAAC;IAE5D,MAAMC,wBAAwBf,iBAAiBI,MAAM,CACnD,CAACnB,KAAKF,QAAQsB,cAAcC;QAC1B,MAAM,EAAEpB,KAAKqB,SAAS,EAAE,GAAGS,IAAAA,wDAA0B,EAAC;YACpDP,KAAK1B;YACLQ;YACAC;QACF;QACA,OAAOV,uBAAuB;YAC5BC;YACAC;YACAC;YACAoB;YACAC;YACApB,KAAKqB;QACP;IACF,GACA,EAAE;IAGJ,MAAMU,qBAAqBF,sBAAsBD,IAAI,CAAC;IAEtD,MAAMI,qBAAqB3B,YAAYC,QAAQ,CAACG,MAAM,CAAC,CAACM;QACtD,OACET,SAAS2B,SAAS,CAAC,CAACV;YAClB,MAAM,GAAGW,gBAAgB,GAAGtB,IAAAA,0DAA4B,EAACW;YACzD,OAAOW,oBAAoBnB,QAAQF,IAAI;QACzC,OAAO,CAAC;IAEZ;IACA,MAAMsB,wBAAwBC,IAAAA,kDAA0B,EACtDJ,oBACA3B;IAGF,IAAIgC,oCAAoC;IACxCF,sBAAsBG,OAAO,CAAC,CAACC,QAAQC;QACrC,MAAMC,UAAUf,IAAAA,sCAAkB,EAACa;QACnCF,qCAAqC,CAAC,EAAEE,OAAO,IAAI,EAAEE,QAAQ,CAAC;QAC9D,IAAID,UAAUL,sBAAsBO,MAAM,GAAG,GAAG;YAC9CL,qCAAqC;QACvC;IACF;IAEA,MAAMM,cAAc;QAClBhB;QACAI;QACAM;KACD;IAED,OAAOM,YAAYlC,MAAM,CAAC,CAACmC,MAAQA,IAAIF,MAAM,GAAG,GAAGd,IAAI,CAAC;AAC1D"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "getWrappedBaseQueryWithProjections", {
3
- enumerable: true,
4
- get: function() {
5
- return getWrappedBaseQueryWithProjections;
6
- }
7
- });
8
- const _cubemeasuretransformer = require("../cube-measure-transformer/cube-measure-transformer");
9
- const _getaliasedcolumnsfromfilters = require("./get-aliased-columns-from-filters");
10
- const _getprojectionclause = require("./get-projection-clause");
11
- const getWrappedBaseQueryWithProjections = ({ baseQuery, tableSchema, query })=>{
12
- /*
13
- * Im order to be able to filter on computed metric from a query, we need to project the computed metric in the base query.
14
- * If theres filters supplied, we can safely return the original base query. Since nothing need to be projected and filtered in this case
15
- */ // Wrap the query into another 'SELECT * FROM (baseQuery) AS baseTable'' in order to project everything in the base query, and other computed metrics to be able to filter on them
16
- const newBaseSql = `SELECT * FROM (${baseQuery}) AS ${tableSchema.name}`;
17
- const aliasedColumnSet = new Set();
18
- const memberProjections = (0, _getprojectionclause.getProjectionClause)(query, tableSchema, aliasedColumnSet);
19
- const aliasFromFilters = (0, _getaliasedcolumnsfromfilters.getAliasedColumnsFromFilters)({
20
- aliasedColumnSet,
21
- baseSql: 'SELECT *',
22
- // setting measures to empty array, since we don't want to project measures present in the filters in the base query
23
- tableSchema: tableSchema,
24
- query,
25
- meerkatFilters: query.filters
26
- });
27
- const formattedMemberProjection = memberProjections ? `, ${memberProjections}` : '';
28
- const finalAliasedColumnsClause = aliasFromFilters + formattedMemberProjection;
29
- const sqlWithFilterProjects = (0, _cubemeasuretransformer.getSelectReplacedSql)(newBaseSql, finalAliasedColumnsClause);
30
- return sqlWithFilterProjects;
31
- };
32
-
33
- //# sourceMappingURL=get-wrapped-base-query-with-projections.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.ts"],"sourcesContent":["import { getSelectReplacedSql } from '../cube-measure-transformer/cube-measure-transformer';\nimport { Query, TableSchema } from '../types/cube-types';\nimport { getAliasedColumnsFromFilters } from './get-aliased-columns-from-filters';\nimport {\n getProjectionClause\n} from './get-projection-clause';\n\ninterface GetWrappedBaseQueryWithProjectionsParams {\n baseQuery: string;\n tableSchema: TableSchema;\n query: Query;\n}\n\nexport const getWrappedBaseQueryWithProjections = ({\n baseQuery,\n tableSchema,\n query,\n}: GetWrappedBaseQueryWithProjectionsParams) => {\n /*\n * Im order to be able to filter on computed metric from a query, we need to project the computed metric in the base query.\n * If theres filters supplied, we can safely return the original base query. Since nothing need to be projected and filtered in this case\n */\n // Wrap the query into another 'SELECT * FROM (baseQuery) AS baseTable'' in order to project everything in the base query, and other computed metrics to be able to filter on them\n const newBaseSql = `SELECT * FROM (${baseQuery}) AS ${tableSchema.name}`;\n const aliasedColumnSet = new Set<string>();\n\n const memberProjections = getProjectionClause(\n query,\n tableSchema,\n aliasedColumnSet\n );\n\n const aliasFromFilters = getAliasedColumnsFromFilters({\n aliasedColumnSet,\n baseSql: 'SELECT *',\n // setting measures to empty array, since we don't want to project measures present in the filters in the base query\n tableSchema: tableSchema,\n query,\n meerkatFilters: query.filters,\n });\n\n const formattedMemberProjection = memberProjections\n ? `, ${memberProjections}`\n : '';\n\n const finalAliasedColumnsClause =\n aliasFromFilters + formattedMemberProjection;\n\n const sqlWithFilterProjects = getSelectReplacedSql(\n newBaseSql,\n finalAliasedColumnsClause\n );\n return sqlWithFilterProjects;\n};\n"],"names":["getWrappedBaseQueryWithProjections","baseQuery","tableSchema","query","newBaseSql","name","aliasedColumnSet","Set","memberProjections","getProjectionClause","aliasFromFilters","getAliasedColumnsFromFilters","baseSql","meerkatFilters","filters","formattedMemberProjection","finalAliasedColumnsClause","sqlWithFilterProjects","getSelectReplacedSql"],"mappings":";+BAaaA;;;eAAAA;;;wCAbwB;8CAEQ;qCAGtC;AAQA,MAAMA,qCAAqC,CAAC,EACjDC,SAAS,EACTC,WAAW,EACXC,KAAK,EACoC;IACzC;;;GAGC,GACD,kLAAkL;IAClL,MAAMC,aAAa,CAAC,eAAe,EAAEH,UAAU,KAAK,EAAEC,YAAYG,IAAI,CAAC,CAAC;IACxE,MAAMC,mBAAmB,IAAIC;IAE7B,MAAMC,oBAAoBC,IAAAA,wCAAmB,EAC3CN,OACAD,aACAI;IAGF,MAAMI,mBAAmBC,IAAAA,0DAA4B,EAAC;QACpDL;QACAM,SAAS;QACT,oHAAoH;QACpHV,aAAaA;QACbC;QACAU,gBAAgBV,MAAMW,OAAO;IAC/B;IAEA,MAAMC,4BAA4BP,oBAC9B,CAAC,EAAE,EAAEA,kBAAkB,CAAC,GACxB;IAEJ,MAAMQ,4BACJN,mBAAmBK;IAErB,MAAME,wBAAwBC,IAAAA,4CAAoB,EAChDd,YACAY;IAEF,OAAOC;AACT"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- function _export(target, all) {
3
- for(var name in all)Object.defineProperty(target, name, {
4
- enumerable: true,
5
- get: all[name]
6
- });
7
- }
8
- _export(exports, {
9
- MODIFIERS: function() {
10
- return MODIFIERS;
11
- },
12
- arrayFieldUnNestModifier: function() {
13
- return arrayFieldUnNestModifier;
14
- },
15
- getModifiedSqlExpression: function() {
16
- return getModifiedSqlExpression;
17
- },
18
- shouldUnnest: function() {
19
- return shouldUnnest;
20
- }
21
- });
22
- const _isarraymembertype = require("../utils/is-array-member-type");
23
- const arrayFieldUnNestModifier = ({ sqlExpression })=>{
24
- return `array[unnest(${sqlExpression})]`;
25
- };
26
- const shouldUnnest = ({ dimension, query })=>{
27
- var _dimension_modifier;
28
- const isArrayType = (0, _isarraymembertype.isArrayTypeMember)(dimension.type);
29
- const hasUnNestedGroupBy = (_dimension_modifier = dimension.modifier) == null ? void 0 : _dimension_modifier.shouldUnnestGroupBy;
30
- return !!(isArrayType && hasUnNestedGroupBy && query.measures.length > 0);
31
- };
32
- const MODIFIERS = [
33
- {
34
- name: 'shouldUnnestGroupBy',
35
- matcher: shouldUnnest,
36
- modifier: arrayFieldUnNestModifier
37
- }
38
- ];
39
- const getModifiedSqlExpression = ({ sqlExpression, dimension, key, modifiers, query })=>{
40
- let finalDimension = sqlExpression;
41
- modifiers.forEach(({ modifier, matcher })=>{
42
- const shouldModify = matcher({
43
- sqlExpression: finalDimension,
44
- dimension,
45
- key,
46
- query
47
- });
48
- if (shouldModify) {
49
- finalDimension = modifier({
50
- sqlExpression: finalDimension,
51
- dimension,
52
- key,
53
- query
54
- });
55
- }
56
- });
57
- return finalDimension;
58
- };
59
-
60
- //# sourceMappingURL=sql-expression-modifiers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-core/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.ts"],"sourcesContent":["import { Dimension, Query } from \"../types/cube-types\";\nimport { isArrayTypeMember } from \"../utils/is-array-member-type\";\n\nexport interface DimensionModifier {\n sqlExpression: string,\n dimension: Dimension,\n key: string,\n query: Query\n}\n\nexport const arrayFieldUnNestModifier = ({ sqlExpression }: DimensionModifier): string => {\n return `array[unnest(${sqlExpression})]`;\n}\n\nexport const shouldUnnest = ({ dimension, query }: DimensionModifier): boolean => {\n const isArrayType = isArrayTypeMember(dimension.type);\n const hasUnNestedGroupBy = dimension.modifier?.shouldUnnestGroupBy;\n return !!(isArrayType && hasUnNestedGroupBy && query.measures.length > 0);\n}\n\n\nexport type Modifier = {\n name: string,\n matcher: (modifier: DimensionModifier) => boolean,\n modifier: (modifier: DimensionModifier) => string\n}\n\nexport const MODIFIERS: Modifier[] = [{\n name: 'shouldUnnestGroupBy',\n matcher: shouldUnnest,\n modifier: arrayFieldUnNestModifier\n}]\n\n\nexport const getModifiedSqlExpression = ({ sqlExpression, dimension, key, modifiers, query }: DimensionModifier & {\n modifiers: Modifier[]\n}) => {\n let finalDimension: string = sqlExpression;\n modifiers.forEach(({ modifier, matcher }) => {\n const shouldModify = matcher({ sqlExpression: finalDimension, dimension, key, query });\n if (shouldModify) {\n finalDimension = modifier({ sqlExpression: finalDimension, dimension, key, query });\n }\n })\n return finalDimension;\n} "],"names":["MODIFIERS","arrayFieldUnNestModifier","getModifiedSqlExpression","shouldUnnest","sqlExpression","dimension","query","isArrayType","isArrayTypeMember","type","hasUnNestedGroupBy","modifier","shouldUnnestGroupBy","measures","length","name","matcher","key","modifiers","finalDimension","forEach","shouldModify"],"mappings":";;;;;;;;IA2BaA,SAAS;eAATA;;IAjBAC,wBAAwB;eAAxBA;;IAwBAC,wBAAwB;eAAxBA;;IApBAC,YAAY;eAAZA;;;mCAbqB;AAS3B,MAAMF,2BAA2B,CAAC,EAAEG,aAAa,EAAqB;IAC5E,OAAO,CAAC,aAAa,EAAEA,cAAc,EAAE,CAAC;AACzC;AAEO,MAAMD,eAAe,CAAC,EAAEE,SAAS,EAAEC,KAAK,EAAqB;QAEvCD;IAD3B,MAAME,cAAeC,IAAAA,oCAAiB,EAACH,UAAUI,IAAI;IACrD,MAAMC,sBAAqBL,sBAAAA,UAAUM,QAAQ,qBAAlBN,oBAAoBO,mBAAmB;IAClE,OAAO,CAAC,CAAEL,CAAAA,eAAeG,sBAAsBJ,MAAMO,QAAQ,CAACC,MAAM,GAAG,CAAA;AACzE;AASO,MAAMd,YAAwB;IAAC;QACpCe,MAAM;QACNC,SAASb;QACTQ,UAAUV;IACZ;CAAE;AAGK,MAAMC,2BAA2B,CAAC,EAAEE,aAAa,EAAEC,SAAS,EAAEY,GAAG,EAAEC,SAAS,EAAEZ,KAAK,EAEzF;IACC,IAAIa,iBAAyBf;IAC7Bc,UAAUE,OAAO,CAAC,CAAC,EAAET,QAAQ,EAAEK,OAAO,EAAE;QACtC,MAAMK,eAAeL,QAAQ;YAAEZ,eAAee;YAAgBd;YAAWY;YAAKX;QAAM;QACpF,IAAIe,cAAc;YAChBF,iBAAiBR,SAAS;gBAAEP,eAAee;gBAAgBd;gBAAWY;gBAAKX;YAAM;QACnF;IACF;IACA,OAAOa;AACT"}
package/index.js DELETED
@@ -1,66 +0,0 @@
1
- "use strict";
2
- function _export(target, all) {
3
- for(var name in all)Object.defineProperty(target, name, {
4
- enumerable: true,
5
- get: all[name]
6
- });
7
- }
8
- _export(exports, {
9
- BASE_TABLE_NAME: function() {
10
- return _baseast.BASE_TABLE_NAME;
11
- },
12
- FilterType: function() {
13
- return _cubetypes.FilterType;
14
- },
15
- applyFilterParamsToBaseSQL: function() {
16
- return _filterparamsast.applyFilterParamsToBaseSQL;
17
- },
18
- detectAllFilterParamsFromSQL: function() {
19
- return _filterparamsast.detectAllFilterParamsFromSQL;
20
- },
21
- detectApplyContextParamsToBaseSQL: function() {
22
- return _contextparamsast.detectApplyContextParamsToBaseSQL;
23
- },
24
- getFilterParamsAST: function() {
25
- return _filterparamsast.getFilterParamsAST;
26
- },
27
- getFilterParamsSQL: function() {
28
- return _getfilterparamssql.getFilterParamsSQL;
29
- },
30
- getFinalBaseSQL: function() {
31
- return _getfinalbasesql.getFinalBaseSQL;
32
- },
33
- getWrappedBaseQueryWithProjections: function() {
34
- return _getwrappedbasequerywithprojections.getWrappedBaseQueryWithProjections;
35
- },
36
- meerkatPlaceholderReplacer: function() {
37
- return _meerkatplaceholderreplacer.meerkatPlaceholderReplacer;
38
- }
39
- });
40
- const _export_star = require("@swc/helpers/_/_export_star");
41
- _export_star._(require("./ast-builder/ast-builder"), exports);
42
- _export_star._(require("./ast-deserializer/ast-deserializer"), exports);
43
- _export_star._(require("./ast-serializer/ast-serializer"), exports);
44
- _export_star._(require("./ast-validator"), exports);
45
- const _contextparamsast = require("./context-params/context-params-ast");
46
- _export_star._(require("./cube-measure-transformer/cube-measure-transformer"), exports);
47
- _export_star._(require("./cube-to-duckdb/cube-filter-to-duckdb"), exports);
48
- const _filterparamsast = require("./filter-params/filter-params-ast");
49
- const _getfilterparamssql = require("./get-filter-params-sql/get-filter-params-sql");
50
- const _getfinalbasesql = require("./get-final-base-sql/get-final-base-sql");
51
- const _getwrappedbasequerywithprojections = require("./get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections");
52
- _export_star._(require("./joins/joins"), exports);
53
- _export_star._(require("./member-formatters"), exports);
54
- _export_star._(require("./resolution/resolution"), exports);
55
- _export_star._(require("./resolution/types"), exports);
56
- const _cubetypes = require("./types/cube-types");
57
- _export_star._(require("./types/cube-types/index"), exports);
58
- _export_star._(require("./types/duckdb-serialization-types/index"), exports);
59
- _export_star._(require("./types/utils"), exports);
60
- const _baseast = require("./utils/base-ast");
61
- _export_star._(require("./utils/cube-to-table-schema"), exports);
62
- _export_star._(require("./utils/get-column-names-from-ast"), exports);
63
- _export_star._(require("./utils/get-possible-nodes"), exports);
64
- const _meerkatplaceholderreplacer = require("./utils/meerkat-placeholder-replacer");
65
-
66
- //# sourceMappingURL=index.js.map
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../meerkat-core/src/index.ts"],"sourcesContent":["export * from './ast-builder/ast-builder';\nexport * from './ast-deserializer/ast-deserializer';\nexport * from './ast-serializer/ast-serializer';\nexport * from './ast-validator';\nexport { detectApplyContextParamsToBaseSQL } from './context-params/context-params-ast';\nexport * from './cube-measure-transformer/cube-measure-transformer';\nexport * from './cube-to-duckdb/cube-filter-to-duckdb';\nexport {\n applyFilterParamsToBaseSQL,\n detectAllFilterParamsFromSQL,\n getFilterParamsAST,\n} from './filter-params/filter-params-ast';\nexport { getFilterParamsSQL } from './get-filter-params-sql/get-filter-params-sql';\nexport { getFinalBaseSQL } from './get-final-base-sql/get-final-base-sql';\nexport { getWrappedBaseQueryWithProjections } from './get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections';\nexport * from './joins/joins';\nexport * from './member-formatters';\nexport * from './resolution/resolution';\nexport * from './resolution/types';\nexport { FilterType } from './types/cube-types';\nexport * from './types/cube-types/index';\nexport * from './types/duckdb-serialization-types/index';\nexport * from './types/utils';\nexport { BASE_TABLE_NAME } from './utils/base-ast';\nexport * from './utils/cube-to-table-schema';\nexport * from './utils/get-column-names-from-ast';\nexport * from './utils/get-possible-nodes';\nexport { meerkatPlaceholderReplacer } from './utils/meerkat-placeholder-replacer';\n"],"names":["BASE_TABLE_NAME","FilterType","applyFilterParamsToBaseSQL","detectAllFilterParamsFromSQL","detectApplyContextParamsToBaseSQL","getFilterParamsAST","getFilterParamsSQL","getFinalBaseSQL","getWrappedBaseQueryWithProjections","meerkatPlaceholderReplacer"],"mappings":";;;;;;;;IAuBSA,eAAe;eAAfA,wBAAe;;IAJfC,UAAU;eAAVA,qBAAU;;IAXjBC,0BAA0B;eAA1BA,2CAA0B;;IAC1BC,4BAA4B;eAA5BA,6CAA4B;;IALrBC,iCAAiC;eAAjCA,mDAAiC;;IAMxCC,kBAAkB;eAAlBA,mCAAkB;;IAEXC,kBAAkB;eAAlBA,sCAAkB;;IAClBC,eAAe;eAAfA,gCAAe;;IACfC,kCAAkC;eAAlCA,sEAAkC;;IAalCC,0BAA0B;eAA1BA,sDAA0B;;;;uBA3BrB;uBACA;uBACA;uBACA;kCACoC;uBACpC;uBACA;iCAKP;oCAC4B;iCACH;oDACmB;uBACrC;uBACA;uBACA;uBACA;2BACa;uBACb;uBACA;uBACA;yBACkB;uBAClB;uBACA;uBACA;4CAC6B"}