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,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global default Db and entity registry.
|
|
3
|
+
* - Db: set by Db constructor, fallback when entities don't have a per-entity Db.
|
|
4
|
+
* - Registry: populated by Entity(), used by Db.migrate() / Db.validate().
|
|
5
|
+
*/
|
|
6
|
+
import { extractBaseType, toArray } from "../utils.js";
|
|
7
|
+
let defaultDb = null;
|
|
8
|
+
export function getDefaultDb() {
|
|
9
|
+
return defaultDb;
|
|
10
|
+
}
|
|
11
|
+
export function setDefaultDb(db) {
|
|
12
|
+
defaultDb = db;
|
|
13
|
+
}
|
|
14
|
+
const entityRegistry = [];
|
|
15
|
+
class JunctionRegistry {
|
|
16
|
+
pending = [];
|
|
17
|
+
draining = false;
|
|
18
|
+
enqueue(p) {
|
|
19
|
+
this.pending.push(p);
|
|
20
|
+
}
|
|
21
|
+
drain() {
|
|
22
|
+
if (this.draining)
|
|
23
|
+
return;
|
|
24
|
+
this.draining = true;
|
|
25
|
+
try {
|
|
26
|
+
let progress = true;
|
|
27
|
+
while (progress && this.pending.length > 0) {
|
|
28
|
+
progress = false;
|
|
29
|
+
const remaining = [];
|
|
30
|
+
for (const p of this.pending) {
|
|
31
|
+
if (this.tryMaterialize(p))
|
|
32
|
+
progress = true;
|
|
33
|
+
else
|
|
34
|
+
remaining.push(p);
|
|
35
|
+
}
|
|
36
|
+
this.pending = remaining;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
this.draining = false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
assertAllResolved() {
|
|
44
|
+
if (this.pending.length === 0)
|
|
45
|
+
return;
|
|
46
|
+
const lines = this.pending.map((p) => ` - junction "${p.options.junction}" for ${p.sourceTable}.${asKey(p.options.foreignKey)} ↔ ${asKey(p.options.referenceKey)} (target entity not registered)`);
|
|
47
|
+
throw new Error(`manyToMany: cannot finalize ${this.pending.length} junction table(s):\n${lines.join("\n")}\n` +
|
|
48
|
+
`Register the target entity before calling migrate()/validate(), or define the junction entity explicitly.`);
|
|
49
|
+
}
|
|
50
|
+
clear() {
|
|
51
|
+
this.pending = [];
|
|
52
|
+
this.draining = false;
|
|
53
|
+
}
|
|
54
|
+
tryMaterialize(p) {
|
|
55
|
+
if (getEntityByTableName(p.options.junction))
|
|
56
|
+
return true;
|
|
57
|
+
const target = p.resolveTarget();
|
|
58
|
+
if (!target)
|
|
59
|
+
return false;
|
|
60
|
+
const schema = buildJunctionSchema(p, target);
|
|
61
|
+
p.materialize(schema);
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function asKey(k) {
|
|
66
|
+
return Array.isArray(k) ? `[${k.join(", ")}]` : k;
|
|
67
|
+
}
|
|
68
|
+
function buildJunctionSchema(p, target) {
|
|
69
|
+
const fkCols = toArray(p.options.foreignKey);
|
|
70
|
+
const refCols = toArray(p.options.referenceKey);
|
|
71
|
+
assertColumnCount(fkCols, p.sourcePkCols, p.sourceTable, p.options.junction, "foreignKey");
|
|
72
|
+
assertColumnCount(refCols, target.pk, target.table, p.options.junction, "referenceKey");
|
|
73
|
+
const out = {};
|
|
74
|
+
for (let i = 0; i < fkCols.length; i++) {
|
|
75
|
+
out[fkCols[i]] = `${extractBaseType(p.sourceSchema[p.sourcePkCols[i]])} not null`;
|
|
76
|
+
}
|
|
77
|
+
for (let i = 0; i < refCols.length; i++) {
|
|
78
|
+
out[refCols[i]] = `${extractBaseType(target.schema[target.pk[i]])} not null`;
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
function assertColumnCount(junctionCols, refPkCols, refTable, junctionName, side) {
|
|
83
|
+
if (junctionCols.length === refPkCols.length)
|
|
84
|
+
return;
|
|
85
|
+
throw new Error(`manyToMany: junction "${junctionName}" ${side} has ${junctionCols.length} column(s) ` +
|
|
86
|
+
`but referenced entity "${refTable}" has ${refPkCols.length} primary key column(s). ` +
|
|
87
|
+
`They must match positionally.`);
|
|
88
|
+
}
|
|
89
|
+
const junctionRegistry = new JunctionRegistry();
|
|
90
|
+
export function enqueuePendingJunction(p) {
|
|
91
|
+
junctionRegistry.enqueue(p);
|
|
92
|
+
}
|
|
93
|
+
export function registerEntity(entity) {
|
|
94
|
+
entityRegistry.push(entity);
|
|
95
|
+
entity._registerJunctions?.();
|
|
96
|
+
}
|
|
97
|
+
export function getRegisteredEntities() {
|
|
98
|
+
junctionRegistry.drain();
|
|
99
|
+
junctionRegistry.assertAllResolved();
|
|
100
|
+
return entityRegistry;
|
|
101
|
+
}
|
|
102
|
+
export function getEntityByTableName(tableName) {
|
|
103
|
+
return entityRegistry.find((e) => e.table._table === tableName);
|
|
104
|
+
}
|
|
105
|
+
export function clearRegistry() {
|
|
106
|
+
entityRegistry.length = 0;
|
|
107
|
+
junctionRegistry.clear();
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=global-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-driver.js","sourceRoot":"","sources":["../../src/entity/global-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Entity, getPkColumnsFromSchema } from "./entity.js";
|
|
2
|
+
export type { AnyEntityClass, EntityClass, EntityClassOf, EntityInstance, EntityRow, EntitySchema, EntityRelations, EntityFields, SelectRow, RelationLoadedValue, RelationTarget, EntityRelationProps, EntityRelationPropsLoaded, Row, } from "./entity.js";
|
|
3
|
+
export type { TableDef, EntityBase } from "./types.js";
|
|
4
|
+
export type { InferTable, InferInsert, Flatten, InferColumnType, Materialized, MaterializeShape, Mutable, IsNotNull, IsGenerated, HasDefault, SQLToTS, SQLTypeMap, ExtractSQLBase, StripParens, OptionalOnInsert, } from "./schema-inference.js";
|
|
5
|
+
export { rel, oneToOne, manyToOne, oneToMany, manyToMany } from "./relations.js";
|
|
6
|
+
export type { OneToMany, ManyToOne, OneToOne, ManyToMany, RelationDef, RelationsMap, RelationOptions, JunctionOptions, RelationKind, RelationType, RelationQueryBuilder, RelationQueryable, RelatedEntityInstance, ManyRelation, SingleRelation, ToEntityInstance, OneToOneDef, ManyToOneDef, OneToManyDef, ManyToManyDef, } from "./relations.js";
|
|
7
|
+
export type { RegisteredEntity } from "./global-driver.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,YAAY,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAmC7D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare function getPkColumns(schema: Record<string, string>): string[];
|
|
2
|
+
/** Primary key column names from a schema map. */
|
|
3
|
+
export declare function getPkColumnsFromSchema(schema: Record<string, string>): string[];
|
|
4
|
+
export { getPkColumns };
|
|
5
|
+
//# sourceMappingURL=pk-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-columns.d.ts","sourceRoot":"","sources":["../../src/entity/pk-columns.ts"],"names":[],"mappings":"AAKA,iBAAS,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAG9D;AAED,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAE/E;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function hasPrimaryKey(def) {
|
|
2
|
+
const stripped = def.replaceAll(/'[^']*'/g, "").replaceAll(/--[^\n]*/g, "");
|
|
3
|
+
return /\bprimary\s+key\b/i.test(stripped);
|
|
4
|
+
}
|
|
5
|
+
function getPkColumns(schema) {
|
|
6
|
+
const names = Object.keys(schema);
|
|
7
|
+
return names.filter((c) => hasPrimaryKey(schema[c]));
|
|
8
|
+
}
|
|
9
|
+
/** Primary key column names from a schema map. */
|
|
10
|
+
export function getPkColumnsFromSchema(schema) {
|
|
11
|
+
return getPkColumns(schema);
|
|
12
|
+
}
|
|
13
|
+
export { getPkColumns };
|
|
14
|
+
//# sourceMappingURL=pk-columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-columns.js","sourceRoot":"","sources":["../../src/entity/pk-columns.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5E,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,MAA8B;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB,CAAC,MAA8B;IACnE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relation definitions for Entity(table, schema, relations).
|
|
3
|
+
* Target is a thunk (() => EntityClass) that defers evaluation for circular imports.
|
|
4
|
+
*/
|
|
5
|
+
import type { AnyEntityClass, EntityClassOf, EntityInstance, SelectRow } from "./entity.js";
|
|
6
|
+
import type { EntityBase } from "./types.js";
|
|
7
|
+
/** Union of the four relation kinds. */
|
|
8
|
+
export type RelationType = "one-to-one" | "many-to-one" | "one-to-many" | "many-to-many";
|
|
9
|
+
/** FK options for to-one and to-many relations. */
|
|
10
|
+
export interface RelationOptions {
|
|
11
|
+
/** Column(s) on the owning table that hold the foreign key. */
|
|
12
|
+
foreignKey: string | string[];
|
|
13
|
+
/** Column(s) on the referenced table (defaults to primary key). */
|
|
14
|
+
references?: string | string[];
|
|
15
|
+
}
|
|
16
|
+
/** Options for a many-to-many relation through a junction table. */
|
|
17
|
+
export interface JunctionOptions {
|
|
18
|
+
/** Name of the junction (join) table. */
|
|
19
|
+
junction: string;
|
|
20
|
+
/** Column(s) in the junction table that reference the owning entity. */
|
|
21
|
+
foreignKey: string | string[];
|
|
22
|
+
/** Column(s) in the junction table that reference the related entity. */
|
|
23
|
+
referenceKey: string | string[];
|
|
24
|
+
}
|
|
25
|
+
/** Internal descriptor created by the relation factory functions (`oneToOne`, `manyToOne`, etc.). */
|
|
26
|
+
export interface RelationDef<_E = unknown, TType extends RelationType = RelationType> {
|
|
27
|
+
/** The relation kind string. */
|
|
28
|
+
readonly _relType: TType;
|
|
29
|
+
/** Thunk returning the related entity class (deferred to handle circular imports). */
|
|
30
|
+
readonly _target: () => unknown;
|
|
31
|
+
/** FK or junction options provided when defining the relation. */
|
|
32
|
+
readonly _options: RelationOptions | JunctionOptions;
|
|
33
|
+
}
|
|
34
|
+
/** Definition type for one-to-one relations (result of `oneToOne()`). */
|
|
35
|
+
export type OneToOneDef<E> = RelationDef<E, "one-to-one">;
|
|
36
|
+
/** Definition type for many-to-one relations (result of `manyToOne()`). */
|
|
37
|
+
export type ManyToOneDef<E> = RelationDef<E, "many-to-one">;
|
|
38
|
+
/** Definition type for one-to-many relations (result of `oneToMany()`). */
|
|
39
|
+
export type OneToManyDef<E> = RelationDef<E, "one-to-many">;
|
|
40
|
+
/** Definition type for many-to-many relations (result of `manyToMany()`). */
|
|
41
|
+
export type ManyToManyDef<E> = RelationDef<E, "many-to-many">;
|
|
42
|
+
/** Record mapping relation property names to their `RelationDef` descriptors. */
|
|
43
|
+
export type RelationsMap = Record<string, RelationDef<any, RelationType>>;
|
|
44
|
+
/** Fluent builder returned by a loaded relation's `.query()` call. */
|
|
45
|
+
export interface RelationQueryBuilder<T> {
|
|
46
|
+
/** Returns a fresh query builder for this relation (resets any applied filters). */
|
|
47
|
+
query(): RelationQueryBuilder<T>;
|
|
48
|
+
/** Filters the relation results using a predicate. */
|
|
49
|
+
where(fn: (row: T) => boolean): RelationQueryBuilder<T>;
|
|
50
|
+
/** Adds an ORDER BY clause. */
|
|
51
|
+
orderBy(col: string, dir?: string): RelationQueryBuilder<T>;
|
|
52
|
+
/** Limits the number of results returned. */
|
|
53
|
+
limit(n: number): RelationQueryBuilder<T>;
|
|
54
|
+
/** Skips the first `n` results. */
|
|
55
|
+
offset(n: number): RelationQueryBuilder<T>;
|
|
56
|
+
/** Projects each row to a new shape; return type preserves U so `select().toArray()` is typed as `U[]`. */
|
|
57
|
+
select<U>(fn: (row: T) => U): RelationQueryBuilder<U>;
|
|
58
|
+
/** Executes the query and returns all matching rows. */
|
|
59
|
+
toArray(): Promise<T[]>;
|
|
60
|
+
/** Executes the query and returns the first matching row, or `undefined`. */
|
|
61
|
+
first(): Promise<T | undefined>;
|
|
62
|
+
/** Executes the query and returns the row count. */
|
|
63
|
+
count(): Promise<number>;
|
|
64
|
+
}
|
|
65
|
+
/** `'many'` for to-many relation types; `'one'` for to-one. */
|
|
66
|
+
export type RelationKind<TType extends RelationType> = TType extends "one-to-many" | "many-to-many" ? "many" : "one";
|
|
67
|
+
/** Resolved relation property type given entity class E and cardinality Kind. */
|
|
68
|
+
export type RelatedEntityInstance<E extends AnyEntityClass, Kind extends "one" | "many"> = Kind extends "many" ? RelationQueryBuilder<SelectRow<E>> & EntityInstance<E>[] : SingleRelation<EntityInstance<E>>;
|
|
69
|
+
/** Array-shaped relation property that also exposes a `.query()` builder. */
|
|
70
|
+
export type ManyRelation<E extends EntityBase> = RelationQueryBuilder<E> & E[];
|
|
71
|
+
/** Singular relation property: the related entity instance directly (not wrapped in an array). */
|
|
72
|
+
export type SingleRelation<E extends EntityBase> = E;
|
|
73
|
+
/** Normalises E (entity class or instance type) to its instance type. */
|
|
74
|
+
export type ToEntityInstance<E> = E extends EntityBase ? E : EntityInstance<EntityClassOf<E>>;
|
|
75
|
+
/** Relation property type for one-to-many associations. Declare on entity subclasses. */
|
|
76
|
+
export type OneToMany<E extends AnyEntityClass | EntityBase> = E extends EntityBase ? ManyRelation<E> : RelatedEntityInstance<EntityClassOf<E>, "many">;
|
|
77
|
+
/** Relation property type for many-to-one associations. Declare on entity subclasses. */
|
|
78
|
+
export type ManyToOne<E extends AnyEntityClass | EntityBase> = SingleRelation<ToEntityInstance<E>>;
|
|
79
|
+
/** Relation property type for one-to-one associations. Declare on entity subclasses. */
|
|
80
|
+
export type OneToOne<E extends AnyEntityClass | EntityBase> = SingleRelation<ToEntityInstance<E>>;
|
|
81
|
+
/** Relation property type for many-to-many associations. Declare on entity subclasses. */
|
|
82
|
+
export type ManyToMany<E extends AnyEntityClass | EntityBase> = E extends EntityBase ? ManyRelation<E> : RelatedEntityInstance<EntityClassOf<E>, "many">;
|
|
83
|
+
/** @deprecated Prefer OneToMany<Post> with import type + EntityClassOf. Kept for backward compatibility. */
|
|
84
|
+
export type UntypedOneToMany = RelationQueryBuilder<SelectRow<any>> & EntityInstance<any>[];
|
|
85
|
+
/** @deprecated Prefer ManyToOne<Post> with import type + EntityClassOf. Kept for backward compatibility. */
|
|
86
|
+
export type UntypedManyToOne = RelationQueryBuilder<SelectRow<any>> & EntityInstance<any>;
|
|
87
|
+
/** Converts a `RelationDef` to its runtime queryable shape (array builder or single instance). */
|
|
88
|
+
export type RelationQueryable<R> = R extends RelationDef<infer E, infer TType> ? E extends AnyEntityClass ? RelatedEntityInstance<E, RelationKind<TType>> : TType extends "one-to-many" | "many-to-many" ? RelationQueryBuilder<E> & E[] : RelationQueryBuilder<E> & E : never;
|
|
89
|
+
/** oneToOne: FK on this table; target is the other entity */
|
|
90
|
+
export declare function oneToOne<E extends AnyEntityClass>(target: () => E, options: RelationOptions): RelationDef<E, "one-to-one">;
|
|
91
|
+
/** oneToOne overload for generic target types (use with `import type` thunks). */
|
|
92
|
+
export declare function oneToOne<TTarget>(target: () => {
|
|
93
|
+
_selectType: TTarget;
|
|
94
|
+
}, options: RelationOptions): RelationDef<TTarget, "one-to-one">;
|
|
95
|
+
/** Manual typing: pass E explicitly when thunk is () => unknown (e.g. createRequire). Use with import type. */
|
|
96
|
+
export declare function oneToOne<E extends AnyEntityClass>(target: () => unknown, options: RelationOptions): RelationDef<E, "one-to-one">;
|
|
97
|
+
/** manyToOne: FK on this table. Pass a thunk (() => EntityClass) to handle circular imports. */
|
|
98
|
+
export declare function manyToOne<E extends AnyEntityClass>(target: () => E, options: RelationOptions): RelationDef<E, "many-to-one">;
|
|
99
|
+
/** manyToOne overload for generic target types (use with `import type` thunks). */
|
|
100
|
+
export declare function manyToOne<TTarget>(target: () => {
|
|
101
|
+
_selectType: TTarget;
|
|
102
|
+
}, options: RelationOptions): RelationDef<TTarget, "many-to-one">;
|
|
103
|
+
/** Manual typing: pass E explicitly when thunk is () => unknown (e.g. createRequire). Use with import type. */
|
|
104
|
+
export declare function manyToOne<E extends AnyEntityClass>(target: () => unknown, options: RelationOptions): RelationDef<E, "many-to-one">;
|
|
105
|
+
/** oneToMany: FK on target table. Pass a thunk (() => EntityClass) to handle circular imports. */
|
|
106
|
+
export declare function oneToMany<E extends AnyEntityClass>(target: () => E, options: {
|
|
107
|
+
foreignKey: string | string[];
|
|
108
|
+
}): RelationDef<E, "one-to-many">;
|
|
109
|
+
/** oneToMany overload for generic target types (use with `import type` thunks). */
|
|
110
|
+
export declare function oneToMany<TTarget>(target: () => {
|
|
111
|
+
_selectType: TTarget;
|
|
112
|
+
}, options: {
|
|
113
|
+
foreignKey: string | string[];
|
|
114
|
+
}): RelationDef<TTarget, "one-to-many">;
|
|
115
|
+
/** Manual typing: pass E explicitly when thunk is () => unknown (e.g. createRequire). Use with import type. */
|
|
116
|
+
export declare function oneToMany<E extends AnyEntityClass>(target: () => unknown, options: {
|
|
117
|
+
foreignKey: string | string[];
|
|
118
|
+
}): RelationDef<E, "one-to-many">;
|
|
119
|
+
/** manyToMany: junction table with foreignKey and referenceKey */
|
|
120
|
+
export declare function manyToMany<E extends AnyEntityClass>(target: () => E, options: JunctionOptions): RelationDef<E, "many-to-many">;
|
|
121
|
+
/** manyToMany overload for generic target types (use with `import type` thunks). */
|
|
122
|
+
export declare function manyToMany<TTarget>(target: () => {
|
|
123
|
+
_selectType: TTarget;
|
|
124
|
+
}, options: JunctionOptions): RelationDef<TTarget, "many-to-many">;
|
|
125
|
+
/** Manual typing: pass E explicitly when thunk is () => unknown (e.g. createRequire). Use with import type. */
|
|
126
|
+
export declare function manyToMany<E extends AnyEntityClass>(target: () => unknown, options: JunctionOptions): RelationDef<E, "many-to-many">;
|
|
127
|
+
/** Namespace object grouping all relation factory functions (`rel.oneToMany(…)`, etc.). */
|
|
128
|
+
export declare const rel: {
|
|
129
|
+
oneToOne: typeof oneToOne;
|
|
130
|
+
manyToOne: typeof manyToOne;
|
|
131
|
+
oneToMany: typeof oneToMany;
|
|
132
|
+
manyToMany: typeof manyToMany;
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=relations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/entity/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function makeRelation(type, target, options) {
|
|
2
|
+
return { _relType: type, _target: target, _options: options };
|
|
3
|
+
}
|
|
4
|
+
export function oneToOne(target, options) {
|
|
5
|
+
return makeRelation("one-to-one", target, options);
|
|
6
|
+
}
|
|
7
|
+
export function manyToOne(target, options) {
|
|
8
|
+
return makeRelation("many-to-one", target, options);
|
|
9
|
+
}
|
|
10
|
+
export function oneToMany(target, options) {
|
|
11
|
+
return makeRelation("one-to-many", target, options);
|
|
12
|
+
}
|
|
13
|
+
export function manyToMany(target, options) {
|
|
14
|
+
return makeRelation("many-to-many", target, options);
|
|
15
|
+
}
|
|
16
|
+
/** Namespace object grouping all relation factory functions (`rel.oneToMany(…)`, etc.). */
|
|
17
|
+
export const rel = {
|
|
18
|
+
oneToOne,
|
|
19
|
+
manyToOne,
|
|
20
|
+
oneToMany,
|
|
21
|
+
manyToMany,
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=relations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/entity/relations.ts"],"names":[],"mappings":"AAyHA,SAAS,YAAY,CACnB,IAAW,EACX,MAAqB,EACrB,OAA0C;IAE1C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAA2B,CAAC;AACzF,CAAC;AAiBD,MAAM,UAAU,QAAQ,CACtB,MAAqB,EACrB,OAAwB;IAExB,OAAO,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAiBD,MAAM,UAAU,SAAS,CACvB,MAAqB,EACrB,OAAwB;IAExB,OAAO,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAiBD,MAAM,UAAU,SAAS,CACvB,MAAqB,EACrB,OAA0C;IAE1C,OAAO,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAiBD,MAAM,UAAU,UAAU,CACxB,MAAqB,EACrB,OAAwB;IAExB,OAAO,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;CACX,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema string inference: SQL-like column strings → TypeScript types.
|
|
3
|
+
* Used by Entity(table, schema, relations) for InferTable and InferInsert.
|
|
4
|
+
*/
|
|
5
|
+
/** Lookup table from SQL type names to their TypeScript primitive equivalents. */
|
|
6
|
+
export type SQLTypeMap = {
|
|
7
|
+
integer: number;
|
|
8
|
+
int: number;
|
|
9
|
+
serial: number;
|
|
10
|
+
smallint: number;
|
|
11
|
+
tinyint: number;
|
|
12
|
+
real: number;
|
|
13
|
+
float: number;
|
|
14
|
+
double: number;
|
|
15
|
+
numeric: number;
|
|
16
|
+
decimal: number;
|
|
17
|
+
text: string;
|
|
18
|
+
varchar: string;
|
|
19
|
+
char: string;
|
|
20
|
+
nvarchar: string;
|
|
21
|
+
uuid: string;
|
|
22
|
+
boolean: boolean;
|
|
23
|
+
bool: boolean;
|
|
24
|
+
date: Date;
|
|
25
|
+
datetime: Date;
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
blob: Uint8Array;
|
|
28
|
+
json: unknown;
|
|
29
|
+
jsonb: unknown;
|
|
30
|
+
bigint: bigint;
|
|
31
|
+
bigserial: bigint;
|
|
32
|
+
};
|
|
33
|
+
/** Removes parenthesised precision suffixes (e.g. `varchar(255)` → `varchar`). */
|
|
34
|
+
export type StripParens<S extends string> = S extends `${infer Base}(${string})${infer Rest}` ? `${Base}${Rest}` : S;
|
|
35
|
+
/** Extracts the lowercased base SQL type from a column string (strips modifiers and precision). */
|
|
36
|
+
export type ExtractSQLBase<S extends string> = StripParens<S> extends `${infer Base} ${string}` ? Lowercase<Base> : Lowercase<StripParens<S>>;
|
|
37
|
+
/** Maps a SQL base type string to its TypeScript equivalent (e.g. `'integer'` → `number`). */
|
|
38
|
+
export type SQLToTS<S extends string> = ExtractSQLBase<S> extends keyof SQLTypeMap ? SQLTypeMap[ExtractSQLBase<S>] : unknown;
|
|
39
|
+
/** `true` when column string S is NOT NULL or PRIMARY KEY. */
|
|
40
|
+
export type IsNotNull<S extends string> = Lowercase<S> extends `${string}not null${string}` ? true : Lowercase<S> extends `${string}primary key${string}` ? true : false;
|
|
41
|
+
/** `true` when column string S is autoincrement, serial, or generated. */
|
|
42
|
+
export type IsGenerated<S extends string> = Lowercase<S> extends `${string}autoincrement${string}` ? true : Lowercase<S> extends `${string}auto_increment${string}` ? true : Lowercase<S> extends `${string}generated${string}` ? true : Lowercase<ExtractSQLBase<S>> extends "serial" | "bigserial" ? true : false;
|
|
43
|
+
/** `true` when column string S contains a DEFAULT clause. */
|
|
44
|
+
export type HasDefault<S extends string> = Lowercase<S> extends `${string}default${string}` ? true : false;
|
|
45
|
+
/** TypeScript type for a single schema column string S; includes `| null` when nullable. */
|
|
46
|
+
export type InferColumnType<S extends string> = IsNotNull<S> extends true ? SQLToTS<S> : SQLToTS<S> | null;
|
|
47
|
+
/** Forces TypeScript to expand an intersection/mapped type into a flat object for readable tooltips. */
|
|
48
|
+
export type Flatten<T> = {
|
|
49
|
+
[K in keyof T]: T[K];
|
|
50
|
+
} & {};
|
|
51
|
+
/** Removes `readonly` from all properties of T. */
|
|
52
|
+
export type Mutable<T> = {
|
|
53
|
+
-readonly [K in keyof T]: T[K];
|
|
54
|
+
};
|
|
55
|
+
/** Materialized field types from schema strings (id: number, name: string, etc.). */
|
|
56
|
+
export type Materialized<T extends Record<string, string>> = Mutable<{
|
|
57
|
+
readonly [K in keyof T]: InferColumnType<T[K]>;
|
|
58
|
+
}>;
|
|
59
|
+
/** Accepts either schema literal strings or an already-materialized shape; returns the materialized form. */
|
|
60
|
+
export type MaterializeShape<T extends Record<string, unknown>> = T extends Record<string, string> ? Materialized<T> : Mutable<T>;
|
|
61
|
+
/**
|
|
62
|
+
* Inferred row type from schema: one type per column, all writable.
|
|
63
|
+
*/
|
|
64
|
+
export type InferTable<T extends Record<string, string>> = Flatten<{
|
|
65
|
+
-readonly [K in keyof T]: InferColumnType<T[K]>;
|
|
66
|
+
}>;
|
|
67
|
+
/** `true` when a column may be omitted on INSERT (generated, nullable, or has DEFAULT). */
|
|
68
|
+
export type OptionalOnInsert<S extends string> = IsGenerated<S> extends true ? true : IsNotNull<S> extends false ? true : HasDefault<S> extends true ? true : false;
|
|
69
|
+
/**
|
|
70
|
+
* Shape for INSERT / create(): generated, nullable, and default columns are optional.
|
|
71
|
+
*/
|
|
72
|
+
export type InferInsert<T extends Record<string, string>> = Flatten<{
|
|
73
|
+
-readonly [K in keyof T as OptionalOnInsert<T[K]> extends true ? K : never]?: InferColumnType<T[K]>;
|
|
74
|
+
} & {
|
|
75
|
+
-readonly [K in keyof T as OptionalOnInsert<T[K]> extends true ? never : K]: InferColumnType<T[K]>;
|
|
76
|
+
}>;
|
|
77
|
+
//# sourceMappingURL=schema-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-inference.d.ts","sourceRoot":"","sources":["../../src/entity/schema-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-inference.js","sourceRoot":"","sources":["../../src/entity/schema-inference.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableDef (serializable table descriptor) and EntityBase.
|
|
3
|
+
*/
|
|
4
|
+
import type { InferTable, InferInsert } from "./schema-inference.js";
|
|
5
|
+
import type { RelationsMap } from "./relations.js";
|
|
6
|
+
import type { SingleRowQueryBuilder } from "../orm/single-row-query-builder.js";
|
|
7
|
+
import type { Trx } from "../orm/db.js";
|
|
8
|
+
/** Internal table descriptor carrying the table name, schema, relation map, and inferred row types. */
|
|
9
|
+
export interface TableDef<TSchema extends Record<string, string>, TRelations extends RelationsMap = Record<string, never>> {
|
|
10
|
+
/** The SQL table name. */
|
|
11
|
+
readonly _table: string;
|
|
12
|
+
/** The raw column schema (`{ colName: 'integer NOT NULL', … }`). */
|
|
13
|
+
readonly _schema: TSchema;
|
|
14
|
+
/** The declared relations map. */
|
|
15
|
+
readonly _relations: TRelations;
|
|
16
|
+
/** Inferred full row type (all columns). */
|
|
17
|
+
readonly _selectType: InferTable<TSchema>;
|
|
18
|
+
/** Inferred insert type (optional columns omitted). */
|
|
19
|
+
readonly _insertType: InferInsert<TSchema>;
|
|
20
|
+
}
|
|
21
|
+
/** Base interface mixed into every entity instance. Provides change-tracking and the per-instance query builder. */
|
|
22
|
+
export interface EntityBase {
|
|
23
|
+
/** Whether this instance has not yet been persisted to the database. */
|
|
24
|
+
_isNew: boolean;
|
|
25
|
+
/** Set of column names modified since last save. */
|
|
26
|
+
_dirty: ReadonlySet<string>;
|
|
27
|
+
/** Returns a `SingleRowQueryBuilder` scoped to this entity instance (optionally within a transaction). */
|
|
28
|
+
query(trx?: Trx): SingleRowQueryBuilder<this>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entity/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,uGAAuG;AACvG,MAAM,WAAW,QAAQ,CACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,UAAU,SAAS,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvD,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1C,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,oHAAoH;AACpH,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,0GAA0G;IAC1G,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entity/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typhex ORM: Entity-based API with arrow-function query predicates.
|
|
3
|
+
*/
|
|
4
|
+
export { Db, Trx, QueryBuilder, SingleRowQueryBuilder, InsertBuilder } from "./orm/index.js";
|
|
5
|
+
export { count, sum, avg, min, max, distinct } from "./orm/aggregates.js";
|
|
6
|
+
export { Entity, rel, getPkColumnsFromSchema, oneToOne, manyToOne, oneToMany, manyToMany, } from "./entity/index.js";
|
|
7
|
+
export { createSqliteDriver, createDriver } from "./driver/index.js";
|
|
8
|
+
export { createPostgresDriver } from "./dbs/postgres/driver.js";
|
|
9
|
+
export { appliedMigrations, diffSchema, dryRunMigrations, generateMigrationFiles, migrationStatus, pendingMigrations, runMigrations, upMigration, downMigration, } from "./migration/index.js";
|
|
10
|
+
export { loadConfig } from "./config/load-config.js";
|
|
11
|
+
export type { DbOptions, QueryExecutor, OrderDirection } from "./orm/index.js";
|
|
12
|
+
export type { DialectInfo, Driver, Connection, ExecuteResult, TransactionOptions, } from "./driver/types.js";
|
|
13
|
+
export type { SqliteDriverOptions, CreateDriverOptions } from "./driver/index.js";
|
|
14
|
+
export type { PostgresDriverOptions } from "./dbs/index.js";
|
|
15
|
+
export type { ColumnDef, ColumnChange, DbColumnInfo } from "./dbs/types.js";
|
|
16
|
+
export type { WithClause, CompiledCteBody } from "./dbs/types.js";
|
|
17
|
+
export type { AnyEntityClass, EntityBase, EntityClass, EntityClassOf, EntityInstance, EntityRow, EntitySchema, EntityRelations, EntityFields, SelectRow, TableDef, RelationLoadedValue, RelationTarget, EntityRelationProps, EntityRelationPropsLoaded, } from "./entity/index.js";
|
|
18
|
+
export type { InferTable, InferInsert, Flatten, InferColumnType, Materialized, MaterializeShape, Mutable, IsNotNull, IsGenerated, HasDefault, SQLToTS, SQLTypeMap, ExtractSQLBase, StripParens, OptionalOnInsert, } from "./entity/index.js";
|
|
19
|
+
export type { Row } from "./entity/index.js";
|
|
20
|
+
export type { OneToMany, ManyToOne, OneToOne, ManyToMany, RelationDef, RelationsMap, RelationOptions, JunctionOptions, RelationKind, RelationType, RelationQueryBuilder, RelationQueryable, RelatedEntityInstance, ManyRelation, SingleRelation, ToEntityInstance, OneToOneDef, ManyToOneDef, OneToManyDef, ManyToManyDef, } from "./entity/index.js";
|
|
21
|
+
export type { RegisteredEntity } from "./entity/index.js";
|
|
22
|
+
export type { DiffAction, DialectName, MigrationFile, MigrationRecord, MigrationResult, PendingMigration, MigrationDryRun, MigrationDb, } from "./migration/index.js";
|
|
23
|
+
export type { TyphexConfig } from "./config/types.js";
|
|
24
|
+
export type { LoadConfigOptions } from "./config/load-config.js";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG/E,YAAY,EACV,WAAW,EACX,MAAM,EACN,UAAU,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGlE,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAG7C,YAAY,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,YAAY,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typhex ORM: Entity-based API with arrow-function query predicates.
|
|
3
|
+
*/
|
|
4
|
+
// Core runtime
|
|
5
|
+
export { Db, Trx, QueryBuilder, SingleRowQueryBuilder, InsertBuilder } from "./orm/index.js";
|
|
6
|
+
export { count, sum, avg, min, max, distinct } from "./orm/aggregates.js";
|
|
7
|
+
export { Entity, rel, getPkColumnsFromSchema, oneToOne, manyToOne, oneToMany, manyToMany, } from "./entity/index.js";
|
|
8
|
+
export { createSqliteDriver, createDriver } from "./driver/index.js";
|
|
9
|
+
export { createPostgresDriver } from "./dbs/postgres/driver.js";
|
|
10
|
+
export { appliedMigrations, diffSchema, dryRunMigrations, generateMigrationFiles, migrationStatus, pendingMigrations, runMigrations, upMigration, downMigration, } from "./migration/index.js";
|
|
11
|
+
export { loadConfig } from "./config/load-config.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAe;AACf,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
package/dist/ir/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|