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
package/README.md CHANGED
@@ -95,7 +95,7 @@ interface PersonTable {
95
95
  // automatically by Kysely.
96
96
  last_name: string | null
97
97
 
98
- // You can specity a different type for each operation (select, insert and
98
+ // You can specify a different type for each operation (select, insert and
99
99
  // update) using the `ColumnType<SelectType, InsertType, UpdateType>`
100
100
  // wrapper. Here we define a column `modified_at` that is selected as
101
101
  // a `Date`, can optionally be provided as a `string` in inserts and
@@ -324,7 +324,7 @@ have. You will probably want to add a simple migration script to your projects l
324
324
  ```ts
325
325
  import * as path from 'path'
326
326
  import { Pool } from 'pg'
327
- import { promises: fs } from 'fs'
327
+ import { promises as fs } from 'fs'
328
328
  import {
329
329
  Kysely,
330
330
  Migrator,
@@ -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
  /**
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MysqlIntrospector = void 0;
4
4
  const migrator_js_1 = require("../../migration/migrator.js");
5
5
  const object_utils_js_1 = require("../../util/object-utils.js");
6
+ const sql_js_1 = require("../../raw-builder/sql.js");
6
7
  class MysqlIntrospector {
7
8
  #db;
8
9
  constructor(db) {
@@ -26,12 +27,7 @@ class MysqlIntrospector {
26
27
  'is_nullable',
27
28
  'data_type',
28
29
  ])
29
- .where('table_schema', 'not in', [
30
- 'information_schema',
31
- 'performance_schema',
32
- 'mysql',
33
- 'sys',
34
- ])
30
+ .where('table_schema', '=', (0, sql_js_1.sql) `database()`)
35
31
  .castTo();
36
32
  if (!options.withInternalKyselyTables) {
37
33
  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
  /**
@@ -37,7 +37,6 @@ class SqliteIntrospector {
37
37
  const columns = await db
38
38
  .selectFrom((0, sql_js_1.sql) `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
39
39
  .select(['name', 'type', 'notnull'])
40
- .castTo()
41
40
  .execute();
42
41
  return {
43
42
  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/cjs/index.js CHANGED
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./kysely.js"), exports);
18
18
  __exportStar(require("./query-creator.js"), exports);
19
19
  __exportStar(require("./query-builder/where-interface.js"), exports);
20
- __exportStar(require("./query-builder/join-interface.js"), exports);
21
20
  __exportStar(require("./query-builder/returning-interface.js"), exports);
22
21
  __exportStar(require("./query-builder/having-interface.js"), exports);
23
22
  __exportStar(require("./query-builder/select-query-builder.js"), exports);
@@ -27,9 +27,10 @@ class FileMigrationProvider {
27
27
  const migrations = {};
28
28
  const files = await this.#props.fs.readdir(this.#props.migrationFolder);
29
29
  for (const fileName of files) {
30
- if ((fileName.endsWith('.js') || fileName.endsWith('.ts')) &&
30
+ if ((fileName.endsWith('.js') || fileName.endsWith('.ts') || fileName.endsWith('.mjs')) &&
31
31
  !fileName.endsWith('.d.ts')) {
32
- const migration = await Promise.resolve().then(() => require(this.#props.path.join(this.#props.migrationFolder, fileName)));
32
+ const migration = await Promise.resolve().then(() => require(
33
+ /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName)));
33
34
  if (isMigration(migration)) {
34
35
  migrations[fileName.substring(0, fileName.length - 3)] = migration;
35
36
  }
@@ -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
  }>;
@@ -16,4 +16,10 @@ exports.DropConstraintNode = (0, object_utils_js_1.freeze)({
16
16
  constraintName: identifier_node_js_1.IdentifierNode.create(constraintName),
17
17
  });
18
18
  },
19
+ cloneWith(dropConstraint, props) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...dropConstraint,
22
+ ...props,
23
+ });
24
+ },
19
25
  });
@@ -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
  }>;
@@ -545,6 +545,8 @@ class OperationNodeTransformer {
545
545
  return {
546
546
  kind: 'DropConstraintNode',
547
547
  constraintName: this.transformNode(node.constraintName),
548
+ ifExists: node.ifExists,
549
+ modifier: node.modifier,
548
550
  };
549
551
  }
550
552
  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":"commonjs"}
1
+ {"type":"commonjs","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[];
@@ -1,25 +1,26 @@
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 } 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 { Compilable } from '../util/compilable.js';
11
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
12
12
  import { QueryId } from '../util/query-id.js';
13
13
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
14
14
  import { WhereInterface } from './where-interface.js';
15
- import { JoinInterface } from './join-interface.js';
16
15
  import { ReturningInterface } from './returning-interface.js';
17
16
  import { NoResultErrorConstructor } from './no-result-error.js';
18
17
  import { DeleteResult } from './delete-result.js';
19
18
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
20
19
  import { Selectable } from '../util/column-type.js';
21
20
  import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
22
- export declare class DeleteQueryBuilder<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 DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
23
24
  #private;
24
25
  constructor(props: DeleteQueryBuilderProps);
