typhex 0.1.0-alpha.0
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/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +417 -0
- package/SECURITY.md +32 -0
- package/dist/arrow/aggregates.d.ts +12 -0
- package/dist/arrow/aggregates.d.ts.map +1 -0
- package/dist/arrow/aggregates.js +32 -0
- package/dist/arrow/aggregates.js.map +1 -0
- package/dist/arrow/constants.d.ts +15 -0
- package/dist/arrow/constants.d.ts.map +1 -0
- package/dist/arrow/constants.js +42 -0
- package/dist/arrow/constants.js.map +1 -0
- package/dist/arrow/index.d.ts +7 -0
- package/dist/arrow/index.d.ts.map +1 -0
- package/dist/arrow/index.js +7 -0
- package/dist/arrow/index.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load-config.d.ts +19 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/load-config.js +84 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/load-env.d.ts +7 -0
- package/dist/config/load-env.d.ts.map +1 -0
- package/dist/config/load-env.js +62 -0
- package/dist/config/load-env.js.map +1 -0
- package/dist/config/types.d.ts +20 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +10 -0
- package/dist/config/types.js.map +1 -0
- package/dist/dbs/base-migrator.d.ts +20 -0
- package/dist/dbs/base-migrator.d.ts.map +1 -0
- package/dist/dbs/base-migrator.js +112 -0
- package/dist/dbs/base-migrator.js.map +1 -0
- package/dist/dbs/index.d.ts +9 -0
- package/dist/dbs/index.d.ts.map +1 -0
- package/dist/dbs/index.js +17 -0
- package/dist/dbs/index.js.map +1 -0
- package/dist/dbs/postgres/dialect.d.ts +8 -0
- package/dist/dbs/postgres/dialect.d.ts.map +1 -0
- package/dist/dbs/postgres/dialect.js +17 -0
- package/dist/dbs/postgres/dialect.js.map +1 -0
- package/dist/dbs/postgres/driver.d.ts +42 -0
- package/dist/dbs/postgres/driver.d.ts.map +1 -0
- package/dist/dbs/postgres/driver.js +111 -0
- package/dist/dbs/postgres/driver.js.map +1 -0
- package/dist/dbs/postgres/index.d.ts +6 -0
- package/dist/dbs/postgres/index.d.ts.map +1 -0
- package/dist/dbs/postgres/index.js +5 -0
- package/dist/dbs/postgres/index.js.map +1 -0
- package/dist/dbs/postgres/migrator.d.ts +13 -0
- package/dist/dbs/postgres/migrator.d.ts.map +1 -0
- package/dist/dbs/postgres/migrator.js +22 -0
- package/dist/dbs/postgres/migrator.js.map +1 -0
- package/dist/dbs/postgres/query-compiler.d.ts +22 -0
- package/dist/dbs/postgres/query-compiler.d.ts.map +1 -0
- package/dist/dbs/postgres/query-compiler.js +140 -0
- package/dist/dbs/postgres/query-compiler.js.map +1 -0
- package/dist/dbs/postgres/trx.d.ts +16 -0
- package/dist/dbs/postgres/trx.d.ts.map +1 -0
- package/dist/dbs/postgres/trx.js +68 -0
- package/dist/dbs/postgres/trx.js.map +1 -0
- package/dist/dbs/query-compiler.d.ts +135 -0
- package/dist/dbs/query-compiler.d.ts.map +1 -0
- package/dist/dbs/query-compiler.js +775 -0
- package/dist/dbs/query-compiler.js.map +1 -0
- package/dist/dbs/sqlite/dialect.d.ts +8 -0
- package/dist/dbs/sqlite/dialect.d.ts.map +1 -0
- package/dist/dbs/sqlite/dialect.js +17 -0
- package/dist/dbs/sqlite/dialect.js.map +1 -0
- package/dist/dbs/sqlite/driver.d.ts +9 -0
- package/dist/dbs/sqlite/driver.d.ts.map +1 -0
- package/dist/dbs/sqlite/driver.js +66 -0
- package/dist/dbs/sqlite/driver.js.map +1 -0
- package/dist/dbs/sqlite/index.d.ts +6 -0
- package/dist/dbs/sqlite/index.d.ts.map +1 -0
- package/dist/dbs/sqlite/index.js +5 -0
- package/dist/dbs/sqlite/index.js.map +1 -0
- package/dist/dbs/sqlite/migrator.d.ts +13 -0
- package/dist/dbs/sqlite/migrator.d.ts.map +1 -0
- package/dist/dbs/sqlite/migrator.js +22 -0
- package/dist/dbs/sqlite/migrator.js.map +1 -0
- package/dist/dbs/sqlite/query-compiler.d.ts +26 -0
- package/dist/dbs/sqlite/query-compiler.d.ts.map +1 -0
- package/dist/dbs/sqlite/query-compiler.js +80 -0
- package/dist/dbs/sqlite/query-compiler.js.map +1 -0
- package/dist/dbs/sqlite/trx.d.ts +13 -0
- package/dist/dbs/sqlite/trx.d.ts.map +1 -0
- package/dist/dbs/sqlite/trx.js +69 -0
- package/dist/dbs/sqlite/trx.js.map +1 -0
- package/dist/dbs/types.d.ts +92 -0
- package/dist/dbs/types.d.ts.map +1 -0
- package/dist/dbs/types.js +26 -0
- package/dist/dbs/types.js.map +1 -0
- package/dist/dialect.d.ts +3 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +2 -0
- package/dist/dialect.js.map +1 -0
- package/dist/driver/factory.d.ts +19 -0
- package/dist/driver/factory.d.ts.map +1 -0
- package/dist/driver/factory.js +24 -0
- package/dist/driver/factory.js.map +1 -0
- package/dist/driver/index.d.ts +6 -0
- package/dist/driver/index.d.ts.map +1 -0
- package/dist/driver/index.js +3 -0
- package/dist/driver/index.js.map +1 -0
- package/dist/driver/sqlite.d.ts +15 -0
- package/dist/driver/sqlite.d.ts.map +1 -0
- package/dist/driver/sqlite.js +74 -0
- package/dist/driver/sqlite.js.map +1 -0
- package/dist/driver/types.d.ts +75 -0
- package/dist/driver/types.d.ts.map +1 -0
- package/dist/driver/types.js +2 -0
- package/dist/driver/types.js.map +1 -0
- package/dist/entity/entity.d.ts +67 -0
- package/dist/entity/entity.d.ts.map +1 -0
- package/dist/entity/entity.js +139 -0
- package/dist/entity/entity.js.map +1 -0
- package/dist/entity/global-driver.d.ts +38 -0
- package/dist/entity/global-driver.d.ts.map +1 -0
- package/dist/entity/global-driver.js +109 -0
- package/dist/entity/global-driver.js.map +1 -0
- package/dist/entity/index.d.ts +8 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +3 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/pk-columns.d.ts +5 -0
- package/dist/entity/pk-columns.d.ts.map +1 -0
- package/dist/entity/pk-columns.js +14 -0
- package/dist/entity/pk-columns.js.map +1 -0
- package/dist/entity/relations.d.ts +134 -0
- package/dist/entity/relations.d.ts.map +1 -0
- package/dist/entity/relations.js +23 -0
- package/dist/entity/relations.js.map +1 -0
- package/dist/entity/schema-inference.d.ts +77 -0
- package/dist/entity/schema-inference.d.ts.map +1 -0
- package/dist/entity/schema-inference.js +6 -0
- package/dist/entity/schema-inference.js.map +1 -0
- package/dist/entity/types.d.ts +30 -0
- package/dist/entity/types.d.ts.map +1 -0
- package/dist/entity/types.js +5 -0
- package/dist/entity/types.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/index.d.ts +2 -0
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +2 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/types.d.ts +148 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/ir/types.js +97 -0
- package/dist/ir/types.js.map +1 -0
- package/dist/migration/cli.d.ts +18 -0
- package/dist/migration/cli.d.ts.map +1 -0
- package/dist/migration/cli.js +236 -0
- package/dist/migration/cli.js.map +1 -0
- package/dist/migration/diff.d.ts +10 -0
- package/dist/migration/diff.d.ts.map +1 -0
- package/dist/migration/diff.js +10 -0
- package/dist/migration/diff.js.map +1 -0
- package/dist/migration/generator.d.ts +12 -0
- package/dist/migration/generator.d.ts.map +1 -0
- package/dist/migration/generator.js +98 -0
- package/dist/migration/generator.js.map +1 -0
- package/dist/migration/index.d.ts +7 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +5 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/runner.d.ts +32 -0
- package/dist/migration/runner.d.ts.map +1 -0
- package/dist/migration/runner.js +279 -0
- package/dist/migration/runner.js.map +1 -0
- package/dist/migration/topo-sort.d.ts +12 -0
- package/dist/migration/topo-sort.d.ts.map +1 -0
- package/dist/migration/topo-sort.js +42 -0
- package/dist/migration/topo-sort.js.map +1 -0
- package/dist/migration/types.d.ts +45 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +2 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/orm/aggregates.d.ts +19 -0
- package/dist/orm/aggregates.d.ts.map +1 -0
- package/dist/orm/aggregates.js +32 -0
- package/dist/orm/aggregates.js.map +1 -0
- package/dist/orm/db.d.ts +105 -0
- package/dist/orm/db.d.ts.map +1 -0
- package/dist/orm/db.js +172 -0
- package/dist/orm/db.js.map +1 -0
- package/dist/orm/expr.d.ts +125 -0
- package/dist/orm/expr.d.ts.map +1 -0
- package/dist/orm/expr.js +10 -0
- package/dist/orm/expr.js.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts +9 -0
- package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.js +44 -0
- package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.js.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts +13 -0
- package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-executor.js +42 -0
- package/dist/orm/helpers/insert-graph/insert-graph-executor.js.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts +46 -0
- package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-planner.js +258 -0
- package/dist/orm/helpers/insert-graph/insert-graph-planner.js.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts +7 -0
- package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts.map +1 -0
- package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.js +8 -0
- package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.js.map +1 -0
- package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts +15 -0
- package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts.map +1 -0
- package/dist/orm/helpers/insert-graph/sequence-id-assigner.js +48 -0
- package/dist/orm/helpers/insert-graph/sequence-id-assigner.js.map +1 -0
- package/dist/orm/helpers/query-plan/expr-builder.d.ts +155 -0
- package/dist/orm/helpers/query-plan/expr-builder.d.ts.map +1 -0
- package/dist/orm/helpers/query-plan/expr-builder.js +297 -0
- package/dist/orm/helpers/query-plan/expr-builder.js.map +1 -0
- package/dist/orm/helpers/query-plan/query-ir-analyzer.d.ts +48 -0
- package/dist/orm/helpers/query-plan/query-ir-analyzer.d.ts.map +1 -0
- package/dist/orm/helpers/query-plan/query-ir-analyzer.js +262 -0
- package/dist/orm/helpers/query-plan/query-ir-analyzer.js.map +1 -0
- package/dist/orm/helpers/query-plan/query-plan.d.ts +164 -0
- package/dist/orm/helpers/query-plan/query-plan.d.ts.map +1 -0
- package/dist/orm/helpers/query-plan/query-plan.js +549 -0
- package/dist/orm/helpers/query-plan/query-plan.js.map +1 -0
- package/dist/orm/helpers/query-plan/select-classifier.d.ts +161 -0
- package/dist/orm/helpers/query-plan/select-classifier.d.ts.map +1 -0
- package/dist/orm/helpers/query-plan/select-classifier.js +359 -0
- package/dist/orm/helpers/query-plan/select-classifier.js.map +1 -0
- package/dist/orm/helpers/relations/relation-assembler.d.ts +21 -0
- package/dist/orm/helpers/relations/relation-assembler.d.ts.map +1 -0
- package/dist/orm/helpers/relations/relation-assembler.js +60 -0
- package/dist/orm/helpers/relations/relation-assembler.js.map +1 -0
- package/dist/orm/helpers/relations/relation-fetcher.d.ts +30 -0
- package/dist/orm/helpers/relations/relation-fetcher.d.ts.map +1 -0
- package/dist/orm/helpers/relations/relation-fetcher.js +128 -0
- package/dist/orm/helpers/relations/relation-fetcher.js.map +1 -0
- package/dist/orm/helpers/relations/relation-joins.d.ts +74 -0
- package/dist/orm/helpers/relations/relation-joins.d.ts.map +1 -0
- package/dist/orm/helpers/relations/relation-joins.js +138 -0
- package/dist/orm/helpers/relations/relation-joins.js.map +1 -0
- package/dist/orm/helpers/relations/relation-resolver.d.ts +14 -0
- package/dist/orm/helpers/relations/relation-resolver.d.ts.map +1 -0
- package/dist/orm/helpers/relations/relation-resolver.js +25 -0
- package/dist/orm/helpers/relations/relation-resolver.js.map +1 -0
- package/dist/orm/index.d.ts +7 -0
- package/dist/orm/index.d.ts.map +1 -0
- package/dist/orm/index.js +5 -0
- package/dist/orm/index.js.map +1 -0
- package/dist/orm/query-builder.d.ts +136 -0
- package/dist/orm/query-builder.d.ts.map +1 -0
- package/dist/orm/query-builder.js +433 -0
- package/dist/orm/query-builder.js.map +1 -0
- package/dist/orm/query-helpers.d.ts +35 -0
- package/dist/orm/query-helpers.d.ts.map +1 -0
- package/dist/orm/query-helpers.js +83 -0
- package/dist/orm/query-helpers.js.map +1 -0
- package/dist/orm/query-state.d.ts +56 -0
- package/dist/orm/query-state.d.ts.map +1 -0
- package/dist/orm/query-state.js +112 -0
- package/dist/orm/query-state.js.map +1 -0
- package/dist/orm/single-row-query-builder.d.ts +18 -0
- package/dist/orm/single-row-query-builder.d.ts.map +1 -0
- package/dist/orm/single-row-query-builder.js +90 -0
- package/dist/orm/single-row-query-builder.js.map +1 -0
- package/dist/orm/trx.d.ts +40 -0
- package/dist/orm/trx.d.ts.map +1 -0
- package/dist/orm/trx.js +118 -0
- package/dist/orm/trx.js.map +1 -0
- package/dist/parser/acorn-helpers.d.ts +43 -0
- package/dist/parser/acorn-helpers.d.ts.map +1 -0
- package/dist/parser/acorn-helpers.js +104 -0
- package/dist/parser/acorn-helpers.js.map +1 -0
- package/dist/parser/acorn-member.d.ts +16 -0
- package/dist/parser/acorn-member.d.ts.map +1 -0
- package/dist/parser/acorn-member.js +31 -0
- package/dist/parser/acorn-member.js.map +1 -0
- package/dist/parser/acorn-types.d.ts +14 -0
- package/dist/parser/acorn-types.d.ts.map +1 -0
- package/dist/parser/acorn-types.js +6 -0
- package/dist/parser/acorn-types.js.map +1 -0
- package/dist/parser/arrow-source.d.ts +23 -0
- package/dist/parser/arrow-source.d.ts.map +1 -0
- package/dist/parser/arrow-source.js +70 -0
- package/dist/parser/arrow-source.js.map +1 -0
- package/dist/parser/group-by.d.ts +17 -0
- package/dist/parser/group-by.d.ts.map +1 -0
- package/dist/parser/group-by.js +62 -0
- package/dist/parser/group-by.js.map +1 -0
- package/dist/parser/index.d.ts +5 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +3 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/parse-arrow.d.ts +10 -0
- package/dist/parser/parse-arrow.d.ts.map +1 -0
- package/dist/parser/parse-arrow.js +9 -0
- package/dist/parser/parse-arrow.js.map +1 -0
- package/dist/parser/predicate-walk.d.ts +24 -0
- package/dist/parser/predicate-walk.d.ts.map +1 -0
- package/dist/parser/predicate-walk.js +247 -0
- package/dist/parser/predicate-walk.js.map +1 -0
- package/dist/parser/resolve.d.ts +25 -0
- package/dist/parser/resolve.d.ts.map +1 -0
- package/dist/parser/resolve.js +134 -0
- package/dist/parser/resolve.js.map +1 -0
- package/dist/parser/select.d.ts +7 -0
- package/dist/parser/select.d.ts.map +1 -0
- package/dist/parser/select.js +333 -0
- package/dist/parser/select.js.map +1 -0
- package/dist/parser/update.d.ts +7 -0
- package/dist/parser/update.d.ts.map +1 -0
- package/dist/parser/update.js +51 -0
- package/dist/parser/update.js.map +1 -0
- package/dist/postgres/aggregates.d.ts +12 -0
- package/dist/postgres/aggregates.d.ts.map +1 -0
- package/dist/postgres/aggregates.js +19 -0
- package/dist/postgres/aggregates.js.map +1 -0
- package/dist/postgres.d.ts +6 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/postgres.js +6 -0
- package/dist/postgres.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/types.d.ts +16 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +40 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/sqlite/aggregates.d.ts +8 -0
- package/dist/sqlite/aggregates.d.ts.map +1 -0
- package/dist/sqlite/aggregates.js +11 -0
- package/dist/sqlite/aggregates.js.map +1 -0
- package/dist/sqlite.d.ts +6 -0
- package/dist/sqlite.d.ts.map +1 -0
- package/dist/sqlite.js +6 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/transformer/bindings.d.ts +18 -0
- package/dist/transformer/bindings.d.ts.map +1 -0
- package/dist/transformer/bindings.js +52 -0
- package/dist/transformer/bindings.js.map +1 -0
- package/dist/transformer/index.d.ts +17 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +75 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/transformer/ir-emit.d.ts +12 -0
- package/dist/transformer/ir-emit.d.ts.map +1 -0
- package/dist/transformer/ir-emit.js +144 -0
- package/dist/transformer/ir-emit.js.map +1 -0
- package/dist/transformer/join-transformer.d.ts +12 -0
- package/dist/transformer/join-transformer.d.ts.map +1 -0
- package/dist/transformer/join-transformer.js +102 -0
- package/dist/transformer/join-transformer.js.map +1 -0
- package/dist/transformer/orderby-transformer.d.ts +13 -0
- package/dist/transformer/orderby-transformer.d.ts.map +1 -0
- package/dist/transformer/orderby-transformer.js +84 -0
- package/dist/transformer/orderby-transformer.js.map +1 -0
- package/dist/transformer/select-transformer.d.ts +9 -0
- package/dist/transformer/select-transformer.d.ts.map +1 -0
- package/dist/transformer/select-transformer.js +222 -0
- package/dist/transformer/select-transformer.js.map +1 -0
- package/dist/transformer/shared.d.ts +12 -0
- package/dist/transformer/shared.d.ts.map +1 -0
- package/dist/transformer/shared.js +12 -0
- package/dist/transformer/shared.js.map +1 -0
- package/dist/transformer/subquery-transformer.d.ts +15 -0
- package/dist/transformer/subquery-transformer.d.ts.map +1 -0
- package/dist/transformer/subquery-transformer.js +43 -0
- package/dist/transformer/subquery-transformer.js.map +1 -0
- package/dist/transformer/ts-aggregates.d.ts +13 -0
- package/dist/transformer/ts-aggregates.d.ts.map +1 -0
- package/dist/transformer/ts-aggregates.js +83 -0
- package/dist/transformer/ts-aggregates.js.map +1 -0
- package/dist/transformer/ts-binary.d.ts +8 -0
- package/dist/transformer/ts-binary.d.ts.map +1 -0
- package/dist/transformer/ts-binary.js +32 -0
- package/dist/transformer/ts-binary.js.map +1 -0
- package/dist/transformer/ts-member.d.ts +12 -0
- package/dist/transformer/ts-member.d.ts.map +1 -0
- package/dist/transformer/ts-member.js +22 -0
- package/dist/transformer/ts-member.js.map +1 -0
- package/dist/transformer/ts-utils.d.ts +10 -0
- package/dist/transformer/ts-utils.d.ts.map +1 -0
- package/dist/transformer/ts-utils.js +38 -0
- package/dist/transformer/ts-utils.js.map +1 -0
- package/dist/transformer/typhex-type.d.ts +8 -0
- package/dist/transformer/typhex-type.d.ts.map +1 -0
- package/dist/transformer/typhex-type.js +52 -0
- package/dist/transformer/typhex-type.js.map +1 -0
- package/dist/transformer/where-transformer.d.ts +33 -0
- package/dist/transformer/where-transformer.d.ts.map +1 -0
- package/dist/transformer/where-transformer.js +400 -0
- package/dist/transformer/where-transformer.js.map +1 -0
- package/dist/utils.d.ts +5 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +30 -0
- package/dist/utils.js.map +1 -0
- package/docs/drivers/postgres.md +54 -0
- package/docs/drivers/sqlite.md +33 -0
- package/docs/guide/aggregations.md +272 -0
- package/docs/guide/bulk-operations.md +204 -0
- package/docs/guide/cte-and-unions.md +270 -0
- package/docs/guide/entities-relations.md +208 -0
- package/docs/guide/expressions.md +98 -0
- package/docs/guide/filtering-by-relations.md +166 -0
- package/docs/guide/getting-started.md +277 -0
- package/docs/guide/querying-relations.md +133 -0
- package/docs/guide/subqueries.md +152 -0
- package/docs/guide/transactions.md +146 -0
- package/docs/guide/typescript-transformer.md +138 -0
- package/docs/index.md +33 -0
- package/docs/migrations/overview.md +143 -0
- package/docs/public-api.md +133 -0
- package/docs/reference/api.md +665 -0
- package/docs/reference/architecture.md +83 -0
- package/docs/release-checklist.md +55 -0
- package/etc/typhex.api.md +774 -0
- package/package.json +137 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer for .orderBy() calls: converts a column-selector lambda
|
|
3
|
+
* and optional direction into an IrOrderBy literal.
|
|
4
|
+
*/
|
|
5
|
+
import * as ts from "typescript";
|
|
6
|
+
/**
|
|
7
|
+
* Rewrite a `.orderBy(p => p.col | Entity.query()...select(() => count()), "asc"|"desc")`
|
|
8
|
+
* call on a Typhex Table/QueryBuilder into an IrOrderBy literal. Returns
|
|
9
|
+
* null when the call shape isn't supported — the runtime parser handles it
|
|
10
|
+
* then.
|
|
11
|
+
*/
|
|
12
|
+
export declare function transformOrderByCall(call: ts.CallExpression, checker: ts.TypeChecker): ts.CallExpression | null;
|
|
13
|
+
//# sourceMappingURL=orderby-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderby-transformer.d.ts","sourceRoot":"","sources":["../../src/transformer/orderby-transformer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAajC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,EAAE,CAAC,cAAc,GAAG,IAAI,CAoB1B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer for .orderBy() calls: converts a column-selector lambda
|
|
3
|
+
* and optional direction into an IrOrderBy literal.
|
|
4
|
+
*/
|
|
5
|
+
import * as ts from "typescript";
|
|
6
|
+
import { isTyphexType, matchTyphexMethodCall, memberPath, irOrderByToTsLiteral } from "./shared.js";
|
|
7
|
+
import { parseExpressionToIr } from "./where-transformer.js";
|
|
8
|
+
import { buildParamsLiteral, captureSubqueryRef, isTyphexQueryChain, } from "./subquery-transformer.js";
|
|
9
|
+
/**
|
|
10
|
+
* Rewrite a `.orderBy(p => p.col | Entity.query()...select(() => count()), "asc"|"desc")`
|
|
11
|
+
* call on a Typhex Table/QueryBuilder into an IrOrderBy literal. Returns
|
|
12
|
+
* null when the call shape isn't supported — the runtime parser handles it
|
|
13
|
+
* then.
|
|
14
|
+
*/
|
|
15
|
+
export function transformOrderByCall(call, checker) {
|
|
16
|
+
const fn = matchTyphexMethodCall(call, "orderBy", checker, isTyphexType);
|
|
17
|
+
if (!fn)
|
|
18
|
+
return null;
|
|
19
|
+
const paramName = getFirstIdentifierParamName(fn);
|
|
20
|
+
if (!paramName)
|
|
21
|
+
return null;
|
|
22
|
+
const capturedSubqueries = [];
|
|
23
|
+
const freeVars = new Set();
|
|
24
|
+
const expr = extractOrderByExpr(fn.body, paramName, checker, capturedSubqueries, freeVars);
|
|
25
|
+
if (!expr)
|
|
26
|
+
return null;
|
|
27
|
+
const direction = parseDirectionArg(call.arguments);
|
|
28
|
+
if (direction === null)
|
|
29
|
+
return null;
|
|
30
|
+
const args = [irOrderByToTsLiteral({ expr, direction })];
|
|
31
|
+
if (capturedSubqueries.length > 0 || freeVars.size > 0) {
|
|
32
|
+
args.push(buildParamsLiteral([...freeVars], capturedSubqueries));
|
|
33
|
+
}
|
|
34
|
+
return ts.factory.updateCallExpression(call, call.expression, call.typeArguments, args);
|
|
35
|
+
}
|
|
36
|
+
/** Extract the sort-key expression from an orderBy lambda body — either a
|
|
37
|
+
* plain `p.col` member access or an inline `Entity.query()...select(() => count())` chain. */
|
|
38
|
+
function extractOrderByExpr(body, paramName, checker, capturedSubqueries, freeVars) {
|
|
39
|
+
const path = extractColumnPath(body, paramName);
|
|
40
|
+
if (path)
|
|
41
|
+
return { kind: "member", param: paramName, path };
|
|
42
|
+
if (ts.isExpression(body)) {
|
|
43
|
+
if (isTyphexQueryChain(body, checker)) {
|
|
44
|
+
return captureSubqueryRef(body, capturedSubqueries);
|
|
45
|
+
}
|
|
46
|
+
const ir = parseExpressionToIr(body, [paramName], freeVars);
|
|
47
|
+
if (ir && ir.kind !== "member" && ir.kind !== "param")
|
|
48
|
+
return ir;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/** Return the first parameter's name if it's a plain identifier; null otherwise. */
|
|
53
|
+
function getFirstIdentifierParamName(fn) {
|
|
54
|
+
const param = fn.parameters[0]?.name;
|
|
55
|
+
if (!param || !ts.isIdentifier(param))
|
|
56
|
+
return null;
|
|
57
|
+
return param.text;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Extract the `p.a.b` column path from an arrow body. The body must be a
|
|
61
|
+
* direct property access on the lambda parameter.
|
|
62
|
+
*/
|
|
63
|
+
function extractColumnPath(body, paramName) {
|
|
64
|
+
if (!ts.isPropertyAccessExpression(body))
|
|
65
|
+
return null;
|
|
66
|
+
const path = memberPath(body, paramName);
|
|
67
|
+
return path && path.length > 0 ? path : null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The direction argument is optional; when present it MUST be a known string
|
|
71
|
+
* literal ("asc" | "desc"). Anything else returns null to leave the call for
|
|
72
|
+
* runtime parsing (preserving original semantics).
|
|
73
|
+
*/
|
|
74
|
+
function parseDirectionArg(args) {
|
|
75
|
+
if (args.length < 2)
|
|
76
|
+
return "asc";
|
|
77
|
+
const dirArg = args[1];
|
|
78
|
+
if (!ts.isStringLiteral(dirArg))
|
|
79
|
+
return null;
|
|
80
|
+
if (dirArg.text !== "asc" && dirArg.text !== "desc")
|
|
81
|
+
return null;
|
|
82
|
+
return dirArg.text;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=orderby-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderby-transformer.js","sourceRoot":"","sources":["../../src/transformer/orderby-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer for .select() calls: converts object-literal arrows to IrSelect.
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { irAggregateToTsLiteral } from "./shared.js";
|
|
6
|
+
/** Rewrite a `.select(arrow)` call on a Typhex Table/QueryBuilder into an IrSelect literal. */
|
|
7
|
+
export declare function transformSelectCall(call: ts.CallExpression, checker: ts.TypeChecker): ts.CallExpression | null;
|
|
8
|
+
export { irAggregateToTsLiteral };
|
|
9
|
+
//# sourceMappingURL=select-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-transformer.d.ts","sourceRoot":"","sources":["../../src/transformer/select-transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAOL,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AA0QrB,+FAA+F;AAC/F,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,EAAE,CAAC,cAAc,GAAG,IAAI,CAe1B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer for .select() calls: converts object-literal arrows to IrSelect.
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { isTyphexType, matchTyphexMethodCall, memberPath, unwrapObjectLiteral, parseTsAggregateCall, irSelectToTsLiteral, irAggregateToTsLiteral, getParamBindings, } from "./shared.js";
|
|
6
|
+
import { parseExpressionToIr } from "./where-transformer.js";
|
|
7
|
+
import { buildParamsLiteral, captureSubqueryRef, isTyphexQueryChain, } from "./subquery-transformer.js";
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Top-level arrow dispatch
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Convert a `.select(arrow)` arrow into an IrSelect. Handles the shorthand
|
|
13
|
+
* bodies (`p => p`, `p => p.col`, `p => count(p.id)`) as well as object-
|
|
14
|
+
* literal bodies. Returns null for shapes that don't map cleanly.
|
|
15
|
+
*/
|
|
16
|
+
function arrowToIrSelect(fn, pb, checker, capturedSubqueries, freeVars) {
|
|
17
|
+
if (!ts.isBlock(fn.body)) {
|
|
18
|
+
const shorthand = tryParseShorthandBody(fn.body, pb.paramName, freeVars);
|
|
19
|
+
if (shorthand)
|
|
20
|
+
return shorthand;
|
|
21
|
+
}
|
|
22
|
+
const obj = extractReturnedObjectLiteral(fn);
|
|
23
|
+
if (!obj)
|
|
24
|
+
return null;
|
|
25
|
+
return parseSelectObjectLiteral(obj, pb, checker, capturedSubqueries, freeVars);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Return the object literal produced by an arrow body — either directly
|
|
29
|
+
* (expression body) or via a single `return { ... }` statement in a block.
|
|
30
|
+
*/
|
|
31
|
+
function extractReturnedObjectLiteral(fn) {
|
|
32
|
+
if (!ts.isBlock(fn.body))
|
|
33
|
+
return unwrapObjectLiteral(fn.body);
|
|
34
|
+
if (fn.body.statements.length !== 1)
|
|
35
|
+
return null;
|
|
36
|
+
const st = fn.body.statements[0];
|
|
37
|
+
if (!st || !ts.isReturnStatement(st) || !st.expression)
|
|
38
|
+
return null;
|
|
39
|
+
return unwrapObjectLiteral(st.expression);
|
|
40
|
+
}
|
|
41
|
+
// ---- Shorthand bodies -------------------------------------------------------
|
|
42
|
+
/** Dispatch the single-expression shorthand body shapes to their handlers. */
|
|
43
|
+
function tryParseShorthandBody(body, paramName, freeVars) {
|
|
44
|
+
if (ts.isIdentifier(body) && body.text === paramName) {
|
|
45
|
+
return { param: paramName, paths: [], aliases: [], rest: true };
|
|
46
|
+
}
|
|
47
|
+
if (ts.isPropertyAccessExpression(body)) {
|
|
48
|
+
return parseShorthandMemberBody(body, paramName);
|
|
49
|
+
}
|
|
50
|
+
if (ts.isCallExpression(body)) {
|
|
51
|
+
return parseShorthandAggregateBody(body, paramName, freeVars);
|
|
52
|
+
}
|
|
53
|
+
if (!ts.isExpression(body))
|
|
54
|
+
return null;
|
|
55
|
+
return parseShorthandExpressionBody(body, paramName, freeVars);
|
|
56
|
+
}
|
|
57
|
+
/** Handle `p => p.id` / `p => p.author.name` — emits a single-column IrSelect aliased to the leaf name. */
|
|
58
|
+
function parseShorthandMemberBody(body, paramName) {
|
|
59
|
+
const path = memberPath(body, paramName);
|
|
60
|
+
if (!path || path.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
const alias = path[path.length - 1];
|
|
63
|
+
return { param: paramName, paths: [path], aliases: [alias] };
|
|
64
|
+
}
|
|
65
|
+
/** Handle `p => count(p.id)` — single aggregate aliased to the lowercased function name. */
|
|
66
|
+
function parseShorthandAggregateBody(body, paramName, freeVars) {
|
|
67
|
+
const resolveArg = (expr) => parseExpressionToIr(expr, [paramName], freeVars);
|
|
68
|
+
const parsed = parseTsAggregateCall(body, [paramName], resolveArg);
|
|
69
|
+
if (!parsed)
|
|
70
|
+
return null;
|
|
71
|
+
const alias = parsed.rawName.toLowerCase();
|
|
72
|
+
return {
|
|
73
|
+
param: paramName,
|
|
74
|
+
paths: [],
|
|
75
|
+
aliases: [],
|
|
76
|
+
aggregates: [{ ...parsed.ir, alias }],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function parseShorthandExpressionBody(body, paramName, freeVars) {
|
|
80
|
+
const ir = parseExpressionToIr(body, [paramName], freeVars);
|
|
81
|
+
if (!ir || ir.kind === "member" || ir.kind === "param")
|
|
82
|
+
return null;
|
|
83
|
+
return {
|
|
84
|
+
param: paramName,
|
|
85
|
+
paths: [],
|
|
86
|
+
aliases: [],
|
|
87
|
+
expressions: [{ expr: ir, alias: "expr" }],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// ---- Object literal body ---------------------------------------------------
|
|
91
|
+
/**
|
|
92
|
+
* Walk each property of a `{ ... }` select body and accumulate the column
|
|
93
|
+
* paths, aliases, aggregates, and spread flag into an IrSelect. Returns
|
|
94
|
+
* null if any property fails to map.
|
|
95
|
+
*/
|
|
96
|
+
function parseSelectObjectLiteral(obj, pb, checker, capturedSubqueries, freeVars) {
|
|
97
|
+
const paths = [];
|
|
98
|
+
const aliases = [];
|
|
99
|
+
const aggregates = [];
|
|
100
|
+
const subqueries = [];
|
|
101
|
+
const expressions = [];
|
|
102
|
+
let rest = false;
|
|
103
|
+
for (const prop of obj.properties) {
|
|
104
|
+
if (ts.isSpreadAssignment(prop)) {
|
|
105
|
+
if (!isRestSpread(prop, pb))
|
|
106
|
+
return null;
|
|
107
|
+
rest = true;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const keyName = getPropertyKeyName(prop);
|
|
111
|
+
if (!keyName)
|
|
112
|
+
return null;
|
|
113
|
+
const handled = parseSelectObjectProperty(prop, keyName, pb, checker, capturedSubqueries, freeVars);
|
|
114
|
+
if (!handled)
|
|
115
|
+
return null;
|
|
116
|
+
switch (handled.kind) {
|
|
117
|
+
case "path":
|
|
118
|
+
paths.push(handled.path);
|
|
119
|
+
aliases.push(keyName);
|
|
120
|
+
break;
|
|
121
|
+
case "aggregate":
|
|
122
|
+
aggregates.push(handled.aggregate);
|
|
123
|
+
break;
|
|
124
|
+
case "subquery":
|
|
125
|
+
subqueries.push({ alias: keyName, subquery: handled.subquery });
|
|
126
|
+
break;
|
|
127
|
+
case "expression":
|
|
128
|
+
expressions.push({ expr: handled.expr, alias: keyName });
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (paths.length === 0 &&
|
|
133
|
+
aggregates.length === 0 &&
|
|
134
|
+
subqueries.length === 0 &&
|
|
135
|
+
expressions.length === 0 &&
|
|
136
|
+
!rest) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
param: pb.paramName,
|
|
141
|
+
paths,
|
|
142
|
+
aliases,
|
|
143
|
+
...(rest ? { rest: true } : {}),
|
|
144
|
+
...(aggregates.length > 0 ? { aggregates } : {}),
|
|
145
|
+
...(subqueries.length > 0 ? { subqueries } : {}),
|
|
146
|
+
...(expressions.length > 0 ? { expressions } : {}),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/** True if the spread refers to the whole row (or the ...rest binding of a destructured param). */
|
|
150
|
+
function isRestSpread(prop, pb) {
|
|
151
|
+
if (!ts.isIdentifier(prop.expression))
|
|
152
|
+
return false;
|
|
153
|
+
const name = prop.expression.text;
|
|
154
|
+
return name === pb.restName || name === pb.paramName;
|
|
155
|
+
}
|
|
156
|
+
/** Return the property's key text — only plain identifier keys are supported. */
|
|
157
|
+
function getPropertyKeyName(prop) {
|
|
158
|
+
const name = prop.name;
|
|
159
|
+
if (!name)
|
|
160
|
+
return null;
|
|
161
|
+
if (ts.isIdentifier(name))
|
|
162
|
+
return name.text;
|
|
163
|
+
return null; // computed / literal-string / etc. not supported
|
|
164
|
+
}
|
|
165
|
+
function parseSelectObjectProperty(prop, keyName, pb, checker, capturedSubqueries, freeVars) {
|
|
166
|
+
if (ts.isShorthandPropertyAssignment(prop)) {
|
|
167
|
+
const path = pb.bindings?.get(keyName);
|
|
168
|
+
return path ? { kind: "path", path } : null;
|
|
169
|
+
}
|
|
170
|
+
if (!ts.isPropertyAssignment(prop))
|
|
171
|
+
return null;
|
|
172
|
+
const value = prop.initializer;
|
|
173
|
+
const resolveArg = (expr) => parseExpressionToIr(expr, [pb.paramName], freeVars);
|
|
174
|
+
if (ts.isPropertyAccessExpression(value)) {
|
|
175
|
+
const path = memberPath(value, pb.paramName);
|
|
176
|
+
if (!path || path.length === 0)
|
|
177
|
+
return null;
|
|
178
|
+
return { kind: "path", path };
|
|
179
|
+
}
|
|
180
|
+
if (pb.bindings && ts.isIdentifier(value)) {
|
|
181
|
+
const path = pb.bindings.get(value.text);
|
|
182
|
+
if (path)
|
|
183
|
+
return { kind: "path", path };
|
|
184
|
+
}
|
|
185
|
+
if (ts.isCallExpression(value)) {
|
|
186
|
+
const parsed = parseTsAggregateCall(value, [pb.paramName], resolveArg);
|
|
187
|
+
if (parsed)
|
|
188
|
+
return { kind: "aggregate", aggregate: { ...parsed.ir, alias: keyName } };
|
|
189
|
+
if (isTyphexQueryChain(value, checker)) {
|
|
190
|
+
return {
|
|
191
|
+
kind: "subquery",
|
|
192
|
+
subquery: captureSubqueryRef(value, capturedSubqueries),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const expr = parseExpressionToIr(value, [pb.paramName], freeVars);
|
|
197
|
+
if (!expr || expr.kind === "member" || expr.kind === "param")
|
|
198
|
+
return null;
|
|
199
|
+
return { kind: "expression", expr };
|
|
200
|
+
}
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// Public entry point
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
/** Rewrite a `.select(arrow)` call on a Typhex Table/QueryBuilder into an IrSelect literal. */
|
|
205
|
+
export function transformSelectCall(call, checker) {
|
|
206
|
+
const arrow = matchTyphexMethodCall(call, "select", checker, isTyphexType);
|
|
207
|
+
if (!arrow)
|
|
208
|
+
return null;
|
|
209
|
+
const pb = getParamBindings(arrow.parameters[0]?.name);
|
|
210
|
+
const capturedSubqueries = [];
|
|
211
|
+
const freeVars = new Set();
|
|
212
|
+
const irSelect = arrowToIrSelect(arrow, pb, checker, capturedSubqueries, freeVars);
|
|
213
|
+
if (!irSelect)
|
|
214
|
+
return null;
|
|
215
|
+
const args = [irSelectToTsLiteral(irSelect)];
|
|
216
|
+
if (capturedSubqueries.length > 0 || freeVars.size > 0) {
|
|
217
|
+
args.push(buildParamsLiteral([...freeVars], capturedSubqueries));
|
|
218
|
+
}
|
|
219
|
+
return ts.factory.updateCallExpression(call, call.expression, call.typeArguments, args);
|
|
220
|
+
}
|
|
221
|
+
export { irAggregateToTsLiteral };
|
|
222
|
+
//# sourceMappingURL=select-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-transformer.js","sourceRoot":"","sources":["../../src/transformer/select-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel re-export for transformer shared utilities. Preserves the historical
|
|
3
|
+
* `./shared.js` import path used by per-method transformers and vitest mocks.
|
|
4
|
+
*/
|
|
5
|
+
export { checkSymbolIsTyphex, isTyphexType } from "./typhex-type.js";
|
|
6
|
+
export { resolveMemberPath, memberPath, type ResolvedMember } from "./ts-member.js";
|
|
7
|
+
export { binaryOpFromSyntaxKind } from "./ts-binary.js";
|
|
8
|
+
export { getParamBindings, frameFromBindingName, type ParamBindings, type ScopeFrame, } from "./bindings.js";
|
|
9
|
+
export { unwrapObjectLiteral, isIdentifierNamed, getArrowExpressionBody, matchTyphexMethodCall, } from "./ts-utils.js";
|
|
10
|
+
export { parseTsAggregateCall, AGGREGATE_FUNCS, toIrFuncName, type TsAggregateParseResult, } from "./ts-aggregates.js";
|
|
11
|
+
export { irNodeToTsLiteral, irWhereToTsLiteral, irOrderByToTsLiteral, irAggregateToTsLiteral, irSelectToTsLiteral, } from "./ir-emit.js";
|
|
12
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/transformer/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel re-export for transformer shared utilities. Preserves the historical
|
|
3
|
+
* `./shared.js` import path used by per-method transformers and vitest mocks.
|
|
4
|
+
*/
|
|
5
|
+
export { checkSymbolIsTyphex, isTyphexType } from "./typhex-type.js";
|
|
6
|
+
export { resolveMemberPath, memberPath } from "./ts-member.js";
|
|
7
|
+
export { binaryOpFromSyntaxKind } from "./ts-binary.js";
|
|
8
|
+
export { getParamBindings, frameFromBindingName, } from "./bindings.js";
|
|
9
|
+
export { unwrapObjectLiteral, isIdentifierNamed, getArrowExpressionBody, matchTyphexMethodCall, } from "./ts-utils.js";
|
|
10
|
+
export { parseTsAggregateCall, AGGREGATE_FUNCS, toIrFuncName, } from "./ts-aggregates.js";
|
|
11
|
+
export { irNodeToTsLiteral, irWhereToTsLiteral, irOrderByToTsLiteral, irAggregateToTsLiteral, irSelectToTsLiteral, } from "./ir-emit.js";
|
|
12
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/transformer/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAuB,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for capturing inline `Entity.query()[chain]` expressions as
|
|
3
|
+
* subquery refs. The method-specific transformers still own the actual
|
|
4
|
+
* `.where()` / `.select()` / `.orderBy()` IR rewrites.
|
|
5
|
+
*/
|
|
6
|
+
import * as ts from "typescript";
|
|
7
|
+
import type { IrSubqueryRef } from "../ir/types.js";
|
|
8
|
+
export interface CapturedSubquery {
|
|
9
|
+
key: string;
|
|
10
|
+
expr: ts.Expression;
|
|
11
|
+
}
|
|
12
|
+
export declare function isTyphexQueryChain(expr: ts.Expression, checker: ts.TypeChecker): boolean;
|
|
13
|
+
export declare function captureSubqueryRef(expr: ts.Expression, capturedSubqueries: CapturedSubquery[]): IrSubqueryRef;
|
|
14
|
+
export declare function buildParamsLiteral(freeVars: string[], capturedSubqueries: CapturedSubquery[]): ts.ObjectLiteralExpression;
|
|
15
|
+
//# sourceMappingURL=subquery-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subquery-transformer.d.ts","sourceRoot":"","sources":["../../src/transformer/subquery-transformer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,OAAO,CAExF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,kBAAkB,EAAE,gBAAgB,EAAE,GACrC,aAAa,CAIf;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAAE,EAClB,kBAAkB,EAAE,gBAAgB,EAAE,GACrC,EAAE,CAAC,uBAAuB,CAS5B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for capturing inline `Entity.query()[chain]` expressions as
|
|
3
|
+
* subquery refs. The method-specific transformers still own the actual
|
|
4
|
+
* `.where()` / `.select()` / `.orderBy()` IR rewrites.
|
|
5
|
+
*/
|
|
6
|
+
import * as ts from "typescript";
|
|
7
|
+
import { isTyphexType } from "./shared.js";
|
|
8
|
+
export function isTyphexQueryChain(expr, checker) {
|
|
9
|
+
return findQueryCall(expr, checker) !== null;
|
|
10
|
+
}
|
|
11
|
+
export function captureSubqueryRef(expr, capturedSubqueries) {
|
|
12
|
+
const key = `_sub${capturedSubqueries.length}`;
|
|
13
|
+
capturedSubqueries.push({ key, expr });
|
|
14
|
+
return { kind: "subqueryRef", key };
|
|
15
|
+
}
|
|
16
|
+
export function buildParamsLiteral(freeVars, capturedSubqueries) {
|
|
17
|
+
const f = ts.factory;
|
|
18
|
+
const props = freeVars.map((v) => f.createShorthandPropertyAssignment(f.createIdentifier(v)));
|
|
19
|
+
for (const sub of capturedSubqueries) {
|
|
20
|
+
props.push(f.createPropertyAssignment(sub.key, sub.expr));
|
|
21
|
+
}
|
|
22
|
+
return f.createObjectLiteralExpression(props);
|
|
23
|
+
}
|
|
24
|
+
function findQueryCall(expr, checker) {
|
|
25
|
+
let cursor = expr;
|
|
26
|
+
while (cursor &&
|
|
27
|
+
ts.isCallExpression(cursor) &&
|
|
28
|
+
ts.isPropertyAccessExpression(cursor.expression)) {
|
|
29
|
+
if (cursor.expression.name.text === "query" && isTyphexQueryCall(cursor, checker)) {
|
|
30
|
+
return cursor;
|
|
31
|
+
}
|
|
32
|
+
cursor = cursor.expression.expression;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
function isTyphexQueryCall(call, checker) {
|
|
37
|
+
if (isTyphexType(call, checker))
|
|
38
|
+
return true;
|
|
39
|
+
return ts.isPropertyAccessExpression(call.expression)
|
|
40
|
+
? isTyphexType(call.expression.expression, checker)
|
|
41
|
+
: false;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=subquery-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subquery-transformer.js","sourceRoot":"","sources":["../../src/transformer/subquery-transformer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,UAAU,kBAAkB,CAAC,IAAmB,EAAE,OAAuB;IAC7E,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAmB,EACnB,kBAAsC;IAEtC,MAAM,GAAG,GAAG,OAAO,kBAAkB,CAAC,MAAM,EAAE,CAAC;IAC/C,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,kBAAsC;IAEtC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,KAAK,GAAkC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9D,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB,EAAE,OAAuB;IACjE,IAAI,MAAM,GAAyB,IAAI,CAAC;IACxC,OACE,MAAM;QACN,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3B,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,EAChD,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAuB,EAAE,OAAuB;IACzE,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QACnD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;QACnD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse TypeScript CallExpression nodes as aggregate calls (SUM, COUNT, …)
|
|
3
|
+
* for the compile-time transformer. Uses shared aggregate naming from `src/arrow`.
|
|
4
|
+
*/
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
import type { IrNode, IrAggregate } from "../ir/types.js";
|
|
7
|
+
export interface TsAggregateParseResult {
|
|
8
|
+
ir: IrAggregate;
|
|
9
|
+
rawName: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseTsAggregateCall(call: ts.CallExpression, paramNames: string[], resolveArg?: (expr: ts.Expression) => IrNode | null): TsAggregateParseResult | null;
|
|
12
|
+
export { AGGREGATE_FUNCS, toIrFuncName } from "../arrow/aggregates.js";
|
|
13
|
+
//# sourceMappingURL=ts-aggregates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-aggregates.d.ts","sourceRoot":"","sources":["../../src/transformer/ts-aggregates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK1D,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,GAAG,IAAI,GAClD,sBAAsB,GAAG,IAAI,CAyB/B;AA6DD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse TypeScript CallExpression nodes as aggregate calls (SUM, COUNT, …)
|
|
3
|
+
* for the compile-time transformer. Uses shared aggregate naming from `src/arrow`.
|
|
4
|
+
*/
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
import { AGGREGATE_FUNCS, toIrFuncName } from "../arrow/aggregates.js";
|
|
7
|
+
import { resolveMemberPath } from "./ts-member.js";
|
|
8
|
+
import { isIdentifierNamed } from "./ts-utils.js";
|
|
9
|
+
export function parseTsAggregateCall(call, paramNames, resolveArg) {
|
|
10
|
+
const callee = call.expression;
|
|
11
|
+
if (!ts.isIdentifier(callee))
|
|
12
|
+
return null;
|
|
13
|
+
const rawName = callee.text;
|
|
14
|
+
const funcName = toIrFuncName(rawName);
|
|
15
|
+
if (!AGGREGATE_FUNCS.has(funcName))
|
|
16
|
+
return null;
|
|
17
|
+
const parsedArg = parseTsAggregateArg(call.arguments[0], paramNames, resolveArg);
|
|
18
|
+
if (!parsedArg)
|
|
19
|
+
return null;
|
|
20
|
+
const { arg, distinct } = parsedArg;
|
|
21
|
+
const separator = parseTsAggregateSeparator(funcName, call);
|
|
22
|
+
const ir = {
|
|
23
|
+
kind: "aggregate",
|
|
24
|
+
func: funcName,
|
|
25
|
+
arg,
|
|
26
|
+
...(distinct ? { distinct: true } : {}),
|
|
27
|
+
...(separator === undefined ? {} : { separator }),
|
|
28
|
+
};
|
|
29
|
+
return { ir, rawName };
|
|
30
|
+
}
|
|
31
|
+
function parseTsAggregateArg(argExpr, paramNames, resolveArg) {
|
|
32
|
+
if (!argExpr)
|
|
33
|
+
return { arg: null, distinct: false };
|
|
34
|
+
if (ts.isCallExpression(argExpr) && isIdentifierNamed(argExpr.expression, "distinct")) {
|
|
35
|
+
return parseDistinctWrapperArg(argExpr, paramNames, resolveArg);
|
|
36
|
+
}
|
|
37
|
+
if (ts.isPropertyAccessExpression(argExpr)) {
|
|
38
|
+
const resolved = resolveMemberPath(argExpr, paramNames);
|
|
39
|
+
if (!resolved || resolved.path.length === 0)
|
|
40
|
+
return { arg: null, distinct: false };
|
|
41
|
+
return {
|
|
42
|
+
arg: { kind: "member", param: resolved.param, path: resolved.path },
|
|
43
|
+
distinct: false,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (resolveArg) {
|
|
47
|
+
const arg = resolveArg(argExpr);
|
|
48
|
+
if (!arg)
|
|
49
|
+
return null;
|
|
50
|
+
return { arg, distinct: false };
|
|
51
|
+
}
|
|
52
|
+
return { arg: null, distinct: false };
|
|
53
|
+
}
|
|
54
|
+
function parseDistinctWrapperArg(distinctCall, paramNames, resolveArg) {
|
|
55
|
+
const inner = distinctCall.arguments[0];
|
|
56
|
+
if (!inner)
|
|
57
|
+
return { arg: null, distinct: false };
|
|
58
|
+
if (ts.isPropertyAccessExpression(inner)) {
|
|
59
|
+
const resolved = resolveMemberPath(inner, paramNames);
|
|
60
|
+
if (!resolved || resolved.path.length === 0)
|
|
61
|
+
return { arg: null, distinct: false };
|
|
62
|
+
return {
|
|
63
|
+
arg: { kind: "member", param: resolved.param, path: resolved.path },
|
|
64
|
+
distinct: true,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
if (resolveArg) {
|
|
68
|
+
const arg = resolveArg(inner);
|
|
69
|
+
if (!arg)
|
|
70
|
+
return null;
|
|
71
|
+
return { arg, distinct: true };
|
|
72
|
+
}
|
|
73
|
+
return { arg: null, distinct: false };
|
|
74
|
+
}
|
|
75
|
+
function parseTsAggregateSeparator(funcName, call) {
|
|
76
|
+
if (funcName !== "GROUP_CONCAT" && funcName !== "STRING_AGG")
|
|
77
|
+
return undefined;
|
|
78
|
+
const sepExpr = call.arguments[1];
|
|
79
|
+
return sepExpr && ts.isStringLiteral(sepExpr) ? sepExpr.text : undefined;
|
|
80
|
+
}
|
|
81
|
+
// Re-export for tests/mocks that imported these from shared.
|
|
82
|
+
export { AGGREGATE_FUNCS, toIrFuncName } from "../arrow/aggregates.js";
|
|
83
|
+
//# sourceMappingURL=ts-aggregates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-aggregates.js","sourceRoot":"","sources":["../../src/transformer/ts-aggregates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map TypeScript binary-operator SyntaxKind values to IR binary ops for the
|
|
3
|
+
* compile-time where/having transformer.
|
|
4
|
+
*/
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
import type { IrBinary } from "../ir/types.js";
|
|
7
|
+
export declare function binaryOpFromSyntaxKind(kind: ts.SyntaxKind): IrBinary["op"] | "in" | null;
|
|
8
|
+
//# sourceMappingURL=ts-binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-binary.d.ts","sourceRoot":"","sources":["../../src/transformer/ts-binary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA0B/C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAExF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map TypeScript binary-operator SyntaxKind values to IR binary ops for the
|
|
3
|
+
* compile-time where/having transformer.
|
|
4
|
+
*/
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
const BINARY_OP_MAP = {
|
|
7
|
+
[ts.SyntaxKind.AmpersandAmpersandToken]: "&&",
|
|
8
|
+
[ts.SyntaxKind.BarBarToken]: "||",
|
|
9
|
+
[ts.SyntaxKind.EqualsEqualsEqualsToken]: "===",
|
|
10
|
+
[ts.SyntaxKind.ExclamationEqualsEqualsToken]: "!==",
|
|
11
|
+
[ts.SyntaxKind.EqualsEqualsToken]: "==",
|
|
12
|
+
[ts.SyntaxKind.ExclamationEqualsToken]: "!=",
|
|
13
|
+
[ts.SyntaxKind.GreaterThanToken]: ">",
|
|
14
|
+
[ts.SyntaxKind.GreaterThanEqualsToken]: ">=",
|
|
15
|
+
[ts.SyntaxKind.LessThanToken]: "<",
|
|
16
|
+
[ts.SyntaxKind.LessThanEqualsToken]: "<=",
|
|
17
|
+
[ts.SyntaxKind.PlusToken]: "+",
|
|
18
|
+
[ts.SyntaxKind.MinusToken]: "-",
|
|
19
|
+
[ts.SyntaxKind.AsteriskToken]: "*",
|
|
20
|
+
[ts.SyntaxKind.SlashToken]: "/",
|
|
21
|
+
[ts.SyntaxKind.PercentToken]: "%",
|
|
22
|
+
[ts.SyntaxKind.AmpersandToken]: "&",
|
|
23
|
+
[ts.SyntaxKind.BarToken]: "|",
|
|
24
|
+
[ts.SyntaxKind.CaretToken]: "^",
|
|
25
|
+
[ts.SyntaxKind.LessThanLessThanToken]: "<<",
|
|
26
|
+
[ts.SyntaxKind.GreaterThanGreaterThanToken]: ">>",
|
|
27
|
+
[ts.SyntaxKind.InKeyword]: "in",
|
|
28
|
+
};
|
|
29
|
+
export function binaryOpFromSyntaxKind(kind) {
|
|
30
|
+
return BINARY_OP_MAP[kind] ?? null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ts-binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-binary.js","sourceRoot":"","sources":["../../src/transformer/ts-binary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,MAAM,aAAa,GAAsD;IACvE,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,IAAI;IAC7C,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI;IACjC,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,KAAK;IAC9C,CAAC,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,KAAK;IACnD,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI;IACvC,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI;IAC5C,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,GAAG;IACrC,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI;IAC5C,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG;IAClC,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,IAAI;IACzC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;IAC9B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG;IAClC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,GAAG;IACjC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,GAAG;IACnC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG;IAC7B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI;IAC3C,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI;IACjD,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;CAChC,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC"}
|