kysely 0.19.1 → 0.19.4

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.
Files changed (84) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +0 -5
  3. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -6
  4. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +0 -5
  5. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +0 -5
  6. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +0 -1
  7. package/dist/cjs/driver/driver.d.ts +0 -5
  8. package/dist/cjs/driver/dummy-driver.d.ts +0 -5
  9. package/dist/cjs/driver/runtime-driver.d.ts +0 -5
  10. package/dist/cjs/index.d.ts +0 -1
  11. package/dist/cjs/index.js +0 -1
  12. package/dist/cjs/migration/file-migration-provider.js +3 -2
  13. package/dist/cjs/migration/migrator.d.ts +2 -0
  14. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  15. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +1 -1
  16. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  17. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -1
  18. package/dist/cjs/operation-node/drop-constraint-node.d.ts +4 -0
  19. package/dist/cjs/operation-node/drop-constraint-node.js +6 -0
  20. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  21. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  22. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  24. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  25. package/dist/cjs/operation-node/operation-node-transformer.js +2 -0
  26. package/dist/cjs/operation-node/order-by-item-node.d.ts +1 -1
  27. package/dist/cjs/operation-node/primary-constraint-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  29. package/dist/cjs/operation-node/unique-constraint-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  32. package/dist/cjs/package.json +1 -1
  33. package/dist/cjs/parser/table-parser.d.ts +2 -11
  34. package/dist/cjs/query-builder/delete-query-builder.d.ts +35 -13
  35. package/dist/cjs/query-builder/select-query-builder.d.ts +34 -13
  36. package/dist/cjs/query-builder/update-query-builder.d.ts +35 -13
  37. package/dist/cjs/query-compiler/default-query-compiler.js +9 -0
  38. package/dist/cjs/schema/alter-table-builder.d.ts +13 -0
  39. package/dist/cjs/schema/alter-table-builder.js +57 -1
  40. package/dist/cjs/util/type-utils.d.ts +3 -0
  41. package/dist/esm/dialect/mysql/mysql-driver.d.ts +0 -5
  42. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -6
  43. package/dist/esm/dialect/postgres/postgres-driver.d.ts +0 -5
  44. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +0 -5
  45. package/dist/esm/dialect/sqlite/sqlite-introspector.js +0 -1
  46. package/dist/esm/driver/driver.d.ts +0 -5
  47. package/dist/esm/driver/dummy-driver.d.ts +0 -5
  48. package/dist/esm/driver/runtime-driver.d.ts +0 -5
  49. package/dist/esm/index.d.ts +0 -1
  50. package/dist/esm/index.js +0 -1
  51. package/dist/esm/migration/file-migration-provider.js +3 -2
  52. package/dist/esm/migration/migrator.d.ts +2 -0
  53. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  54. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +1 -1
  55. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  56. package/dist/esm/operation-node/delete-query-node.d.ts +1 -1
  57. package/dist/esm/operation-node/drop-constraint-node.d.ts +4 -0
  58. package/dist/esm/operation-node/drop-constraint-node.js +6 -0
  59. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  60. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  61. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  62. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  63. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  64. package/dist/esm/operation-node/operation-node-transformer.js +2 -0
  65. package/dist/esm/operation-node/order-by-item-node.d.ts +1 -1
  66. package/dist/esm/operation-node/primary-constraint-node.d.ts +1 -1
  67. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  68. package/dist/esm/operation-node/unique-constraint-node.d.ts +1 -1
  69. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  70. package/dist/esm/operation-node/with-node.d.ts +1 -1
  71. package/dist/esm/package.json +1 -1
  72. package/dist/esm/parser/table-parser.d.ts +2 -11
  73. package/dist/esm/query-builder/delete-query-builder.d.ts +35 -13
  74. package/dist/esm/query-builder/select-query-builder.d.ts +34 -13
  75. package/dist/esm/query-builder/update-query-builder.d.ts +35 -13
  76. package/dist/esm/query-compiler/default-query-compiler.js +9 -0
  77. package/dist/esm/schema/alter-table-builder.d.ts +13 -0
  78. package/dist/esm/schema/alter-table-builder.js +55 -0
  79. package/dist/esm/util/type-utils.d.ts +3 -0
  80. package/package.json +10 -10
  81. package/dist/cjs/query-builder/join-interface.d.ts +0 -130
  82. package/dist/cjs/query-builder/join-interface.js +0 -2
  83. package/dist/esm/query-builder/join-interface.d.ts +0 -130
  84. package/dist/esm/query-builder/join-interface.js +0 -2
