@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,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core visitor types and context definitions
|
|
3
|
+
*
|
|
4
|
+
* Visitors are pure functions that transform AST nodes into expressions
|
|
5
|
+
* Context provides environment information needed during traversal
|
|
6
|
+
*/
|
|
7
|
+
// ==================== Helper Functions ====================
|
|
8
|
+
/**
|
|
9
|
+
* Create a base context with common properties
|
|
10
|
+
*/
|
|
11
|
+
export function createBaseContext() {
|
|
12
|
+
return {
|
|
13
|
+
tableParams: new Set(),
|
|
14
|
+
queryParams: new Set(),
|
|
15
|
+
autoParams: new Map(),
|
|
16
|
+
autoParamCounter: 0,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a boolean context from a base context
|
|
21
|
+
*/
|
|
22
|
+
export function toBooleanContext(context) {
|
|
23
|
+
return {
|
|
24
|
+
...context,
|
|
25
|
+
expectedType: "boolean",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a value context from a base context
|
|
30
|
+
*/
|
|
31
|
+
export function toValueContext(context) {
|
|
32
|
+
return {
|
|
33
|
+
...context,
|
|
34
|
+
expectedType: "value",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create an object context from a base context
|
|
39
|
+
*/
|
|
40
|
+
export function toObjectContext(context) {
|
|
41
|
+
return {
|
|
42
|
+
...context,
|
|
43
|
+
expectedType: "object",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create an array context from a base context
|
|
48
|
+
*/
|
|
49
|
+
export function toArrayContext(context) {
|
|
50
|
+
return {
|
|
51
|
+
...context,
|
|
52
|
+
expectedType: "array",
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create an auto-parameterized parameter
|
|
57
|
+
*/
|
|
58
|
+
export function createAutoParam(context, value, options = {}) {
|
|
59
|
+
// Generate simple sequential parameter names to match existing tests
|
|
60
|
+
// Format: __p1, __p2, __p3, etc.
|
|
61
|
+
context.autoParamCounter++;
|
|
62
|
+
const paramName = `__p${context.autoParamCounter}`;
|
|
63
|
+
context.autoParams.set(paramName, value);
|
|
64
|
+
// Store enhanced field context if available
|
|
65
|
+
if (context.autoParamInfos) {
|
|
66
|
+
context.autoParamInfos.set(paramName, {
|
|
67
|
+
value: value,
|
|
68
|
+
fieldName: options.fieldName,
|
|
69
|
+
tableName: options.tableName,
|
|
70
|
+
sourceTable: options.sourceTable,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return paramName;
|
|
74
|
+
}
|
|
75
|
+
function serializeShapeNode(node) {
|
|
76
|
+
switch (node.type) {
|
|
77
|
+
case "column":
|
|
78
|
+
return {
|
|
79
|
+
type: "column",
|
|
80
|
+
sourceTable: node.sourceTable,
|
|
81
|
+
columnName: node.columnName,
|
|
82
|
+
};
|
|
83
|
+
case "object": {
|
|
84
|
+
const entries = Array.from(node.properties.entries());
|
|
85
|
+
return {
|
|
86
|
+
type: "object",
|
|
87
|
+
properties: entries.map(([key, value]) => ({
|
|
88
|
+
key,
|
|
89
|
+
value: serializeShapeNode(value),
|
|
90
|
+
})),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
case "reference":
|
|
94
|
+
return {
|
|
95
|
+
type: "reference",
|
|
96
|
+
sourceTable: node.sourceTable,
|
|
97
|
+
};
|
|
98
|
+
case "array":
|
|
99
|
+
return {
|
|
100
|
+
type: "array",
|
|
101
|
+
element: serializeShapeNode(node.elementShape),
|
|
102
|
+
};
|
|
103
|
+
default:
|
|
104
|
+
throw new Error("Unsupported shape node type");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function deserializeShapeNode(serialized) {
|
|
108
|
+
switch (serialized.type) {
|
|
109
|
+
case "column":
|
|
110
|
+
return {
|
|
111
|
+
type: "column",
|
|
112
|
+
sourceTable: serialized.sourceTable,
|
|
113
|
+
columnName: serialized.columnName,
|
|
114
|
+
};
|
|
115
|
+
case "object": {
|
|
116
|
+
const properties = new Map();
|
|
117
|
+
for (const entry of serialized.properties) {
|
|
118
|
+
properties.set(entry.key, deserializeShapeNode(entry.value));
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
type: "object",
|
|
122
|
+
properties,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
case "reference":
|
|
126
|
+
return {
|
|
127
|
+
type: "reference",
|
|
128
|
+
sourceTable: serialized.sourceTable,
|
|
129
|
+
};
|
|
130
|
+
case "array":
|
|
131
|
+
return {
|
|
132
|
+
type: "array",
|
|
133
|
+
elementShape: deserializeShapeNode(serialized.element),
|
|
134
|
+
};
|
|
135
|
+
default:
|
|
136
|
+
throw new Error("Unsupported serialized shape node type");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export function snapshotVisitorContext(context) {
|
|
140
|
+
return {
|
|
141
|
+
queryBuilderParam: context.queryBuilderParam,
|
|
142
|
+
tableParams: Array.from(context.tableParams),
|
|
143
|
+
queryParams: Array.from(context.queryParams),
|
|
144
|
+
helpersParam: context.helpersParam,
|
|
145
|
+
groupingParams: context.groupingParams ? Array.from(context.groupingParams) : undefined,
|
|
146
|
+
autoParams: Array.from(context.autoParams.entries()),
|
|
147
|
+
autoParamCounter: context.autoParamCounter,
|
|
148
|
+
autoParamInfos: context.autoParamInfos
|
|
149
|
+
? Array.from(context.autoParamInfos.entries())
|
|
150
|
+
: undefined,
|
|
151
|
+
joinParams: context.joinParams ? Array.from(context.joinParams.entries()) : undefined,
|
|
152
|
+
joinResultParam: context.joinResultParam,
|
|
153
|
+
currentResultShape: context.currentResultShape
|
|
154
|
+
? serializeShapeNode(context.currentResultShape)
|
|
155
|
+
: undefined,
|
|
156
|
+
currentTable: context.currentTable,
|
|
157
|
+
inSelectProjection: context.inSelectProjection,
|
|
158
|
+
hasTableParam: context.hasTableParam,
|
|
159
|
+
expectedType: context.expectedType,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export function restoreVisitorContext(snapshot) {
|
|
163
|
+
const context = {
|
|
164
|
+
queryBuilderParam: snapshot.queryBuilderParam,
|
|
165
|
+
tableParams: new Set(snapshot.tableParams),
|
|
166
|
+
queryParams: new Set(snapshot.queryParams),
|
|
167
|
+
helpersParam: snapshot.helpersParam,
|
|
168
|
+
groupingParams: snapshot.groupingParams ? new Set(snapshot.groupingParams) : undefined,
|
|
169
|
+
autoParams: new Map(snapshot.autoParams),
|
|
170
|
+
autoParamCounter: snapshot.autoParamCounter,
|
|
171
|
+
autoParamInfos: snapshot.autoParamInfos ? new Map(snapshot.autoParamInfos) : undefined,
|
|
172
|
+
joinParams: snapshot.joinParams ? new Map(snapshot.joinParams) : undefined,
|
|
173
|
+
joinResultParam: snapshot.joinResultParam,
|
|
174
|
+
currentResultShape: snapshot.currentResultShape
|
|
175
|
+
? deserializeShapeNode(snapshot.currentResultShape)
|
|
176
|
+
: undefined,
|
|
177
|
+
currentTable: snapshot.currentTable,
|
|
178
|
+
inSelectProjection: snapshot.inSelectProjection,
|
|
179
|
+
hasTableParam: snapshot.hasTableParam,
|
|
180
|
+
expectedType: snapshot.expectedType,
|
|
181
|
+
};
|
|
182
|
+
return context;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/visitors/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .allowFullTableUpdate() operation
|
|
3
|
+
*/
|
|
4
|
+
import type { UpdateOperation } from "../../query-tree/operations.js";
|
|
5
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
6
|
+
export interface AllowFullUpdateVisitorResult {
|
|
7
|
+
operation: UpdateOperation;
|
|
8
|
+
autoParams: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Visit a .allowFullTableUpdate() operation on an UPDATE
|
|
12
|
+
*/
|
|
13
|
+
export declare function visitAllowFullUpdateOperation(_ast: ASTCallExpression, source: UpdateOperation): AllowFullUpdateVisitorResult | null;
|
|
14
|
+
//# sourceMappingURL=allow-full-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allow-full-update.d.ts","sourceRoot":"","sources":["../../../src/visitors/update/allow-full-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,eAAe,GACtB,4BAA4B,GAAG,IAAI,CAqBrC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .allowFullTableUpdate() operation
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Visit a .allowFullTableUpdate() operation on an UPDATE
|
|
6
|
+
*/
|
|
7
|
+
export function visitAllowFullUpdateOperation(_ast, source) {
|
|
8
|
+
// Check if already has a WHERE clause
|
|
9
|
+
if (source.predicate) {
|
|
10
|
+
throw new Error("Cannot call allowFullTableUpdate() after where()");
|
|
11
|
+
}
|
|
12
|
+
// Check if allowFullTableUpdate already set
|
|
13
|
+
if (source.allowFullTableUpdate) {
|
|
14
|
+
throw new Error("allowFullTableUpdate() can only be called once");
|
|
15
|
+
}
|
|
16
|
+
// Create updated UPDATE operation with allowFullTableUpdate flag
|
|
17
|
+
const updatedOperation = {
|
|
18
|
+
...source,
|
|
19
|
+
allowFullTableUpdate: true,
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
operation: updatedOperation,
|
|
23
|
+
autoParams: {},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=allow-full-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allow-full-update.js","sourceRoot":"","sources":["../../../src/visitors/update/allow-full-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAuB,EACvB,MAAuB;IAEvB,sCAAsC;IACtC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,iEAAiE;IACjE,MAAM,gBAAgB,GAAoB;QACxC,GAAG,MAAM;QACT,oBAAoB,EAAE,IAAI;KAC3B,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE operations
|
|
3
|
+
*/
|
|
4
|
+
import type { UpdateOperation } from "../../query-tree/operations.js";
|
|
5
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Visit an update() operation
|
|
8
|
+
*/
|
|
9
|
+
export declare function visitUpdateOperation(ast: ASTCallExpression): UpdateOperation | null;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitors/update/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAwDnF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Visit an update() operation
|
|
6
|
+
*/
|
|
7
|
+
export function visitUpdateOperation(ast) {
|
|
8
|
+
// update can have two forms:
|
|
9
|
+
// 1. update("tableName") or update("schema.table") - single argument
|
|
10
|
+
// 2. update(db, "tableName") - two arguments
|
|
11
|
+
if (!ast.arguments || ast.arguments.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
let table;
|
|
15
|
+
let schema;
|
|
16
|
+
if (ast.arguments.length === 1) {
|
|
17
|
+
// Single argument form: update("tableName") or update("schema.table")
|
|
18
|
+
const tableArg = ast.arguments[0];
|
|
19
|
+
if (!tableArg) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
// Handle both Literal and StringLiteral node types
|
|
23
|
+
if (tableArg.type !== "Literal" && tableArg.type !== "StringLiteral") {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const tableName = tableArg.value;
|
|
27
|
+
// Check if table name includes schema
|
|
28
|
+
const parts = tableName.split(".");
|
|
29
|
+
schema = parts.length > 1 ? parts[0] : undefined;
|
|
30
|
+
table = parts.length > 1 ? parts[1] : tableName;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// Multiple argument form: update(db, "tableName")
|
|
34
|
+
// First argument is the database object (we don't need to parse it)
|
|
35
|
+
// Second argument is the table name
|
|
36
|
+
const tableArg = ast.arguments[1];
|
|
37
|
+
if (!tableArg) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Handle both Literal and StringLiteral node types
|
|
41
|
+
if (tableArg.type !== "Literal" && tableArg.type !== "StringLiteral") {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
table = tableArg.value;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
type: "queryOperation",
|
|
48
|
+
operationType: "update",
|
|
49
|
+
table,
|
|
50
|
+
...(schema && { schema }),
|
|
51
|
+
assignments: { type: "object", properties: {} }, // Will be filled by .set()
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitors/update/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,6BAA6B;IAC7B,qEAAqE;IACrE,6CAA6C;IAE7C,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,MAA0B,CAAC;IAE/B,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,sEAAsE;QACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAI,QAA8B,CAAC,KAAK,CAAC;QAExD,sCAAsC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,oEAAoE;QACpE,oCAAoC;QACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,GAAI,QAA8B,CAAC,KAAK,CAAC;IAChD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,aAAa,EAAE,QAAQ;QACvB,KAAK;QACL,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;QACzB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,2BAA2B;KAC1D,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .returning() operation
|
|
3
|
+
*/
|
|
4
|
+
import type { UpdateOperation } from "../../query-tree/operations.js";
|
|
5
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
6
|
+
import type { VisitorContext } from "../types.js";
|
|
7
|
+
export interface ReturningUpdateVisitorResult {
|
|
8
|
+
operation: UpdateOperation;
|
|
9
|
+
autoParams: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Visit a .returning() operation on an UPDATE
|
|
13
|
+
*/
|
|
14
|
+
export declare function visitReturningUpdateOperation(ast: ASTCallExpression, source: UpdateOperation, visitorContext: VisitorContext): ReturningUpdateVisitorResult | null;
|
|
15
|
+
//# sourceMappingURL=returning-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"returning-update.d.ts","sourceRoot":"","sources":["../../../src/visitors/update/returning-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMtE,OAAO,KAAK,EACV,cAAc,IAAI,iBAAiB,EAEpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,cAAc,GAC7B,4BAA4B,GAAG,IAAI,CA6DrC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .returning() operation
|
|
3
|
+
*/
|
|
4
|
+
import { visitExpression } from "../index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Visit a .returning() operation on an UPDATE
|
|
7
|
+
*/
|
|
8
|
+
export function visitReturningUpdateOperation(ast, source, visitorContext) {
|
|
9
|
+
// .returning((row) => row.id) or .returning((row) => ({ id: row.id, name: row.name }))
|
|
10
|
+
const args = ast.arguments;
|
|
11
|
+
if (!args || args.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const lambda = args[0];
|
|
15
|
+
if (!lambda || lambda.type !== "ArrowFunctionExpression") {
|
|
16
|
+
throw new Error("returning() requires a lambda expression");
|
|
17
|
+
}
|
|
18
|
+
const arrowFn = lambda;
|
|
19
|
+
// Extract parameter name (e.g., "row")
|
|
20
|
+
const params = arrowFn.params;
|
|
21
|
+
if (!params || params.length === 0 || params[0]?.type !== "Identifier") {
|
|
22
|
+
throw new Error("returning() lambda must have a parameter");
|
|
23
|
+
}
|
|
24
|
+
const paramName = params[0].name;
|
|
25
|
+
// Add to table params temporarily for expression resolution
|
|
26
|
+
const originalTableParams = new Set(visitorContext.tableParams);
|
|
27
|
+
visitorContext.tableParams.add(paramName);
|
|
28
|
+
let bodyExpr = arrowFn.body;
|
|
29
|
+
// Handle block statement with return
|
|
30
|
+
if (bodyExpr.type === "BlockStatement") {
|
|
31
|
+
const returnStmt = bodyExpr.body?.find((stmt) => stmt.type === "ReturnStatement");
|
|
32
|
+
if (!returnStmt || !returnStmt.argument) {
|
|
33
|
+
throw new Error("returning() lambda must return a value");
|
|
34
|
+
}
|
|
35
|
+
bodyExpr = returnStmt.argument;
|
|
36
|
+
}
|
|
37
|
+
// Check for identity returning (returning((u) => u))
|
|
38
|
+
let returningExpr;
|
|
39
|
+
if (bodyExpr.type === "Identifier" && bodyExpr.name === paramName) {
|
|
40
|
+
// Return AllColumnsExpression to indicate "RETURNING *"
|
|
41
|
+
const allColumns = { type: "allColumns" };
|
|
42
|
+
returningExpr = allColumns;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Convert the returning expression normally
|
|
46
|
+
returningExpr = visitExpression(bodyExpr, visitorContext);
|
|
47
|
+
}
|
|
48
|
+
// Restore table params
|
|
49
|
+
visitorContext.tableParams = originalTableParams;
|
|
50
|
+
// Create updated UPDATE operation with returning clause
|
|
51
|
+
const updatedOperation = {
|
|
52
|
+
...source,
|
|
53
|
+
returning: returningExpr,
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
operation: updatedOperation,
|
|
57
|
+
autoParams: {},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=returning-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"returning-update.js","sourceRoot":"","sources":["../../../src/visitors/update/returning-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAAsB,EACtB,MAAuB,EACvB,cAA8B;IAE9B,uFAAuF;IACvF,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,MAAiC,CAAC;IAElD,uCAAuC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjC,4DAA4D;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAChE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5B,qCAAqC;IACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,qDAAqD;IACrD,IAAI,aAAiD,CAAC;IACtD,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAK,QAA6B,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxF,wDAAwD;QACxD,MAAM,UAAU,GAAyB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAChE,aAAa,GAAG,UAA6B,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAuC,CAAC;IAClG,CAAC;IAED,uBAAuB;IACvB,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC;IAEjD,wDAAwD;IACxD,MAAM,gBAAgB,GAAoB;QACxC,GAAG,MAAM;QACT,SAAS,EAAE,aAAa;KACzB,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .set() operation
|
|
3
|
+
*/
|
|
4
|
+
import type { UpdateOperation } from "../../query-tree/operations.js";
|
|
5
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
6
|
+
import type { VisitorContext } from "../types.js";
|
|
7
|
+
export interface SetVisitorResult {
|
|
8
|
+
operation: UpdateOperation;
|
|
9
|
+
autoParams: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Visit a .set() operation on an UPDATE
|
|
13
|
+
*/
|
|
14
|
+
export declare function visitSetOperation(ast: ASTCallExpression, source: UpdateOperation, visitorContext: VisitorContext): SetVisitorResult | null;
|
|
15
|
+
//# sourceMappingURL=set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/visitors/update/set.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EACV,cAAc,IAAI,iBAAiB,EAEpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,cAAc,GAC7B,gBAAgB,GAAG,IAAI,CA8CzB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .set() operation
|
|
3
|
+
*/
|
|
4
|
+
import { visitExpression } from "../index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Visit a .set() operation on an UPDATE
|
|
7
|
+
*/
|
|
8
|
+
export function visitSetOperation(ast, source, visitorContext) {
|
|
9
|
+
// Check if .set() has already been called (assignments should be empty object initially)
|
|
10
|
+
if (source.assignments.type === "object" &&
|
|
11
|
+
Object.keys(source.assignments.properties).length > 0) {
|
|
12
|
+
throw new Error("set() can only be called once per UPDATE query");
|
|
13
|
+
}
|
|
14
|
+
// .set({ column1: value1, column2: value2 })
|
|
15
|
+
const args = ast.arguments;
|
|
16
|
+
if (!args || args.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const firstArg = args[0];
|
|
20
|
+
if (!firstArg) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
// Must be an object expression
|
|
24
|
+
if (firstArg.type !== "ObjectExpression") {
|
|
25
|
+
throw new Error("set() must be an object literal");
|
|
26
|
+
}
|
|
27
|
+
// Visit the object expression to get column-value assignments
|
|
28
|
+
const assignmentsExpr = visitExpression(firstArg, visitorContext);
|
|
29
|
+
if (!assignmentsExpr || assignmentsExpr.type !== "object") {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Validate that assignments object is not empty
|
|
33
|
+
if (Object.keys(assignmentsExpr.properties).length === 0) {
|
|
34
|
+
throw new Error("set() must specify at least one column assignment");
|
|
35
|
+
}
|
|
36
|
+
// Create updated UPDATE operation with assignments
|
|
37
|
+
const updatedOperation = {
|
|
38
|
+
...source,
|
|
39
|
+
assignments: assignmentsExpr,
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
operation: updatedOperation,
|
|
43
|
+
autoParams: {},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/visitors/update/set.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAsB,EACtB,MAAuB,EACvB,cAA8B;IAE9B,yFAAyF;IACzF,IACE,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EACrD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,6CAA6C;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,8DAA8D;IAC9D,MAAM,eAAe,GAAG,eAAe,CAAC,QAA+B,EAAE,cAAc,CAAC,CAAC;IACzF,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgD;IAChD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,mDAAmD;IACnD,MAAM,gBAAgB,GAAoB;QACxC,GAAG,MAAM;QACT,WAAW,EAAE,eAAmC;KACjD,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .where() operation
|
|
3
|
+
*/
|
|
4
|
+
import type { UpdateOperation } from "../../query-tree/operations.js";
|
|
5
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
6
|
+
import type { VisitorContext } from "../types.js";
|
|
7
|
+
export interface WhereUpdateVisitorResult {
|
|
8
|
+
operation: UpdateOperation;
|
|
9
|
+
autoParams: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Visit a .where() operation on an UPDATE
|
|
13
|
+
*/
|
|
14
|
+
export declare function visitWhereUpdateOperation(ast: ASTCallExpression, source: UpdateOperation, visitorContext: VisitorContext): WhereUpdateVisitorResult | null;
|
|
15
|
+
//# sourceMappingURL=where-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where-update.d.ts","sourceRoot":"","sources":["../../../src/visitors/update/where-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EACV,cAAc,IAAI,iBAAiB,EAEpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,cAAc,GAC7B,wBAAwB,GAAG,IAAI,CA+DjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visitor for UPDATE .where() operation
|
|
3
|
+
*/
|
|
4
|
+
import { visitExpression } from "../index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Visit a .where() operation on an UPDATE
|
|
7
|
+
*/
|
|
8
|
+
export function visitWhereUpdateOperation(ast, source, visitorContext) {
|
|
9
|
+
// .where((row) => row.id === params.id)
|
|
10
|
+
const args = ast.arguments;
|
|
11
|
+
if (!args || args.length === 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const lambda = args[0];
|
|
15
|
+
if (!lambda || lambda.type !== "ArrowFunctionExpression") {
|
|
16
|
+
throw new Error("where() requires a lambda expression");
|
|
17
|
+
}
|
|
18
|
+
const arrowFn = lambda;
|
|
19
|
+
// Extract parameter name (e.g., "row")
|
|
20
|
+
const params = arrowFn.params;
|
|
21
|
+
if (!params || params.length === 0 || params[0]?.type !== "Identifier") {
|
|
22
|
+
throw new Error("where() lambda must have a parameter");
|
|
23
|
+
}
|
|
24
|
+
const paramName = params[0].name;
|
|
25
|
+
// Add to table params temporarily for expression resolution
|
|
26
|
+
const originalTableParams = new Set(visitorContext.tableParams);
|
|
27
|
+
visitorContext.tableParams.add(paramName);
|
|
28
|
+
// Check for second parameter (external params)
|
|
29
|
+
if (params.length > 1 && params[1]?.type === "Identifier") {
|
|
30
|
+
const externalParamName = params[1].name;
|
|
31
|
+
visitorContext.queryParams.add(externalParamName);
|
|
32
|
+
}
|
|
33
|
+
let bodyExpr = arrowFn.body;
|
|
34
|
+
// Handle block statement with return
|
|
35
|
+
if (bodyExpr.type === "BlockStatement") {
|
|
36
|
+
const returnStmt = bodyExpr.body?.find((stmt) => stmt.type === "ReturnStatement");
|
|
37
|
+
if (!returnStmt || !returnStmt.argument) {
|
|
38
|
+
throw new Error("where() lambda must return a boolean expression");
|
|
39
|
+
}
|
|
40
|
+
bodyExpr = returnStmt.argument;
|
|
41
|
+
}
|
|
42
|
+
// Convert the where expression
|
|
43
|
+
const whereExpr = visitExpression(bodyExpr, visitorContext);
|
|
44
|
+
// Restore table params
|
|
45
|
+
visitorContext.tableParams = originalTableParams;
|
|
46
|
+
if (!whereExpr) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
// Create updated UPDATE operation with where clause
|
|
50
|
+
const updatedOperation = {
|
|
51
|
+
...source,
|
|
52
|
+
predicate: whereExpr,
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
operation: updatedOperation,
|
|
56
|
+
autoParams: {},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=where-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where-update.js","sourceRoot":"","sources":["../../../src/visitors/update/where-update.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAsB,EACtB,MAAuB,EACvB,cAA8B;IAE9B,wCAAwC;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,MAAiC,CAAC;IAElD,uCAAuC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjC,4DAA4D;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAChE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE1C,+CAA+C;IAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5B,qCAAqC;IACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE5D,uBAAuB;IACvB,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC;IAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,MAAM,gBAAgB,GAAoB;QACxC,GAAG,MAAM;QACT,SAAS,EAAE,SAA8B;KAC1C,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for visitor implementations
|
|
3
|
+
* Type guards and helper functions
|
|
4
|
+
*/
|
|
5
|
+
import type { Expression } from "../expressions/expression.js";
|
|
6
|
+
/**
|
|
7
|
+
* Type guard for boolean expressions
|
|
8
|
+
*/
|
|
9
|
+
export declare function isBooleanExpression(expr: Expression | unknown): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Type guard for value expressions
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValueExpression(expr: Expression | unknown): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a column name likely represents a string
|
|
16
|
+
* Used for heuristic string concatenation detection
|
|
17
|
+
*/
|
|
18
|
+
export declare function isLikelyStringColumn(name: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a parameter property likely represents a string
|
|
21
|
+
* Used for heuristic string concatenation detection
|
|
22
|
+
*/
|
|
23
|
+
export declare function isLikelyStringParam(property?: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Extract parameter name from arrow function
|
|
26
|
+
*/
|
|
27
|
+
export declare function getParameterName(arrowFunc: {
|
|
28
|
+
params?: Array<{
|
|
29
|
+
name?: string;
|
|
30
|
+
}>;
|
|
31
|
+
}): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Get return expression from function body
|
|
34
|
+
*/
|
|
35
|
+
export declare function getReturnExpression(body: unknown[]): unknown | null;
|
|
36
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/visitors/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAavE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAiBrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAyB1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAGhG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI,CAanE"}
|