@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.
- package/README.md +11 -0
- package/package.json +30 -0
- package/src/ast-builder/ast-builder.d.ts +6 -0
- package/src/ast-builder/ast-builder.js +89 -0
- package/src/ast-builder/ast-builder.js.map +1 -0
- package/src/ast-deserializer/ast-deserializer.d.ts +5 -0
- package/src/ast-deserializer/ast-deserializer.js +30 -0
- package/src/ast-deserializer/ast-deserializer.js.map +1 -0
- package/src/context-params/context-params-ast.d.ts +11 -0
- package/src/context-params/context-params-ast.js +55 -0
- package/src/context-params/context-params-ast.js.map +1 -0
- package/src/cube-filter-transformer/and/and.d.ts +2 -0
- package/src/cube-filter-transformer/and/and.js +18 -0
- package/src/cube-filter-transformer/and/and.js.map +1 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.d.ts +154 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +159 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
- package/src/cube-filter-transformer/contains/contains.d.ts +65 -0
- package/src/cube-filter-transformer/contains/contains.js +70 -0
- package/src/cube-filter-transformer/contains/contains.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals-array.d.ts +2 -0
- package/src/cube-filter-transformer/equals/equals-array.js +30 -0
- package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals.d.ts +2 -0
- package/src/cube-filter-transformer/equals/equals.js +37 -0
- package/src/cube-filter-transformer/equals/equals.js.map +1 -0
- package/src/cube-filter-transformer/factory.d.ts +5 -0
- package/src/cube-filter-transformer/factory.js +124 -0
- package/src/cube-filter-transformer/factory.js.map +1 -0
- package/src/cube-filter-transformer/gt/gt.d.ts +2 -0
- package/src/cube-filter-transformer/gt/gt.js +30 -0
- package/src/cube-filter-transformer/gt/gt.js.map +1 -0
- package/src/cube-filter-transformer/gte/gte.d.ts +2 -0
- package/src/cube-filter-transformer/gte/gte.js +30 -0
- package/src/cube-filter-transformer/gte/gte.js.map +1 -0
- package/src/cube-filter-transformer/in/in.d.ts +2 -0
- package/src/cube-filter-transformer/in/in.js +77 -0
- package/src/cube-filter-transformer/in/in.js.map +1 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.d.ts +2 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js +24 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
- package/src/cube-filter-transformer/lt/lt.d.ts +2 -0
- package/src/cube-filter-transformer/lt/lt.js +30 -0
- package/src/cube-filter-transformer/lt/lt.js.map +1 -0
- package/src/cube-filter-transformer/lte/lte.d.ts +2 -0
- package/src/cube-filter-transformer/lte/lte.js +30 -0
- package/src/cube-filter-transformer/lte/lte.js.map +1 -0
- package/src/cube-filter-transformer/not/not.d.ts +2 -0
- package/src/cube-filter-transformer/not/not.js +18 -0
- package/src/cube-filter-transformer/not/not.js.map +1 -0
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.d.ts +2 -0
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +24 -0
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
- package/src/cube-filter-transformer/not-contains/not-contains.d.ts +65 -0
- package/src/cube-filter-transformer/not-contains/not-contains.js +70 -0
- package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.d.ts +2 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js +26 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals.d.ts +8 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js +37 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
- package/src/cube-filter-transformer/not-in/not-in.d.ts +2 -0
- package/src/cube-filter-transformer/not-in/not-in.js +84 -0
- package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
- package/src/cube-filter-transformer/not-set/not-set.d.ts +2 -0
- package/src/cube-filter-transformer/not-set/not-set.js +26 -0
- package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
- package/src/cube-filter-transformer/or/or.d.ts +2 -0
- package/src/cube-filter-transformer/or/or.js +18 -0
- package/src/cube-filter-transformer/or/or.js.map +1 -0
- package/src/cube-filter-transformer/set/set.d.ts +2 -0
- package/src/cube-filter-transformer/set/set.js +26 -0
- package/src/cube-filter-transformer/set/set.js.map +1 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.d.ts +8 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.js +25 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
- package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.d.ts +31 -0
- package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js +42 -0
- package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
- package/src/cube-measure-transformer/cube-measure-transformer.d.ts +21 -0
- package/src/cube-measure-transformer/cube-measure-transformer.js +126 -0
- package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.d.ts +21 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js +39 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.d.ts +16 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
- package/src/filter-params/filter-params-ast.d.ts +33 -0
- package/src/filter-params/filter-params-ast.js +115 -0
- package/src/filter-params/filter-params-ast.js.map +1 -0
- package/src/get-projection-clause/get-projection-clause.d.ts +27 -0
- package/src/get-projection-clause/get-projection-clause.js +135 -0
- package/src/get-projection-clause/get-projection-clause.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.d.ts +8 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +99 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
- package/src/index.d.ts +16 -0
- package/src/index.js +55 -0
- package/src/index.js.map +1 -0
- package/src/joins/joins.d.ts +22 -0
- package/src/joins/joins.js +170 -0
- package/src/joins/joins.js.map +1 -0
- package/src/types/cube-types/index.d.js +6 -0
- package/src/types/cube-types/index.d.js.map +1 -0
- package/src/types/cube-types/index.d.ts +2 -0
- package/src/types/cube-types/index.js +6 -0
- package/src/types/cube-types/index.js.map +1 -0
- package/src/types/cube-types/query.d.js +5 -0
- package/src/types/cube-types/query.d.js.map +1 -0
- package/src/types/cube-types/query.d.ts +141 -0
- package/src/types/cube-types/query.js +14 -0
- package/src/types/cube-types/query.js.map +1 -0
- package/src/types/cube-types/table.d.js +3 -0
- package/src/types/cube-types/table.d.js.map +1 -0
- package/src/types/cube-types/table.d.ts +25 -0
- package/src/types/cube-types/table.js +3 -0
- package/src/types/cube-types/table.js.map +1 -0
- package/src/types/duckdb-serialization-types/index.d.js +11 -0
- package/src/types/duckdb-serialization-types/index.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/index.d.ts +7 -0
- package/src/types/duckdb-serialization-types/index.js +11 -0
- package/src/types/duckdb-serialization-types/index.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Constraint.d.ts +47 -0
- package/src/types/duckdb-serialization-types/serialization/Constraint.js +31 -0
- package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/CreateInfo.d.ts +95 -0
- package/src/types/duckdb-serialization-types/serialization/CreateInfo.js +67 -0
- package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Expression.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Expression.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Expression.d.ts +186 -0
- package/src/types/duckdb-serialization-types/serialization/Expression.js +130 -0
- package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.d.ts +231 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +47 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.d.ts +20 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +15 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.d.ts +3 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Nodes.d.js +10 -0
- package/src/types/duckdb-serialization-types/serialization/Nodes.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Nodes.d.ts +212 -0
- package/src/types/duckdb-serialization-types/serialization/Nodes.js +92 -0
- package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/ParseInfo.d.ts +192 -0
- package/src/types/duckdb-serialization-types/serialization/ParseInfo.js +128 -0
- package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.ts +114 -0
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js +37 -0
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/QueryNode.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/QueryNode.d.ts +62 -0
- package/src/types/duckdb-serialization-types/serialization/QueryNode.js +42 -0
- package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.ts +29 -0
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.js +16 -0
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.d.ts +4 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/TableFilter.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/TableFilter.d.ts +32 -0
- package/src/types/duckdb-serialization-types/serialization/TableFilter.js +17 -0
- package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/TableRef.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/TableRef.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/TableRef.d.ts +84 -0
- package/src/types/duckdb-serialization-types/serialization/TableRef.js +53 -0
- package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Types.d.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Types.d.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Types.d.ts +53 -0
- package/src/types/duckdb-serialization-types/serialization/Types.js +21 -0
- package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/example.d.ts +1 -0
- package/src/types/duckdb-serialization-types/serialization/example.js +131 -0
- package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
- package/src/utils/__fixtures__/joins.fixtures.d.ts +211 -0
- package/src/utils/__fixtures__/joins.fixtures.js +922 -0
- package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
- package/src/utils/base-ast.d.ts +3 -0
- package/src/utils/base-ast.js +64 -0
- package/src/utils/base-ast.js.map +1 -0
- package/src/utils/constants.d.ts +2 -0
- package/src/utils/constants.js +19 -0
- package/src/utils/constants.js.map +1 -0
- package/src/utils/cube-filter-enrichment.d.ts +4 -0
- package/src/utils/cube-filter-enrichment.js +63 -0
- package/src/utils/cube-filter-enrichment.js.map +1 -0
- package/src/utils/cube-to-table-schema.d.ts +3 -0
- package/src/utils/cube-to-table-schema.js +104 -0
- package/src/utils/cube-to-table-schema.js.map +1 -0
- package/src/utils/cube-type-to-duckdb-type.d.ts +6 -0
- package/src/utils/cube-type-to-duckdb-type.js +17 -0
- package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
- package/src/utils/find-in-table-schema.d.ts +4 -0
- package/src/utils/find-in-table-schema.js +40 -0
- package/src/utils/find-in-table-schema.js.map +1 -0
- package/src/utils/get-possible-nodes.d.ts +15 -0
- package/src/utils/get-possible-nodes.js +152 -0
- package/src/utils/get-possible-nodes.js.map +1 -0
- package/src/utils/get-type-info.d.ts +7 -0
- package/src/utils/get-type-info.js +44 -0
- package/src/utils/get-type-info.js.map +1 -0
- package/src/utils/is-array-member-type.d.ts +4 -0
- package/src/utils/is-array-member-type.js +12 -0
- package/src/utils/is-array-member-type.js.map +1 -0
- package/src/utils/key-from-measures-dimension.d.ts +2 -0
- package/src/utils/key-from-measures-dimension.js +34 -0
- package/src/utils/key-from-measures-dimension.js.map +1 -0
- package/src/utils/meerkat-placeholder-replacer.d.ts +1 -0
- package/src/utils/meerkat-placeholder-replacer.js +14 -0
- package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
- package/src/utils/member-key-to-safe-key.d.ts +1 -0
- package/src/utils/member-key-to-safe-key.js +13 -0
- package/src/utils/member-key-to-safe-key.js.map +1 -0
- package/src/utils/modify-meerkat-filter.d.ts +3 -0
- package/src/utils/modify-meerkat-filter.js +30 -0
- package/src/utils/modify-meerkat-filter.js.map +1 -0
- package/src/utils/type-guards.d.ts +8 -0
- package/src/utils/type-guards.js +83 -0
- 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,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,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,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;
|