@@ -1,12 +1,12 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
2
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
- import { TableExpression, TableExpressionDatabase, TableExpressionTables, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, FullJoinTableExpressionDatabase } from '../parser/table-parser.js';
4
+ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
5
5
  import { SelectExpression } from '../parser/select-parser.js';
6
6
  import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
7
7
  import { ReturningRow } from '../parser/returning-parser.js';
8
8
  import { ReferenceExpression } from '../parser/reference-parser.js';
9
- import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-utils.js';
9
+ import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
10
10
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
11
11
  import { MutationObject } from '../parser/update-set-parser.js';
12
12
  import { Compilable } from '../util/compilable.js';
@@ -15,11 +15,12 @@ import { QueryId } from '../util/query-id.js';
15
15
  import { UpdateResult } from './update-result.js';
16
16
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
17
17
  import { WhereInterface } from './where-interface.js';
18
- import { JoinInterface } from './join-interface.js';
19
18
  import { ReturningInterface } from './returning-interface.js';
20
19
  import { NoResultErrorConstructor } from './no-result-error.js';
21
20
  import { Selectable } from '../util/column-type.js';
22
- export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, JoinInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
21
+ import { AliasedQueryBuilder } from './select-query-builder.js';
22
+ import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
23
+ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
23
24
  #private;
24
25
  constructor(props: UpdateQueryBuilderProps);
25
26
  /**
@@ -544,23 +545,23 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
544
545
  * on "doggos"."owner_id" = "person"."id"
545
546
  * ```
546
547
  */
547
- innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilder<TableExpressionDatabase<DB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
548
- innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilder<TableExpressionDatabase<DB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
548
+ innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithInnerJoin<DB, UT, TB, O, TE>;
549
+ innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithInnerJoin<DB, UT, TB, O, TE>;
549
550
  /**
550
- * Just like {@link innerJoin} but adds a left join nstead of an inner join.
551
+ * Just like {@link innerJoin} but adds a left join instead of an inner join.
551
552
  */
552
- leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
553
- leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
553
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithLeftJoin<DB, UT, TB, O, TE>;
554
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithLeftJoin<DB, UT, TB, O, TE>;
554
555
  /**
555
556
  * Just like {@link innerJoin} but adds a right join instead of an inner join.
556
557
  */
557
- rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
558
- rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
558
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithRightJoin<DB, UT, TB, O, TE>;
559
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithRightJoin<DB, UT, TB, O, TE>;
559
560
  /**
560
561
  * Just like {@link innerJoin} but adds a full join instead of an inner join.
561
562
  */
