@devrev/meerkat-core 0.0.77

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 (237) hide show
  1. package/README.md +11 -0
  2. package/package.json +30 -0
  3. package/src/ast-builder/ast-builder.d.ts +6 -0
  4. package/src/ast-builder/ast-builder.js +89 -0
  5. package/src/ast-builder/ast-builder.js.map +1 -0
  6. package/src/ast-deserializer/ast-deserializer.d.ts +5 -0
  7. package/src/ast-deserializer/ast-deserializer.js +30 -0
  8. package/src/ast-deserializer/ast-deserializer.js.map +1 -0
  9. package/src/context-params/context-params-ast.d.ts +11 -0
  10. package/src/context-params/context-params-ast.js +55 -0
  11. package/src/context-params/context-params-ast.js.map +1 -0
  12. package/src/cube-filter-transformer/and/and.d.ts +2 -0
  13. package/src/cube-filter-transformer/and/and.js +18 -0
  14. package/src/cube-filter-transformer/and/and.js.map +1 -0
  15. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.d.ts +154 -0
  16. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +159 -0
  17. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
  18. package/src/cube-filter-transformer/contains/contains.d.ts +65 -0
  19. package/src/cube-filter-transformer/contains/contains.js +70 -0
  20. package/src/cube-filter-transformer/contains/contains.js.map +1 -0
  21. package/src/cube-filter-transformer/equals/equals-array.d.ts +2 -0
  22. package/src/cube-filter-transformer/equals/equals-array.js +30 -0
  23. package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
  24. package/src/cube-filter-transformer/equals/equals.d.ts +2 -0
  25. package/src/cube-filter-transformer/equals/equals.js +37 -0
  26. package/src/cube-filter-transformer/equals/equals.js.map +1 -0
  27. package/src/cube-filter-transformer/factory.d.ts +5 -0
  28. package/src/cube-filter-transformer/factory.js +124 -0
  29. package/src/cube-filter-transformer/factory.js.map +1 -0
  30. package/src/cube-filter-transformer/gt/gt.d.ts +2 -0
  31. package/src/cube-filter-transformer/gt/gt.js +30 -0
  32. package/src/cube-filter-transformer/gt/gt.js.map +1 -0
  33. package/src/cube-filter-transformer/gte/gte.d.ts +2 -0
  34. package/src/cube-filter-transformer/gte/gte.js +30 -0
  35. package/src/cube-filter-transformer/gte/gte.js.map +1 -0
  36. package/src/cube-filter-transformer/in/in.d.ts +2 -0
  37. package/src/cube-filter-transformer/in/in.js +77 -0
  38. package/src/cube-filter-transformer/in/in.js.map +1 -0
  39. package/src/cube-filter-transformer/in-date-range/in-date-range.d.ts +2 -0
  40. package/src/cube-filter-transformer/in-date-range/in-date-range.js +24 -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.d.ts +2 -0
  43. package/src/cube-filter-transformer/lt/lt.js +30 -0
  44. package/src/cube-filter-transformer/lt/lt.js.map +1 -0
  45. package/src/cube-filter-transformer/lte/lte.d.ts +2 -0
  46. package/src/cube-filter-transformer/lte/lte.js +30 -0
  47. package/src/cube-filter-transformer/lte/lte.js.map +1 -0
  48. package/src/cube-filter-transformer/not/not.d.ts +2 -0
  49. package/src/cube-filter-transformer/not/not.js +18 -0
  50. package/src/cube-filter-transformer/not/not.js.map +1 -0
  51. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.d.ts +2 -0
  52. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +24 -0
  53. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
  54. package/src/cube-filter-transformer/not-contains/not-contains.d.ts +65 -0
  55. package/src/cube-filter-transformer/not-contains/not-contains.js +70 -0
  56. package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
  57. package/src/cube-filter-transformer/not-equals/not-equals-array.d.ts +2 -0
  58. package/src/cube-filter-transformer/not-equals/not-equals-array.js +26 -0
  59. package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
  60. package/src/cube-filter-transformer/not-equals/not-equals.d.ts +8 -0
  61. package/src/cube-filter-transformer/not-equals/not-equals.js +37 -0
  62. package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
  63. package/src/cube-filter-transformer/not-in/not-in.d.ts +2 -0
  64. package/src/cube-filter-transformer/not-in/not-in.js +84 -0
  65. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
  66. package/src/cube-filter-transformer/not-set/not-set.d.ts +2 -0
  67. package/src/cube-filter-transformer/not-set/not-set.js +26 -0
  68. package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
  69. package/src/cube-filter-transformer/or/or.d.ts +2 -0
  70. package/src/cube-filter-transformer/or/or.js +18 -0
  71. package/src/cube-filter-transformer/or/or.js.map +1 -0
  72. package/src/cube-filter-transformer/set/set.d.ts +2 -0
  73. package/src/cube-filter-transformer/set/set.js +26 -0
  74. package/src/cube-filter-transformer/set/set.js.map +1 -0
  75. package/src/cube-group-by-transformer/cube-group-by-transformer.d.ts +8 -0
  76. package/src/cube-group-by-transformer/cube-group-by-transformer.js +25 -0
  77. package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
  78. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.d.ts +31 -0
  79. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js +42 -0
  80. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
  81. package/src/cube-measure-transformer/cube-measure-transformer.d.ts +21 -0
  82. package/src/cube-measure-transformer/cube-measure-transformer.js +126 -0
  83. package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
  84. package/src/cube-order-by-transformer/cube-order-by-transformer.d.ts +21 -0
  85. package/src/cube-order-by-transformer/cube-order-by-transformer.js +39 -0
  86. package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
  87. package/src/cube-to-duckdb/cube-filter-to-duckdb.d.ts +16 -0
  88. package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
  89. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
  90. package/src/filter-params/filter-params-ast.d.ts +33 -0
  91. package/src/filter-params/filter-params-ast.js +115 -0
  92. package/src/filter-params/filter-params-ast.js.map +1 -0
  93. package/src/get-projection-clause/get-projection-clause.d.ts +27 -0
  94. package/src/get-projection-clause/get-projection-clause.js +135 -0
  95. package/src/get-projection-clause/get-projection-clause.js.map +1 -0
  96. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.d.ts +8 -0
  97. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +99 -0
  98. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
  99. package/src/index.d.ts +16 -0
  100. package/src/index.js +55 -0
  101. package/src/index.js.map +1 -0
  102. package/src/joins/joins.d.ts +22 -0
  103. package/src/joins/joins.js +170 -0
  104. package/src/joins/joins.js.map +1 -0
  105. package/src/types/cube-types/index.d.js +6 -0
  106. package/src/types/cube-types/index.d.js.map +1 -0
  107. package/src/types/cube-types/index.d.ts +2 -0
  108. package/src/types/cube-types/index.js +6 -0
  109. package/src/types/cube-types/index.js.map +1 -0
  110. package/src/types/cube-types/query.d.js +5 -0
  111. package/src/types/cube-types/query.d.js.map +1 -0
  112. package/src/types/cube-types/query.d.ts +141 -0
  113. package/src/types/cube-types/query.js +14 -0
  114. package/src/types/cube-types/query.js.map +1 -0
  115. package/src/types/cube-types/table.d.js +3 -0
  116. package/src/types/cube-types/table.d.js.map +1 -0
  117. package/src/types/cube-types/table.d.ts +25 -0
  118. package/src/types/cube-types/table.js +3 -0
  119. package/src/types/cube-types/table.js.map +1 -0
  120. package/src/types/duckdb-serialization-types/index.d.js +11 -0
  121. package/src/types/duckdb-serialization-types/index.d.js.map +1 -0
  122. package/src/types/duckdb-serialization-types/index.d.ts +7 -0
  123. package/src/types/duckdb-serialization-types/index.js +11 -0
  124. package/src/types/duckdb-serialization-types/index.js.map +1 -0
  125. package/src/types/duckdb-serialization-types/serialization/Constraint.d.ts +47 -0
  126. package/src/types/duckdb-serialization-types/serialization/Constraint.js +31 -0
  127. package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
  128. package/src/types/duckdb-serialization-types/serialization/CreateInfo.d.ts +95 -0
  129. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js +67 -0
  130. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
  131. package/src/types/duckdb-serialization-types/serialization/Expression.d.js +3 -0
  132. package/src/types/duckdb-serialization-types/serialization/Expression.d.js.map +1 -0
  133. package/src/types/duckdb-serialization-types/serialization/Expression.d.ts +186 -0
  134. package/src/types/duckdb-serialization-types/serialization/Expression.js +130 -0
  135. package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
  136. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.d.ts +231 -0
  137. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +47 -0
  138. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
  139. package/src/types/duckdb-serialization-types/serialization/MacroFunction.d.ts +20 -0
  140. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +15 -0
  141. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
  142. package/src/types/duckdb-serialization-types/serialization/Misc.d.js +3 -0
  143. package/src/types/duckdb-serialization-types/serialization/Misc.d.js.map +1 -0
  144. package/src/types/duckdb-serialization-types/serialization/Misc.d.ts +3 -0
  145. package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
  146. package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
  147. package/src/types/duckdb-serialization-types/serialization/Nodes.d.js +10 -0
  148. package/src/types/duckdb-serialization-types/serialization/Nodes.d.js.map +1 -0
  149. package/src/types/duckdb-serialization-types/serialization/Nodes.d.ts +212 -0
  150. package/src/types/duckdb-serialization-types/serialization/Nodes.js +92 -0
  151. package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
  152. package/src/types/duckdb-serialization-types/serialization/ParseInfo.d.ts +192 -0
  153. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js +128 -0
  154. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
  155. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +3 -0
  156. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +1 -0
  157. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.ts +114 -0
  158. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js +37 -0
  159. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
  160. package/src/types/duckdb-serialization-types/serialization/QueryNode.d.js +3 -0
  161. package/src/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +1 -0
  162. package/src/types/duckdb-serialization-types/serialization/QueryNode.d.ts +62 -0
  163. package/src/types/duckdb-serialization-types/serialization/QueryNode.js +42 -0
  164. package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
  165. package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.js +3 -0
  166. package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +1 -0
  167. package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.ts +29 -0
  168. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js +16 -0
  169. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
  170. package/src/types/duckdb-serialization-types/serialization/Statement.d.js +3 -0
  171. package/src/types/duckdb-serialization-types/serialization/Statement.d.js.map +1 -0
  172. package/src/types/duckdb-serialization-types/serialization/Statement.d.ts +4 -0
  173. package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
  174. package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
  175. package/src/types/duckdb-serialization-types/serialization/TableFilter.d.js +3 -0
  176. package/src/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +1 -0
  177. package/src/types/duckdb-serialization-types/serialization/TableFilter.d.ts +32 -0
  178. package/src/types/duckdb-serialization-types/serialization/TableFilter.js +17 -0
  179. package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
  180. package/src/types/duckdb-serialization-types/serialization/TableRef.d.js +3 -0
  181. package/src/types/duckdb-serialization-types/serialization/TableRef.d.js.map +1 -0
  182. package/src/types/duckdb-serialization-types/serialization/TableRef.d.ts +84 -0
  183. package/src/types/duckdb-serialization-types/serialization/TableRef.js +53 -0
  184. package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
  185. package/src/types/duckdb-serialization-types/serialization/Types.d.js +3 -0
  186. package/src/types/duckdb-serialization-types/serialization/Types.d.js.map +1 -0
  187. package/src/types/duckdb-serialization-types/serialization/Types.d.ts +53 -0
  188. package/src/types/duckdb-serialization-types/serialization/Types.js +21 -0
  189. package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
  190. package/src/types/duckdb-serialization-types/serialization/example.d.ts +1 -0
  191. package/src/types/duckdb-serialization-types/serialization/example.js +131 -0
  192. package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
  193. package/src/utils/__fixtures__/joins.fixtures.d.ts +211 -0
  194. package/src/utils/__fixtures__/joins.fixtures.js +922 -0
  195. package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
  196. package/src/utils/base-ast.d.ts +3 -0
  197. package/src/utils/base-ast.js +64 -0
  198. package/src/utils/base-ast.js.map +1 -0
  199. package/src/utils/constants.d.ts +2 -0
  200. package/src/utils/constants.js +19 -0
  201. package/src/utils/constants.js.map +1 -0
  202. package/src/utils/cube-filter-enrichment.d.ts +4 -0
  203. package/src/utils/cube-filter-enrichment.js +63 -0
  204. package/src/utils/cube-filter-enrichment.js.map +1 -0
  205. package/src/utils/cube-to-table-schema.d.ts +3 -0
  206. package/src/utils/cube-to-table-schema.js +104 -0
  207. package/src/utils/cube-to-table-schema.js.map +1 -0
  208. package/src/utils/cube-type-to-duckdb-type.d.ts +6 -0
  209. package/src/utils/cube-type-to-duckdb-type.js +17 -0
  210. package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
  211. package/src/utils/find-in-table-schema.d.ts +4 -0
  212. package/src/utils/find-in-table-schema.js +40 -0
  213. package/src/utils/find-in-table-schema.js.map +1 -0
  214. package/src/utils/get-possible-nodes.d.ts +15 -0
  215. package/src/utils/get-possible-nodes.js +152 -0
  216. package/src/utils/get-possible-nodes.js.map +1 -0
  217. package/src/utils/get-type-info.d.ts +7 -0
  218. package/src/utils/get-type-info.js +44 -0
  219. package/src/utils/get-type-info.js.map +1 -0
  220. package/src/utils/is-array-member-type.d.ts +4 -0
  221. package/src/utils/is-array-member-type.js +12 -0
  222. package/src/utils/is-array-member-type.js.map +1 -0
  223. package/src/utils/key-from-measures-dimension.d.ts +2 -0
  224. package/src/utils/key-from-measures-dimension.js +34 -0
  225. package/src/utils/key-from-measures-dimension.js.map +1 -0
  226. package/src/utils/meerkat-placeholder-replacer.d.ts +1 -0
  227. package/src/utils/meerkat-placeholder-replacer.js +14 -0
  228. package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
  229. package/src/utils/member-key-to-safe-key.d.ts +1 -0
  230. package/src/utils/member-key-to-safe-key.js +13 -0
  231. package/src/utils/member-key-to-safe-key.js.map +1 -0
  232. package/src/utils/modify-meerkat-filter.d.ts +3 -0
  233. package/src/utils/modify-meerkat-filter.js +30 -0
  234. package/src/utils/modify-meerkat-filter.js.map +1 -0
  235. package/src/utils/type-guards.d.ts +8 -0
  236. package/src/utils/type-guards.js +83 -0
  237. package/src/utils/type-guards.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../meerkat-core/src/utils/__fixtures__/joins.fixtures.ts"],"sourcesContent":["\nexport const CIRCULAR_TABLE_SCHEMA = [\n {\n name: 'node1',\n dimensions: [\n {\n name: 'id',\n sql: 'node1.id',\n },\n ],\n measures: [],\n sql: 'select * from node1',\n joins: [\n { sql: 'node1.id = node2.id' },\n { sql: 'node1.id = node3.id' },\n ],\n },\n {\n name: 'node2',\n dimensions: [\n {\n name: 'id',\n sql: 'node2.id',\n },\n {\n name: 'node11_id',\n sql: 'node2.node11_id',\n },\n ],\n measures: [],\n sql: 'select * from node2',\n joins: [\n { sql: 'node2.id = node3.id' },\n { sql: 'node2.id = node4.id' },\n ],\n },\n {\n name: 'node3',\n dimensions: [\n {\n name: 'id',\n sql: 'node3.id',\n },\n ],\n measures: [],\n sql: 'select * from node3',\n joins: [\n { sql: 'node3.id = node4.id' },\n { sql: 'node3.id = node1.id' }\n ],\n },\n {\n name: 'node4',\n dimensions: [\n {\n name: 'id',\n sql: 'node4.id',\n },\n ],\n measures: [],\n sql: 'select * from node4',\n joins: [],\n },\n];\n\nexport const LINEAR_TABLE_SCHEMA = [\n {\n name: 'node1',\n dimensions: [\n {\n name: 'id',\n sql: 'node1.id',\n },\n ],\n measures: [],\n sql: 'select * from node1',\n joins: [\n { sql: 'node1.id = node2.id' },\n { sql: 'node1.id = node3.id' },\n { sql: 'node1.id = node6.id' },\n ],\n },\n {\n name: 'node2',\n dimensions: [\n {\n name: 'id',\n sql: 'node2.id',\n },\n {\n name: 'node11_id',\n sql: 'node2.node11_id',\n },\n ],\n measures: [],\n sql: 'select * from node2',\n joins: [\n { sql: 'node2.id = node4.id' },\n { sql: 'node2.node11_id = node11.id' },\n ],\n },\n {\n name: 'node3',\n dimensions: [\n {\n name: 'id',\n sql: 'node3.id',\n },\n ],\n measures: [],\n sql: 'select * from node3',\n joins: [{ sql: 'node3.id = node5.id' }],\n },\n {\n name: 'node4',\n dimensions: [\n {\n name: 'id',\n sql: 'node4.id',\n },\n ],\n measures: [],\n sql: 'select * from node4',\n joins: [\n { sql: 'node4.id = node5.id' },\n { sql: 'node4.id = node6.id' },\n { sql: 'node4.id = node7.id' },\n ],\n },\n {\n name: 'node5',\n measures: [],\n dimensions: [\n {\n name: 'id',\n sql: 'node5.id',\n },\n ],\n sql: 'select * from node5',\n joins: [{ sql: 'node5.id = node8.id' }],\n },\n {\n name: 'node6',\n dimensions: [\n {\n name: 'id',\n sql: 'node6.id',\n },\n ],\n measures: [],\n sql: 'select * from node6',\n joins: [{ sql: 'node6.id = node9.id' }],\n },\n {\n name: 'node7',\n dimensions: [\n {\n name: 'id',\n sql: 'node7.id',\n },\n ],\n measures: [],\n sql: 'select * from node7',\n joins: [{ sql: 'node7.id = node10.id' }],\n },\n {\n name: 'node8',\n dimensions: [\n {\n name: 'id',\n sql: 'node8.id',\n },\n ],\n measures: [],\n sql: 'select * from node8',\n joins: [],\n },\n {\n name: 'node9',\n dimensions: [\n {\n name: 'id',\n sql: 'node9.id',\n },\n ],\n measures: [],\n sql: 'select * from node9',\n joins: [{ sql: 'node9.id = node10.id' }],\n },\n {\n name: 'node10',\n dimensions: [\n {\n name: 'id',\n sql: 'node10.id',\n },\n ],\n measures: [],\n sql: 'select * from node10',\n joins: [],\n },\n {\n name: 'node11',\n dimensions: [\n {\n name: 'id',\n sql: 'node11.id',\n },\n ],\n measures: [],\n sql: 'select * from node11',\n joins: [],\n },\n];\n\nexport const BASIC_JOIN_PATH = [\n [\n {\n left: 'node1',\n right: 'node2',\n on: 'id',\n },\n ],\n];\n\nexport const SINGLE_NODE_JOIN_PATH = [\n [\n {\n left: 'node1',\n },\n ],\n];\n\nexport const INTERMEDIATE_JOIN_PATH = [\n [\n {\n left: 'node1',\n right: 'node2',\n on: 'id',\n },\n {\n left: 'node2',\n right: 'node4',\n on: 'id',\n },\n ],\n [\n {\n left: 'node1',\n right: 'node3',\n on: 'id',\n },\n ],\n];\n\nexport const CIRCULAR_JOIN_PATH = [\n [\n {\n left: 'node1',\n right: 'node3',\n on: 'id',\n },\n ],\n [\n {\n left: 'node1',\n right: 'node2',\n on: 'id',\n },\n {\n left: 'node2',\n right: 'node4',\n on: 'id',\n },\n {\n left: 'node4',\n right: 'node1',\n on: 'id',\n },\n ],\n \n];\n\n\nexport const COMPLEX_JOIN_PATH = [\n [\n {\n left: 'node1',\n right: 'node2',\n on: 'id',\n },\n {\n left: 'node2',\n right: 'node4',\n on: 'id',\n },\n {\n left: 'node4',\n right: 'node7',\n on: 'id',\n },\n ],\n [\n {\n left: 'node1',\n right: 'node3',\n on: 'id',\n },\n ],\n [\n {\n left: 'node1',\n right: 'node2',\n on: 'id',\n },\n {\n left: 'node2',\n right: 'node11',\n on: 'node11_id',\n },\n ]\n]\n\nexport const EXPECTED_OUTPUT_WITH_ONE_DEPTH = {\n name: 'node1',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node1.id',\n },\n children: [\n {\n name: 'node2',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node2.id',\n },\n children: [\n {\n name: 'node4',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node4.id',\n },\n children: [\n {\n name: 'node7',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node7.id',\n },\n children: [\n {\n name: 'node10',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node10.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node5',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node5.id',\n },\n children: [],\n },\n ],\n },\n {\n name: 'node6',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node6.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n schema: {\n name: 'node11_id',\n sql: 'node2.node11_id',\n },\n children: [\n {\n name: 'node11',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node11.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node3',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node3.id',\n },\n children: [\n {\n name: 'node5',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node5.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node6',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node6.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const EXPECTED_OUTPUT_WITH_TWO_DEPTH = {\n name: 'node1',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node1.id',\n },\n children: [\n {\n name: 'node2',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node2.id',\n },\n children: [\n {\n name: 'node4',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node4.id',\n },\n children: [\n {\n name: 'node7',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node7.id',\n },\n children: [\n {\n name: 'node10',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node10.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node5',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node5.id',\n },\n children: [\n {\n name: 'node8',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node8.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node6',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node6.id',\n },\n children: [\n {\n name: 'node9',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node9.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n schema: {\n name: 'node11_id',\n sql: 'node2.node11_id',\n },\n children: [\n {\n name: 'node11',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node11.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node3',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node3.id',\n },\n children: [\n {\n name: 'node5',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node5.id',\n },\n children: [\n {\n name: 'node8',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node8.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'node6',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node6.id',\n },\n children: [\n {\n name: 'node9',\n measures: [],\n dimensions: [\n {\n schema: {\n name: 'id',\n sql: 'node9.id',\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const CIRCULAR_TABLE_SCHEMA_SINGLE_JOIN_PATH = {\n \"name\": \"node1\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node1.id\"\n },\n \"children\": [\n {\n \"name\": \"node2\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node2.id\"\n },\n \"children\": [\n {\n \"name\": \"node3\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node3.id\"\n },\n \"children\": []\n }\n ]\n },\n {\n \"name\": \"node4\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node4.id\"\n },\n \"children\": []\n }\n ]\n }\n ]\n },\n {\n \"schema\": {\n \"name\": \"node11_id\",\n \"sql\": \"node2.node11_id\"\n },\n \"children\": []\n }\n ]\n },\n {\n \"name\": \"node3\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node3.id\"\n },\n \"children\": [\n {\n \"name\": \"node4\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node4.id\"\n },\n \"children\": []\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n}\n\n\nexport const EXPECTED_CIRCULAR_TABLE_SCHEMA_INTERMEDIATE_JOIN_PATH = {\n \"name\": \"node1\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node1.id\"\n },\n \"children\": [\n {\n \"name\": \"node2\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node2.id\"\n },\n \"children\": [\n {\n \"name\": \"node4\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node4.id\"\n },\n \"children\": []\n }\n ]\n }\n ]\n },\n {\n \"schema\": {\n \"name\": \"node11_id\",\n \"sql\": \"node2.node11_id\"\n },\n \"children\": []\n }\n ]\n },\n {\n \"name\": \"node3\",\n \"measures\": [],\n \"dimensions\": [\n {\n \"schema\": {\n \"name\": \"id\",\n \"sql\": \"node3.id\"\n },\n \"children\": []\n }\n ]\n }\n ]\n }\n ]\n}"],"names":["CIRCULAR_TABLE_SCHEMA","LINEAR_TABLE_SCHEMA","BASIC_JOIN_PATH","SINGLE_NODE_JOIN_PATH","INTERMEDIATE_JOIN_PATH","CIRCULAR_JOIN_PATH","COMPLEX_JOIN_PATH","EXPECTED_OUTPUT_WITH_ONE_DEPTH","EXPECTED_OUTPUT_WITH_TWO_DEPTH","CIRCULAR_TABLE_SCHEMA_SINGLE_JOIN_PATH","EXPECTED_CIRCULAR_TABLE_SCHEMA_INTERMEDIATE_JOIN_PATH","name","dimensions","sql","measures","joins","left","right","on","schema","children"],"mappings":";;;;;;;;IACaA,qBAAqB;eAArBA;;IAgEAC,mBAAmB;eAAnBA;;IAsJAC,eAAe;eAAfA;;IAUAC,qBAAqB;eAArBA;;IAQAC,sBAAsB;eAAtBA;;IAsBAC,kBAAkB;eAAlBA;;IA6BAC,iBAAiB;eAAjBA;;IAuCAC,8BAA8B;eAA9BA;;IA6JAC,8BAA8B;eAA9BA;;IAqNAC,sCAAsC;eAAtCA;;IA0FAC,qDAAqD;eAArDA;;;AA9wBN,MAAMV,wBAAwB;IACjC;QACIW,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;SAChC;IACL;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;YACA;gBACIF,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;SAChC;IACL;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;SAChC;IACL;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO,EAAE;IACb;CACH;AAEM,MAAMd,sBAAsB;IAC/B;QACIU,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;SAChC;IACL;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;YACA;gBACIF,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAA8B;SACxC;IACL;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YAAC;gBAAEF,KAAK;YAAsB;SAAE;IAC3C;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YACH;gBAAEF,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;YAC7B;gBAAEA,KAAK;YAAsB;SAChC;IACL;IACA;QACIF,MAAM;QACNG,UAAU,EAAE;QACZF,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDA,KAAK;QACLE,OAAO;YAAC;gBAAEF,KAAK;YAAsB;SAAE;IAC3C;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YAAC;gBAAEF,KAAK;YAAsB;SAAE;IAC3C;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YAAC;gBAAEF,KAAK;YAAuB;SAAE;IAC5C;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO,EAAE;IACb;IACA;QACIJ,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO;YAAC;gBAAEF,KAAK;YAAuB;SAAE;IAC5C;IACA;QACIF,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO,EAAE;IACb;IACA;QACIJ,MAAM;QACNC,YAAY;YACR;gBACID,MAAM;gBACNE,KAAK;YACT;SACH;QACDC,UAAU,EAAE;QACZD,KAAK;QACLE,OAAO,EAAE;IACb;CACH;AAEM,MAAMb,kBAAkB;IAC3B;QACI;YACIc,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;CACJ;AAEM,MAAMf,wBAAwB;IACjC;QACI;YACIa,MAAM;QACV;KACH;CACJ;AAEM,MAAMZ,yBAAyB;IAClC;QACI;YACIY,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;IACD;QACI;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;CACJ;AAEM,MAAMb,qBAAqB;IAC9B;QACI;YACIW,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;IACD;QACI;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;CAEJ;AAGM,MAAMZ,oBAAoB;IAC7B;QACI;YACIU,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;IACD;QACI;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;IACD;QACI;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;QACA;YACIF,MAAM;YACNC,OAAO;YACPC,IAAI;QACR;KACH;CACJ;AAEM,MAAMX,iCAAiC;IAC1CI,MAAM;IACNG,UAAU,EAAE;IACZF,YAAY;QACR;YACIO,QAAQ;gBACJR,MAAM;gBACNE,KAAK;YACT;YACAO,UAAU;gBACN;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU;gDACN;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU;gEACN;oEACIT,MAAM;oEACNG,UAAU,EAAE;oEACZF,YAAY;wEACR;4EACIO,QAAQ;gFACJR,MAAM;gFACNE,KAAK;4EACT;4EACAO,UAAU,EAAE;wEAChB;qEACH;gEACL;6DACH;wDACL;qDACH;gDACL;gDACA;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU,EAAE;wDAChB;qDACH;gDACL;gDACA;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU,EAAE;wDAChB;qDACH;gDACL;6CACH;wCACL;qCACH;gCACL;6BACH;wBACL;wBACA;4BACID,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU,EAAE;wCAChB;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;gBACA;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU,EAAE;wCAChB;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;gBACA;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU,EAAE;wBAChB;qBACH;gBACL;aACH;QACL;KACH;AACL;AAEO,MAAMZ,iCAAiC;IAC1CG,MAAM;IACNG,UAAU,EAAE;IACZF,YAAY;QACR;YACIO,QAAQ;gBACJR,MAAM;gBACNE,KAAK;YACT;YACAO,UAAU;gBACN;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU;gDACN;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU;gEACN;oEACIT,MAAM;oEACNG,UAAU,EAAE;oEACZF,YAAY;wEACR;4EACIO,QAAQ;gFACJR,MAAM;gFACNE,KAAK;4EACT;4EACAO,UAAU,EAAE;wEAChB;qEACH;gEACL;6DACH;wDACL;qDACH;gDACL;gDACA;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU;gEACN;oEACIT,MAAM;oEACNG,UAAU,EAAE;oEACZF,YAAY;wEACR;4EACIO,QAAQ;gFACJR,MAAM;gFACNE,KAAK;4EACT;4EACAO,UAAU,EAAE;wEAChB;qEACH;gEACL;6DACH;wDACL;qDACH;gDACL;gDACA;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU;gEACN;oEACIT,MAAM;oEACNG,UAAU,EAAE;oEACZF,YAAY;wEACR;4EACIO,QAAQ;gFACJR,MAAM;gFACNE,KAAK;4EACT;4EACAO,UAAU,EAAE;wEAChB;qEACH;gEACL;6DACH;wDACL;qDACH;gDACL;6CACH;wCACL;qCACH;gCACL;6BACH;wBACL;wBACA;4BACID,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU,EAAE;wCAChB;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;gBACA;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU;gDACN;oDACIT,MAAM;oDACNG,UAAU,EAAE;oDACZF,YAAY;wDACR;4DACIO,QAAQ;gEACJR,MAAM;gEACNE,KAAK;4DACT;4DACAO,UAAU,EAAE;wDAChB;qDACH;gDACL;6CACH;wCACL;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;gBACA;oBACIT,MAAM;oBACNG,UAAU,EAAE;oBACZF,YAAY;wBACR;4BACIO,QAAQ;gCACJR,MAAM;gCACNE,KAAK;4BACT;4BACAO,UAAU;gCACN;oCACIT,MAAM;oCACNG,UAAU,EAAE;oCACZF,YAAY;wCACR;4CACIO,QAAQ;gDACJR,MAAM;gDACNE,KAAK;4CACT;4CACAO,UAAU,EAAE;wCAChB;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;aACH;QACL;KACH;AACL;AAEO,MAAMX,yCAAyC;IAClD,QAAQ;IACR,YAAY,EAAE;IACd,cAAc;QACV;YACI,UAAU;gBACN,QAAQ;gBACR,OAAO;YACX;YACA,YAAY;gBACR;oBACI,QAAQ;oBACR,YAAY,EAAE;oBACd,cAAc;wBACV;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY;gCACR;oCACI,QAAQ;oCACR,YAAY,EAAE;oCACd,cAAc;wCACV;4CACI,UAAU;gDACN,QAAQ;gDACR,OAAO;4CACX;4CACA,YAAY,EAAE;wCAClB;qCACH;gCACL;gCACA;oCACI,QAAQ;oCACR,YAAY,EAAE;oCACd,cAAc;wCACV;4CACI,UAAU;gDACN,QAAQ;gDACR,OAAO;4CACX;4CACA,YAAY,EAAE;wCAClB;qCACH;gCACL;6BACH;wBACL;wBACA;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY,EAAE;wBAClB;qBACH;gBACL;gBACA;oBACI,QAAQ;oBACR,YAAY,EAAE;oBACd,cAAc;wBACV;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY;gCACR;oCACI,QAAQ;oCACR,YAAY,EAAE;oCACd,cAAc;wCACV;4CACI,UAAU;gDACN,QAAQ;gDACR,OAAO;4CACX;4CACA,YAAY,EAAE;wCAClB;qCACH;gCACL;6BACH;wBACL;qBACH;gBACL;aACH;QACL;KACH;AACL;AAGO,MAAMC,wDAAwD;IACjE,QAAQ;IACR,YAAY,EAAE;IACd,cAAc;QACV;YACI,UAAU;gBACN,QAAQ;gBACR,OAAO;YACX;YACA,YAAY;gBACR;oBACI,QAAQ;oBACR,YAAY,EAAE;oBACd,cAAc;wBACV;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY;gCACR;oCACI,QAAQ;oCACR,YAAY,EAAE;oCACd,cAAc;wCACV;4CACI,UAAU;gDACN,QAAQ;gDACR,OAAO;4CACX;4CACA,YAAY,EAAE;wCAClB;qCACH;gCACL;6BACH;wBACL;wBACA;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY,EAAE;wBAClB;qBACH;gBACL;gBACA;oBACI,QAAQ;oBACR,YAAY,EAAE;oBACd,cAAc;wBACV;4BACI,UAAU;gCACN,QAAQ;gCACR,OAAO;4BACX;4BACA,YAAY,EAAE;wBAClB;qBACH;gBACL;aACH;QACL;KACH;AACL"}
@@ -0,0 +1,3 @@
1
+ import { SelectStatement } from '../types/duckdb-serialization-types/serialization/Statement';
2
+ export declare const BASE_TABLE_NAME = "REPLACE_BASE_TABLE";
3
+ export declare const getBaseAST: () => SelectStatement;
@@ -0,0 +1,64 @@
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 BASE_TABLE_NAME;
11
+ },
12
+ getBaseAST: function() {
13
+ return getBaseAST;
14
+ }
15
+ });
16
+ const _QueryNode = require("../types/duckdb-serialization-types/serialization/QueryNode");
17
+ const _Expression = require("../types/duckdb-serialization-types/serialization/Expression");
18
+ const _TableRef = require("../types/duckdb-serialization-types/serialization/TableRef");
19
+ const BASE_TABLE_NAME = 'REPLACE_BASE_TABLE';
20
+ const getBaseAST = ()=>{
21
+ return {
22
+ node: {
23
+ type: _QueryNode.QueryNodeType.SELECT_NODE,
24
+ modifiers: [],
25
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
+ //@ts-ignore
27
+ cte_map: {
28
+ map: []
29
+ },
30
+ select_list: [
31
+ {
32
+ class: _Expression.ExpressionClass.STAR,
33
+ type: _Expression.ExpressionType.STAR,
34
+ alias: '',
35
+ relation_name: '',
36
+ exclude_list: [],
37
+ replace_list: [],
38
+ columns: false,
39
+ expr: null
40
+ }
41
+ ],
42
+ from_table: {
43
+ type: _TableRef.TableReferenceType.BASE_TABLE,
44
+ alias: '',
45
+ sample: null,
46
+ schema_name: '',
47
+ table_name: BASE_TABLE_NAME,
48
+ column_name_alias: [],
49
+ catalog_name: ''
50
+ },
51
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
52
+ //@ts-ignore
53
+ where_clause: null,
54
+ group_expressions: [],
55
+ group_sets: [],
56
+ aggregate_handling: _QueryNode.AggregateHandling.STANDARD_HANDLING,
57
+ having: null,
58
+ sample: null,
59
+ qualify: null
60
+ }
61
+ };
62
+ };
63
+
64
+ //# sourceMappingURL=base-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/base-ast.ts"],"sourcesContent":["import { AggregateHandling, QueryNodeType } from '../types/duckdb-serialization-types/serialization/QueryNode';\nimport { ExpressionClass, ExpressionType } from '../types/duckdb-serialization-types/serialization/Expression';\nimport { SelectStatement } from '../types/duckdb-serialization-types/serialization/Statement';\nimport { TableReferenceType } from '../types/duckdb-serialization-types/serialization/TableRef';\n\nexport const BASE_TABLE_NAME = 'REPLACE_BASE_TABLE';\n\nexport const getBaseAST = (): SelectStatement => {\n return {\n node: {\n type: QueryNodeType.SELECT_NODE,\n modifiers: [],\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n cte_map: { map: [] },\n select_list: [\n {\n class: ExpressionClass.STAR,\n type: ExpressionType.STAR,\n alias: '',\n relation_name: '',\n exclude_list: [],\n replace_list: [],\n columns: false,\n expr: null,\n },\n ],\n from_table: {\n type: TableReferenceType.BASE_TABLE,\n alias: '',\n sample: null,\n schema_name: '',\n table_name: BASE_TABLE_NAME,\n column_name_alias: [],\n catalog_name: '',\n },\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n where_clause: null,\n group_expressions: [],\n group_sets: [],\n aggregate_handling: AggregateHandling.STANDARD_HANDLING,\n having: null,\n sample: null,\n qualify: null,\n },\n };\n};\n"],"names":["BASE_TABLE_NAME","getBaseAST","node","type","QueryNodeType","SELECT_NODE","modifiers","cte_map","map","select_list","class","ExpressionClass","STAR","ExpressionType","alias","relation_name","exclude_list","replace_list","columns","expr","from_table","TableReferenceType","BASE_TABLE","sample","schema_name","table_name","column_name_alias","catalog_name","where_clause","group_expressions","group_sets","aggregate_handling","AggregateHandling","STANDARD_HANDLING","having","qualify"],"mappings":";;;;;;;;IAKaA,eAAe;eAAfA;;IAEAC,UAAU;eAAVA;;;2BAPoC;4BACD;0BAEb;AAE5B,MAAMD,kBAAkB;AAExB,MAAMC,aAAa;IACxB,OAAO;QACLC,MAAM;YACJC,MAAMC,wBAAa,CAACC,WAAW;YAC/BC,WAAW,EAAE;YACb,6DAA6D;YAC7D,YAAY;YACZC,SAAS;gBAAEC,KAAK,EAAE;YAAC;YACnBC,aAAa;gBACX;oBACEC,OAAOC,2BAAe,CAACC,IAAI;oBAC3BT,MAAMU,0BAAc,CAACD,IAAI;oBACzBE,OAAO;oBACPC,eAAe;oBACfC,cAAc,EAAE;oBAChBC,cAAc,EAAE;oBAChBC,SAAS;oBACTC,MAAM;gBACR;aACD;YACDC,YAAY;gBACVjB,MAAMkB,4BAAkB,CAACC,UAAU;gBACnCR,OAAO;gBACPS,QAAQ;gBACRC,aAAa;gBACbC,YAAYzB;gBACZ0B,mBAAmB,EAAE;gBACrBC,cAAc;YAChB;YACA,6DAA6D;YAC7D,YAAY;YACZC,cAAc;YACdC,mBAAmB,EAAE;YACrBC,YAAY,EAAE;YACdC,oBAAoBC,4BAAiB,CAACC,iBAAiB;YACvDC,QAAQ;YACRX,QAAQ;YACRY,SAAS;QACX;IACF;AACF"}
@@ -0,0 +1,2 @@
1
+ export declare const MEERKAT_OUTPUT_DELIMITER = "__";
2
+ export declare const MEERKAT_INPUT_DELIMITER = ".";
@@ -0,0 +1,19 @@
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
+ MEERKAT_OUTPUT_DELIMITER: function() {
10
+ return MEERKAT_OUTPUT_DELIMITER;
11
+ },
12
+ MEERKAT_INPUT_DELIMITER: function() {
13
+ return MEERKAT_INPUT_DELIMITER;
14
+ }
15
+ });
16
+ const MEERKAT_OUTPUT_DELIMITER = '__';
17
+ const MEERKAT_INPUT_DELIMITER = '.';
18
+
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/constants.ts"],"sourcesContent":["export const MEERKAT_OUTPUT_DELIMITER = '__';\nexport const MEERKAT_INPUT_DELIMITER = '.';\n"],"names":["MEERKAT_OUTPUT_DELIMITER","MEERKAT_INPUT_DELIMITER"],"mappings":";;;;;;;;IAAaA,wBAAwB;eAAxBA;;IACAC,uBAAuB;eAAvBA;;;AADN,MAAMD,2BAA2B;AACjC,MAAMC,0BAA0B"}
@@ -0,0 +1,4 @@
1
+ import { TableSchema } from '../types/cube-types/table';
2
+ import { LogicalAndFilterWithInfo, LogicalOrFilterWithInfo, QueryFiltersWithInfo, QueryOperatorsWithInfo } from '../cube-to-duckdb/cube-filter-to-duckdb';
3
+ export declare const cubeFiltersEnrichmentInternal: (filters: (QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo) | QueryFiltersWithInfo, tableSchema: TableSchema) => QueryOperatorsWithInfo | QueryFiltersWithInfo | null;
4
+ export declare const cubeFiltersEnrichment: (filters: QueryFiltersWithInfo, tableSchema: TableSchema) => QueryFiltersWithInfo | null;
@@ -0,0 +1,63 @@
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
+ cubeFiltersEnrichmentInternal: function() {
10
+ return cubeFiltersEnrichmentInternal;
11
+ },
12
+ cubeFiltersEnrichment: function() {
13
+ return cubeFiltersEnrichment;
14
+ }
15
+ });
16
+ const _keyfrommeasuresdimension = require("./key-from-measures-dimension");
17
+ const _typeguards = require("./type-guards");
18
+ const cubeFiltersEnrichmentInternal = (filters, tableSchema)=>{
19
+ if (!(0, _typeguards.isFilterArray)(filters) && (0, _typeguards.isLogicalAndOR)(filters)) {
20
+ if ((0, _typeguards.isLogicalAnd)(filters)) {
21
+ return cubeFiltersEnrichment(filters.and, tableSchema);
22
+ }
23
+ if ((0, _typeguards.isLogicalOr)(filters)) {
24
+ return cubeFiltersEnrichment(filters.or, tableSchema);
25
+ }
26
+ }
27
+ if (!(0, _typeguards.isFilterArray)(filters) && (0, _typeguards.isQueryFilter)(filters)) {
28
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
+ //@ts-ignore
30
+ filters.memberInfo = (0, _keyfrommeasuresdimension.getMemberInfoFromTableSchema)(filters.member, tableSchema);
31
+ }
32
+ if ((0, _typeguards.isFilterArray)(filters)) {
33
+ for (const filter of filters){
34
+ if ((0, _typeguards.isLogicalAndOR)(filter)) {
35
+ if ((0, _typeguards.isLogicalAnd)(filter)) {
36
+ cubeFiltersEnrichmentInternal(filter.and, tableSchema);
37
+ }
38
+ if ((0, _typeguards.isLogicalOr)(filter)) {
39
+ cubeFiltersEnrichmentInternal(filter.or, tableSchema);
40
+ }
41
+ } else if ((0, _typeguards.isQueryFilter)(filter)) {
42
+ console.info('filter', filter);
43
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
44
+ //@ts-ignore
45
+ filter.memberInfo = (0, _keyfrommeasuresdimension.getMemberInfoFromTableSchema)(filter.member, tableSchema);
46
+ }
47
+ }
48
+ }
49
+ return filters;
50
+ };
51
+ const cubeFiltersEnrichment = (filters, tableSchema)=>{
52
+ if (!filters) {
53
+ return null;
54
+ }
55
+ if ((0, _typeguards.isFilterArray)(filters)) {
56
+ for (const filter of filters){
57
+ cubeFiltersEnrichmentInternal(filter, tableSchema);
58
+ }
59
+ }
60
+ return filters;
61
+ };
62
+
63
+ //# sourceMappingURL=cube-filter-enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/cube-filter-enrichment.ts"],"sourcesContent":["import { TableSchema } from '../types/cube-types/table';\nimport {\n LogicalAndFilterWithInfo,\n LogicalOrFilterWithInfo,\n QueryFiltersWithInfo,\n QueryOperatorsWithInfo,\n} from '../cube-to-duckdb/cube-filter-to-duckdb';\nimport { getMemberInfoFromTableSchema } from './key-from-measures-dimension';\nimport {\n isFilterArray,\n isLogicalAnd,\n isLogicalAndOR,\n isLogicalOr,\n isQueryFilter,\n} from './type-guards';\n\nexport const cubeFiltersEnrichmentInternal = (\n filters:\n | (\n | QueryOperatorsWithInfo\n | LogicalAndFilterWithInfo\n | LogicalOrFilterWithInfo\n )\n | QueryFiltersWithInfo,\n tableSchema: TableSchema\n) => {\n if (!isFilterArray(filters) && isLogicalAndOR(filters)) {\n if (isLogicalAnd(filters)) {\n return cubeFiltersEnrichment(filters.and, tableSchema);\n }\n if (isLogicalOr(filters)) {\n return cubeFiltersEnrichment(filters.or, tableSchema);\n }\n }\n if (!isFilterArray(filters) && isQueryFilter(filters)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n filters.memberInfo = getMemberInfoFromTableSchema(\n filters.member,\n tableSchema\n );\n }\n\n if (isFilterArray(filters)) {\n for (const filter of filters) {\n if (isLogicalAndOR(filter)) {\n if (isLogicalAnd(filter)) {\n cubeFiltersEnrichmentInternal(filter.and, tableSchema);\n }\n if (isLogicalOr(filter)) {\n cubeFiltersEnrichmentInternal(filter.or, tableSchema);\n }\n } else if (isQueryFilter(filter)) {\n console.info('filter', filter);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n filter.memberInfo = getMemberInfoFromTableSchema(\n filter.member,\n tableSchema\n );\n }\n }\n }\n\n return filters;\n};\n\nexport const cubeFiltersEnrichment = (\n filters: QueryFiltersWithInfo,\n tableSchema: TableSchema\n): QueryFiltersWithInfo | null => {\n if (!filters) {\n return null;\n }\n\n if (isFilterArray(filters)) {\n for (const filter of filters) {\n cubeFiltersEnrichmentInternal(filter, tableSchema);\n }\n }\n return filters;\n};\n"],"names":["cubeFiltersEnrichmentInternal","cubeFiltersEnrichment","filters","tableSchema","isFilterArray","isLogicalAndOR","isLogicalAnd","and","isLogicalOr","or","isQueryFilter","memberInfo","getMemberInfoFromTableSchema","member","filter","console","info"],"mappings":";;;;;;;;IAgBaA,6BAA6B;eAA7BA;;IAmDAC,qBAAqB;eAArBA;;;0CA5DgC;4BAOtC;AAEA,MAAMD,gCAAgC,CAC3CE,SAOAC;IAEA,IAAI,CAACC,IAAAA,yBAAa,EAACF,YAAYG,IAAAA,0BAAc,EAACH,UAAU;QACtD,IAAII,IAAAA,wBAAY,EAACJ,UAAU;YACzB,OAAOD,sBAAsBC,QAAQK,GAAG,EAAEJ;QAC5C;QACA,IAAIK,IAAAA,uBAAW,EAACN,UAAU;YACxB,OAAOD,sBAAsBC,QAAQO,EAAE,EAAEN;QAC3C;IACF;IACA,IAAI,CAACC,IAAAA,yBAAa,EAACF,YAAYQ,IAAAA,yBAAa,EAACR,UAAU;QACrD,6DAA6D;QAC7D,YAAY;QACZA,QAAQS,UAAU,GAAGC,IAAAA,sDAA4B,EAC/CV,QAAQW,MAAM,EACdV;IAEJ;IAEA,IAAIC,IAAAA,yBAAa,EAACF,UAAU;QAC1B,KAAK,MAAMY,UAAUZ,QAAS;YAC5B,IAAIG,IAAAA,0BAAc,EAACS,SAAS;gBAC1B,IAAIR,IAAAA,wBAAY,EAACQ,SAAS;oBACxBd,8BAA8Bc,OAAOP,GAAG,EAAEJ;gBAC5C;gBACA,IAAIK,IAAAA,uBAAW,EAACM,SAAS;oBACvBd,8BAA8Bc,OAAOL,EAAE,EAAEN;gBAC3C;YACF,OAAO,IAAIO,IAAAA,yBAAa,EAACI,SAAS;gBAChCC,QAAQC,IAAI,CAAC,UAAUF;gBACvB,6DAA6D;gBAC7D,YAAY;gBACZA,OAAOH,UAAU,GAAGC,IAAAA,sDAA4B,EAC9CE,OAAOD,MAAM,EACbV;YAEJ;QACF;IACF;IAEA,OAAOD;AACT;AAEO,MAAMD,wBAAwB,CACnCC,SACAC;IAEA,IAAI,CAACD,SAAS;QACZ,OAAO;IACT;IAEA,IAAIE,IAAAA,yBAAa,EAACF,UAAU;QAC1B,KAAK,MAAMY,UAAUZ,QAAS;YAC5BF,8BAA8Bc,QAAQX;QACxC;IACF;IACA,OAAOD;AACT"}
@@ -0,0 +1,3 @@
1
+ import { TableSchema } from '../types/cube-types/table';
2
+ export type CubeMeasureType = 'string' | 'string_array' | 'time' | 'number' | 'number_array' | 'boolean' | 'count' | 'count_distinct' | 'count_distinct_approx' | 'sum' | 'avg' | 'min' | 'max';
3
+ export declare function convertCubeStringToTableSchema(file: string): TableSchema | null;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "convertCubeStringToTableSchema", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return convertCubeStringToTableSchema;
6
+ }
7
+ });
8
+ const _extends = require("@swc/helpers/_/_extends");
9
+ const cube = (name1, object1)=>({
10
+ name: name1,
11
+ object: object1
12
+ });
13
+ function convertCubeStringToTableSchema(file) {
14
+ // replace ${...} with ...
15
+ let replacedFile = file.replace(/\${(.*?)}/g, (match1, variable1)=>variable1);
16
+ // replace CUBE with MEERKAT
17
+ replacedFile = replacedFile.replace(/CUBE/g, '{MEERKAT}');
18
+ const { name, object } = eval(replacedFile);
19
+ return convertCubeToTableSchema({
20
+ name,
21
+ object
22
+ });
23
+ }
24
+ function convertCubeToTableSchema({ name: name1, object: object1 }) {
25
+ const resObj1 = {
26
+ name: name1,
27
+ sql: object1.sql_table,
28
+ measures: [],
29
+ dimensions: []
30
+ };
31
+ const dimensions1 = object1.dimensions;
32
+ const measures1 = object1.measures;
33
+ // convert dimensions and measures
34
+ for(const key1 in dimensions1){
35
+ resObj1.dimensions.push({
36
+ name: key1,
37
+ sql: dimensions1[key1].sql,
38
+ type: dimensions1[key1].type
39
+ });
40
+ }
41
+ for(const key1 in measures1){
42
+ resObj1.measures.push(_extends._({
43
+ name: key1
44
+ }, convertMeasure(measures1[key1])));
45
+ }
46
+ // convert joins
47
+ if (object1.joins && Object.keys(object1.joins).length > 0) {
48
+ resObj1.joins = [];
49
+ for(const joinName1 in object1.joins){
50
+ const join1 = object1.joins[joinName1];
51
+ resObj1.joins.push({
52
+ sql: join1.sql
53
+ });
54
+ }
55
+ }
56
+ return resObj1;
57
+ }
58
+ function convertMeasure(measure1) {
59
+ switch(measure1.type){
60
+ case 'count':
61
+ return {
62
+ sql: measure1.sql ? `COUNT(${measure1.sql})` : 'COUNT(*)',
63
+ type: 'number'
64
+ };
65
+ case 'count_distinct':
66
+ return {
67
+ sql: `COUNT(DISTINCT ${measure1.sql})`,
68
+ type: 'number'
69
+ };
70
+ case 'count_distinct_approx':
71
+ return {
72
+ sql: `APPROX_COUNT_DISTINCT(${measure1.sql})`,
73
+ type: 'number'
74
+ };
75
+ case 'sum':
76
+ return {
77
+ sql: `SUM(${measure1.sql})`,
78
+ type: 'number'
79
+ };
80
+ case 'avg':
81
+ return {
82
+ sql: `AVG(${measure1.sql})`,
83
+ type: 'number'
84
+ };
85
+ case 'min':
86
+ return {
87
+ sql: `MIN(${measure1.sql})`,
88
+ type: 'number'
89
+ };
90
+ case 'max':
91
+ return {
92
+ sql: `MAX(${measure1.sql})`,
93
+ type: 'number'
94
+ };
95
+ default:
96
+ var _measure_sql;
97
+ return {
98
+ sql: (_measure_sql = measure1.sql) != null ? _measure_sql : '',
99
+ type: measure1.type
100
+ };
101
+ }
102
+ }
103
+
104
+ //# sourceMappingURL=cube-to-table-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/cube-to-table-schema.ts"],"sourcesContent":["import { DimensionType, Measure, TableSchema } from '../types/cube-types/table';\n\nexport type CubeMeasureType =\n | 'string'\n | 'string_array'\n | 'time'\n | 'number'\n | 'number_array'\n | 'boolean'\n | 'count'\n | 'count_distinct'\n | 'count_distinct_approx'\n | 'sum'\n | 'avg'\n | 'min'\n | 'max';\n\ninterface CubeSchema {\n name: string;\n object: {\n sql_table: string;\n measures: {\n [key: string]: CubeMeasure;\n };\n dimensions: {\n [key: string]: {\n sql: string;\n type: DimensionType;\n };\n };\n joins?: {\n [key: string]: {\n sql: string;\n };\n };\n };\n}\nconst cube = (name: any, object: any) => ({ name, object });\nexport function convertCubeStringToTableSchema(\n file: string\n): TableSchema | null {\n // replace ${...} with ...\n let replacedFile = file.replace(/\\${(.*?)}/g, (match, variable) => variable);\n\n // replace CUBE with MEERKAT\n replacedFile = replacedFile.replace(/CUBE/g, '{MEERKAT}');\n const { name, object } = eval(replacedFile);\n return convertCubeToTableSchema({ name, object });\n}\n\nfunction convertCubeToTableSchema({\n name,\n object,\n}: CubeSchema): TableSchema | null {\n const resObj: TableSchema = {\n name,\n sql: object.sql_table,\n measures: [],\n dimensions: [],\n };\n const dimensions = object.dimensions;\n const measures = object.measures;\n\n // convert dimensions and measures\n for (const key in dimensions) {\n resObj.dimensions.push({\n name: key,\n sql: dimensions[key].sql,\n type: dimensions[key].type,\n });\n }\n for (const key in measures) {\n resObj.measures.push({ name: key, ...convertMeasure(measures[key]) });\n }\n\n // convert joins\n if (object.joins && Object.keys(object.joins).length > 0) {\n resObj.joins = [];\n for (const joinName in object.joins) {\n const join = object.joins[joinName];\n resObj.joins.push({\n sql: join.sql,\n });\n }\n }\n return resObj;\n}\ninterface CubeMeasure {\n sql?: string;\n type: CubeMeasureType;\n}\n\nfunction convertMeasure(measure: CubeMeasure): Pick<Measure, 'sql' | 'type'> {\n switch (measure.type) {\n case 'count':\n return {\n sql: measure.sql ? `COUNT(${measure.sql})` : 'COUNT(*)',\n type: 'number',\n };\n case 'count_distinct':\n return {\n sql: `COUNT(DISTINCT ${measure.sql})`,\n type: 'number',\n };\n case 'count_distinct_approx':\n return {\n sql: `APPROX_COUNT_DISTINCT(${measure.sql})`,\n type: 'number',\n };\n case 'sum':\n return {\n sql: `SUM(${measure.sql})`,\n type: 'number',\n };\n case 'avg':\n return {\n sql: `AVG(${measure.sql})`,\n type: 'number',\n };\n case 'min':\n return {\n sql: `MIN(${measure.sql})`,\n type: 'number',\n };\n case 'max':\n return {\n sql: `MAX(${measure.sql})`,\n type: 'number',\n };\n default:\n return {\n sql: measure.sql ?? '',\n type: measure.type,\n };\n }\n}\n"],"names":["convertCubeStringToTableSchema","cube","name","object","file","replacedFile","replace","match","variable","eval","convertCubeToTableSchema","resObj","sql","sql_table","measures","dimensions","key","push","type","convertMeasure","joins","Object","keys","length","joinName","join","measure"],"mappings":";+BAsCgBA;;;eAAAA;;;;AADhB,MAAMC,OAAO,CAACC,OAAWC,UAAiB,CAAA;QAAED,MAAAA;QAAMC,QAAAA;IAAO,CAAA;AAClD,SAASH,+BACdI,IAAY;IAEZ,0BAA0B;IAC1B,IAAIC,eAAeD,KAAKE,OAAO,CAAC,cAAc,CAACC,QAAOC,YAAaA;IAEnE,4BAA4B;IAC5BH,eAAeA,aAAaC,OAAO,CAAC,SAAS;IAC7C,MAAM,EAAEJ,IAAI,EAAEC,MAAM,EAAE,GAAGM,KAAKJ;IAC9B,OAAOK,yBAAyB;QAAER;QAAMC;IAAO;AACjD;AAEA,SAASO,yBAAyB,EAChCR,MAAAA,KAAI,EACJC,QAAAA,OAAM,EACK;IACX,MAAMQ,UAAsB;QAC1BT,MAAAA;QACAU,KAAKT,QAAOU,SAAS;QACrBC,UAAU,EAAE;QACZC,YAAY,EAAE;IAChB;IACA,MAAMA,cAAaZ,QAAOY,UAAU;IACpC,MAAMD,YAAWX,QAAOW,QAAQ;IAEhC,kCAAkC;IAClC,IAAK,MAAME,QAAOD,YAAY;QAC5BJ,QAAOI,UAAU,CAACE,IAAI,CAAC;YACrBf,MAAMc;YACNJ,KAAKG,WAAU,CAACC,KAAI,CAACJ,GAAG;YACxBM,MAAMH,WAAU,CAACC,KAAI,CAACE,IAAI;QAC5B;IACF;IACA,IAAK,MAAMF,QAAOF,UAAU;QAC1BH,QAAOG,QAAQ,CAACG,IAAI,CAAC;YAAEf,MAAMc;WAAQG,eAAeL,SAAQ,CAACE,KAAI;IACnE;IAEA,gBAAgB;IAChB,IAAIb,QAAOiB,KAAK,IAAIC,OAAOC,IAAI,CAACnB,QAAOiB,KAAK,EAAEG,MAAM,GAAG,GAAG;QACxDZ,QAAOS,KAAK,GAAG,EAAE;QACjB,IAAK,MAAMI,aAAYrB,QAAOiB,KAAK,CAAE;YACnC,MAAMK,QAAOtB,QAAOiB,KAAK,CAACI,UAAS;YACnCb,QAAOS,KAAK,CAACH,IAAI,CAAC;gBAChBL,KAAKa,MAAKb,GAAG;YACf;QACF;IACF;IACA,OAAOD;AACT;AAMA,SAASQ,eAAeO,QAAoB;IAC1C,OAAQA,SAAQR,IAAI;QAClB,KAAK;YACH,OAAO;gBACLN,KAAKc,SAAQd,GAAG,GAAG,CAAC,MAAM,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC,GAAG;gBAC7CM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,eAAe,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBACrCM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,sBAAsB,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBAC5CM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,IAAI,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBAC1BM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,IAAI,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBAC1BM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,IAAI,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBAC1BM,MAAM;YACR;QACF,KAAK;YACH,OAAO;gBACLN,KAAK,CAAC,IAAI,EAAEc,SAAQd,GAAG,CAAC,CAAC,CAAC;gBAC1BM,MAAM;YACR;QACF;gBAESQ;YADP,OAAO;gBACLd,KAAKc,CAAAA,eAAAA,SAAQd,GAAG,YAAXc,eAAe;gBACpBR,MAAMQ,SAAQR,IAAI;YACpB;IACJ;AACF"}
@@ -0,0 +1,6 @@
1
+ import { DimensionType, MeasureType } from '../types/cube-types';
2
+ type CubeType = DimensionType | MeasureType;
3
+ export declare const CUBE_TYPE_TO_DUCKDB_TYPE: {
4
+ [key in CubeType]: string;
5
+ };
6
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "CUBE_TYPE_TO_DUCKDB_TYPE", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return CUBE_TYPE_TO_DUCKDB_TYPE;
6
+ }
7
+ });
8
+ const CUBE_TYPE_TO_DUCKDB_TYPE = {
9
+ string: 'VARCHAR',
10
+ number: 'DECIMAL',
11
+ time: 'VARCHAR',
12
+ boolean: 'BOOLEAN',
13
+ string_array: 'VARCHAR[]',
14
+ number_array: 'DECIMAL[]'
15
+ };
16
+
17
+ //# sourceMappingURL=cube-type-to-duckdb-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/cube-type-to-duckdb-type.ts"],"sourcesContent":["import { DimensionType, MeasureType } from '../types/cube-types';\n\ntype CubeType = DimensionType | MeasureType;\n\nexport const CUBE_TYPE_TO_DUCKDB_TYPE: {\n [key in CubeType]: string;\n} = {\n string: 'VARCHAR',\n number: 'DECIMAL',\n time: 'VARCHAR',\n boolean: 'BOOLEAN',\n string_array: 'VARCHAR[]',\n number_array: 'DECIMAL[]',\n};\n"],"names":["CUBE_TYPE_TO_DUCKDB_TYPE","string","number","time","boolean","string_array","number_array"],"mappings":";+BAIaA;;;eAAAA;;;AAAN,MAAMA,2BAET;IACFC,QAAQ;IACRC,QAAQ;IACRC,MAAM;IACNC,SAAS;IACTC,cAAc;IACdC,cAAc;AAChB"}
@@ -0,0 +1,4 @@
1
+ import { TableSchema } from "../types/cube-types";
2
+ export declare const findInDimensionSchema: (measure: string, tableSchema: TableSchema) => import("../types/cube-types").Dimension | undefined;
3
+ export declare const findInMeasureSchema: (measure: string, tableSchema: TableSchema) => import("../types/cube-types").Measure | undefined;
4
+ export declare const findInSchema: (measure: string, tableSchema: TableSchema) => import("../types/cube-types").Measure | undefined;
@@ -0,0 +1,40 @@
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
+ findInDimensionSchema: function() {
10
+ return findInDimensionSchema;
11
+ },
12
+ findInMeasureSchema: function() {
13
+ return findInMeasureSchema;
14
+ },
15
+ findInSchema: function() {
16
+ return findInSchema;
17
+ }
18
+ });
19
+ const findInDimensionSchema = (measure, tableSchema)=>{
20
+ return tableSchema.dimensions.find((m)=>m.name === measure);
21
+ };
22
+ const findInMeasureSchema = (measure, tableSchema)=>{
23
+ return tableSchema.measures.find((m)=>m.name === measure);
24
+ };
25
+ const findInSchema = (measure, tableSchema)=>{
26
+ /*
27
+ ** Using the key passed as measureWithoutTable this function searches the table schema.
28
+ ** It returns either the first dimension or measure found.
29
+ */ const foundDimension = findInDimensionSchema(measure, tableSchema);
30
+ if (foundDimension) {
31
+ return foundDimension;
32
+ }
33
+ const foundMeasure = findInMeasureSchema(measure, tableSchema);
34
+ if (foundMeasure) {
35
+ return foundMeasure;
36
+ }
37
+ return undefined;
38
+ };
39
+
40
+ //# sourceMappingURL=find-in-table-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/utils/find-in-table-schema.ts"],"sourcesContent":["import { TableSchema } from \"../types/cube-types\"\n\n\nexport const findInDimensionSchema = (measure: string, tableSchema: TableSchema) => {\n return tableSchema.dimensions.find(\n (m) => m.name === measure\n )\n}\n\nexport const findInMeasureSchema = (measure: string, tableSchema: TableSchema) => {\n return tableSchema.measures.find(\n (m) => m.name === measure\n )\n}\n\nexport const findInSchema = (measure: string, tableSchema: TableSchema) => {\n /*\n ** Using the key passed as measureWithoutTable this function searches the table schema.\n ** It returns either the first dimension or measure found.\n */\n const foundDimension = findInDimensionSchema(measure, tableSchema)\n if (foundDimension) {\n return foundDimension\n }\n const foundMeasure = findInMeasureSchema(measure, tableSchema)\n if (foundMeasure) {\n return foundMeasure\n }\n return undefined\n}\n"],"names":["findInDimensionSchema","findInMeasureSchema","findInSchema","measure","tableSchema","dimensions","find","m","name","measures","foundDimension","foundMeasure","undefined"],"mappings":";;;;;;;;IAGaA,qBAAqB;eAArBA;;IAMAC,mBAAmB;eAAnBA;;IAMAC,YAAY;eAAZA;;;AAZN,MAAMF,wBAAwB,CAACG,SAAiBC;IACrD,OAAOA,YAAYC,UAAU,CAACC,IAAI,CAChC,CAACC,IAAMA,EAAEC,IAAI,KAAKL;AAEtB;AAEO,MAAMF,sBAAsB,CAACE,SAAiBC;IACnD,OAAOA,YAAYK,QAAQ,CAACH,IAAI,CAC9B,CAACC,IAAMA,EAAEC,IAAI,KAAKL;AAEtB;AAEO,MAAMD,eAAe,CAACC,SAAiBC;IAC5C;;;EAGA,GACA,MAAMM,iBAAiBV,sBAAsBG,SAASC;IACtD,IAAIM,gBAAgB;QAClB,OAAOA;IACT;IACA,MAAMC,eAAeV,oBAAoBE,SAASC;IAClD,IAAIO,cAAc;QAChB,OAAOA;IACT;IACA,OAAOC;AACT"}
@@ -0,0 +1,15 @@
1
+ import { Dimension, JoinPath, Measure, TableSchema } from '../types/cube-types';
2
+ export interface NestedMeasure {
3
+ schema: Measure;
4
+ children: NestedTableSchema[];
5
+ }
6
+ export interface NestedDimension {
7
+ schema: Dimension;
8
+ children: NestedTableSchema[];
9
+ }
10
+ export interface NestedTableSchema {
11
+ name: string;
12
+ measures: NestedMeasure[];
13
+ dimensions: NestedDimension[];
14
+ }
15
+ export declare const getNestedTableSchema: (tableSchemas: TableSchema[], joinPath: JoinPath[], depth: number) => NestedTableSchema;