@tinqerjs/tinqer 0.0.21
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/dist/expressions/expression.d.ts +313 -0
- package/dist/expressions/expression.d.ts.map +1 -0
- package/dist/expressions/expression.js +56 -0
- package/dist/expressions/expression.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/linq/database-context.d.ts +18 -0
- package/dist/linq/database-context.d.ts.map +1 -0
- package/dist/linq/database-context.js +23 -0
- package/dist/linq/database-context.js.map +1 -0
- package/dist/linq/database-schema.d.ts +18 -0
- package/dist/linq/database-schema.d.ts.map +1 -0
- package/dist/linq/database-schema.js +23 -0
- package/dist/linq/database-schema.js.map +1 -0
- package/dist/linq/deletable.d.ts +30 -0
- package/dist/linq/deletable.d.ts.map +1 -0
- package/dist/linq/deletable.js +46 -0
- package/dist/linq/deletable.js.map +1 -0
- package/dist/linq/delete-from.d.ts +19 -0
- package/dist/linq/delete-from.d.ts.map +1 -0
- package/dist/linq/delete-from.js +11 -0
- package/dist/linq/delete-from.js.map +1 -0
- package/dist/linq/from.d.ts +19 -0
- package/dist/linq/from.d.ts.map +1 -0
- package/dist/linq/from.js +11 -0
- package/dist/linq/from.js.map +1 -0
- package/dist/linq/functions.d.ts +96 -0
- package/dist/linq/functions.d.ts.map +1 -0
- package/dist/linq/functions.js +136 -0
- package/dist/linq/functions.js.map +1 -0
- package/dist/linq/grouping.d.ts +26 -0
- package/dist/linq/grouping.d.ts.map +1 -0
- package/dist/linq/grouping.js +47 -0
- package/dist/linq/grouping.js.map +1 -0
- package/dist/linq/insert-into.d.ts +19 -0
- package/dist/linq/insert-into.d.ts.map +1 -0
- package/dist/linq/insert-into.js +11 -0
- package/dist/linq/insert-into.js.map +1 -0
- package/dist/linq/insertable.d.ts +30 -0
- package/dist/linq/insertable.d.ts.map +1 -0
- package/dist/linq/insertable.js +37 -0
- package/dist/linq/insertable.js.map +1 -0
- package/dist/linq/query-builder.d.ts +24 -0
- package/dist/linq/query-builder.d.ts.map +1 -0
- package/dist/linq/query-builder.js +21 -0
- package/dist/linq/query-builder.js.map +1 -0
- package/dist/linq/queryable.d.ts +61 -0
- package/dist/linq/queryable.d.ts.map +1 -0
- package/dist/linq/queryable.js +148 -0
- package/dist/linq/queryable.js.map +1 -0
- package/dist/linq/terminal-query.d.ts +10 -0
- package/dist/linq/terminal-query.d.ts.map +1 -0
- package/dist/linq/terminal-query.js +12 -0
- package/dist/linq/terminal-query.js.map +1 -0
- package/dist/linq/updatable.d.ts +57 -0
- package/dist/linq/updatable.d.ts.map +1 -0
- package/dist/linq/updatable.js +84 -0
- package/dist/linq/updatable.js.map +1 -0
- package/dist/linq/update.d.ts +19 -0
- package/dist/linq/update.d.ts.map +1 -0
- package/dist/linq/update.js +11 -0
- package/dist/linq/update.js.map +1 -0
- package/dist/parser/ast-types.d.ts +114 -0
- package/dist/parser/ast-types.d.ts.map +1 -0
- package/dist/parser/ast-types.js +6 -0
- package/dist/parser/ast-types.js.map +1 -0
- package/dist/parser/ast-visitor.d.ts +32 -0
- package/dist/parser/ast-visitor.d.ts.map +1 -0
- package/dist/parser/ast-visitor.js +666 -0
- package/dist/parser/ast-visitor.js.map +1 -0
- package/dist/parser/normalize-joins.d.ts +3 -0
- package/dist/parser/normalize-joins.d.ts.map +1 -0
- package/dist/parser/normalize-joins.js +109 -0
- package/dist/parser/normalize-joins.js.map +1 -0
- package/dist/parser/normalize-window-filters.d.ts +13 -0
- package/dist/parser/normalize-window-filters.d.ts.map +1 -0
- package/dist/parser/normalize-window-filters.js +212 -0
- package/dist/parser/normalize-window-filters.js.map +1 -0
- package/dist/parser/oxc-parser.d.ts +11 -0
- package/dist/parser/oxc-parser.d.ts.map +1 -0
- package/dist/parser/oxc-parser.js +27 -0
- package/dist/parser/oxc-parser.js.map +1 -0
- package/dist/parser/parse-cache-config.d.ts +31 -0
- package/dist/parser/parse-cache-config.d.ts.map +1 -0
- package/dist/parser/parse-cache-config.js +33 -0
- package/dist/parser/parse-cache-config.js.map +1 -0
- package/dist/parser/parse-cache.d.ts +65 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +146 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/parse-query.d.ts +24 -0
- package/dist/parser/parse-query.d.ts.map +1 -0
- package/dist/parser/parse-query.js +118 -0
- package/dist/parser/parse-query.js.map +1 -0
- package/dist/parser/types.d.ts +11 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +2 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/plans/delete-plan.d.ts +44 -0
- package/dist/plans/delete-plan.d.ts.map +1 -0
- package/dist/plans/delete-plan.js +209 -0
- package/dist/plans/delete-plan.js.map +1 -0
- package/dist/plans/insert-plan.d.ts +50 -0
- package/dist/plans/insert-plan.d.ts.map +1 -0
- package/dist/plans/insert-plan.js +240 -0
- package/dist/plans/insert-plan.js.map +1 -0
- package/dist/plans/plan-execution.d.ts +39 -0
- package/dist/plans/plan-execution.d.ts.map +1 -0
- package/dist/plans/plan-execution.js +32 -0
- package/dist/plans/plan-execution.js.map +1 -0
- package/dist/plans/select-plan.d.ts +74 -0
- package/dist/plans/select-plan.d.ts.map +1 -0
- package/dist/plans/select-plan.js +551 -0
- package/dist/plans/select-plan.js.map +1 -0
- package/dist/plans/update-plan.d.ts +61 -0
- package/dist/plans/update-plan.d.ts.map +1 -0
- package/dist/plans/update-plan.js +297 -0
- package/dist/plans/update-plan.js.map +1 -0
- package/dist/query-tree/operations.d.ts +430 -0
- package/dist/query-tree/operations.d.ts.map +1 -0
- package/dist/query-tree/operations.js +8 -0
- package/dist/query-tree/operations.js.map +1 -0
- package/dist/visitors/aggregates/average.d.ts +11 -0
- package/dist/visitors/aggregates/average.d.ts.map +1 -0
- package/dist/visitors/aggregates/average.js +56 -0
- package/dist/visitors/aggregates/average.js.map +1 -0
- package/dist/visitors/aggregates/max.d.ts +11 -0
- package/dist/visitors/aggregates/max.d.ts.map +1 -0
- package/dist/visitors/aggregates/max.js +56 -0
- package/dist/visitors/aggregates/max.js.map +1 -0
- package/dist/visitors/aggregates/min.d.ts +11 -0
- package/dist/visitors/aggregates/min.d.ts.map +1 -0
- package/dist/visitors/aggregates/min.js +56 -0
- package/dist/visitors/aggregates/min.js.map +1 -0
- package/dist/visitors/aggregates/sum.d.ts +11 -0
- package/dist/visitors/aggregates/sum.d.ts.map +1 -0
- package/dist/visitors/aggregates/sum.js +56 -0
- package/dist/visitors/aggregates/sum.js.map +1 -0
- package/dist/visitors/ast-visitor.d.ts +15 -0
- package/dist/visitors/ast-visitor.d.ts.map +1 -0
- package/dist/visitors/ast-visitor.js +20 -0
- package/dist/visitors/ast-visitor.js.map +1 -0
- package/dist/visitors/boolean/comparison.d.ts +12 -0
- package/dist/visitors/boolean/comparison.d.ts.map +1 -0
- package/dist/visitors/boolean/comparison.js +128 -0
- package/dist/visitors/boolean/comparison.js.map +1 -0
- package/dist/visitors/boolean/logical.d.ts +12 -0
- package/dist/visitors/boolean/logical.d.ts.map +1 -0
- package/dist/visitors/boolean/logical.js +68 -0
- package/dist/visitors/boolean/logical.js.map +1 -0
- package/dist/visitors/boolean-predicates/all.d.ts +11 -0
- package/dist/visitors/boolean-predicates/all.d.ts.map +1 -0
- package/dist/visitors/boolean-predicates/all.js +49 -0
- package/dist/visitors/boolean-predicates/all.js.map +1 -0
- package/dist/visitors/boolean-predicates/any.d.ts +11 -0
- package/dist/visitors/boolean-predicates/any.d.ts.map +1 -0
- package/dist/visitors/boolean-predicates/any.js +48 -0
- package/dist/visitors/boolean-predicates/any.js.map +1 -0
- package/dist/visitors/common/identifier.d.ts +13 -0
- package/dist/visitors/common/identifier.d.ts.map +1 -0
- package/dist/visitors/common/identifier.js +46 -0
- package/dist/visitors/common/identifier.js.map +1 -0
- package/dist/visitors/common/literal.d.ts +13 -0
- package/dist/visitors/common/literal.d.ts.map +1 -0
- package/dist/visitors/common/literal.js +45 -0
- package/dist/visitors/common/literal.js.map +1 -0
- package/dist/visitors/common/member-access.d.ts +15 -0
- package/dist/visitors/common/member-access.d.ts.map +1 -0
- package/dist/visitors/common/member-access.js +192 -0
- package/dist/visitors/common/member-access.js.map +1 -0
- package/dist/visitors/contains/index.d.ts +11 -0
- package/dist/visitors/contains/index.d.ts.map +1 -0
- package/dist/visitors/contains/index.js +26 -0
- package/dist/visitors/contains/index.js.map +1 -0
- package/dist/visitors/count/index.d.ts +11 -0
- package/dist/visitors/count/index.d.ts.map +1 -0
- package/dist/visitors/count/index.js +47 -0
- package/dist/visitors/count/index.js.map +1 -0
- package/dist/visitors/delete/allow-full-delete.d.ts +14 -0
- package/dist/visitors/delete/allow-full-delete.d.ts.map +1 -0
- package/dist/visitors/delete/allow-full-delete.js +26 -0
- package/dist/visitors/delete/allow-full-delete.js.map +1 -0
- package/dist/visitors/delete/index.d.ts +10 -0
- package/dist/visitors/delete/index.d.ts.map +1 -0
- package/dist/visitors/delete/index.js +53 -0
- package/dist/visitors/delete/index.js.map +1 -0
- package/dist/visitors/delete/where-delete.d.ts +15 -0
- package/dist/visitors/delete/where-delete.d.ts.map +1 -0
- package/dist/visitors/delete/where-delete.js +59 -0
- package/dist/visitors/delete/where-delete.js.map +1 -0
- package/dist/visitors/distinct/index.d.ts +16 -0
- package/dist/visitors/distinct/index.d.ts.map +1 -0
- package/dist/visitors/distinct/index.js +20 -0
- package/dist/visitors/distinct/index.js.map +1 -0
- package/dist/visitors/from/index.d.ts +12 -0
- package/dist/visitors/from/index.d.ts.map +1 -0
- package/dist/visitors/from/index.js +58 -0
- package/dist/visitors/from/index.js.map +1 -0
- package/dist/visitors/groupby/index.d.ts +11 -0
- package/dist/visitors/groupby/index.d.ts.map +1 -0
- package/dist/visitors/groupby/index.js +51 -0
- package/dist/visitors/groupby/index.js.map +1 -0
- package/dist/visitors/groupjoin/index.d.ts +8 -0
- package/dist/visitors/groupjoin/index.d.ts.map +1 -0
- package/dist/visitors/groupjoin/index.js +184 -0
- package/dist/visitors/groupjoin/index.js.map +1 -0
- package/dist/visitors/index.d.ts +13 -0
- package/dist/visitors/index.d.ts.map +1 -0
- package/dist/visitors/index.js +266 -0
- package/dist/visitors/index.js.map +1 -0
- package/dist/visitors/insert/index.d.ts +10 -0
- package/dist/visitors/insert/index.d.ts.map +1 -0
- package/dist/visitors/insert/index.js +54 -0
- package/dist/visitors/insert/index.js.map +1 -0
- package/dist/visitors/insert/returning.d.ts +15 -0
- package/dist/visitors/insert/returning.d.ts.map +1 -0
- package/dist/visitors/insert/returning.js +60 -0
- package/dist/visitors/insert/returning.js.map +1 -0
- package/dist/visitors/insert/values.d.ts +15 -0
- package/dist/visitors/insert/values.d.ts.map +1 -0
- package/dist/visitors/insert/values.js +37 -0
- package/dist/visitors/insert/values.js.map +1 -0
- package/dist/visitors/join/context.d.ts +16 -0
- package/dist/visitors/join/context.d.ts.map +1 -0
- package/dist/visitors/join/context.js +6 -0
- package/dist/visitors/join/context.js.map +1 -0
- package/dist/visitors/join/expression.d.ts +16 -0
- package/dist/visitors/join/expression.d.ts.map +1 -0
- package/dist/visitors/join/expression.js +162 -0
- package/dist/visitors/join/expression.js.map +1 -0
- package/dist/visitors/join/index.d.ts +10 -0
- package/dist/visitors/join/index.d.ts.map +1 -0
- package/dist/visitors/join/index.js +9 -0
- package/dist/visitors/join/index.js.map +1 -0
- package/dist/visitors/join/join.d.ts +12 -0
- package/dist/visitors/join/join.d.ts.map +1 -0
- package/dist/visitors/join/join.js +348 -0
- package/dist/visitors/join/join.js.map +1 -0
- package/dist/visitors/join/result-selector.d.ts +16 -0
- package/dist/visitors/join/result-selector.d.ts.map +1 -0
- package/dist/visitors/join/result-selector.js +121 -0
- package/dist/visitors/join/result-selector.js.map +1 -0
- package/dist/visitors/join/shape.d.ts +16 -0
- package/dist/visitors/join/shape.d.ts.map +1 -0
- package/dist/visitors/join/shape.js +157 -0
- package/dist/visitors/join/shape.js.map +1 -0
- package/dist/visitors/orderby/context.d.ts +20 -0
- package/dist/visitors/orderby/context.d.ts.map +1 -0
- package/dist/visitors/orderby/context.js +25 -0
- package/dist/visitors/orderby/context.js.map +1 -0
- package/dist/visitors/orderby/index.d.ts +7 -0
- package/dist/visitors/orderby/index.d.ts.map +1 -0
- package/dist/visitors/orderby/index.js +7 -0
- package/dist/visitors/orderby/index.js.map +1 -0
- package/dist/visitors/orderby/key-selector.d.ts +13 -0
- package/dist/visitors/orderby/key-selector.d.ts.map +1 -0
- package/dist/visitors/orderby/key-selector.js +236 -0
- package/dist/visitors/orderby/key-selector.js.map +1 -0
- package/dist/visitors/orderby/orderby.d.ts +20 -0
- package/dist/visitors/orderby/orderby.d.ts.map +1 -0
- package/dist/visitors/orderby/orderby.js +83 -0
- package/dist/visitors/orderby/orderby.js.map +1 -0
- package/dist/visitors/orderby/thenby.d.ts +20 -0
- package/dist/visitors/orderby/thenby.d.ts.map +1 -0
- package/dist/visitors/orderby/thenby.js +76 -0
- package/dist/visitors/orderby/thenby.js.map +1 -0
- package/dist/visitors/predicates/first.d.ts +11 -0
- package/dist/visitors/predicates/first.d.ts.map +1 -0
- package/dist/visitors/predicates/first.js +47 -0
- package/dist/visitors/predicates/first.js.map +1 -0
- package/dist/visitors/predicates/last.d.ts +11 -0
- package/dist/visitors/predicates/last.d.ts.map +1 -0
- package/dist/visitors/predicates/last.js +48 -0
- package/dist/visitors/predicates/last.js.map +1 -0
- package/dist/visitors/predicates/single.d.ts +11 -0
- package/dist/visitors/predicates/single.d.ts.map +1 -0
- package/dist/visitors/predicates/single.js +48 -0
- package/dist/visitors/predicates/single.js.map +1 -0
- package/dist/visitors/reverse/index.d.ts +11 -0
- package/dist/visitors/reverse/index.d.ts.map +1 -0
- package/dist/visitors/reverse/index.js +14 -0
- package/dist/visitors/reverse/index.js.map +1 -0
- package/dist/visitors/select/context.d.ts +30 -0
- package/dist/visitors/select/context.d.ts.map +1 -0
- package/dist/visitors/select/context.js +30 -0
- package/dist/visitors/select/context.js.map +1 -0
- package/dist/visitors/select/index.d.ts +16 -0
- package/dist/visitors/select/index.d.ts.map +1 -0
- package/dist/visitors/select/index.js +180 -0
- package/dist/visitors/select/index.js.map +1 -0
- package/dist/visitors/select/projection.d.ts +13 -0
- package/dist/visitors/select/projection.d.ts.map +1 -0
- package/dist/visitors/select/projection.js +642 -0
- package/dist/visitors/select/projection.js.map +1 -0
- package/dist/visitors/select-many/index.d.ts +8 -0
- package/dist/visitors/select-many/index.d.ts.map +1 -0
- package/dist/visitors/select-many/index.js +244 -0
- package/dist/visitors/select-many/index.js.map +1 -0
- package/dist/visitors/shared/generic-visitor.d.ts +21 -0
- package/dist/visitors/shared/generic-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/generic-visitor.js +32 -0
- package/dist/visitors/shared/generic-visitor.js.map +1 -0
- package/dist/visitors/shared/predicate-visitor.d.ts +21 -0
- package/dist/visitors/shared/predicate-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/predicate-visitor.js +49 -0
- package/dist/visitors/shared/predicate-visitor.js.map +1 -0
- package/dist/visitors/shared/value-visitor.d.ts +21 -0
- package/dist/visitors/shared/value-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/value-visitor.js +38 -0
- package/dist/visitors/shared/value-visitor.js.map +1 -0
- package/dist/visitors/take-skip/skip.d.ts +15 -0
- package/dist/visitors/take-skip/skip.d.ts.map +1 -0
- package/dist/visitors/take-skip/skip.js +209 -0
- package/dist/visitors/take-skip/skip.js.map +1 -0
- package/dist/visitors/take-skip/take.d.ts +15 -0
- package/dist/visitors/take-skip/take.d.ts.map +1 -0
- package/dist/visitors/take-skip/take.js +76 -0
- package/dist/visitors/take-skip/take.js.map +1 -0
- package/dist/visitors/types.d.ts +170 -0
- package/dist/visitors/types.d.ts.map +1 -0
- package/dist/visitors/types.js +184 -0
- package/dist/visitors/types.js.map +1 -0
- package/dist/visitors/update/allow-full-update.d.ts +14 -0
- package/dist/visitors/update/allow-full-update.d.ts.map +1 -0
- package/dist/visitors/update/allow-full-update.js +26 -0
- package/dist/visitors/update/allow-full-update.js.map +1 -0
- package/dist/visitors/update/index.d.ts +10 -0
- package/dist/visitors/update/index.d.ts.map +1 -0
- package/dist/visitors/update/index.js +54 -0
- package/dist/visitors/update/index.js.map +1 -0
- package/dist/visitors/update/returning-update.d.ts +15 -0
- package/dist/visitors/update/returning-update.d.ts.map +1 -0
- package/dist/visitors/update/returning-update.js +60 -0
- package/dist/visitors/update/returning-update.js.map +1 -0
- package/dist/visitors/update/set.d.ts +15 -0
- package/dist/visitors/update/set.d.ts.map +1 -0
- package/dist/visitors/update/set.js +46 -0
- package/dist/visitors/update/set.js.map +1 -0
- package/dist/visitors/update/where-update.d.ts +15 -0
- package/dist/visitors/update/where-update.d.ts.map +1 -0
- package/dist/visitors/update/where-update.js +59 -0
- package/dist/visitors/update/where-update.js.map +1 -0
- package/dist/visitors/utils.d.ts +36 -0
- package/dist/visitors/utils.d.ts.map +1 -0
- package/dist/visitors/utils.js +104 -0
- package/dist/visitors/utils.js.map +1 -0
- package/dist/visitors/value/array-literal.d.ts +12 -0
- package/dist/visitors/value/array-literal.d.ts.map +1 -0
- package/dist/visitors/value/array-literal.js +23 -0
- package/dist/visitors/value/array-literal.js.map +1 -0
- package/dist/visitors/value/call-expression.d.ts +12 -0
- package/dist/visitors/value/call-expression.d.ts.map +1 -0
- package/dist/visitors/value/call-expression.js +165 -0
- package/dist/visitors/value/call-expression.js.map +1 -0
- package/dist/visitors/value/object-literal.d.ts +12 -0
- package/dist/visitors/value/object-literal.d.ts.map +1 -0
- package/dist/visitors/value/object-literal.js +98 -0
- package/dist/visitors/value/object-literal.js.map +1 -0
- package/dist/visitors/visitor-utils.d.ts +22 -0
- package/dist/visitors/visitor-utils.d.ts.map +1 -0
- package/dist/visitors/visitor-utils.js +64 -0
- package/dist/visitors/visitor-utils.js.map +1 -0
- package/dist/visitors/where/boolean-method.d.ts +12 -0
- package/dist/visitors/where/boolean-method.d.ts.map +1 -0
- package/dist/visitors/where/boolean-method.js +150 -0
- package/dist/visitors/where/boolean-method.js.map +1 -0
- package/dist/visitors/where/case-insensitive-functions.d.ts +13 -0
- package/dist/visitors/where/case-insensitive-functions.d.ts.map +1 -0
- package/dist/visitors/where/case-insensitive-functions.js +72 -0
- package/dist/visitors/where/case-insensitive-functions.js.map +1 -0
- package/dist/visitors/where/column.d.ts +14 -0
- package/dist/visitors/where/column.d.ts.map +1 -0
- package/dist/visitors/where/column.js +57 -0
- package/dist/visitors/where/column.js.map +1 -0
- package/dist/visitors/where/comparison.d.ts +12 -0
- package/dist/visitors/where/comparison.d.ts.map +1 -0
- package/dist/visitors/where/comparison.js +141 -0
- package/dist/visitors/where/comparison.js.map +1 -0
- package/dist/visitors/where/context.d.ts +32 -0
- package/dist/visitors/where/context.d.ts.map +1 -0
- package/dist/visitors/where/context.js +18 -0
- package/dist/visitors/where/context.js.map +1 -0
- package/dist/visitors/where/index.d.ts +16 -0
- package/dist/visitors/where/index.d.ts.map +1 -0
- package/dist/visitors/where/index.js +82 -0
- package/dist/visitors/where/index.js.map +1 -0
- package/dist/visitors/where/logical.d.ts +12 -0
- package/dist/visitors/where/logical.d.ts.map +1 -0
- package/dist/visitors/where/logical.js +43 -0
- package/dist/visitors/where/logical.js.map +1 -0
- package/dist/visitors/where/predicate.d.ts +13 -0
- package/dist/visitors/where/predicate.d.ts.map +1 -0
- package/dist/visitors/where/predicate.js +131 -0
- package/dist/visitors/where/predicate.js.map +1 -0
- package/dist/visitors/where/value.d.ts +13 -0
- package/dist/visitors/where/value.d.ts.map +1 -0
- package/dist/visitors/where/value.js +356 -0
- package/dist/visitors/where/value.js.map +1 -0
- package/dist/visitors/window/index.d.ts +18 -0
- package/dist/visitors/window/index.d.ts.map +1 -0
- package/dist/visitors/window/index.js +156 -0
- package/dist/visitors/window/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for visitor implementations
|
|
3
|
+
* Type guards and helper functions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Type guard for boolean expressions
|
|
7
|
+
*/
|
|
8
|
+
export function isBooleanExpression(expr) {
|
|
9
|
+
if (!expr || typeof expr !== "object")
|
|
10
|
+
return false;
|
|
11
|
+
const type = expr.type;
|
|
12
|
+
return [
|
|
13
|
+
"comparison",
|
|
14
|
+
"logical",
|
|
15
|
+
"not",
|
|
16
|
+
"in",
|
|
17
|
+
"booleanColumn",
|
|
18
|
+
"booleanMethod",
|
|
19
|
+
"booleanConstant",
|
|
20
|
+
].includes(type);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Type guard for value expressions
|
|
24
|
+
*/
|
|
25
|
+
export function isValueExpression(expr) {
|
|
26
|
+
if (!expr || typeof expr !== "object")
|
|
27
|
+
return false;
|
|
28
|
+
const type = expr.type;
|
|
29
|
+
return [
|
|
30
|
+
"column",
|
|
31
|
+
"constant",
|
|
32
|
+
"param",
|
|
33
|
+
"arithmetic",
|
|
34
|
+
"concat",
|
|
35
|
+
"stringMethod",
|
|
36
|
+
"case",
|
|
37
|
+
"coalesce",
|
|
38
|
+
"aggregate",
|
|
39
|
+
"windowFunction",
|
|
40
|
+
"groupKey",
|
|
41
|
+
].includes(type);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if a column name likely represents a string
|
|
45
|
+
* Used for heuristic string concatenation detection
|
|
46
|
+
*/
|
|
47
|
+
export function isLikelyStringColumn(name) {
|
|
48
|
+
if (!name)
|
|
49
|
+
return false;
|
|
50
|
+
const lower = name.toLowerCase();
|
|
51
|
+
return (lower.includes("name") ||
|
|
52
|
+
lower.includes("title") ||
|
|
53
|
+
lower.includes("description") ||
|
|
54
|
+
lower.includes("text") ||
|
|
55
|
+
lower.includes("email") ||
|
|
56
|
+
lower.includes("url") ||
|
|
57
|
+
lower.includes("address") ||
|
|
58
|
+
lower.includes("phone") ||
|
|
59
|
+
lower.includes("message") ||
|
|
60
|
+
lower.includes("comment") ||
|
|
61
|
+
lower.includes("note") ||
|
|
62
|
+
lower.includes("code") ||
|
|
63
|
+
lower.includes("id") ||
|
|
64
|
+
lower.includes("key") ||
|
|
65
|
+
lower.includes("value") ||
|
|
66
|
+
lower.includes("path") ||
|
|
67
|
+
lower.includes("file") ||
|
|
68
|
+
lower.includes("content") ||
|
|
69
|
+
lower.includes("body") ||
|
|
70
|
+
lower.includes("subject"));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if a parameter property likely represents a string
|
|
74
|
+
* Used for heuristic string concatenation detection
|
|
75
|
+
*/
|
|
76
|
+
export function isLikelyStringParam(property) {
|
|
77
|
+
if (!property)
|
|
78
|
+
return false;
|
|
79
|
+
return isLikelyStringColumn(property);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Extract parameter name from arrow function
|
|
83
|
+
*/
|
|
84
|
+
export function getParameterName(arrowFunc) {
|
|
85
|
+
if (!arrowFunc.params || arrowFunc.params.length === 0)
|
|
86
|
+
return null;
|
|
87
|
+
return arrowFunc.params[0]?.name || null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get return expression from function body
|
|
91
|
+
*/
|
|
92
|
+
export function getReturnExpression(body) {
|
|
93
|
+
if (!Array.isArray(body))
|
|
94
|
+
return null;
|
|
95
|
+
for (const stmt of body) {
|
|
96
|
+
if (stmt &&
|
|
97
|
+
typeof stmt === "object" &&
|
|
98
|
+
stmt.type === "ReturnStatement") {
|
|
99
|
+
return stmt.argument || null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/visitors/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for array literal expressions
|
|
3
|
+
* Creates array expressions from AST array literals
|
|
4
|
+
*/
|
|
5
|
+
import type { ArrayExpression, Expression } from "../../expressions/expression.js";
|
|
6
|
+
import type { ArrayExpression as ASTArrayExpression } from "../../parser/ast-types.js";
|
|
7
|
+
import type { VisitorContext } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Visit an array literal expression
|
|
10
|
+
*/
|
|
11
|
+
export declare function visitArray(node: ASTArrayExpression, context: VisitorContext, visitExpression: (node: unknown, ctx: VisitorContext) => Expression | null): ArrayExpression | null;
|
|
12
|
+
//# sourceMappingURL=array-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-literal.d.ts","sourceRoot":"","sources":["../../../src/visitors/value/array-literal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,KAAK,UAAU,GAAG,IAAI,GACzE,eAAe,GAAG,IAAI,CAgBxB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for array literal expressions
|
|
3
|
+
* Creates array expressions from AST array literals
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Visit an array literal expression
|
|
7
|
+
*/
|
|
8
|
+
export function visitArray(node, context, visitExpression) {
|
|
9
|
+
const elements = [];
|
|
10
|
+
for (const element of node.elements) {
|
|
11
|
+
if (element) {
|
|
12
|
+
const expr = visitExpression(element, context);
|
|
13
|
+
if (expr) {
|
|
14
|
+
elements.push(expr);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
type: "array",
|
|
20
|
+
elements,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=array-literal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-literal.js","sourceRoot":"","sources":["../../../src/visitors/value/array-literal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAwB,EACxB,OAAuB,EACvB,eAA0E;IAE1E,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for call expressions (method calls, function calls)
|
|
3
|
+
* Handles string methods, boolean methods, aggregate functions
|
|
4
|
+
*/
|
|
5
|
+
import type { Expression } from "../../expressions/expression.js";
|
|
6
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
7
|
+
import type { VisitorContext } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Visit a call expression
|
|
10
|
+
*/
|
|
11
|
+
export declare function visitCall(node: ASTCallExpression, context: VisitorContext, visitExpression: (node: unknown, ctx: VisitorContext) => Expression | null): Expression | null;
|
|
12
|
+
//# sourceMappingURL=call-expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-expression.d.ts","sourceRoot":"","sources":["../../../src/visitors/value/call-expression.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EAQX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACV,cAAc,IAAI,iBAAiB,EAUpC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,KAAK,UAAU,GAAG,IAAI,GACzE,UAAU,GAAG,IAAI,CAsDnB"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for call expressions (method calls, function calls)
|
|
3
|
+
* Handles string methods, boolean methods, aggregate functions
|
|
4
|
+
*/
|
|
5
|
+
import { visitLiteral } from "../common/literal.js";
|
|
6
|
+
import { isValueExpression, getParameterName, getReturnExpression } from "../utils.js";
|
|
7
|
+
import { isWindowFunctionCall, visitWindowFunction } from "../window/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Visit a call expression
|
|
10
|
+
*/
|
|
11
|
+
export function visitCall(node, context, visitExpression) {
|
|
12
|
+
// Check for window function calls first
|
|
13
|
+
const windowFunctionType = isWindowFunctionCall(node, context);
|
|
14
|
+
if (windowFunctionType) {
|
|
15
|
+
return visitWindowFunction(node, windowFunctionType, context, visitExpression);
|
|
16
|
+
}
|
|
17
|
+
// Must be a method call
|
|
18
|
+
if (node.callee.type !== "MemberExpression") {
|
|
19
|
+
throw new Error(`Unsupported call expression: ${node.callee.type}. ` +
|
|
20
|
+
`Method calls are only supported for specific string and boolean methods.`);
|
|
21
|
+
}
|
|
22
|
+
const memberCallee = node.callee;
|
|
23
|
+
// Check for aggregate methods on grouping parameters
|
|
24
|
+
if (memberCallee.object.type === "Identifier" && memberCallee.property.type === "Identifier") {
|
|
25
|
+
const objName = memberCallee.object.name;
|
|
26
|
+
const methodName = memberCallee.property.name;
|
|
27
|
+
// Check if this is an aggregate method on grouping
|
|
28
|
+
if (context.groupingParams?.has(objName)) {
|
|
29
|
+
return handleAggregateMethod(methodName, node.arguments, context, visitExpression);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Convert the object being called on
|
|
33
|
+
const obj = visitExpression(memberCallee.object, context);
|
|
34
|
+
if (!obj || memberCallee.property.type !== "Identifier") {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const methodName = memberCallee.property.name;
|
|
38
|
+
// Handle array.includes() -> IN expression (only for arrays/params)
|
|
39
|
+
if (methodName === "includes" && (obj.type === "array" || obj.type === "param")) {
|
|
40
|
+
return handleIncludesMethod(obj, node.arguments, context, visitExpression);
|
|
41
|
+
}
|
|
42
|
+
// String/boolean methods (including string.includes)
|
|
43
|
+
if (isValueExpression(obj)) {
|
|
44
|
+
return handleValueMethods(obj, methodName, node.arguments, context, visitExpression);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handle aggregate methods on grouping parameters
|
|
50
|
+
*/
|
|
51
|
+
function handleAggregateMethod(methodName, args, context, visitExpression) {
|
|
52
|
+
const aggregateFunc = normalizeAggregateFunction(methodName);
|
|
53
|
+
if (!aggregateFunc)
|
|
54
|
+
return null;
|
|
55
|
+
// Handle selector argument if present
|
|
56
|
+
if (args && args.length > 0) {
|
|
57
|
+
const selectorArg = args[0];
|
|
58
|
+
if (selectorArg && selectorArg.type === "ArrowFunctionExpression") {
|
|
59
|
+
const arrowFunc = selectorArg;
|
|
60
|
+
const paramName = getParameterName(arrowFunc);
|
|
61
|
+
// Add parameter to context
|
|
62
|
+
if (paramName) {
|
|
63
|
+
context.tableParams.add(paramName);
|
|
64
|
+
}
|
|
65
|
+
// Get body expression
|
|
66
|
+
const bodyExpr = arrowFunc.body.type === "BlockStatement"
|
|
67
|
+
? getReturnExpression(arrowFunc.body.body)
|
|
68
|
+
: arrowFunc.body;
|
|
69
|
+
if (bodyExpr) {
|
|
70
|
+
const expr = visitExpression(bodyExpr, context);
|
|
71
|
+
if (expr && isValueExpression(expr)) {
|
|
72
|
+
return {
|
|
73
|
+
type: "aggregate",
|
|
74
|
+
function: aggregateFunc,
|
|
75
|
+
expression: expr,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// No arguments - COUNT(*) or similar
|
|
82
|
+
return {
|
|
83
|
+
type: "aggregate",
|
|
84
|
+
function: aggregateFunc,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Handle array.includes() method
|
|
89
|
+
*/
|
|
90
|
+
function handleIncludesMethod(obj, args, context, visitExpression) {
|
|
91
|
+
const isArrayLike = obj.type === "array" || obj.type === "param";
|
|
92
|
+
if (isArrayLike && args && args.length === 1 && args[0]) {
|
|
93
|
+
const valueArg = visitExpression(args[0], context);
|
|
94
|
+
if (valueArg && isValueExpression(valueArg)) {
|
|
95
|
+
return {
|
|
96
|
+
type: "in",
|
|
97
|
+
value: valueArg,
|
|
98
|
+
list: obj,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Handle methods on value expressions
|
|
106
|
+
*/
|
|
107
|
+
function handleValueMethods(obj, methodName, args, context, visitExpression) {
|
|
108
|
+
// Boolean methods
|
|
109
|
+
if (["startsWith", "endsWith", "includes", "contains"].includes(methodName)) {
|
|
110
|
+
// Convert arguments
|
|
111
|
+
const convertedArgs = args.map((arg) => {
|
|
112
|
+
// Convert literals
|
|
113
|
+
if (isLiteralNode(arg)) {
|
|
114
|
+
return visitLiteral(arg, context);
|
|
115
|
+
}
|
|
116
|
+
return visitExpression(arg, context);
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
type: "booleanMethod",
|
|
120
|
+
object: obj,
|
|
121
|
+
method: methodName,
|
|
122
|
+
arguments: convertedArgs.filter(Boolean),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
// String methods
|
|
126
|
+
if (["toLowerCase", "toUpperCase"].includes(methodName)) {
|
|
127
|
+
return {
|
|
128
|
+
type: "stringMethod",
|
|
129
|
+
object: obj,
|
|
130
|
+
method: methodName,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Normalize aggregate function name
|
|
137
|
+
*/
|
|
138
|
+
function normalizeAggregateFunction(methodName) {
|
|
139
|
+
const lower = methodName.toLowerCase();
|
|
140
|
+
switch (lower) {
|
|
141
|
+
case "count":
|
|
142
|
+
return "count";
|
|
143
|
+
case "sum":
|
|
144
|
+
return "sum";
|
|
145
|
+
case "avg":
|
|
146
|
+
case "average":
|
|
147
|
+
return "avg";
|
|
148
|
+
case "min":
|
|
149
|
+
return "min";
|
|
150
|
+
case "max":
|
|
151
|
+
return "max";
|
|
152
|
+
default:
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if node is a literal
|
|
158
|
+
*/
|
|
159
|
+
function isLiteralNode(node) {
|
|
160
|
+
if (!node)
|
|
161
|
+
return false;
|
|
162
|
+
const type = node.type;
|
|
163
|
+
return ["Literal", "NumericLiteral", "StringLiteral", "BooleanLiteral", "NullLiteral"].includes(type || "");
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=call-expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-expression.js","sourceRoot":"","sources":["../../../src/visitors/value/call-expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for object literal expressions
|
|
3
|
+
* Used primarily in SELECT projections
|
|
4
|
+
*/
|
|
5
|
+
import type { ObjectExpression, Expression } from "../../expressions/expression.js";
|
|
6
|
+
import type { ObjectExpression as ASTObjectExpression } from "../../parser/ast-types.js";
|
|
7
|
+
import type { VisitorContext } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Visit an object literal expression
|
|
10
|
+
*/
|
|
11
|
+
export declare function visitObject(node: ASTObjectExpression, context: VisitorContext, visitExpression: (node: unknown, ctx: VisitorContext) => Expression | null): ObjectExpression | null;
|
|
12
|
+
//# sourceMappingURL=object-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-literal.d.ts","sourceRoot":"","sources":["../../../src/visitors/value/object-literal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACV,gBAAgB,IAAI,mBAAmB,EAIxC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,KAAK,UAAU,GAAG,IAAI,GACzE,gBAAgB,GAAG,IAAI,CAyBzB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for object literal expressions
|
|
3
|
+
* Used primarily in SELECT projections
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Visit an object literal expression
|
|
7
|
+
*/
|
|
8
|
+
export function visitObject(node, context, visitExpression) {
|
|
9
|
+
const properties = {};
|
|
10
|
+
for (const prop of node.properties) {
|
|
11
|
+
// Handle spread operator
|
|
12
|
+
if ("type" in prop && prop.type === "SpreadElement") {
|
|
13
|
+
handleSpreadElement(prop, context, properties);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
// Handle regular properties
|
|
17
|
+
const key = extractPropertyKey(prop);
|
|
18
|
+
if (key) {
|
|
19
|
+
const value = visitExpression(prop.value, context);
|
|
20
|
+
if (!value) {
|
|
21
|
+
continue; // Skip null values instead of returning null for entire object
|
|
22
|
+
}
|
|
23
|
+
properties[key] = value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
type: "object",
|
|
28
|
+
properties,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Handle spread element in object literal
|
|
33
|
+
*/
|
|
34
|
+
function handleSpreadElement(prop, context, properties) {
|
|
35
|
+
const spreadProp = prop;
|
|
36
|
+
const spreadArg = spreadProp.argument;
|
|
37
|
+
if (spreadArg.type === "Identifier") {
|
|
38
|
+
const spreadName = spreadArg.name;
|
|
39
|
+
// Check if spreading JOIN result with known shape
|
|
40
|
+
if (context.joinResultParam === spreadName && context.currentResultShape) {
|
|
41
|
+
flattenShape(context.currentResultShape, properties);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
throw new Error(`Spread operator used without shape information. ` +
|
|
45
|
+
`This typically occurs when spreading a parameter '${spreadName}' that isn't from a JOIN result. ` +
|
|
46
|
+
`Spread is only supported for JOIN result parameters with known shapes.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Recursively flatten shape into properties
|
|
52
|
+
*/
|
|
53
|
+
function flattenShape(shape, properties, prefix = "") {
|
|
54
|
+
for (const [propName, shapeProp] of shape.properties) {
|
|
55
|
+
const fullName = prefix ? `${prefix}.${propName}` : propName;
|
|
56
|
+
if (shapeProp.type === "column") {
|
|
57
|
+
// Direct column reference
|
|
58
|
+
const colNode = shapeProp;
|
|
59
|
+
properties[fullName] = {
|
|
60
|
+
type: "column",
|
|
61
|
+
name: colNode.columnName,
|
|
62
|
+
source: { type: "spread", sourceIndex: colNode.sourceTable || 0 },
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else if (shapeProp.type === "object") {
|
|
66
|
+
// Nested object - recursively flatten
|
|
67
|
+
flattenShape(shapeProp, properties, fullName);
|
|
68
|
+
}
|
|
69
|
+
else if (shapeProp.type === "reference") {
|
|
70
|
+
// Reference to entire table
|
|
71
|
+
const refNode = shapeProp;
|
|
72
|
+
properties[fullName] = {
|
|
73
|
+
type: "column",
|
|
74
|
+
name: fullName,
|
|
75
|
+
source: { type: "spread", sourceIndex: refNode.sourceTable || 0 },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extract property key from property node
|
|
82
|
+
*/
|
|
83
|
+
function extractPropertyKey(prop) {
|
|
84
|
+
if (!prop)
|
|
85
|
+
return null;
|
|
86
|
+
const p = prop;
|
|
87
|
+
if (!p.key)
|
|
88
|
+
return null;
|
|
89
|
+
const key = p.key;
|
|
90
|
+
if (key.type === "Identifier") {
|
|
91
|
+
return key.name;
|
|
92
|
+
}
|
|
93
|
+
if (key.type === "Literal" || key.type === "StringLiteral") {
|
|
94
|
+
return String(key.value);
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=object-literal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-literal.js","sourceRoot":"","sources":["../../../src/visitors/value/object-literal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for visitor implementations
|
|
3
|
+
*/
|
|
4
|
+
import type { Expression, BooleanExpression, ValueExpression } from "../expressions/expression.js";
|
|
5
|
+
import type { ArrowFunctionExpression, Statement, Expression as ASTExpression } from "../parser/ast-types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Get the parameter name from an arrow function
|
|
8
|
+
*/
|
|
9
|
+
export declare function getParameterName(arrowFunc: ArrowFunctionExpression): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get the return expression from a block statement body
|
|
12
|
+
*/
|
|
13
|
+
export declare function getReturnExpression(statements: Statement[]): ASTExpression | null;
|
|
14
|
+
/**
|
|
15
|
+
* Check if an expression is a boolean expression
|
|
16
|
+
*/
|
|
17
|
+
export declare function isBooleanExpression(expr: Expression): expr is BooleanExpression;
|
|
18
|
+
/**
|
|
19
|
+
* Check if an expression is a value expression
|
|
20
|
+
*/
|
|
21
|
+
export declare function isValueExpression(expr: Expression): expr is ValueExpression;
|
|
22
|
+
//# sourceMappingURL=visitor-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor-utils.d.ts","sourceRoot":"","sources":["../../src/visitors/visitor-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,KAAK,EACV,uBAAuB,EACvB,SAAS,EACT,UAAU,IAAI,aAAa,EAE5B,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI,CAQlF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,iBAAiB,CAe/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,eAAe,CAgB3E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for visitor implementations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get the parameter name from an arrow function
|
|
6
|
+
*/
|
|
7
|
+
export function getParameterName(arrowFunc) {
|
|
8
|
+
if (arrowFunc.params && arrowFunc.params.length > 0) {
|
|
9
|
+
const param = arrowFunc.params[0];
|
|
10
|
+
if (param && param.type === "Identifier") {
|
|
11
|
+
return param.name;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the return expression from a block statement body
|
|
18
|
+
*/
|
|
19
|
+
export function getReturnExpression(statements) {
|
|
20
|
+
for (const stmt of statements) {
|
|
21
|
+
if (stmt.type === "ReturnStatement") {
|
|
22
|
+
return stmt.argument || null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if an expression is a boolean expression
|
|
29
|
+
*/
|
|
30
|
+
export function isBooleanExpression(expr) {
|
|
31
|
+
if (!expr)
|
|
32
|
+
return false;
|
|
33
|
+
const booleanTypes = [
|
|
34
|
+
"comparison",
|
|
35
|
+
"logical",
|
|
36
|
+
"negation",
|
|
37
|
+
"in",
|
|
38
|
+
"booleanLiteral",
|
|
39
|
+
"booleanColumn",
|
|
40
|
+
"isNull",
|
|
41
|
+
"isNotNull",
|
|
42
|
+
];
|
|
43
|
+
return booleanTypes.includes(expr.type);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if an expression is a value expression
|
|
47
|
+
*/
|
|
48
|
+
export function isValueExpression(expr) {
|
|
49
|
+
if (!expr)
|
|
50
|
+
return false;
|
|
51
|
+
const valueTypes = [
|
|
52
|
+
"literal",
|
|
53
|
+
"column",
|
|
54
|
+
"parameter",
|
|
55
|
+
"arithmetic",
|
|
56
|
+
"concat",
|
|
57
|
+
"conditional",
|
|
58
|
+
"object",
|
|
59
|
+
"array",
|
|
60
|
+
"call",
|
|
61
|
+
];
|
|
62
|
+
return valueTypes.includes(expr.type);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=visitor-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor-utils.js","sourceRoot":"","sources":["../../src/visitors/visitor-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkC;IACjE,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,OAAQ,KAAoB,CAAC,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAuB;IACzD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACpC,OAAQ,IAAqC,CAAC,QAAQ,IAAI,IAAI,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,YAAY,GAAG;QACnB,YAAY;QACZ,SAAS;QACT,UAAU;QACV,IAAI;QACJ,gBAAgB;QAChB,eAAe;QACf,QAAQ;QACR,WAAW;KACZ,CAAC;IAEF,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,OAAO;QACP,MAAM;KACP,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boolean method visitor for WHERE clauses
|
|
3
|
+
* Handles method calls that return boolean values
|
|
4
|
+
*/
|
|
5
|
+
import type { BooleanExpression } from "../../expressions/expression.js";
|
|
6
|
+
import type { CallExpression } from "../../parser/ast-types.js";
|
|
7
|
+
import type { WhereContext, VisitorResult } from "./context.js";
|
|
8
|
+
/**
|
|
9
|
+
* Visit boolean method calls
|
|
10
|
+
*/
|
|
11
|
+
export declare function visitBooleanMethod(node: CallExpression, context: WhereContext): VisitorResult<BooleanExpression | null>;
|
|
12
|
+
//# sourceMappingURL=boolean-method.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean-method.d.ts","sourceRoot":"","sources":["../../../src/visitors/where/boolean-method.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,cAAc,EAOf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,YAAY,GACpB,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA+JzC"}
|