562
- fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
563
- fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, UT, TableExpressionTables<DB, TB, TE>, O>;
563
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
564
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
564
565
  /**
565
566
  * Sets the values to update for an {@link Kysely.updateTable | update} query.
566
567
  *
@@ -814,3 +815,24 @@ export interface UpdateQueryBuilderProps {
814
815
  readonly queryNode: UpdateQueryNode;
815
816
  readonly executor: QueryExecutor;
816
817
  }
818
+ export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
819
+ declare type InnerJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? UpdateQueryBuilder<InnerJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, R>, UT, TB | A, O>;
820
+ declare type InnerJoinedDB<DB, A extends string, R> = {
821
+ [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
822
+ };
823
+ export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
824
+ declare type LeftJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? UpdateQueryBuilder<LeftJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, Nullable<R>>, UT, TB | A, O>;
825
+ declare type LeftJoinedDB<DB, A extends keyof any, R> = {
826
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
827
+ };
828
+ export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
829
+ declare type RightJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<RightJoinedDB<DB, TB, A, R>, UT, TB | A, O>;
830
+ declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
831
+ [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
832
+ };
833
+ export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
834
+ declare type OuterJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, UT, TB | A, O>;
835
+ declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
836
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
837
+ };
838
+ export {};
@@ -704,7 +704,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
704
704
  }
705
705
  visitDropConstraint(node) {
706
706
  this.append('drop constraint ');
707
+ if (node.ifExists) {
708
+ this.append('if exists ');
709
+ }
707
710
  this.visitNode(node.constraintName);
711
+ if (node.modifier === 'cascade') {
712
+ this.append(' cascade');
713
+ }
714
+ else if (node.modifier === 'restrict') {
715
+ this.append(' restrict');
716
+ }
708
717
  }
709
718
  visitUnion(node) {
710
719
  this.append('union ');
@@ -49,6 +49,7 @@ export declare class AlterTableBuilder {
49
49
  * is because you can only add one column per `ALTER TABLE` query.
50
50
  */
51
51
  addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
52
+ dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
52
53
  }
53
54
  export interface AlterTableBuilderProps {
54
55
  readonly queryId: QueryId;
@@ -419,3 +420,15 @@ export declare class AlterTableAddForeignKeyConstraintBuilder implements Foreign
419
420
  export interface AlterTableAddForeignKeyConstraintBuilderProps extends AlterTableBuilderProps {
420
421
  readonly constraintBuilder: ForeignKeyConstraintBuilder;
421
422
  }
423
+ export declare class AlterTableDropConstraintBuilder implements OperationNodeSource, Compilable {
424
+ #private;
425
+ constructor(props: AlterTableDropConstraintBuilderProps);
426
+ ifExists(): AlterTableDropConstraintBuilder;
427
+ cascade(): AlterTableDropConstraintBuilder;
428
+ restrict(): AlterTableDropConstraintBuilder;
429
+ toOperationNode(): AlterTableNode;
430
+ compile(): CompiledQuery;
431
+ execute(): Promise<void>;
432
+ }
433
+ export interface AlterTableDropConstraintBuilderProps extends AlterTableBuilderProps {
434
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AlterTableAddForeignKeyConstraintBuilder = exports.AlterTableModifyColumnBuilder = exports.AlterTableAddColumnBuilder = exports.AlterTableExecutor = exports.AlterColumnBuilder = exports.AlterTableBuilder = void 0;
3
+ exports.AlterTableDropConstraintBuilder = exports.AlterTableAddForeignKeyConstraintBuilder = exports.AlterTableModifyColumnBuilder = exports.AlterTableAddColumnBuilder = exports.AlterTableExecutor = exports.AlterColumnBuilder = exports.AlterTableBuilder = void 0;
4
4
  const add_column_node_js_1 = require("../operation-node/add-column-node.js");
5
5
  const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
6
6
  const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
@@ -22,6 +22,7 @@ const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-
22
22
  const column_node_js_1 = require("../operation-node/column-node.js");
23
23
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
24
24
  const table_parser_js_1 = require("../parser/table-parser.js");
25
+ const drop_constraint_node_js_1 = require("../operation-node/drop-constraint-node.js");
25
26
  /**
26
27
  * This builder can be used to create a `alter table` query.
27
28
  */
@@ -123,6 +124,14 @@ class AlterTableBuilder {
123
124
  constraintBuilder: new foreign_key_constraint_builder_js_1.ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.create(columns.map(column_node_js_1.ColumnNode.create), (0, table_parser_js_1.parseTable)(targetTable), targetColumns.map(column_node_js_1.ColumnNode.create), constraintName)),
124
125
  });
125
126
  }
127
+ dropConstraint(constraintName) {
128
+ return new AlterTableDropConstraintBuilder({
129
+ ...this.#props,
130
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
131
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.create(constraintName),
132
+ }),
133
+ });
134
+ }
126
135
  }