25
26
  /**
@@ -515,23 +516,23 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
515
516
  * on "doggos"."owner_id" = "person"."id"
516
517
  * ```
517
518
  */
518
- innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
519
- innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
519
+ innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithInnerJoin<DB, TB, O, TE>;
520
+ innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithInnerJoin<DB, TB, O, TE>;
520
521
  /**
521
- * Just like {@link innerJoin} but adds a left join nstead of an inner join.
522
+ * Just like {@link innerJoin} but adds a left join instead of an inner join.
522
523
  */
523
- leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
524
- leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
524
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithLeftJoin<DB, TB, O, TE>;
525
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithLeftJoin<DB, TB, O, TE>;
525
526
  /**
526
527
  * Just like {@link innerJoin} but adds a right join instead of an inner join.
527
528
  */
528
- rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
529
- rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
529
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithRightJoin<DB, TB, O, TE>;
530
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithRightJoin<DB, TB, O, TE>;
530
531
  /**
531
532
  * Just like {@link innerJoin} but adds a full join instead of an inner join.
532
533
  */
533
- fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
534
- fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
534
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithFullJoin<DB, TB, O, TE>;
535
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithFullJoin<DB, TB, O, TE>;
535
536
  /**
536
537
  * Allows you to return data from modified rows.
537
538
  *
@@ -749,3 +750,24 @@ export interface DeleteQueryBuilderProps {
749
750
  readonly queryNode: DeleteQueryNode;
750
751
  readonly executor: QueryExecutor;
751
752
  }
753
+ export declare type DeleteQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : never;
754
+ declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? DeleteQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, R>, TB | A, O>;
755
+ declare type InnerJoinedDB<DB, A extends string, R> = {
756
+ [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
757
+ };
758
+ export declare type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : never;
759
+ declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? DeleteQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
760
+ declare type LeftJoinedDB<DB, A extends keyof any, R> = {
761
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
762
+ };
763
+ export declare type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : never;
764
+ declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
765
+ declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
766
+ [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
767
+ };
768
+ export declare type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : never;
769
+ declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
770
+ declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
771
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
772
+ };
773
+ export {};
@@ -2,12 +2,12 @@ import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
5
- import { TableExpression, TableExpressionDatabase, TableExpressionTables, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, FullJoinTableExpressionDatabase } from '../parser/table-parser.js';
5
+ import { TableExpression } from '../parser/table-parser.js';
6
6
  import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
7
7
  import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper, HavingGrouper } from '../parser/filter-parser.js';
8
8
  import { ReferenceExpression } from '../parser/reference-parser.js';
9
9
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
10
- import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-utils.js';
10
+ import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
11
11
  import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
12
12
  import { Compilable } from '../util/compilable.js';
13
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
@@ -15,10 +15,10 @@ import { QueryId } from '../util/query-id.js';
15
15
  import { UnionExpression } from '../parser/union-parser.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 { NoResultErrorConstructor } from './no-result-error.js';
20
19
  import { HavingInterface } from './having-interface.js';
21
- export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, JoinInterface<DB, TB>, OperationNodeSource, Compilable {
20
+ import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
21
+ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, OperationNodeSource, Compilable {
22
22
  #private;
23
23
  constructor(props: SelectQueryBuilderProps);
24
24
  /**
@@ -856,23 +856,23 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
856
856
  * on "doggos"."owner_id" = "person"."id"
857
857
  * ```
858
858
  */
859
- innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
860
- innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
859
+ innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
860
+ innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
861
861
  /**
862
- * Just like {@link innerJoin} but adds a left join nstead of an inner join.
862
+ * Just like {@link innerJoin} but adds a left join instead of an inner join.
863
863
  */
864
- leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
865
- leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
864
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
865
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
866
866
  /**
867
867
  * Just like {@link innerJoin} but adds a right join instead of an inner join.
868
868
  */
869
- rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
870
- rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
869
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithRightJoin<DB, TB, O, TE>;
870
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithRightJoin<DB, TB, O, TE>;
871
871
  /**
872
872
  * Just like {@link innerJoin} but adds a full join instead of an inner join.
873
873
  */
874
- fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
875
- fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
874
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
875
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
876
876
  /**
877
877
  * Adds an `order by` clause to the query.
878
878
  *
@@ -1282,3 +1282,24 @@ export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined,
1282
1282
  protected get alias(): A;
1283
1283
  toOperationNode(): AliasNode;
1284
1284
  }
1285
+ export declare type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : never;
1286
+ declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, R>, TB | A, O>;
1287
+ declare type InnerJoinedDB<DB, A extends string, R> = {
1288
+ [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
1289
+ };
1290
+ export declare type SelectQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : never;
1291
+ declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? SelectQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
1292
+ declare type LeftJoinedDB<DB, A extends keyof any, R> = {
1293
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
1294
+ };
1295
+ export declare type SelectQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : never;
1296
+ declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
1297
+ declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1298
+ [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
1299
+ };
1300
+ export declare type SelectQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : never;
1301
+ declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
1302
+ declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1303
+ [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
1304
+ };
1305
+ export {};