@devrev/meerkat-core 0.0.96 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -6
- package/package.json +2 -2
- package/src/ast-builder/ast-builder.js +91 -0
- package/src/ast-builder/ast-builder.js.map +1 -0
- package/src/ast-deserializer/ast-deserializer.js +17 -0
- package/src/ast-deserializer/ast-deserializer.js.map +1 -0
- package/src/ast-serializer/ast-serializer.js +8 -0
- package/src/ast-serializer/ast-serializer.js.map +1 -0
- package/src/ast-validator/dimension-validator.js +49 -0
- package/src/ast-validator/dimension-validator.js.map +1 -0
- package/src/ast-validator/index.js +12 -0
- package/src/ast-validator/index.js.map +1 -0
- package/src/ast-validator/measure-validator.js +155 -0
- package/src/ast-validator/measure-validator.js.map +1 -0
- package/{ast-validator → src/ast-validator}/tests/test-data.js +692 -890
- package/src/ast-validator/tests/test-data.js.map +1 -0
- package/src/ast-validator/types.js +3 -0
- package/src/ast-validator/types.js.map +1 -0
- package/src/ast-validator/utils.js +24 -0
- package/src/ast-validator/utils.js.map +1 -0
- package/src/context-params/context-params-ast.js +42 -0
- package/src/context-params/context-params-ast.js.map +1 -0
- package/src/cube-filter-transformer/and/and.js +14 -0
- package/src/cube-filter-transformer/and/and.js.map +1 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +145 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
- package/src/cube-filter-transformer/contains/contains.js +62 -0
- package/src/cube-filter-transformer/contains/contains.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals-array.js +71 -0
- package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals.js +36 -0
- package/src/cube-filter-transformer/equals/equals.js.map +1 -0
- package/src/cube-filter-transformer/factory.js +120 -0
- package/src/cube-filter-transformer/factory.js.map +1 -0
- package/src/cube-filter-transformer/gt/gt.js +28 -0
- package/src/cube-filter-transformer/gt/gt.js.map +1 -0
- package/src/cube-filter-transformer/gte/gte.js +28 -0
- package/src/cube-filter-transformer/gte/gte.js.map +1 -0
- package/src/cube-filter-transformer/in/in.js +69 -0
- package/src/cube-filter-transformer/in/in.js.map +1 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js +21 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
- package/src/cube-filter-transformer/lt/lt.js +28 -0
- package/src/cube-filter-transformer/lt/lt.js.map +1 -0
- package/src/cube-filter-transformer/lte/lte.js +28 -0
- package/src/cube-filter-transformer/lte/lte.js.map +1 -0
- package/src/cube-filter-transformer/not/not.js +14 -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.js +21 -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.js +62 -0
- package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js +21 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js +36 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
- package/src/cube-filter-transformer/not-in/not-in.js +76 -0
- package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
- package/src/cube-filter-transformer/not-set/not-set.js +23 -0
- package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
- package/src/cube-filter-transformer/or/or.js +14 -0
- package/src/cube-filter-transformer/or/or.js.map +1 -0
- package/src/cube-filter-transformer/set/set.js +23 -0
- package/src/cube-filter-transformer/set/set.js.map +1 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.js +19 -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.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.js +124 -0
- package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js +34 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -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.js +114 -0
- package/src/filter-params/filter-params-ast.js.map +1 -0
- package/src/get-filter-params-sql/get-filter-params-sql.js +25 -0
- package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
- package/src/get-final-base-sql/get-final-base-sql.js +28 -0
- package/src/get-final-base-sql/get-final-base-sql.js.map +1 -0
- package/{get-wrapped-base-query-with-projections → src/get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +39 -64
- package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +83 -0
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +32 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +32 -0
- package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
- package/src/index.js +37 -0
- package/src/index.js.map +1 -0
- package/src/joins/joins.js +162 -0
- package/src/joins/joins.js.map +1 -0
- package/src/member-formatters/constants.js +6 -0
- package/src/member-formatters/constants.js.map +1 -0
- package/src/member-formatters/index.js +10 -0
- package/src/member-formatters/index.js.map +1 -0
- package/src/member-formatters/member-key-to-safe-key.js +9 -0
- package/src/member-formatters/member-key-to-safe-key.js.map +1 -0
- package/src/member-formatters/split-into-data-source-and-fields.js +10 -0
- package/src/member-formatters/split-into-data-source-and-fields.js.map +1 -0
- package/src/resolution/resolution.js +112 -0
- package/src/resolution/resolution.js.map +1 -0
- package/src/resolution/types.js +5 -0
- package/src/resolution/types.js.map +1 -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.js +8 -0
- package/src/types/cube-types/query.js.map +1 -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.js +11 -0
- package/src/types/duckdb-serialization-types/index.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Constraint.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/CreateInfo.js +10 -29
- package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Expression.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +28 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +10 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -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/{types → src/types}/duckdb-serialization-types/serialization/Nodes.js +17 -45
- package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ParseInfo.js +20 -54
- package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ParsedExpression.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/QueryNode.js +8 -24
- package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ResultModifier.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -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/{types → src/types}/duckdb-serialization-types/serialization/TableFilter.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/TableRef.js +8 -24
- package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Types.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/example.js +109 -0
- package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
- package/src/types/utils.js +69 -0
- package/src/types/utils.js.map +1 -0
- package/{utils → src/utils}/__fixtures__/joins.fixtures.js +228 -316
- package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
- package/src/utils/base-ast.js +49 -0
- package/src/utils/base-ast.js.map +1 -0
- package/src/utils/cube-filter-enrichment.js +53 -0
- package/src/utils/cube-filter-enrichment.js.map +1 -0
- package/{utils → src/utils}/cube-to-table-schema.js +25 -38
- package/src/utils/cube-to-table-schema.js.map +1 -0
- package/src/utils/cube-type-to-duckdb-type.js +12 -0
- package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
- package/src/utils/find-in-table-schema.js +28 -0
- package/src/utils/find-in-table-schema.js.map +1 -0
- package/src/utils/get-column-names-from-ast.js +45 -0
- package/src/utils/get-column-names-from-ast.js.map +1 -0
- package/src/utils/get-possible-nodes.js +146 -0
- package/src/utils/get-possible-nodes.js.map +1 -0
- package/src/utils/get-type-info.js +34 -0
- package/src/utils/get-type-info.js.map +1 -0
- package/src/utils/is-array-member-type.js +8 -0
- package/src/utils/is-array-member-type.js.map +1 -0
- package/src/utils/key-from-measures-dimension.js +32 -0
- package/src/utils/key-from-measures-dimension.js.map +1 -0
- package/src/utils/meerkat-placeholder-replacer.js +10 -0
- package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
- package/src/utils/modify-meerkat-filter.js +24 -0
- package/src/utils/modify-meerkat-filter.js.map +1 -0
- package/{utils → src/utils}/type-guards.js +10 -28
- package/src/utils/type-guards.js.map +1 -0
- package/ast-builder/ast-builder.js +0 -90
- package/ast-builder/ast-builder.js.map +0 -1
- package/ast-deserializer/ast-deserializer.js +0 -30
- package/ast-deserializer/ast-deserializer.js.map +0 -1
- package/ast-serializer/ast-serializer.js +0 -12
- package/ast-serializer/ast-serializer.js.map +0 -1
- package/ast-validator/dimension-validator.js +0 -54
- package/ast-validator/dimension-validator.js.map +0 -1
- package/ast-validator/index.js +0 -25
- package/ast-validator/index.js.map +0 -1
- package/ast-validator/measure-validator.js +0 -163
- package/ast-validator/measure-validator.js.map +0 -1
- package/ast-validator/tests/test-data.js.map +0 -1
- package/ast-validator/types.js +0 -3
- package/ast-validator/types.js.map +0 -1
- package/ast-validator/utils.js +0 -35
- package/ast-validator/utils.js.map +0 -1
- package/context-params/context-params-ast.js +0 -55
- package/context-params/context-params-ast.js.map +0 -1
- package/cube-filter-transformer/and/and.js +0 -18
- package/cube-filter-transformer/and/and.js.map +0 -1
- package/cube-filter-transformer/base-condition-builder/base-condition-builder.js +0 -160
- package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
- package/cube-filter-transformer/contains/contains.js +0 -71
- package/cube-filter-transformer/contains/contains.js.map +0 -1
- package/cube-filter-transformer/equals/equals-array.js +0 -77
- package/cube-filter-transformer/equals/equals-array.js.map +0 -1
- package/cube-filter-transformer/equals/equals.js +0 -37
- package/cube-filter-transformer/equals/equals.js.map +0 -1
- package/cube-filter-transformer/factory.js +0 -124
- package/cube-filter-transformer/factory.js.map +0 -1
- package/cube-filter-transformer/gt/gt.js +0 -30
- package/cube-filter-transformer/gt/gt.js.map +0 -1
- package/cube-filter-transformer/gte/gte.js +0 -30
- package/cube-filter-transformer/gte/gte.js.map +0 -1
- package/cube-filter-transformer/in/in.js +0 -78
- package/cube-filter-transformer/in/in.js.map +0 -1
- package/cube-filter-transformer/in-date-range/in-date-range.js +0 -24
- package/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
- package/cube-filter-transformer/lt/lt.js +0 -30
- package/cube-filter-transformer/lt/lt.js.map +0 -1
- package/cube-filter-transformer/lte/lte.js +0 -30
- package/cube-filter-transformer/lte/lte.js.map +0 -1
- package/cube-filter-transformer/not/not.js +0 -18
- package/cube-filter-transformer/not/not.js.map +0 -1
- package/cube-filter-transformer/not-In-date-range/not-In-date-range.js +0 -24
- package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
- package/cube-filter-transformer/not-contains/not-contains.js +0 -71
- package/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
- package/cube-filter-transformer/not-equals/not-equals-array.js +0 -26
- package/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
- package/cube-filter-transformer/not-equals/not-equals.js +0 -37
- package/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
- package/cube-filter-transformer/not-in/not-in.js +0 -85
- package/cube-filter-transformer/not-in/not-in.js.map +0 -1
- package/cube-filter-transformer/not-set/not-set.js +0 -27
- package/cube-filter-transformer/not-set/not-set.js.map +0 -1
- package/cube-filter-transformer/or/or.js +0 -18
- package/cube-filter-transformer/or/or.js.map +0 -1
- package/cube-filter-transformer/set/set.js +0 -27
- package/cube-filter-transformer/set/set.js.map +0 -1
- package/cube-group-by-transformer/cube-group-by-transformer.js +0 -25
- package/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
- package/cube-limit-offset-transformer/cube-limit-offset-transformer.js +0 -42
- package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
- package/cube-measure-transformer/cube-measure-transformer.js +0 -127
- package/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
- package/cube-order-by-transformer/cube-order-by-transformer.js +0 -39
- package/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
- package/cube-to-duckdb/cube-filter-to-duckdb.js +0 -3
- package/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
- package/filter-params/filter-params-ast.js +0 -115
- package/filter-params/filter-params-ast.js.map +0 -1
- package/get-filter-params-sql/get-filter-params-sql.js +0 -28
- package/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
- package/get-final-base-sql/get-final-base-sql.js +0 -30
- package/get-final-base-sql/get-final-base-sql.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-projection-clause.js +0 -87
- package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +0 -33
- package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
- package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +0 -60
- package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
- package/index.js +0 -66
- package/index.js.map +0 -1
- package/joins/joins.js +0 -170
- package/joins/joins.js.map +0 -1
- package/member-formatters/constants.js +0 -19
- package/member-formatters/constants.js.map +0 -1
- package/member-formatters/index.js +0 -23
- package/member-formatters/index.js.map +0 -1
- package/member-formatters/member-key-to-safe-key.js +0 -13
- package/member-formatters/member-key-to-safe-key.js.map +0 -1
- package/member-formatters/split-into-data-source-and-fields.js +0 -17
- package/member-formatters/split-into-data-source-and-fields.js.map +0 -1
- package/resolution/resolution.js +0 -128
- package/resolution/resolution.js.map +0 -1
- package/resolution/types.js +0 -10
- package/resolution/types.js.map +0 -1
- package/types/cube-types/index.d.js +0 -6
- package/types/cube-types/index.d.js.map +0 -1
- package/types/cube-types/index.js +0 -6
- package/types/cube-types/index.js.map +0 -1
- package/types/cube-types/query.d.js +0 -5
- package/types/cube-types/query.d.js.map +0 -1
- package/types/cube-types/query.js +0 -14
- package/types/cube-types/query.js.map +0 -1
- package/types/cube-types/table.d.js +0 -3
- package/types/cube-types/table.d.js.map +0 -1
- package/types/cube-types/table.js +0 -3
- package/types/cube-types/table.js.map +0 -1
- package/types/duckdb-serialization-types/index.d.js +0 -11
- package/types/duckdb-serialization-types/index.d.js.map +0 -1
- package/types/duckdb-serialization-types/index.js +0 -11
- package/types/duckdb-serialization-types/index.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Expression.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/LogicalOperator.js +0 -47
- package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/MacroFunction.js +0 -15
- package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Misc.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Misc.js +0 -3
- package/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/QueryNode.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Statement.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Statement.js +0 -3
- package/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableFilter.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableRef.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Types.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/example.js +0 -131
- package/types/duckdb-serialization-types/serialization/example.js.map +0 -1
- package/types/utils.js +0 -108
- package/types/utils.js.map +0 -1
- package/utils/__fixtures__/joins.fixtures.js.map +0 -1
- package/utils/base-ast.js +0 -63
- package/utils/base-ast.js.map +0 -1
- package/utils/cube-filter-enrichment.js +0 -63
- package/utils/cube-filter-enrichment.js.map +0 -1
- package/utils/cube-to-table-schema.js.map +0 -1
- package/utils/cube-type-to-duckdb-type.js +0 -17
- package/utils/cube-type-to-duckdb-type.js.map +0 -1
- package/utils/find-in-table-schema.js +0 -40
- package/utils/find-in-table-schema.js.map +0 -1
- package/utils/get-column-names-from-ast.js +0 -45
- package/utils/get-column-names-from-ast.js.map +0 -1
- package/utils/get-possible-nodes.js +0 -152
- package/utils/get-possible-nodes.js.map +0 -1
- package/utils/get-type-info.js +0 -44
- package/utils/get-type-info.js.map +0 -1
- package/utils/is-array-member-type.js +0 -12
- package/utils/is-array-member-type.js.map +0 -1
- package/utils/key-from-measures-dimension.js +0 -35
- package/utils/key-from-measures-dimension.js.map +0 -1
- package/utils/meerkat-placeholder-replacer.js +0 -14
- package/utils/meerkat-placeholder-replacer.js.map +0 -1
- package/utils/modify-meerkat-filter.js +0 -30
- package/utils/modify-meerkat-filter.js.map +0 -1
- package/utils/type-guards.js.map +0 -1
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
function _export(target, all) {
|
|
3
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
4
|
-
enumerable: true,
|
|
5
|
-
get: all[name]
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
_export(exports, {
|
|
9
|
-
containsDuckdbCondition: function() {
|
|
10
|
-
return containsDuckdbCondition;
|
|
11
|
-
},
|
|
12
|
-
containsTransform: function() {
|
|
13
|
-
return containsTransform;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
const _constants = require("../../member-formatters/constants");
|
|
17
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
18
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
19
|
-
const _or = require("../or/or");
|
|
20
|
-
const containsDuckdbCondition = (columnName, value, memberInfo)=>{
|
|
21
|
-
return {
|
|
22
|
-
class: _Expression.ExpressionClass.FUNCTION,
|
|
23
|
-
type: _Expression.ExpressionType.FUNCTION,
|
|
24
|
-
alias: '',
|
|
25
|
-
function_name: '~~*',
|
|
26
|
-
schema: '',
|
|
27
|
-
children: [
|
|
28
|
-
{
|
|
29
|
-
class: 'COLUMN_REF',
|
|
30
|
-
type: 'COLUMN_REF',
|
|
31
|
-
alias: '',
|
|
32
|
-
column_names: columnName.split(_constants.COLUMN_NAME_DELIMITER)
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
class: 'CONSTANT',
|
|
36
|
-
type: 'VALUE_CONSTANT',
|
|
37
|
-
alias: '',
|
|
38
|
-
value: (0, _baseconditionbuilder.valueBuilder)(`%${value}%`, memberInfo)
|
|
39
|
-
}
|
|
40
|
-
],
|
|
41
|
-
filter: null,
|
|
42
|
-
order_bys: {
|
|
43
|
-
type: 'ORDER_MODIFIER',
|
|
44
|
-
orders: []
|
|
45
|
-
},
|
|
46
|
-
distinct: false,
|
|
47
|
-
is_operator: true,
|
|
48
|
-
export_state: false,
|
|
49
|
-
catalog: ''
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
const containsTransform = (query)=>{
|
|
53
|
-
const { member, values, memberInfo } = query;
|
|
54
|
-
if (!values || values.length === 0) {
|
|
55
|
-
throw new Error('Contains filter must have at least one value');
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* If there is only one value, we can create a simple Contains condition
|
|
59
|
-
*/ if (values.length === 1) {
|
|
60
|
-
return containsDuckdbCondition(member, values[0], memberInfo);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* If there are multiple values, we need to create an OR condition
|
|
64
|
-
*/ const orCondition = (0, _or.orDuckdbCondition)();
|
|
65
|
-
values.forEach((value)=>{
|
|
66
|
-
orCondition.children.push(containsDuckdbCondition(member, value, memberInfo));
|
|
67
|
-
});
|
|
68
|
-
return orCondition;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=contains.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"sourcesContent":["import { Member, QueryFilter } from '../../types/cube-types/query';\nimport { Dimension, Measure } from '../../types/cube-types/table';\n\nimport { COLUMN_NAME_DELIMITER } from '../../member-formatters/constants';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport interface ContainsFilters extends QueryFilter {\n member: Member;\n operator: 'contains';\n values: string[];\n}\n\nexport const containsDuckdbCondition = (\n columnName: string,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '~~*',\n schema: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n value: valueBuilder(`%${value}%`, memberInfo),\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n};\n\nexport const containsTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n\n if (!values || values.length === 0) {\n throw new Error('Contains filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple Contains condition\n */\n if (values.length === 1) {\n return containsDuckdbCondition(member, values[0], memberInfo);\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n containsDuckdbCondition(member, value, memberInfo)\n );\n });\n return orCondition;\n};\n"],"names":["containsDuckdbCondition","containsTransform","columnName","value","memberInfo","class","ExpressionClass","FUNCTION","type","ExpressionType","alias","function_name","schema","children","column_names","split","COLUMN_NAME_DELIMITER","valueBuilder","filter","order_bys","orders","distinct","is_operator","export_state","catalog","query","member","values","length","Error","orCondition","orDuckdbCondition","forEach","push"],"mappings":";;;;;;;;IAkBaA,uBAAuB;eAAvBA;;IAqCAC,iBAAiB;eAAjBA;;;2BApDyB;4BAI/B;sCACsB;oBAEK;AAQ3B,MAAMD,0BAA0B,CACrCE,YACAC,OACAC;IAEA,OAAO;QACLC,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACF,QAAQ;QAC7BG,OAAO;QACPC,eAAe;QACfC,QAAQ;QACRC,UAAU;YACR;gBACER,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPI,cAAcZ,WAAWa,KAAK,CAACC,gCAAqB;YACtD;YACA;gBACEX,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPP,OAAOc,IAAAA,kCAAY,EAAC,CAAC,CAAC,EAAEd,MAAM,CAAC,CAAC,EAAEC;YACpC;SACD;QACDc,QAAQ;QACRC,WAAW;YACTX,MAAM;YACNY,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;AACF;AAEO,MAAMvB,oBAAoD,CAACwB;IAChE,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEvB,UAAU,EAAE,GAAGqB;IAEvC,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAO5B,wBAAwB0B,QAAQC,MAAM,CAAC,EAAE,EAAEvB;IACpD;IAEA;;GAEC,GACD,MAAM0B,cAAcC,IAAAA,qBAAiB;IACrCJ,OAAOK,OAAO,CAAC,CAAC7B;QACd2B,YAAYjB,QAAQ,CAACoB,IAAI,CACvBjC,wBAAwB0B,QAAQvB,OAAOC;IAE3C;IACA,OAAO0B;AACT"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "equalsArrayTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return equalsArrayTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _constants = require("../../member-formatters/constants");
|
|
9
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
10
|
-
const _ResultModifier = require("../../types/duckdb-serialization-types/serialization/ResultModifier");
|
|
11
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
12
|
-
const equalsDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
13
|
-
const columnRef = {
|
|
14
|
-
class: _Expression.ExpressionClass.COLUMN_REF,
|
|
15
|
-
type: _Expression.ExpressionType.COLUMN_REF,
|
|
16
|
-
alias: '',
|
|
17
|
-
column_names: columnName.split(_constants.COLUMN_NAME_DELIMITER)
|
|
18
|
-
};
|
|
19
|
-
const sqlTreeValues = values.map((value)=>{
|
|
20
|
-
const children = {
|
|
21
|
-
class: _Expression.ExpressionClass.CONSTANT,
|
|
22
|
-
type: _Expression.ExpressionType.VALUE_CONSTANT,
|
|
23
|
-
alias: '',
|
|
24
|
-
value: (0, _baseconditionbuilder.valueBuilder)(value, memberInfo)
|
|
25
|
-
};
|
|
26
|
-
return children;
|
|
27
|
-
});
|
|
28
|
-
const filterValuesArray = {
|
|
29
|
-
class: _Expression.ExpressionClass.FUNCTION,
|
|
30
|
-
type: _Expression.ExpressionType.FUNCTION,
|
|
31
|
-
alias: '',
|
|
32
|
-
function_name: 'list_value',
|
|
33
|
-
schema: 'main',
|
|
34
|
-
children: sqlTreeValues,
|
|
35
|
-
filter: null,
|
|
36
|
-
order_bys: {
|
|
37
|
-
type: _ResultModifier.ResultModifierType.ORDER_MODIFIER,
|
|
38
|
-
orders: []
|
|
39
|
-
},
|
|
40
|
-
distinct: false,
|
|
41
|
-
is_operator: false,
|
|
42
|
-
export_state: false,
|
|
43
|
-
catalog: ''
|
|
44
|
-
};
|
|
45
|
-
const sqlTree = {
|
|
46
|
-
class: _Expression.ExpressionClass.FUNCTION,
|
|
47
|
-
type: _Expression.ExpressionType.FUNCTION,
|
|
48
|
-
alias: '',
|
|
49
|
-
function_name: 'list_has_all',
|
|
50
|
-
schema: '',
|
|
51
|
-
children: [
|
|
52
|
-
columnRef,
|
|
53
|
-
filterValuesArray
|
|
54
|
-
],
|
|
55
|
-
filter: null,
|
|
56
|
-
order_bys: {
|
|
57
|
-
type: _ResultModifier.ResultModifierType.ORDER_MODIFIER,
|
|
58
|
-
orders: []
|
|
59
|
-
},
|
|
60
|
-
distinct: false,
|
|
61
|
-
is_operator: false,
|
|
62
|
-
export_state: false,
|
|
63
|
-
catalog: ''
|
|
64
|
-
};
|
|
65
|
-
return sqlTree;
|
|
66
|
-
};
|
|
67
|
-
const equalsArrayTransform = (query)=>{
|
|
68
|
-
const { member, values, memberInfo } = query;
|
|
69
|
-
/**
|
|
70
|
-
* If there is only one value, we can create a simple equals condition
|
|
71
|
-
*/ if (!values) {
|
|
72
|
-
throw new Error('In filter must have at least one value');
|
|
73
|
-
}
|
|
74
|
-
return equalsDuckDbCondition(member, values, memberInfo);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=equals-array.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/equals/equals-array.ts"],"sourcesContent":["import { COLUMN_NAME_DELIMITER } from '../../member-formatters/constants';\nimport { Dimension, Measure } from '../../types/cube-types/table';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { ResultModifierType } from '../../types/duckdb-serialization-types/serialization/ResultModifier';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nconst equalsDuckDbCondition = (\n columnName: string,\n values: string[],\n memberInfo: Measure | Dimension\n) => {\n const columnRef = {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n };\n\n const sqlTreeValues = values.map((value) => {\n const children = {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n value: valueBuilder(value, memberInfo),\n };\n return children;\n });\n\n const filterValuesArray = {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: 'list_value',\n schema: 'main',\n children: sqlTreeValues,\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n };\n\n const sqlTree = {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: 'list_has_all',\n schema: '',\n children: [columnRef, filterValuesArray],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n };\n return sqlTree;\n};\n\nexport const equalsArrayTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (!values) {\n throw new Error('In filter must have at least one value');\n }\n return equalsDuckDbCondition(member, values, memberInfo);\n};\n"],"names":["equalsArrayTransform","equalsDuckDbCondition","columnName","values","memberInfo","columnRef","class","ExpressionClass","COLUMN_REF","type","ExpressionType","alias","column_names","split","COLUMN_NAME_DELIMITER","sqlTreeValues","map","value","children","CONSTANT","VALUE_CONSTANT","valueBuilder","filterValuesArray","FUNCTION","function_name","schema","filter","order_bys","ResultModifierType","ORDER_MODIFIER","orders","distinct","is_operator","export_state","catalog","sqlTree","query","member","Error"],"mappings":";+BAsEaA;;;eAAAA;;;2BAtEyB;4BAK/B;gCAC4B;sCACN;AAG7B,MAAMC,wBAAwB,CAC5BC,YACAC,QACAC;IAEA,MAAMC,YAAY;QAChBC,OAAOC,2BAAe,CAACC,UAAU;QACjCC,MAAMC,0BAAc,CAACF,UAAU;QAC/BG,OAAO;QACPC,cAAcV,WAAWW,KAAK,CAACC,gCAAqB;IACtD;IAEA,MAAMC,gBAAgBZ,OAAOa,GAAG,CAAC,CAACC;QAChC,MAAMC,WAAW;YACfZ,OAAOC,2BAAe,CAACY,QAAQ;YAC/BV,MAAMC,0BAAc,CAACU,cAAc;YACnCT,OAAO;YACPM,OAAOI,IAAAA,kCAAY,EAACJ,OAAOb;QAC7B;QACA,OAAOc;IACT;IAEA,MAAMI,oBAAoB;QACxBhB,OAAOC,2BAAe,CAACgB,QAAQ;QAC/Bd,MAAMC,0BAAc,CAACa,QAAQ;QAC7BZ,OAAO;QACPa,eAAe;QACfC,QAAQ;QACRP,UAAUH;QACVW,QAAQ;QACRC,WAAW;YACTlB,MAAMmB,kCAAkB,CAACC,cAAc;YACvCC,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;IAEA,MAAMC,UAAU;QACd7B,OAAOC,2BAAe,CAACgB,QAAQ;QAC/Bd,MAAMC,0BAAc,CAACa,QAAQ;QAC7BZ,OAAO;QACPa,eAAe;QACfC,QAAQ;QACRP,UAAU;YAACb;YAAWiB;SAAkB;QACxCI,QAAQ;QACRC,WAAW;YACTlB,MAAMmB,kCAAkB,CAACC,cAAc;YACvCC,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;IACA,OAAOC;AACT;AAEO,MAAMnC,uBAAuD,CAACoC;IACnE,MAAM,EAAEC,MAAM,EAAElC,MAAM,EAAEC,UAAU,EAAE,GAAGgC;IACvC;;GAEC,GACD,IAAI,CAACjC,QAAQ;QACX,MAAM,IAAImC,MAAM;IAClB;IACA,OAAOrC,sBAAsBoC,QAAQlC,QAAQC;AAC/C"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "equalsTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return equalsTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _isarraymembertype = require("../../utils/is-array-member-type");
|
|
10
|
-
const _and = require("../and/and");
|
|
11
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
12
|
-
const _equalsarray = require("./equals-array");
|
|
13
|
-
const equalsTransform = (query)=>{
|
|
14
|
-
const { member, values } = query;
|
|
15
|
-
/**
|
|
16
|
-
* If the member is an array, we need to use the array transform
|
|
17
|
-
*/ if ((0, _isarraymembertype.isArrayTypeMember)(query.memberInfo.type)) {
|
|
18
|
-
return (0, _equalsarray.equalsArrayTransform)(query);
|
|
19
|
-
}
|
|
20
|
-
if (!values || values.length === 0) {
|
|
21
|
-
throw new Error('Equals filter must have at least one value');
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* If there is only one value, we can create a simple equals condition
|
|
25
|
-
*/ if (values.length === 1) {
|
|
26
|
-
return (0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_EQUAL, values[0], query.memberInfo);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* If there are multiple values, we need to create an AND condition
|
|
30
|
-
*/ const andCondition = (0, _and.andDuckdbCondition)();
|
|
31
|
-
values.forEach((value)=>{
|
|
32
|
-
andCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_EQUAL, value, query.memberInfo));
|
|
33
|
-
});
|
|
34
|
-
return andCondition;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=equals.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/equals/equals.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { isArrayTypeMember } from '../../utils/is-array-member-type';\nimport { andDuckdbCondition } from '../and/and';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { equalsArrayTransform } from './equals-array';\n\nexport const equalsTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n /**\n * If the member is an array, we need to use the array transform\n */\n if (isArrayTypeMember(query.memberInfo.type)) {\n return equalsArrayTransform(query);\n }\n\n if (!values || values.length === 0) {\n throw new Error('Equals filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (values.length === 1) {\n return baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_EQUAL,\n values[0],\n query.memberInfo\n );\n }\n\n /**\n * If there are multiple values, we need to create an AND condition\n */\n const andCondition = andDuckdbCondition();\n values.forEach((value) => {\n andCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_EQUAL,\n value,\n query.memberInfo\n )\n );\n });\n return andCondition;\n};\n"],"names":["equalsTransform","query","member","values","isArrayTypeMember","memberInfo","type","equalsArrayTransform","length","Error","baseDuckdbCondition","ExpressionType","COMPARE_EQUAL","andCondition","andDuckdbCondition","forEach","value","children","push"],"mappings":";+BAOaA;;;eAAAA;;;4BAPkB;mCACG;qBACC;sCACC;6BAEC;AAE9B,MAAMA,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B;;GAEC,GACD,IAAIG,IAAAA,oCAAiB,EAACH,MAAMI,UAAU,CAACC,IAAI,GAAG;QAC5C,OAAOC,IAAAA,iCAAoB,EAACN;IAC9B;IAEA,IAAI,CAACE,UAAUA,OAAOK,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIN,OAAOK,MAAM,KAAK,GAAG;QACvB,OAAOE,IAAAA,yCAAmB,EACxBR,QACAS,0BAAc,CAACC,aAAa,EAC5BT,MAAM,CAAC,EAAE,EACTF,MAAMI,UAAU;IAEpB;IAEA;;GAEC,GACD,MAAMQ,eAAeC,IAAAA,uBAAkB;IACvCX,OAAOY,OAAO,CAAC,CAACC;QACdH,aAAaI,QAAQ,CAACC,IAAI,CACxBR,IAAAA,yCAAmB,EACjBR,QACAS,0BAAc,CAACC,aAAa,EAC5BI,OACAf,MAAMI,UAAU;IAGtB;IACA,OAAOQ;AACT"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "cubeFilterToDuckdbAST", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return cubeFilterToDuckdbAST;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _typeguards = require("../utils/type-guards");
|
|
9
|
-
const _and = require("./and/and");
|
|
10
|
-
const _contains = require("./contains/contains");
|
|
11
|
-
const _equals = require("./equals/equals");
|
|
12
|
-
const _gt = require("./gt/gt");
|
|
13
|
-
const _gte = require("./gte/gte");
|
|
14
|
-
const _indaterange = require("./in-date-range/in-date-range");
|
|
15
|
-
const _in = require("./in/in");
|
|
16
|
-
const _lt = require("./lt/lt");
|
|
17
|
-
const _lte = require("./lte/lte");
|
|
18
|
-
const _notIndaterange = require("./not-In-date-range/not-In-date-range");
|
|
19
|
-
const _notcontains = require("./not-contains/not-contains");
|
|
20
|
-
const _notequals = require("./not-equals/not-equals");
|
|
21
|
-
const _notin = require("./not-in/not-in");
|
|
22
|
-
const _notset = require("./not-set/not-set");
|
|
23
|
-
const _or = require("./or/or");
|
|
24
|
-
const _set = require("./set/set");
|
|
25
|
-
// Comparison operators
|
|
26
|
-
const cubeFilterOperatorsToDuckdb = (cubeFilter)=>{
|
|
27
|
-
switch(cubeFilter.operator){
|
|
28
|
-
case 'equals':
|
|
29
|
-
return (0, _equals.equalsTransform)(cubeFilter);
|
|
30
|
-
case 'notEquals':
|
|
31
|
-
return (0, _notequals.notEqualsTransform)(cubeFilter);
|
|
32
|
-
case 'in':
|
|
33
|
-
return (0, _in.inTransform)(cubeFilter);
|
|
34
|
-
case 'notIn':
|
|
35
|
-
return (0, _notin.notInTransform)(cubeFilter);
|
|
36
|
-
case 'contains':
|
|
37
|
-
return (0, _contains.containsTransform)(cubeFilter);
|
|
38
|
-
case 'notContains':
|
|
39
|
-
return (0, _notcontains.notContainsTransform)(cubeFilter);
|
|
40
|
-
case 'gt':
|
|
41
|
-
return (0, _gt.gtTransform)(cubeFilter);
|
|
42
|
-
case 'gte':
|
|
43
|
-
return (0, _gte.gteTransform)(cubeFilter);
|
|
44
|
-
case 'lt':
|
|
45
|
-
return (0, _lt.ltTransform)(cubeFilter);
|
|
46
|
-
case 'lte':
|
|
47
|
-
return (0, _lte.lteTransform)(cubeFilter);
|
|
48
|
-
case 'inDateRange':
|
|
49
|
-
return (0, _indaterange.inDataRangeTransform)(cubeFilter);
|
|
50
|
-
case 'notInDateRange':
|
|
51
|
-
return (0, _notIndaterange.notInDataRangeTransform)(cubeFilter);
|
|
52
|
-
case 'notSet':
|
|
53
|
-
{
|
|
54
|
-
return (0, _notset.notSetTransform)(cubeFilter);
|
|
55
|
-
}
|
|
56
|
-
case 'set':
|
|
57
|
-
{
|
|
58
|
-
return (0, _set.setTransform)(cubeFilter);
|
|
59
|
-
}
|
|
60
|
-
default:
|
|
61
|
-
throw new Error('Could not transform the filter');
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const cubeFilterLogicalAndOrToDuckdb = (cubeFilter, whereObj)=>{
|
|
65
|
-
/**
|
|
66
|
-
* This condition is true when you are at the leaf most level of the filter
|
|
67
|
-
*/ if (!(0, _typeguards.isFilterArray)(cubeFilter) && (0, _typeguards.isQueryFilter)(cubeFilter)) {
|
|
68
|
-
const data = cubeFilterOperatorsToDuckdb(cubeFilter);
|
|
69
|
-
if (!data) {
|
|
70
|
-
throw new Error('Could not transform the filter');
|
|
71
|
-
}
|
|
72
|
-
return data;
|
|
73
|
-
}
|
|
74
|
-
if (!(0, _typeguards.isFilterArray)(cubeFilter) && (0, _typeguards.isLogicalAnd)(cubeFilter)) {
|
|
75
|
-
if (cubeFilter.and.length === 0) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
// And or Or we need to recurse
|
|
79
|
-
const andDuckdbExpression = (0, _and.andDuckdbCondition)();
|
|
80
|
-
const data = cubeFilterLogicalAndOrToDuckdb(cubeFilter.and, andDuckdbExpression);
|
|
81
|
-
return data;
|
|
82
|
-
}
|
|
83
|
-
if (!(0, _typeguards.isFilterArray)(cubeFilter) && (0, _typeguards.isLogicalOr)(cubeFilter)) {
|
|
84
|
-
if (cubeFilter.or.length === 0) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
// And or Or we need to recurse
|
|
88
|
-
const orDuckdbExpression = (0, _or.orDuckdbCondition)();
|
|
89
|
-
const data = cubeFilterLogicalAndOrToDuckdb(cubeFilter.or, orDuckdbExpression);
|
|
90
|
-
return data;
|
|
91
|
-
}
|
|
92
|
-
if ((0, _typeguards.isFilterArray)(cubeFilter)) {
|
|
93
|
-
for (const filter of cubeFilter){
|
|
94
|
-
const data = cubeFilterLogicalAndOrToDuckdb(filter, whereObj);
|
|
95
|
-
if (data) {
|
|
96
|
-
if ((0, _typeguards.hasChildren)(whereObj)) {
|
|
97
|
-
whereObj.children.push(data);
|
|
98
|
-
} else {
|
|
99
|
-
whereObj = data;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return whereObj;
|
|
104
|
-
}
|
|
105
|
-
return whereObj;
|
|
106
|
-
};
|
|
107
|
-
const cubeFilterToDuckdbAST = (cubeFilter, ast)=>{
|
|
108
|
-
let whereObj = ast.node.where_clause || null;
|
|
109
|
-
if (cubeFilter.length > 1) {
|
|
110
|
-
console.error('We do not support multiple filters yet');
|
|
111
|
-
throw new Error('We do not support multiple filters yet');
|
|
112
|
-
}
|
|
113
|
-
const filter = cubeFilter[0];
|
|
114
|
-
if ((0, _typeguards.isQueryFilter)(filter)) {
|
|
115
|
-
whereObj = cubeFilterOperatorsToDuckdb(filter);
|
|
116
|
-
}
|
|
117
|
-
if ((0, _typeguards.isLogicalAndOR)(filter)) {
|
|
118
|
-
// And or Or we need to recurse
|
|
119
|
-
whereObj = cubeFilterLogicalAndOrToDuckdb(filter, whereObj || null);
|
|
120
|
-
}
|
|
121
|
-
return whereObj;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-core/src/cube-filter-transformer/factory.ts"],"sourcesContent":["import {\n QueryFilterWithInfo,\n QueryFiltersWithInfo,\n QueryOperatorsWithInfo,\n} from '../cube-to-duckdb/cube-filter-to-duckdb';\nimport { ParsedExpression } from '../types/duckdb-serialization-types/serialization/ParsedExpression';\nimport { SelectNode } from '../types/duckdb-serialization-types/serialization/QueryNode';\nimport { SelectStatement } from '../types/duckdb-serialization-types/serialization/Statement';\nimport {\n hasChildren,\n isFilterArray,\n isLogicalAnd,\n isLogicalAndOR,\n isLogicalOr,\n isQueryFilter,\n} from '../utils/type-guards';\nimport { andDuckdbCondition } from './and/and';\nimport { containsTransform } from './contains/contains';\nimport { equalsTransform } from './equals/equals';\nimport { gtTransform } from './gt/gt';\nimport { gteTransform } from './gte/gte';\nimport { inDataRangeTransform } from './in-date-range/in-date-range';\nimport { inTransform } from './in/in';\nimport { ltTransform } from './lt/lt';\nimport { lteTransform } from './lte/lte';\nimport { notInDataRangeTransform } from './not-In-date-range/not-In-date-range';\nimport { notContainsTransform } from './not-contains/not-contains';\nimport { notEqualsTransform } from './not-equals/not-equals';\nimport { notInTransform } from './not-in/not-in';\nimport { notSetTransform } from './not-set/not-set';\nimport { orDuckdbCondition } from './or/or';\nimport { setTransform } from './set/set';\n\nexport type CubeToParseExpressionTransform = (\n query: QueryOperatorsWithInfo\n) => ParsedExpression;\n\n// Comparison operators\nconst cubeFilterOperatorsToDuckdb = (cubeFilter: QueryOperatorsWithInfo) => {\n switch (cubeFilter.operator) {\n case 'equals':\n return equalsTransform(cubeFilter);\n case 'notEquals':\n return notEqualsTransform(cubeFilter);\n case 'in':\n return inTransform(cubeFilter);\n case 'notIn':\n return notInTransform(cubeFilter);\n case 'contains':\n return containsTransform(cubeFilter);\n case 'notContains':\n return notContainsTransform(cubeFilter);\n case 'gt':\n return gtTransform(cubeFilter);\n case 'gte':\n return gteTransform(cubeFilter);\n case 'lt':\n return ltTransform(cubeFilter);\n case 'lte':\n return lteTransform(cubeFilter);\n case 'inDateRange':\n return inDataRangeTransform(cubeFilter);\n case 'notInDateRange':\n return notInDataRangeTransform(cubeFilter);\n case 'notSet': {\n return notSetTransform(cubeFilter);\n }\n case 'set': {\n return setTransform(cubeFilter);\n }\n default:\n throw new Error('Could not transform the filter');\n }\n};\n\nconst cubeFilterLogicalAndOrToDuckdb = (\n cubeFilter: QueryFilterWithInfo,\n whereObj: ParsedExpression | null\n): ParsedExpression | null => {\n /**\n * This condition is true when you are at the leaf most level of the filter\n */\n if (!isFilterArray(cubeFilter) && isQueryFilter(cubeFilter)) {\n const data = cubeFilterOperatorsToDuckdb(cubeFilter);\n if (!data) {\n throw new Error('Could not transform the filter');\n }\n return data;\n }\n\n if (!isFilterArray(cubeFilter) && isLogicalAnd(cubeFilter)) {\n if (cubeFilter.and.length === 0) {\n return null;\n }\n // And or Or we need to recurse\n const andDuckdbExpression = andDuckdbCondition();\n const data = cubeFilterLogicalAndOrToDuckdb(\n cubeFilter.and,\n andDuckdbExpression\n );\n return data;\n }\n\n if (!isFilterArray(cubeFilter) && isLogicalOr(cubeFilter)) {\n if (cubeFilter.or.length === 0) {\n return null;\n }\n // And or Or we need to recurse\n const orDuckdbExpression = orDuckdbCondition();\n const data = cubeFilterLogicalAndOrToDuckdb(\n cubeFilter.or,\n orDuckdbExpression\n );\n return data;\n }\n\n if (isFilterArray(cubeFilter)) {\n for (const filter of cubeFilter) {\n const data = cubeFilterLogicalAndOrToDuckdb(filter, whereObj);\n if (data) {\n if (hasChildren(whereObj)) {\n whereObj.children.push(data);\n } else {\n whereObj = data;\n }\n }\n }\n return whereObj;\n }\n return whereObj;\n};\n\nexport const cubeFilterToDuckdbAST = (\n cubeFilter: QueryFiltersWithInfo,\n ast: SelectStatement\n) => {\n let whereObj: ParsedExpression | null | undefined =\n (ast.node as SelectNode).where_clause || null;\n\n if (cubeFilter.length > 1) {\n console.error('We do not support multiple filters yet');\n throw new Error('We do not support multiple filters yet');\n }\n\n const filter = cubeFilter[0];\n\n if (isQueryFilter(filter)) {\n whereObj = cubeFilterOperatorsToDuckdb(filter);\n }\n\n if (isLogicalAndOR(filter)) {\n // And or Or we need to recurse\n whereObj = cubeFilterLogicalAndOrToDuckdb(filter, whereObj || null);\n }\n\n return whereObj;\n};\n"],"names":["cubeFilterToDuckdbAST","cubeFilterOperatorsToDuckdb","cubeFilter","operator","equalsTransform","notEqualsTransform","inTransform","notInTransform","containsTransform","notContainsTransform","gtTransform","gteTransform","ltTransform","lteTransform","inDataRangeTransform","notInDataRangeTransform","notSetTransform","setTransform","Error","cubeFilterLogicalAndOrToDuckdb","whereObj","isFilterArray","isQueryFilter","data","isLogicalAnd","and","length","andDuckdbExpression","andDuckdbCondition","isLogicalOr","or","orDuckdbExpression","orDuckdbCondition","filter","hasChildren","children","push","ast","node","where_clause","console","error","isLogicalAndOR"],"mappings":";+BAoIaA;;;eAAAA;;;4BArHN;qBAC4B;0BACD;wBACF;oBACJ;qBACC;6BACQ;oBACT;oBACA;qBACC;gCACW;6BACH;2BACF;uBACJ;wBACC;oBACE;qBACL;AAM7B,uBAAuB;AACvB,MAAMC,8BAA8B,CAACC;IACnC,OAAQA,WAAWC,QAAQ;QACzB,KAAK;YACH,OAAOC,IAAAA,uBAAe,EAACF;QACzB,KAAK;YACH,OAAOG,IAAAA,6BAAkB,EAACH;QAC5B,KAAK;YACH,OAAOI,IAAAA,eAAW,EAACJ;QACrB,KAAK;YACH,OAAOK,IAAAA,qBAAc,EAACL;QACxB,KAAK;YACH,OAAOM,IAAAA,2BAAiB,EAACN;QAC3B,KAAK;YACH,OAAOO,IAAAA,iCAAoB,EAACP;QAC9B,KAAK;YACH,OAAOQ,IAAAA,eAAW,EAACR;QACrB,KAAK;YACH,OAAOS,IAAAA,iBAAY,EAACT;QACtB,KAAK;YACH,OAAOU,IAAAA,eAAW,EAACV;QACrB,KAAK;YACH,OAAOW,IAAAA,iBAAY,EAACX;QACtB,KAAK;YACH,OAAOY,IAAAA,iCAAoB,EAACZ;QAC9B,KAAK;YACH,OAAOa,IAAAA,uCAAuB,EAACb;QACjC,KAAK;YAAU;gBACb,OAAOc,IAAAA,uBAAe,EAACd;YACzB;QACA,KAAK;YAAO;gBACV,OAAOe,IAAAA,iBAAY,EAACf;YACtB;QACA;YACE,MAAM,IAAIgB,MAAM;IACpB;AACF;AAEA,MAAMC,iCAAiC,CACrCjB,YACAkB;IAEA;;GAEC,GACD,IAAI,CAACC,IAAAA,yBAAa,EAACnB,eAAeoB,IAAAA,yBAAa,EAACpB,aAAa;QAC3D,MAAMqB,OAAOtB,4BAA4BC;QACzC,IAAI,CAACqB,MAAM;YACT,MAAM,IAAIL,MAAM;QAClB;QACA,OAAOK;IACT;IAEA,IAAI,CAACF,IAAAA,yBAAa,EAACnB,eAAesB,IAAAA,wBAAY,EAACtB,aAAa;QAC1D,IAAIA,WAAWuB,GAAG,CAACC,MAAM,KAAK,GAAG;YAC/B,OAAO;QACT;QACA,+BAA+B;QAC/B,MAAMC,sBAAsBC,IAAAA,uBAAkB;QAC9C,MAAML,OAAOJ,+BACXjB,WAAWuB,GAAG,EACdE;QAEF,OAAOJ;IACT;IAEA,IAAI,CAACF,IAAAA,yBAAa,EAACnB,eAAe2B,IAAAA,uBAAW,EAAC3B,aAAa;QACzD,IAAIA,WAAW4B,EAAE,CAACJ,MAAM,KAAK,GAAG;YAC9B,OAAO;QACT;QACA,+BAA+B;QAC/B,MAAMK,qBAAqBC,IAAAA,qBAAiB;QAC5C,MAAMT,OAAOJ,+BACXjB,WAAW4B,EAAE,EACbC;QAEF,OAAOR;IACT;IAEA,IAAIF,IAAAA,yBAAa,EAACnB,aAAa;QAC7B,KAAK,MAAM+B,UAAU/B,WAAY;YAC/B,MAAMqB,OAAOJ,+BAA+Bc,QAAQb;YACpD,IAAIG,MAAM;gBACR,IAAIW,IAAAA,uBAAW,EAACd,WAAW;oBACzBA,SAASe,QAAQ,CAACC,IAAI,CAACb;gBACzB,OAAO;oBACLH,WAAWG;gBACb;YACF;QACF;QACA,OAAOH;IACT;IACA,OAAOA;AACT;AAEO,MAAMpB,wBAAwB,CACnCE,YACAmC;IAEA,IAAIjB,WACF,AAACiB,IAAIC,IAAI,CAAgBC,YAAY,IAAI;IAE3C,IAAIrC,WAAWwB,MAAM,GAAG,GAAG;QACzBc,QAAQC,KAAK,CAAC;QACd,MAAM,IAAIvB,MAAM;IAClB;IAEA,MAAMe,SAAS/B,UAAU,CAAC,EAAE;IAE5B,IAAIoB,IAAAA,yBAAa,EAACW,SAAS;QACzBb,WAAWnB,4BAA4BgC;IACzC;IAEA,IAAIS,IAAAA,0BAAc,EAACT,SAAS;QAC1B,+BAA+B;QAC/Bb,WAAWD,+BAA+Bc,QAAQb,YAAY;IAChE;IAEA,OAAOA;AACT"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "gtTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return gtTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
-
const _or = require("../or/or");
|
|
11
|
-
const gtTransform = (query)=>{
|
|
12
|
-
const { member, values } = query;
|
|
13
|
-
if (!values || values.length === 0) {
|
|
14
|
-
throw new Error('GT filter must have at least one value');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* If there is only one value, we can create a simple equals condition
|
|
18
|
-
*/ if (values.length === 1) {
|
|
19
|
-
return (0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_GREATERTHAN, values[0], query.memberInfo);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* If there are multiple values, we need to create an OR condition
|
|
23
|
-
*/ const orCondition = (0, _or.orDuckdbCondition)();
|
|
24
|
-
values.forEach((value)=>{
|
|
25
|
-
orCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_GREATERTHAN, value, query.memberInfo));
|
|
26
|
-
});
|
|
27
|
-
return orCondition;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=gt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/gt/gt.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport const gtTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n if (!values || values.length === 0) {\n throw new Error('GT filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (values.length === 1) {\n return baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_GREATERTHAN,\n values[0],\n query.memberInfo\n );\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_GREATERTHAN,\n value,\n query.memberInfo\n )\n );\n });\n return orCondition;\n};\n"],"names":["gtTransform","query","member","values","length","Error","baseDuckdbCondition","ExpressionType","COMPARE_GREATERTHAN","memberInfo","orCondition","orDuckdbCondition","forEach","value","children","push"],"mappings":";+BAKaA;;;eAAAA;;;4BALkB;sCACK;oBAEF;AAE3B,MAAMA,cAA8C,CAACC;IAC1D,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAOE,IAAAA,yCAAmB,EACxBJ,QACAK,0BAAc,CAACC,mBAAmB,EAClCL,MAAM,CAAC,EAAE,EACTF,MAAMQ,UAAU;IAEpB;IAEA;;GAEC,GACD,MAAMC,cAAcC,IAAAA,qBAAiB;IACrCR,OAAOS,OAAO,CAAC,CAACC;QACdH,YAAYI,QAAQ,CAACC,IAAI,CACvBT,IAAAA,yCAAmB,EACjBJ,QACAK,0BAAc,CAACC,mBAAmB,EAClCK,OACAZ,MAAMQ,UAAU;IAGtB;IACA,OAAOC;AACT"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "gteTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return gteTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
-
const _or = require("../or/or");
|
|
11
|
-
const gteTransform = (query)=>{
|
|
12
|
-
const { member, values } = query;
|
|
13
|
-
if (!values || values.length === 0) {
|
|
14
|
-
throw new Error('GTE filter must have at least one value');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* If there is only one value, we can create a simple equals condition
|
|
18
|
-
*/ if (values.length === 1) {
|
|
19
|
-
return (0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_GREATERTHANOREQUALTO, values[0], query.memberInfo);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* If there are multiple values, we need to create an OR condition
|
|
23
|
-
*/ const orCondition = (0, _or.orDuckdbCondition)();
|
|
24
|
-
values.forEach((value)=>{
|
|
25
|
-
orCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_GREATERTHANOREQUALTO, value, query.memberInfo));
|
|
26
|
-
});
|
|
27
|
-
return orCondition;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=gte.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/gte/gte.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport const gteTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n if (!values || values.length === 0) {\n throw new Error('GTE filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (values.length === 1) {\n return baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_GREATERTHANOREQUALTO,\n values[0],\n query.memberInfo\n );\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_GREATERTHANOREQUALTO,\n value,\n query.memberInfo\n )\n );\n });\n return orCondition;\n};\n"],"names":["gteTransform","query","member","values","length","Error","baseDuckdbCondition","ExpressionType","COMPARE_GREATERTHANOREQUALTO","memberInfo","orCondition","orDuckdbCondition","forEach","value","children","push"],"mappings":";+BAKaA;;;eAAAA;;;4BALkB;sCACK;oBAEF;AAE3B,MAAMA,eAA+C,CAACC;IAC3D,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAOE,IAAAA,yCAAmB,EACxBJ,QACAK,0BAAc,CAACC,4BAA4B,EAC3CL,MAAM,CAAC,EAAE,EACTF,MAAMQ,UAAU;IAEpB;IAEA;;GAEC,GACD,MAAMC,cAAcC,IAAAA,qBAAiB;IACrCR,OAAOS,OAAO,CAAC,CAACC;QACdH,YAAYI,QAAQ,CAACC,IAAI,CACvBT,IAAAA,yCAAmB,EACjBJ,QACAK,0BAAc,CAACC,4BAA4B,EAC3CK,OACAZ,MAAMQ,UAAU;IAGtB;IACA,OAAOC;AACT"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "inTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return inTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _constants = require("../../member-formatters/constants");
|
|
9
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
10
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
11
|
-
const inDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
12
|
-
const sqlTreeValues = values.map((value)=>{
|
|
13
|
-
return {
|
|
14
|
-
class: _Expression.ExpressionClass.CONSTANT,
|
|
15
|
-
type: _Expression.ExpressionType.VALUE_CONSTANT,
|
|
16
|
-
alias: '',
|
|
17
|
-
value: (0, _baseconditionbuilder.valueBuilder)(value, memberInfo)
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
const columnRef = {
|
|
21
|
-
class: 'COLUMN_REF',
|
|
22
|
-
type: 'COLUMN_REF',
|
|
23
|
-
alias: '',
|
|
24
|
-
column_names: columnName.split(_constants.COLUMN_NAME_DELIMITER)
|
|
25
|
-
};
|
|
26
|
-
switch(memberInfo.type){
|
|
27
|
-
case 'number_array':
|
|
28
|
-
case 'string_array':
|
|
29
|
-
{
|
|
30
|
-
return {
|
|
31
|
-
class: _Expression.ExpressionClass.FUNCTION,
|
|
32
|
-
type: _Expression.ExpressionType.FUNCTION,
|
|
33
|
-
alias: '',
|
|
34
|
-
function_name: '&&',
|
|
35
|
-
schema: '',
|
|
36
|
-
children: [
|
|
37
|
-
columnRef,
|
|
38
|
-
{
|
|
39
|
-
class: _Expression.ExpressionClass.OPERATOR,
|
|
40
|
-
type: _Expression.ExpressionType.ARRAY_CONSTRUCTOR,
|
|
41
|
-
alias: '',
|
|
42
|
-
children: sqlTreeValues
|
|
43
|
-
}
|
|
44
|
-
],
|
|
45
|
-
filter: null,
|
|
46
|
-
order_bys: {
|
|
47
|
-
type: 'ORDER_MODIFIER',
|
|
48
|
-
orders: []
|
|
49
|
-
},
|
|
50
|
-
distinct: false,
|
|
51
|
-
is_operator: true,
|
|
52
|
-
export_state: false,
|
|
53
|
-
catalog: ''
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
default:
|
|
57
|
-
{
|
|
58
|
-
return {
|
|
59
|
-
class: _Expression.ExpressionClass.OPERATOR,
|
|
60
|
-
type: _Expression.ExpressionType.COMPARE_IN,
|
|
61
|
-
alias: '',
|
|
62
|
-
children: [
|
|
63
|
-
columnRef,
|
|
64
|
-
...sqlTreeValues
|
|
65
|
-
]
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
const inTransform = (query)=>{
|
|
71
|
-
const { member, values, memberInfo } = query;
|
|
72
|
-
if (!values) {
|
|
73
|
-
throw new Error('In filter must have at least one value');
|
|
74
|
-
}
|
|
75
|
-
return inDuckDbCondition(member, values, memberInfo);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
//# sourceMappingURL=in.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/in/in.ts"],"sourcesContent":["import { COLUMN_NAME_DELIMITER } from '../../member-formatters/constants';\nimport { Dimension, Measure } from '../../types/cube-types/table';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nconst inDuckDbCondition = (\n columnName: string,\n values: string[],\n memberInfo: Measure | Dimension\n) => {\n const sqlTreeValues = values.map((value) => {\n return {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n value: valueBuilder(value, memberInfo),\n };\n });\n const columnRef = {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n };\n switch (memberInfo.type) {\n case 'number_array':\n case 'string_array': {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '&&',\n schema: '',\n children: [\n columnRef,\n {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.ARRAY_CONSTRUCTOR,\n alias: '',\n children: sqlTreeValues,\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n }\n default: {\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.COMPARE_IN,\n alias: '',\n children: [columnRef, ...sqlTreeValues],\n };\n }\n }\n};\n\nexport const inTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n if (!values) {\n throw new Error('In filter must have at least one value');\n }\n return inDuckDbCondition(member, values, memberInfo);\n};\n"],"names":["inTransform","inDuckDbCondition","columnName","values","memberInfo","sqlTreeValues","map","value","class","ExpressionClass","CONSTANT","type","ExpressionType","VALUE_CONSTANT","alias","valueBuilder","columnRef","column_names","split","COLUMN_NAME_DELIMITER","FUNCTION","function_name","schema","children","OPERATOR","ARRAY_CONSTRUCTOR","filter","order_bys","orders","distinct","is_operator","export_state","catalog","COMPARE_IN","query","member","Error"],"mappings":";+BAoEaA;;;eAAAA;;;2BApEyB;4BAK/B;sCACsB;AAG7B,MAAMC,oBAAoB,CACxBC,YACAC,QACAC;IAEA,MAAMC,gBAAgBF,OAAOG,GAAG,CAAC,CAACC;QAChC,OAAO;YACLC,OAAOC,2BAAe,CAACC,QAAQ;YAC/BC,MAAMC,0BAAc,CAACC,cAAc;YACnCC,OAAO;YACPP,OAAOQ,IAAAA,kCAAY,EAACR,OAAOH;QAC7B;IACF;IACA,MAAMY,YAAY;QAChBR,OAAO;QACPG,MAAM;QACNG,OAAO;QACPG,cAAcf,WAAWgB,KAAK,CAACC,gCAAqB;IACtD;IACA,OAAQf,WAAWO,IAAI;QACrB,KAAK;QACL,KAAK;YAAgB;gBACnB,OAAO;oBACLH,OAAOC,2BAAe,CAACW,QAAQ;oBAC/BT,MAAMC,0BAAc,CAACQ,QAAQ;oBAC7BN,OAAO;oBACPO,eAAe;oBACfC,QAAQ;oBACRC,UAAU;wBACRP;wBACA;4BACER,OAAOC,2BAAe,CAACe,QAAQ;4BAC/Bb,MAAMC,0BAAc,CAACa,iBAAiB;4BACtCX,OAAO;4BACPS,UAAUlB;wBACZ;qBACD;oBACDqB,QAAQ;oBACRC,WAAW;wBACThB,MAAM;wBACNiB,QAAQ,EAAE;oBACZ;oBACAC,UAAU;oBACVC,aAAa;oBACbC,cAAc;oBACdC,SAAS;gBACX;YACF;QACA;YAAS;gBACP,OAAO;oBACLxB,OAAOC,2BAAe,CAACe,QAAQ;oBAC/Bb,MAAMC,0BAAc,CAACqB,UAAU;oBAC/BnB,OAAO;oBACPS,UAAU;wBAACP;2BAAcX;qBAAc;gBACzC;YACF;IACF;AACF;AAEO,MAAML,cAA8C,CAACkC;IAC1D,MAAM,EAAEC,MAAM,EAAEhC,MAAM,EAAEC,UAAU,EAAE,GAAG8B;IACvC,IAAI,CAAC/B,QAAQ;QACX,MAAM,IAAIiC,MAAM;IAClB;IACA,OAAOnC,kBAAkBkC,QAAQhC,QAAQC;AAC3C"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "inDataRangeTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return inDataRangeTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _and = require("../and/and");
|
|
10
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
11
|
-
const inDataRangeTransform = (query)=>{
|
|
12
|
-
const { member, values } = query;
|
|
13
|
-
if (!values || values.length === 0) {
|
|
14
|
-
throw new Error('GT filter must have at least one value');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* If there are multiple values, we need to create an OR condition
|
|
18
|
-
*/ const andCondition = (0, _and.andDuckdbCondition)();
|
|
19
|
-
andCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_GREATERTHANOREQUALTO, values[0], query.memberInfo));
|
|
20
|
-
andCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_LESSTHANOREQUALTO, values[1], query.memberInfo));
|
|
21
|
-
return andCondition;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=in-date-range.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/in-date-range/in-date-range.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { andDuckdbCondition } from '../and/and';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nexport const inDataRangeTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n if (!values || values.length === 0) {\n throw new Error('GT filter must have at least one value');\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const andCondition = andDuckdbCondition();\n\n andCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_GREATERTHANOREQUALTO,\n values[0],\n query.memberInfo\n )\n );\n\n andCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_LESSTHANOREQUALTO,\n values[1],\n query.memberInfo\n )\n );\n\n return andCondition;\n};\n"],"names":["inDataRangeTransform","query","member","values","length","Error","andCondition","andDuckdbCondition","children","push","baseDuckdbCondition","ExpressionType","COMPARE_GREATERTHANOREQUALTO","memberInfo","COMPARE_LESSTHANOREQUALTO"],"mappings":";+BAKaA;;;eAAAA;;;4BALkB;qBACI;sCACC;AAG7B,MAAMA,uBAAuD,CAACC;IACnE,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,MAAMC,eAAeC,IAAAA,uBAAkB;IAEvCD,aAAaE,QAAQ,CAACC,IAAI,CACxBC,IAAAA,yCAAmB,EACjBR,QACAS,0BAAc,CAACC,4BAA4B,EAC3CT,MAAM,CAAC,EAAE,EACTF,MAAMY,UAAU;IAIpBP,aAAaE,QAAQ,CAACC,IAAI,CACxBC,IAAAA,yCAAmB,EACjBR,QACAS,0BAAc,CAACG,yBAAyB,EACxCX,MAAM,CAAC,EAAE,EACTF,MAAMY,UAAU;IAIpB,OAAOP;AACT"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "ltTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return ltTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
-
const _or = require("../or/or");
|
|
11
|
-
const ltTransform = (query)=>{
|
|
12
|
-
const { member, values } = query;
|
|
13
|
-
if (!values || values.length === 0) {
|
|
14
|
-
throw new Error('lt filter must have at least one value');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* If there is only one value, we can create a simple equals condition
|
|
18
|
-
*/ if (values.length === 1) {
|
|
19
|
-
return (0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_LESSTHAN, values[0], query.memberInfo);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* If there are multiple values, we need to create an OR condition
|
|
23
|
-
*/ const orCondition = (0, _or.orDuckdbCondition)();
|
|
24
|
-
values.forEach((value)=>{
|
|
25
|
-
orCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_LESSTHAN, value, query.memberInfo));
|
|
26
|
-
});
|
|
27
|
-
return orCondition;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=lt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/lt/lt.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport const ltTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n if (!values || values.length === 0) {\n throw new Error('lt filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (values.length === 1) {\n return baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_LESSTHAN,\n values[0],\n query.memberInfo\n );\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_LESSTHAN,\n value,\n query.memberInfo\n )\n );\n });\n return orCondition;\n};\n"],"names":["ltTransform","query","member","values","length","Error","baseDuckdbCondition","ExpressionType","COMPARE_LESSTHAN","memberInfo","orCondition","orDuckdbCondition","forEach","value","children","push"],"mappings":";+BAKaA;;;eAAAA;;;4BALkB;sCACK;oBAEF;AAE3B,MAAMA,cAA8C,CAACC;IAC1D,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAOE,IAAAA,yCAAmB,EACxBJ,QACAK,0BAAc,CAACC,gBAAgB,EAC/BL,MAAM,CAAC,EAAE,EACTF,MAAMQ,UAAU;IAEpB;IAEA;;GAEC,GACD,MAAMC,cAAcC,IAAAA,qBAAiB;IACrCR,OAAOS,OAAO,CAAC,CAACC;QACdH,YAAYI,QAAQ,CAACC,IAAI,CACvBT,IAAAA,yCAAmB,EACjBJ,QACAK,0BAAc,CAACC,gBAAgB,EAC/BK,OACAZ,MAAMQ,UAAU;IAGtB;IACA,OAAOC;AACT"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "lteTransform", {
|
|
3
|
-
enumerable: true,
|
|
4
|
-
get: function() {
|
|
5
|
-
return lteTransform;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
-
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
-
const _or = require("../or/or");
|
|
11
|
-
const lteTransform = (query)=>{
|
|
12
|
-
const { member, values } = query;
|
|
13
|
-
if (!values || values.length === 0) {
|
|
14
|
-
throw new Error('lte filter must have at least one value');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* If there is only one value, we can create a simple equals condition
|
|
18
|
-
*/ if (values.length === 1) {
|
|
19
|
-
return (0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_LESSTHANOREQUALTO, values[0], query.memberInfo);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* If there are multiple values, we need to create an OR condition
|
|
23
|
-
*/ const orCondition = (0, _or.orDuckdbCondition)();
|
|
24
|
-
values.forEach((value)=>{
|
|
25
|
-
orCondition.children.push((0, _baseconditionbuilder.baseDuckdbCondition)(member, _Expression.ExpressionType.COMPARE_LESSTHANOREQUALTO, value, query.memberInfo));
|
|
26
|
-
});
|
|
27
|
-
return orCondition;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=lte.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/lte/lte.ts"],"sourcesContent":["import { ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { baseDuckdbCondition } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport const lteTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values } = query;\n\n if (!values || values.length === 0) {\n throw new Error('lte filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple equals condition\n */\n if (values.length === 1) {\n return baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_LESSTHANOREQUALTO,\n values[0],\n query.memberInfo\n );\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n baseDuckdbCondition(\n member,\n ExpressionType.COMPARE_LESSTHANOREQUALTO,\n value,\n query.memberInfo\n )\n );\n });\n return orCondition;\n};\n"],"names":["lteTransform","query","member","values","length","Error","baseDuckdbCondition","ExpressionType","COMPARE_LESSTHANOREQUALTO","memberInfo","orCondition","orDuckdbCondition","forEach","value","children","push"],"mappings":";+BAKaA;;;eAAAA;;;4BALkB;sCACK;oBAEF;AAE3B,MAAMA,eAA+C,CAACC;IAC3D,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAE3B,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAOE,IAAAA,yCAAmB,EACxBJ,QACAK,0BAAc,CAACC,yBAAyB,EACxCL,MAAM,CAAC,EAAE,EACTF,MAAMQ,UAAU;IAEpB;IAEA;;GAEC,GACD,MAAMC,cAAcC,IAAAA,qBAAiB;IACrCR,OAAOS,OAAO,CAAC,CAACC;QACdH,YAAYI,QAAQ,CAACC,IAAI,CACvBT,IAAAA,yCAAmB,EACjBJ,QACAK,0BAAc,CAACC,yBAAyB,EACxCK,OACAZ,MAAMQ,UAAU;IAGtB;IACA,OAAOC;AACT"}
|