127
136
  exports.AlterTableBuilder = AlterTableBuilder;
128
137
  class AlterColumnBuilder {
@@ -432,9 +441,56 @@ class AlterTableAddForeignKeyConstraintBuilder {
432
441
  }
433
442
  }
434
443
  exports.AlterTableAddForeignKeyConstraintBuilder = AlterTableAddForeignKeyConstraintBuilder;
444
+ class AlterTableDropConstraintBuilder {
445
+ #props;
446
+ constructor(props) {
447
+ this.#props = (0, object_utils_js_1.freeze)(props);
448
+ }
449
+ ifExists() {
450
+ return new AlterTableDropConstraintBuilder({
451
+ ...this.#props,
452
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
453
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.alterTableNode.dropConstraint, {
454
+ ifExists: true,
455
+ }),
456
+ }),
457
+ });
458
+ }
459
+ cascade() {
460
+ return new AlterTableDropConstraintBuilder({
461
+ ...this.#props,
462
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
463
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.alterTableNode.dropConstraint, {
464
+ modifier: 'cascade',
465
+ }),
466
+ }),
467
+ });
468
+ }
469
+ restrict() {
470
+ return new AlterTableDropConstraintBuilder({
471
+ ...this.#props,
472
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
473
+ dropConstraint: drop_constraint_node_js_1.DropConstraintNode.cloneWith(this.#props.alterTableNode.dropConstraint, {
474
+ modifier: 'restrict',
475
+ }),
476
+ }),
477
+ });
478
+ }
479
+ toOperationNode() {
480
+ return this.#props.executor.transformQuery(this.#props.alterTableNode, this.#props.queryId);
481
+ }
482
+ compile() {
483
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
484
+ }
485
+ async execute() {
486
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
487
+ }
488
+ }
489
+ exports.AlterTableDropConstraintBuilder = AlterTableDropConstraintBuilder;
435
490
  (0, prevent_await_js_1.preventAwait)(AlterTableBuilder, "don't await AlterTableBuilder instances");
436
491
  (0, prevent_await_js_1.preventAwait)(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
437
492
  (0, prevent_await_js_1.preventAwait)(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
438
493
  (0, prevent_await_js_1.preventAwait)(AlterTableAddColumnBuilder, "don't await AlterTableAddColumnBuilder instances directly. To execute the query you need to call `execute`");
439
494
  (0, prevent_await_js_1.preventAwait)(AlterTableModifyColumnBuilder, "don't await AlterTableModifyColumnBuilder instances directly. To execute the query you need to call `execute`");
440
495
  (0, prevent_await_js_1.preventAwait)(AlterTableAddForeignKeyConstraintBuilder, "don't await AlterTableAddForeignKeyConstraintBuilder instances directly. To execute the query you need to call `execute`");
496
+ (0, prevent_await_js_1.preventAwait)(AlterTableDropConstraintBuilder, "don't await AlterTableDropConstraintBuilder instances directly. To execute the query you need to call `execute`");
@@ -111,6 +111,9 @@ export declare type UnknownRow = Record<string, unknown>;
111
111
  export declare type Nullable<T> = {
112
112
  [P in keyof T]: T[P] | null;
113
113
  };
114
+ export declare type NullableValues<T> = {
115
+ [P in keyof T]: Nullable<T[P]>;
116
+ };
114
117
  /**
115
118
  * Takes all properties from T1 and merges all properties from T2
116
119
  * that don't exist in T1 as optional properties.
@@ -11,11 +11,6 @@ export declare class MysqlDriver implements Driver {
11
11
  *
12
12
  * After calling this method the driver should be usable and `acquireConnection` etc.
13
13
  * methods should be callable.
14
- *
15
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
16
- * should be imported inside this function, not at the top of the driver file! This is
17
- * important so that Kysely is usable without installing all database driver libraries
18
- * it supports.
19
14
  */
20
15
  init(): Promise<void>;
21
16
  /**
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./mysql-introspector.d.ts" />
2
2
  import { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';
3
3
  import { freeze } from '../../util/object-utils.js';
4
+ import { sql } from '../../raw-builder/sql.js';
4
5
  export class MysqlIntrospector {
5
6
  #db;
6
7
  constructor(db) {
@@ -24,12 +25,7 @@ export class MysqlIntrospector {
24
25
  'is_nullable',
25
26
  'data_type',
26
27
  ])
27
- .where('table_schema', 'not in', [
28
- 'information_schema',
29
- 'performance_schema',
30
- 'mysql',
31
- 'sys',
32
- ])
28
+ .where('table_schema', '=', sql `database()`)
33
29
  .castTo();
34
30
  if (!options.withInternalKyselyTables) {
35
31
  query = query
@@ -11,11 +11,6 @@ export declare class PostgresDriver implements Driver {
11
11
  *
12
12
  * After calling this method the driver should be usable and `acquireConnection` etc.
13
13
  * methods should be callable.
14
- *
15
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
16
- * should be imported inside this function, not at the top of the driver file! This is
17
- * important so that Kysely is usable without installing all database driver libraries
18
- * it supports.
19
14
  */
20
15
  init(): Promise<void>;
21
16
  /**
@@ -9,11 +9,6 @@ export declare class SqliteDriver implements Driver {
9
9
  *
10
10
  * After calling this method the driver should be usable and `acquireConnection` etc.
11
11
  * methods should be callable.
12
- *
13
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
14
- * should be imported inside this function, not at the top of the driver file! This is
15
- * important so that Kysely is usable without installing all database driver libraries
16
- * it supports.
17
12
  */
18
13
  init(): Promise<void>;
19
14
  /**
@@ -35,7 +35,6 @@ export class SqliteIntrospector {
35
35
  const columns = await db
36
36
  .selectFrom(sql `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
37
37
  .select(['name', 'type', 'notnull'])
38
- .castTo()
39
38
  .execute();
40
39
  return {
41
40
  name: table,
@@ -10,11 +10,6 @@ export interface Driver {
10
10
  *
11
11
  * After calling this method the driver should be usable and `acquireConnection` etc.
12
12
  * methods should be callable.
13
- *
14
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
15
- * should be imported inside this function, not at the top of the driver file! This is
16
- * important so that Kysely is usable without installing all database driver libraries
17
- * it supports.
18
13
  */
19
14
  init(): Promise<void>;
20
15
  /**
@@ -42,11 +42,6 @@ export declare class DummyDriver implements Driver {
42
42
  *
43
43
  * After calling this method the driver should be usable and `acquireConnection` etc.
44
44
  * methods should be callable.
45
- *
46
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
47
- * should be imported inside this function, not at the top of the driver file! This is
48
- * important so that Kysely is usable without installing all database driver libraries
49
- * it supports.
50
45
  */
51
46
  init(): Promise<void>;
52
47
  /**
@@ -14,11 +14,6 @@ export declare class RuntimeDriver implements Driver {
14
14
  *
15
15
  * After calling this method the driver should be usable and `acquireConnection` etc.
16
16
  * methods should be callable.
17
- *
18
- * IMPORTANT: The underlying database engine driver (like [pg](https://node-postgres.com/))
19
- * should be imported inside this function, not at the top of the driver file! This is
20
- * important so that Kysely is usable without installing all database driver libraries
21
- * it supports.
22
17
  */
23
18
  init(): Promise<void>;
24
19
  /**
@@ -1,7 +1,6 @@
1
1
  export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
3
  export * from './query-builder/where-interface.js';
4
- export * from './query-builder/join-interface.js';
5
4
  export * from './query-builder/returning-interface.js';
6
5
  export * from './query-builder/having-interface.js';
7
6
  export * from './query-builder/select-query-builder.js';
package/dist/esm/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
  export * from './kysely.js';
3
3
  export * from './query-creator.js';
4
4
  export * from './query-builder/where-interface.js';
5
- export * from './query-builder/join-interface.js';
6
5
  export * from './query-builder/returning-interface.js';
7
6
  export * from './query-builder/having-interface.js';
8
7
  export * from './query-builder/select-query-builder.js';
@@ -25,9 +25,10 @@ export class FileMigrationProvider {
25
25
  const migrations = {};
26
26
  const files = await this.#props.fs.readdir(this.#props.migrationFolder);
27
27
  for (const fileName of files) {
28
- if ((fileName.endsWith('.js') || fileName.endsWith('.ts')) &&
28
+ if ((fileName.endsWith('.js') || fileName.endsWith('.ts') || fileName.endsWith('.mjs')) &&
29
29
  !fileName.endsWith('.d.ts')) {
30
- const migration = await import(this.#props.path.join(this.#props.migrationFolder, fileName));
30
+ const migration = await import(
31
+ /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName));
31
32
  if (isMigration(migration)) {
32
33
  migrations[fileName.substring(0, fileName.length - 3)] = migration;
33
34
  }
@@ -188,6 +188,8 @@ export interface MigratorProps {
188
188
  * If you do specify this, ALWAYS ALWAYS use the same value from the beginning of
189
189
  * the project, to the end of time or prepare to manually migrate the migration
190
190
  * tables.
191
+ *
192
+ * This only works on postgres.
191
193
  */
192
194
  readonly migrationTableSchema?: string;
193
195
  }
@@ -11,5 +11,5 @@ export interface CheckConstraintNode extends OperationNode {
11
11
  */
12
12
  export declare const CheckConstraintNode: Readonly<{
13
13
  is(node: OperationNode): node is CheckConstraintNode;
14
- create(expression: RawNode, constraintName?: string | undefined): CheckConstraintNode;
14
+ create(expression: RawNode, constraintName?: string): CheckConstraintNode;
15
15
  }>;
@@ -11,5 +11,5 @@ export interface CommonTableExpressionNameNode extends OperationNode {
11
11
  */
12
12
  export declare const CommonTableExpressionNameNode: Readonly<{
13
13
  is(node: OperationNode): node is CommonTableExpressionNameNode;
14
- create(tableName: string, columnNames?: readonly string[] | undefined): CommonTableExpressionNameNode;
14
+ create(tableName: string, columnNames?: ReadonlyArray<string>): CommonTableExpressionNameNode;
15
15
  }>;
@@ -11,6 +11,6 @@ export interface CreateSchemaNode extends OperationNode {
11
11
  */
12
12
  export declare const CreateSchemaNode: Readonly<{
13
13
  is(node: OperationNode): node is CreateSchemaNode;
14
- create(schema: string, params?: CreateSchemaNodeParams | undefined): CreateSchemaNode;
14
+ create(schema: string, params?: CreateSchemaNodeParams): CreateSchemaNode;
15
15
  cloneWith(createSchema: CreateSchemaNode, params: CreateSchemaNodeParams): CreateSchemaNode;
16
16
  }>;
@@ -23,7 +23,7 @@ export interface DeleteQueryNode extends OperationNode {
23
23
  */
24
24
  export declare const DeleteQueryNode: Readonly<{
25
25
  is(node: OperationNode): node is DeleteQueryNode;
26
- create(fromItem: TableExpressionNode, withNode?: WithNode | undefined): DeleteQueryNode;
26
+ create(fromItem: TableExpressionNode, withNode?: WithNode): DeleteQueryNode;
27
27
  cloneWithOrderByItem(deleteNode: DeleteQueryNode, item: OrderByItemNode): DeleteQueryNode;
28
28
  cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
29
29
  }>;
@@ -1,8 +1,11 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { IdentifierNode } from './identifier-node.js';
3
+ export declare type DropConstraintNodeProps = Omit<DropConstraintNode, 'kind' | 'constraintName'>;
3
4
  export interface DropConstraintNode extends OperationNode {
4
5
  readonly kind: 'DropConstraintNode';
5
6
  readonly constraintName: IdentifierNode;
7
+ readonly ifExists?: boolean;
8
+ readonly modifier?: 'cascade' | 'restrict';
6
9
  }
7
10
  /**
8
11
  * @internal
@@ -10,4 +13,5 @@ export interface DropConstraintNode extends OperationNode {
10
13
  export declare const DropConstraintNode: Readonly<{
11
14
  is(node: OperationNode): node is DropConstraintNode;
12
15
  create(constraintName: string): DropConstraintNode;
16
+ cloneWith(dropConstraint: DropConstraintNode, props: DropConstraintNodeProps): DropConstraintNode;
13
17
  }>;
@@ -14,4 +14,10 @@ export const DropConstraintNode = freeze({
14
14
  constraintName: IdentifierNode.create(constraintName),
15
15
  });
16
16
  },
17
+ cloneWith(dropConstraint, props) {
18
+ return freeze({
19
+ ...dropConstraint,
20
+ ...props,
21
+ });
22
+ },
17
23
  });
@@ -13,6 +13,6 @@ export interface DropIndexNode extends OperationNode {
13
13
  */
14
14
  export declare const DropIndexNode: Readonly<{
15
15
  is(node: OperationNode): node is DropIndexNode;
16
- create(name: string, params?: DropIndexNodeProps | undefined): DropIndexNode;
16
+ create(name: string, params?: DropIndexNodeProps): DropIndexNode;
17
17
  cloneWith(dropIndex: DropIndexNode, props: DropIndexNodeProps): DropIndexNode;
18
18
  }>;
@@ -11,6 +11,6 @@ export interface DropSchemaNode extends OperationNode {
11
11
  */
12
12
  export declare const DropSchemaNode: Readonly<{
13
13
  is(node: OperationNode): node is DropSchemaNode;
14
- create(schema: string, params?: DropSchemaNodeParams | undefined): DropSchemaNode;
14
+ create(schema: string, params?: DropSchemaNodeParams): DropSchemaNode;
15
15
  cloneWith(dropSchema: DropSchemaNode, params: DropSchemaNodeParams): DropSchemaNode;
16
16
  }>;
@@ -11,6 +11,6 @@ export interface DropTableNode extends OperationNode {
11
11
  */
12
12
  export declare const DropTableNode: Readonly<{
13
13
  is(node: OperationNode): node is DropTableNode;
14
- create(table: TableNode, params?: DropTablexNodeParams | undefined): DropTableNode;
14
+ create(table: TableNode, params?: DropTablexNodeParams): DropTableNode;
15
15
  cloneWith(dropIndex: DropTableNode, params: DropTablexNodeParams): DropTableNode;
16
16
  }>;
@@ -17,7 +17,7 @@ export interface ForeignKeyConstraintNode extends OperationNode {
17
17
  */
18
18
  export declare const ForeignKeyConstraintNode: Readonly<{
19
19
  is(node: OperationNode): node is ForeignKeyConstraintNode;
20
- create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string | undefined): ForeignKeyConstraintNode;
20
+ create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
21
21
  cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
22
22
  name?: IdentifierNode | undefined;
23
23
  onDelete?: OnModifyForeignAction | undefined;
@@ -25,6 +25,6 @@ export interface InsertQueryNode extends OperationNode {
25
25
  */
26
26
  export declare const InsertQueryNode: Readonly<{
27
27
  is(node: OperationNode): node is InsertQueryNode;
28
- create(into: TableNode, withNode?: WithNode | undefined): InsertQueryNode;
28
+ create(into: TableNode, withNode?: WithNode): InsertQueryNode;
29
29
  cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
30
30
  }>;
@@ -543,6 +543,8 @@ export class OperationNodeTransformer {
543
543
  return {
544
544
  kind: 'DropConstraintNode',
545
545
  constraintName: this.transformNode(node.constraintName),
546
+ ifExists: node.ifExists,
547
+ modifier: node.modifier,
546
548
  };
547
549
  }
548
550
  transformCreateView(node) {
@@ -11,5 +11,5 @@ export interface OrderByItemNode extends OperationNode {
11
11
  */
12
12
  export declare const OrderByItemNode: Readonly<{
13
13
  is(node: OperationNode): node is OrderByItemNode;
14
- create(orderBy: ReferenceExpressionNode, direction?: RawNode | undefined): OrderByItemNode;
14
+ create(orderBy: ReferenceExpressionNode, direction?: RawNode): OrderByItemNode;
15
15
  }>;
@@ -11,5 +11,5 @@ export interface PrimaryKeyConstraintNode extends OperationNode {
11
11
  */
12
12
  export declare const PrimaryConstraintNode: Readonly<{
13
13
  is(node: OperationNode): node is PrimaryKeyConstraintNode;
14
- create(columns: string[], constraintName?: string | undefined): PrimaryKeyConstraintNode;
14
+ create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
15
15
  }>;
@@ -36,7 +36,7 @@ export interface SelectQueryNode extends OperationNode {
36
36
  */
37
37
  export declare const SelectQueryNode: Readonly<{
38
38
  is(node: OperationNode): node is SelectQueryNode;
39
- create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode | undefined): SelectQueryNode;
39
+ create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode): SelectQueryNode;
40
40
  cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
41
41
  cloneWithDistinctOnSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
42
42
  cloneWithModifier(select: SelectQueryNode, modifier: SelectModifier): SelectQueryNode;
@@ -11,5 +11,5 @@ export interface UniqueConstraintNode extends OperationNode {
11
11
  */
12
12
  export declare const UniqueConstraintNode: Readonly<{
13
13
  is(node: OperationNode): node is UniqueConstraintNode;
14
- create(columns: string[], constraintName?: string | undefined): UniqueConstraintNode;
14
+ create(columns: string[], constraintName?: string): UniqueConstraintNode;
15
15
  }>;
@@ -24,7 +24,7 @@ export interface UpdateQueryNode extends OperationNode {
24
24
  */
25
25
  export declare const UpdateQueryNode: Readonly<{
26
26
  is(node: OperationNode): node is UpdateQueryNode;
27
- create(table: TableExpressionNode, withNode?: WithNode | undefined): UpdateQueryNode;
27
+ create(table: TableExpressionNode, withNode?: WithNode): UpdateQueryNode;
28
28
  cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
29
29
  cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
30
30
  }>;
@@ -11,6 +11,6 @@ export interface WithNode extends OperationNode {
11
11
  */
12
12
  export declare const WithNode: Readonly<{
13
13
  is(node: OperationNode): node is WithNode;
14
- create(expression: CommonTableExpressionNode, params?: WithNodeParams | undefined): WithNode;
14
+ create(expression: CommonTableExpressionNode, params?: WithNodeParams): WithNode;
15
15
  cloneWithExpression(withNode: WithNode, expression: CommonTableExpressionNode): WithNode;
16
16
  }>;
@@ -1 +1 @@
1
- {"type":"module"}
1
+ {"type":"module","sideEffects":false}
@@ -1,6 +1,6 @@
1
1
  import { AliasedQueryBuilder } from '../query-builder/select-query-builder.js';
2
2
  import { TableNode } from '../operation-node/table-node.js';
3
- import { AnyAliasedRawBuilder, Nullable } from '../util/type-utils.js';
3
+ import { AnyAliasedRawBuilder } from '../util/type-utils.js';
4
4
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
5
5
  import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
6
6
  import { AliasedComplexExpression } from './complex-expression-parser.js';
@@ -10,18 +10,9 @@ export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | An
10
10
  export declare type TableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
11
11
  [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
12
12
  };
13
- export declare type LeftJoinTableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
14
- [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? DB[C] : never;
15
- };
16
- export declare type RightJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
17
- [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
18
- };
19
- export declare type FullJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
20
- [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
21
- };
22
13
  export declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
23
14
  export declare type TableExpressionTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
24
- declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
15
+ export declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
25
16
  declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
26
17
  declare type AnyTable<DB> = keyof DB & string;
27
18
  export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];