From 65bf5675d8b79800ab0d7a85d89c568563e97a8d Mon Sep 17 00:00:00 2001 From: Dominic Vonk Date: Tue, 14 Jun 2022 12:10:01 +0200 Subject: [PATCH 1/4] Added promisable --- test-tsd/querybuilder.test-d.ts | 8 +- types/index.d.ts | 982 ++++++++++++++++---------------- 2 files changed, 495 insertions(+), 495 deletions(-) diff --git a/test-tsd/querybuilder.test-d.ts b/test-tsd/querybuilder.test-d.ts index 5cae719483..6a0da10b39 100644 --- a/test-tsd/querybuilder.test-d.ts +++ b/test-tsd/querybuilder.test-d.ts @@ -11,17 +11,17 @@ const knexInstance = knex(clientConfig); declare module '../types' { namespace Knex { interface QueryBuilder { - customSelect( + customSelect ( value: number - ): Knex.QueryBuilder; + ): Promise>; } } } knex.QueryBuilder.extend('customSelect', function (value: number) { - return this.select(this.client.raw(`${value} as value`)); + return new Promise((r) => r(this.select(this.client.raw(`${value} as value`)))); }); const main = async () => { - expectType(await knexInstance('users').customSelect(42)); + expectType(await (await knexInstance('users').customSelect(42))); }; diff --git a/types/index.d.ts b/types/index.d.ts index 3b8ac2f34f..960cbfa291 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -117,17 +117,17 @@ type DeferredKeySelection< TIntersectProps extends {} = {}, // Extra props which will be unioned with the result TUnionProps = never - > = { - // These properties are not actually used, but exist simply because - // typescript doesn't end up happy when type parameters are unused - _base: TBase; - _hasSelection: THasSelect; - _keys: TKeys; - _aliases: TAliasMapping; - _single: TSingle; - _intersectProps: TIntersectProps; - _unionProps: TUnionProps; - }; +> = { + // These properties are not actually used, but exist simply because + // typescript doesn't end up happy when type parameters are unused + _base: TBase; + _hasSelection: THasSelect; + _keys: TKeys; + _aliases: TAliasMapping; + _single: TSingle; + _intersectProps: TIntersectProps; + _unionProps: TUnionProps; +}; // An companion namespace for DeferredKeySelection which provides type operators // to build up participants of intersection/partial over multiple invocations @@ -171,30 +171,30 @@ declare namespace DeferredKeySelection { type SetSingle< TSelection, TSingle extends boolean - > = TSelection extends DeferredKeySelection< - infer TBase, - infer TKeys, - infer THasSelect, - infer TAliasMapping, - any, - infer TIntersectProps, - infer TUnionProps - > + > = TSelection extends DeferredKeySelection< + infer TBase, + infer TKeys, + infer THasSelect, + infer TAliasMapping, + any, + infer TIntersectProps, + infer TUnionProps + > ? DeferredKeySelection : never; type AddKey< TSelection, TKey extends string - > = TSelection extends DeferredKeySelection< - infer TBase, - infer TKeys, - any, - infer TAliasMapping, - infer TSingle, - infer TIntersectProps, - infer TUnionProps - > + > = TSelection extends DeferredKeySelection< + infer TBase, + infer TKeys, + any, + infer TAliasMapping, + infer TSingle, + infer TIntersectProps, + infer TUnionProps + > ? DeferredKeySelection : DeferredKeySelection; @@ -314,11 +314,11 @@ interface DMLOptions { export interface Knex extends Knex.QueryInterface, events.EventEmitter { - ( + ( tableName: TTable, options?: TableOptions ): Knex.QueryBuilder, DeferredKeySelection>, never>[]>; - []>( + []> ( tableName?: Knex.TableDescriptor | Knex.AliasDict, options?: TableOptions ): Knex.QueryBuilder; @@ -327,25 +327,25 @@ export interface Knex raw: Knex.RawBuilder; - transactionProvider( + transactionProvider ( config?: Knex.TransactionConfig ): Knex.TransactionProvider; - transaction( + transaction ( config?: Knex.TransactionConfig ): Promise; - transaction( + transaction ( transactionScope?: null, config?: Knex.TransactionConfig ): Promise; - transaction( + transaction ( transactionScope: (trx: Knex.Transaction) => Promise | void, config?: Knex.TransactionConfig ): Promise; - initialize(config?: Knex.Config): void; - destroy(callback: Function): void; - destroy(): Promise; + initialize (config?: Knex.Config): void; + destroy (callback: Function): void; + destroy (): Promise; - batchInsert( + batchInsert ( tableName: Knex.TableDescriptor, data: TRecord2 extends Knex.CompositeTableType ? ReadonlyArray> @@ -354,7 +354,7 @@ export interface Knex ): Knex.BatchInsertBuilder; schema: Knex.SchemaBuilder; - queryBuilder(): Knex.QueryBuilder< + queryBuilder (): Knex.QueryBuilder< TRecord2, TResult2 >; @@ -365,27 +365,27 @@ export interface Knex fn: Knex.FunctionHelper; ref: Knex.RefBuilder; userParams: Record; - withUserParams(params: Record): Knex; + withUserParams (params: Record): Knex; isTransaction?: boolean; } -export declare function knex( +export declare function knex ( config: Knex.Config | string ): Knex; export declare namespace knex { class QueryBuilder { - static extend( + static extend ( methodName: string, fn: ( this: Knex.QueryBuilder, ...args: any[] - ) => Knex.QueryBuilder + ) => Knex.QueryBuilder | Promise | DeferredKeySelection.Resolve> ): void; } class TableBuilder { - static extend( + static extend ( methodName: string, fn: ( this: Knex.TableBuilder, @@ -394,7 +394,7 @@ export declare namespace knex { ): void; } class ViewBuilder { - static extend( + static extend ( methodName: string, fn: ( this: Knex.ViewBuilder, @@ -403,7 +403,7 @@ export declare namespace knex { ): void; } class SchemaBuilder { - static extend( + static extend ( methodName: string, fn: ( this: Knex.SchemaBuilder, @@ -412,7 +412,7 @@ export declare namespace knex { ): void; } class ColumnBuilder { - static extend( + static extend ( methodName: string, fn: ( this: Knex.ColumnBuilder, @@ -421,7 +421,7 @@ export declare namespace knex { ): void; } - export class KnexTimeoutError extends Error {} + export class KnexTimeoutError extends Error { } export const Client: typeof Knex.Client; } @@ -444,8 +444,8 @@ export declare namespace Knex { | Buffer | Knex.Raw; - interface ValueDict extends Dict {} - interface AliasDict extends Dict {} + interface ValueDict extends Dict { } + interface AliasDict extends Dict { } type ColumnDescriptor = | string @@ -495,9 +495,9 @@ export declare namespace Knex { : TCompositeTableType; interface OnConflictQueryBuilder { - ignore(): QueryBuilder; - merge(mergeColumns?: (keyof TRecord)[]): QueryBuilder; - merge(data?: Extract>, object>): QueryBuilder; + ignore (): QueryBuilder; + merge (mergeColumns?: (keyof TRecord)[]): QueryBuilder; + merge (data?: Extract>, object>): QueryBuilder; } // @@ -644,7 +644,7 @@ export declare namespace Knex { orHavingNotIn: HavingRange; // Clear - clearSelect(): QueryBuilder< + clearSelect (): QueryBuilder< TRecord, UnwrapArrayMember extends DeferredKeySelection< infer TBase, @@ -658,16 +658,16 @@ export declare namespace Knex { ? DeferredKeySelection[] : TResult >; - clearWhere(): QueryBuilder; - clearGroup(): QueryBuilder; - clearOrder(): QueryBuilder; - clearHaving(): QueryBuilder; - clearCounters(): QueryBuilder; - clear(statement: ClearStatements): QueryBuilder; + clearWhere (): QueryBuilder; + clearGroup (): QueryBuilder; + clearOrder (): QueryBuilder; + clearHaving (): QueryBuilder; + clearCounters (): QueryBuilder; + clear (statement: ClearStatements): QueryBuilder; // Paging - offset(offset: number, options?: boolean | Readonly<{skipBinding?: boolean}>): QueryBuilder; - limit(limit: number, options?: string | Readonly<{skipBinding?: boolean}>): QueryBuilder; + offset (offset: number, options?: boolean | Readonly<{ skipBinding?: boolean }>): QueryBuilder; + limit (limit: number, options?: string | Readonly<{ skipBinding?: boolean }>): QueryBuilder; // Aggregation count: AsymmetricAggregation>; @@ -679,20 +679,20 @@ export declare namespace Knex { avg: TypePreservingAggregation; avgDistinct: TypePreservingAggregation; - increment( + increment ( columnName: keyof TRecord, amount?: number ): QueryBuilder; - increment( + increment ( columnName: string, amount?: number ): QueryBuilder; - decrement( + decrement ( columnName: keyof TRecord, amount?: number ): QueryBuilder; - decrement( + decrement ( columnName: string, amount?: number ): QueryBuilder; @@ -705,12 +705,12 @@ export declare namespace Knex { // Others first: Select, undefined>>; - pluck( + pluck ( column: K ): QueryBuilder; - pluck(column: string): QueryBuilder; + pluck (column: string): QueryBuilder; - insert( + insert ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -724,7 +724,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -738,7 +738,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -752,7 +752,7 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -766,20 +766,20 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - insert( + insert ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray> ): QueryBuilder; - upsert( + upsert ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -792,8 +792,8 @@ export declare namespace Knex { UnwrapArrayMember, ResolveTableType, TKey - >[] - >( + >[] + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -806,8 +806,8 @@ export declare namespace Knex { UnwrapArrayMember, ResolveTableType, TKey - >[] - >( + >[] + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -820,8 +820,8 @@ export declare namespace Knex { UnwrapArrayMember, TRecord, TKey - >[] - >( + >[] + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, @@ -834,21 +834,21 @@ export declare namespace Knex { UnwrapArrayMember, TRecord, TKey - >[] - >( + >[] + > ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - upsert( + upsert ( data: TRecord extends CompositeTableType ? ResolveTableType | ReadonlyArray> : DbRecordArr | ReadonlyArray> ): QueryBuilder; - modify( + modify ( callback: QueryCallbackWithArgs, ...args: any[] ): QueryBuilder; @@ -860,7 +860,7 @@ export declare namespace Knex { ResolveTableType, K2 >[] - >( + > ( columnName: K1, value: DbColumn[K1]>, returning: K2, @@ -874,23 +874,23 @@ export declare namespace Knex { ResolveTableType, K2 >[] - >( + > ( columnName: K1, value: DbColumn[K1]>, returning: readonly K2[], options?: DMLOptions ): QueryBuilder; - update( + update ( columnName: K, value: DbColumn ): QueryBuilder; - update[]>( + update[]> ( columnName: string, value: Value, returning: string | readonly string[], options?: DMLOptions ): QueryBuilder; - update( + update ( data: DbRecordArr, returning: '*', options?: DMLOptions @@ -902,7 +902,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, returning: TKey, options?: DMLOptions @@ -914,7 +914,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, returning: readonly TKey[], options?: DMLOptions @@ -926,7 +926,7 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, returning: TKey | readonly TKey[], options?: DMLOptions @@ -938,18 +938,18 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - update( + update ( data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr ): QueryBuilder; - update(columnName: string, value: Value): QueryBuilder; + update (columnName: string, value: Value): QueryBuilder; - returning(column: '*', options?: DMLOptions): QueryBuilder[]>; + returning (column: '*', options?: DMLOptions): QueryBuilder[]>; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.Augment< @@ -957,7 +957,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( column: TKey, options?: DMLOptions ): QueryBuilder; @@ -967,41 +967,41 @@ export declare namespace Knex { DeferredKeySelection.Augment, ResolveTableType, TKey>, false >[] - >( + > ( columns: readonly TKey[], options?: DMLOptions ): QueryBuilder; - returning[]>( + returning[]> ( column: string | readonly (string | Raw)[] | Raw, options?: DMLOptions ): QueryBuilder; onConflict< TKey extends StrKey> - >( + > ( column: TKey ): OnConflictQueryBuilder; onConflict< TKey extends StrKey> - >( + > ( columns: readonly TKey[] ): OnConflictQueryBuilder; - onConflict( + onConflict ( columns: string ): OnConflictQueryBuilder; - onConflict( + onConflict ( columns: string[] ): OnConflictQueryBuilder; - onConflict( + onConflict ( raw: Raw ): OnConflictQueryBuilder; - onConflict(): OnConflictQueryBuilder; + onConflict (): OnConflictQueryBuilder; - del( + del ( returning: '*', options?: DMLOptions ): QueryBuilder[]>; @@ -1012,7 +1012,7 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( returning: TKey, options?: DMLOptions ): QueryBuilder; @@ -1023,17 +1023,17 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - del[]>( + del[]> ( returning: string | readonly string[], options?: DMLOptions ): QueryBuilder; - del(): QueryBuilder; + del (): QueryBuilder; - delete( + delete ( returning: '*', options?: DMLOptions ): QueryBuilder[]>; @@ -1044,7 +1044,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( returning: TKey, options?: DMLOptions ): QueryBuilder; @@ -1055,17 +1055,17 @@ export declare namespace Knex { TRecord, TKey >[] - >( + > ( returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - delete( + delete ( returning: string | readonly (string | Raw)[] | Raw, options?: DMLOptions ): QueryBuilder; - delete(): QueryBuilder; + delete (): QueryBuilder; - truncate(): QueryBuilder; + truncate (): QueryBuilder; } interface As { @@ -1095,7 +1095,7 @@ export declare namespace Knex { IncompatibleToAlt, string, never>, IntersectAliases >> - >( + > ( ...aliases: AliasUT ): QueryBuilder; @@ -1107,7 +1107,7 @@ export declare namespace Knex { IncompatibleToAlt, string, never>, IntersectAliases >> - >( + > ( aliases: AliasUT ): QueryBuilder; @@ -1119,7 +1119,7 @@ export declare namespace Knex { IncompatibleToAlt, string, never>, IntersectAliases >> - >( + > ( ...aliases: AliasUT ): QueryBuilder; @@ -1131,7 +1131,7 @@ export declare namespace Knex { IncompatibleToAlt, string, never>, IntersectAliases >> - >( + > ( aliases: AliasUT ): QueryBuilder; } @@ -1141,11 +1141,11 @@ export declare namespace Knex { ColumnNameQueryBuilder { (): QueryBuilder; - , TInnerRecord extends {} = any, TInnerResult = any>( + , TInnerRecord extends {} = any, TInnerResult = any> ( ...subQueryBuilders: readonly QueryBuilder[] ): QueryBuilder; - , TInnerRecord extends {} = any, TInnerResult = any>( + , TInnerRecord extends {} = any, TInnerResult = any> ( subQueryBuilders: readonly QueryBuilder[] ): QueryBuilder; } @@ -1184,42 +1184,42 @@ export declare namespace Knex { TTable extends TableNames, TRecord2 extends {} = TableType, TResult2 = DeferredKeySelection.ReplaceBase> - >( + > ( tableName: TTable, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( callback: Function, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( raw: Raw, options?: TableOptions ): QueryBuilder; } interface Distinct - extends ColumnNameQueryBuilder {} + extends ColumnNameQueryBuilder { } interface DistinctOn { - ( + ( ...columnNames: readonly ColNameUT[] ): QueryBuilder; - ( + ( columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1236,7 +1236,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( raw: Raw ): QueryBuilder; < @@ -1244,7 +1244,7 @@ export declare namespace Knex { TRecord2 extends {} = ResolveTableType & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TTable, clause: JoinCallback ): QueryBuilder; @@ -1252,7 +1252,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, clause: JoinCallback ): QueryBuilder; @@ -1260,7 +1260,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, columns: { [key: string]: string | number | boolean | Raw } ): QueryBuilder; @@ -1268,7 +1268,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, raw: Raw ): QueryBuilder; @@ -1280,7 +1280,7 @@ export declare namespace Knex { TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TTable2, column1: `${TTable1}.${TKey1}`, column2: `${TTable2}.${TKey2}` @@ -1293,7 +1293,7 @@ export declare namespace Knex { TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TTable2, column1: `${TTable2}.${TKey2}`, column2: `${TTable1}.${TKey1}` @@ -1302,7 +1302,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, column2: string @@ -1311,7 +1311,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, raw: Raw @@ -1324,7 +1324,7 @@ export declare namespace Knex { TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TTable2, column1: `${TTable1}.${TKey1}`, operator: string, @@ -1338,7 +1338,7 @@ export declare namespace Knex { TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TTable2, column1: `${TTable2}.${TKey2}`, operator: string, @@ -1348,7 +1348,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - >( + > ( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, operator: string, @@ -1357,60 +1357,60 @@ export declare namespace Knex { } interface JoinClause { - on(raw: Raw): JoinClause; - on(callback: JoinCallback): JoinClause; - on(columns: { [key: string]: string | Raw }): JoinClause; - on(column1: string, column2: string): JoinClause; - on(column1: string, raw: Raw): JoinClause; - on(column1: string, operator: string, column2: string | Raw): JoinClause; - andOn(raw: Raw): JoinClause; - andOn(callback: JoinCallback): JoinClause; - andOn(columns: { [key: string]: string | Raw }): JoinClause; - andOn(column1: string, column2: string): JoinClause; - andOn(column1: string, raw: Raw): JoinClause; - andOn(column1: string, operator: string, column2: string | Raw): JoinClause; - orOn(raw: Raw): JoinClause; - orOn(callback: JoinCallback): JoinClause; - orOn(columns: { [key: string]: string | Raw }): JoinClause; - orOn(column1: string, column2: string): JoinClause; - orOn(column1: string, raw: Raw): JoinClause; - orOn(column1: string, operator: string, column2: string | Raw): JoinClause; - onVal(column1: string, value: Value): JoinClause; - onVal(column1: string, operator: string, value: Value): JoinClause; - andOnVal(column1: string, value: Value): JoinClause; - andOnVal(column1: string, operator: string, value: Value): JoinClause; - orOnVal(column1: string, value: Value): JoinClause; - orOnVal(column1: string, operator: string, value: Value): JoinClause; - onIn(column1: string, values: readonly any[] | Raw): JoinClause; - andOnIn(column1: string, values: readonly any[] | Raw): JoinClause; - orOnIn(column1: string, values: readonly any[] | Raw): JoinClause; - onNotIn(column1: string, values: readonly any[] | Raw): JoinClause; - andOnNotIn(column1: string, values: readonly any[] | Raw): JoinClause; - orOnNotIn(column1: string, values: readonly any[] | Raw): JoinClause; - onNull(column1: string): JoinClause; - andOnNull(column1: string): JoinClause; - orOnNull(column1: string): JoinClause; - onNotNull(column1: string): JoinClause; - andOnNotNull(column1: string): JoinClause; - orOnNotNull(column1: string): JoinClause; - onExists(callback: QueryCallback): JoinClause; - andOnExists(callback: QueryCallback): JoinClause; - orOnExists(callback: QueryCallback): JoinClause; - onNotExists(callback: QueryCallback): JoinClause; - andOnNotExists(callback: QueryCallback): JoinClause; - orOnNotExists(callback: QueryCallback): JoinClause; - onBetween(column1: string, range: readonly [any, any]): JoinClause; - andOnBetween(column1: string, range: readonly [any, any]): JoinClause; - orOnBetween(column1: string, range: readonly [any, any]): JoinClause; - onNotBetween(column1: string, range: readonly [any, any]): JoinClause; - andOnNotBetween(column1: string, range: readonly [any, any]): JoinClause; - orOnNotBetween(column1: string, range: readonly [any, any]): JoinClause; - onJsonPathEquals(columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; - orOnJsonPathEquals(columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; - using( + on (raw: Raw): JoinClause; + on (callback: JoinCallback): JoinClause; + on (columns: { [key: string]: string | Raw }): JoinClause; + on (column1: string, column2: string): JoinClause; + on (column1: string, raw: Raw): JoinClause; + on (column1: string, operator: string, column2: string | Raw): JoinClause; + andOn (raw: Raw): JoinClause; + andOn (callback: JoinCallback): JoinClause; + andOn (columns: { [key: string]: string | Raw }): JoinClause; + andOn (column1: string, column2: string): JoinClause; + andOn (column1: string, raw: Raw): JoinClause; + andOn (column1: string, operator: string, column2: string | Raw): JoinClause; + orOn (raw: Raw): JoinClause; + orOn (callback: JoinCallback): JoinClause; + orOn (columns: { [key: string]: string | Raw }): JoinClause; + orOn (column1: string, column2: string): JoinClause; + orOn (column1: string, raw: Raw): JoinClause; + orOn (column1: string, operator: string, column2: string | Raw): JoinClause; + onVal (column1: string, value: Value): JoinClause; + onVal (column1: string, operator: string, value: Value): JoinClause; + andOnVal (column1: string, value: Value): JoinClause; + andOnVal (column1: string, operator: string, value: Value): JoinClause; + orOnVal (column1: string, value: Value): JoinClause; + orOnVal (column1: string, operator: string, value: Value): JoinClause; + onIn (column1: string, values: readonly any[] | Raw): JoinClause; + andOnIn (column1: string, values: readonly any[] | Raw): JoinClause; + orOnIn (column1: string, values: readonly any[] | Raw): JoinClause; + onNotIn (column1: string, values: readonly any[] | Raw): JoinClause; + andOnNotIn (column1: string, values: readonly any[] | Raw): JoinClause; + orOnNotIn (column1: string, values: readonly any[] | Raw): JoinClause; + onNull (column1: string): JoinClause; + andOnNull (column1: string): JoinClause; + orOnNull (column1: string): JoinClause; + onNotNull (column1: string): JoinClause; + andOnNotNull (column1: string): JoinClause; + orOnNotNull (column1: string): JoinClause; + onExists (callback: QueryCallback): JoinClause; + andOnExists (callback: QueryCallback): JoinClause; + orOnExists (callback: QueryCallback): JoinClause; + onNotExists (callback: QueryCallback): JoinClause; + andOnNotExists (callback: QueryCallback): JoinClause; + orOnNotExists (callback: QueryCallback): JoinClause; + onBetween (column1: string, range: readonly [any, any]): JoinClause; + andOnBetween (column1: string, range: readonly [any, any]): JoinClause; + orOnBetween (column1: string, range: readonly [any, any]): JoinClause; + onNotBetween (column1: string, range: readonly [any, any]): JoinClause; + andOnNotBetween (column1: string, range: readonly [any, any]): JoinClause; + orOnNotBetween (column1: string, range: readonly [any, any]): JoinClause; + onJsonPathEquals (columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; + orOnJsonPathEquals (columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; + using ( column: string | readonly string[] | Raw | { [key: string]: string | Raw } ): JoinClause; - type(type: string): JoinClause; + type (type: string): JoinClause; } interface JoinRaw { @@ -1426,7 +1426,7 @@ export declare namespace Knex { interface With extends WithRaw, - WithWrapped {} + WithWrapped { } interface WithRaw { (alias: string, raw: Raw | QueryBuilder): QueryBuilder; @@ -1471,14 +1471,14 @@ export declare namespace Knex { (object: Readonly): QueryBuilder; - >( + > ( columnName: T, value: DbColumn[T]> | null ): QueryBuilder; (columnName: string, value: Value | null): QueryBuilder; - >( + > ( columnName: T, operator: ComparisonOperator, value: DbColumn[T]> | null @@ -1489,13 +1489,13 @@ export declare namespace Knex { TResult >; - , TRecordInner extends {}, TResultInner>( + , TRecordInner extends {}, TResultInner> ( columnName: T, operator: ComparisonOperator, value: QueryBuilder ): QueryBuilder; - ( + ( columnName: string, operator: string, value: QueryBuilder @@ -1506,7 +1506,7 @@ export declare namespace Knex { TResult >; - ( + ( left: Raw, operator: string, right: QueryBuilder @@ -1528,7 +1528,7 @@ export declare namespace Knex { } interface WhereBetween { - ( + ( columnName: K, range: readonly [DbColumn, DbColumn] ): QueryBuilder; @@ -1537,7 +1537,7 @@ export declare namespace Knex { interface WhereExists { (callback: QueryCallback): QueryBuilder; - ( + ( query: QueryBuilder ): QueryBuilder; } @@ -1551,7 +1551,7 @@ export declare namespace Knex { } interface WhereIn { - >( + > ( columnName: K, values: readonly DbColumn[K]>[] | QueryCallback ): QueryBuilder; @@ -1559,7 +1559,7 @@ export declare namespace Knex { TRecord, TResult >; - >( + > ( columnNames: readonly K[], values: readonly (readonly DbColumn[K]>[])[] | QueryCallback ): QueryBuilder; @@ -1567,19 +1567,19 @@ export declare namespace Knex { TRecord, TResult >; - ( + ( columnName: K, values: QueryBuilder ): QueryBuilder; - ( + ( columnName: string, values: Value[] | QueryBuilder ): QueryBuilder; - ( + ( columnNames: readonly K[], values: QueryBuilder ): QueryBuilder; - ( + ( columnNames: readonly string[], values: QueryBuilder ): QueryBuilder; @@ -1592,19 +1592,19 @@ export declare namespace Knex { interface AsymmetricAggregation { < TOptions extends { "as": string }, - TResult2 = AggregationQueryResult - >( + TResult2 = AggregationQueryResult + > ( columnName: Readonly>, options: Readonly ): QueryBuilder; - >>( + >> ( ...columnNames: readonly (keyof ResolveTableType)[] ): QueryBuilder; < TAliases extends {} = Record, - TResult2 = AggregationQueryResult - >(aliases: TAliases): QueryBuilder; - >>( + TResult2 = AggregationQueryResult + > (aliases: TAliases): QueryBuilder; + >> ( ...columnNames: ReadonlyArray> | Knex.Raw | string> ): QueryBuilder; } @@ -1616,14 +1616,14 @@ export declare namespace Knex { TResult2 = AggregationQueryResult[TKey] }> - >( + > ( columnName: Readonly, options: Readonly ): QueryBuilder; < TKey extends keyof ResolveTableType, TResult2 = AggregationQueryResult[TKey]>> - >( + > ( ...columnNames: readonly TKey[] ): QueryBuilder; < @@ -1635,8 +1635,8 @@ export declare namespace Knex { TRecord[K] : TValue }> - >(aliases: TAliases): QueryBuilder; - >>( + > (aliases: TAliases): QueryBuilder; + >> ( ...columnNames: ReadonlyArray> | Knex.Raw | string> ): QueryBuilder; } @@ -1644,15 +1644,15 @@ export declare namespace Knex { interface AnalyticFunction { < TAlias extends string, - TResult2 = AggregationQueryResult - >(alias: TAlias, raw: Raw | QueryCallback): QueryBuilder; + TResult2 = AggregationQueryResult + > (alias: TAlias, raw: Raw | QueryCallback): QueryBuilder; < TAlias extends string, TKey extends keyof ResolveTableType, - TResult2 = AggregationQueryResult - >(alias: TAlias, - orderBy: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc', nulls?: 'first' | 'last' }, - partitionBy?: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc' }): + TResult2 = AggregationQueryResult + > (alias: TAlias, + orderBy: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc', nulls?: 'first' | 'last' }, + partitionBy?: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc' }): QueryBuilder< TRecord, TResult2 @@ -1661,7 +1661,7 @@ export declare namespace Knex { interface GroupBy extends RawQueryBuilder, - ColumnNameQueryBuilder {} + ColumnNameQueryBuilder { } interface OrderBy { (columnName: keyof TRecord | QueryBuilder, order?: 'asc' | 'desc', nulls?: 'first' | 'last'): QueryBuilder< @@ -1688,7 +1688,7 @@ export declare namespace Knex { } interface PartitionBy - extends OrderBy {} + extends OrderBy { } interface Intersect { ( @@ -1701,11 +1701,11 @@ export declare namespace Knex { } interface Union - extends Intersect {} + extends Intersect { } interface Having extends WhereWrapped { - ( + ( column: K, operator: ComparisonOperator, value: DbColumn @@ -1724,7 +1724,7 @@ export declare namespace Knex { } interface HavingRange { - ( + ( columnName: K, values: readonly DbColumn[] ): QueryBuilder; @@ -1748,7 +1748,7 @@ export declare namespace Knex { ResolveTableType, ColNameUT & string >[] - >( + > ( ...columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1759,7 +1759,7 @@ export declare namespace Knex { ResolveTableType, ColNameUT & string >[] - >( + > ( columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1771,7 +1771,7 @@ export declare namespace Knex { SafePartial, keyof TRecord & string >[] - >( + > ( ...columnNames: readonly ColumnDescriptor[] ): QueryBuilder; @@ -1781,7 +1781,7 @@ export declare namespace Knex { SafePartial, keyof TRecord & string >[] - >( + > ( columnNames: readonly ColumnDescriptor[] ): QueryBuilder; } @@ -1789,11 +1789,11 @@ export declare namespace Knex { type RawBinding = Value | QueryBuilder; interface RawQueryBuilder { - ( + ( sql: string, bindings?: readonly RawBinding[] | ValueDict | RawBinding ): QueryBuilder; - (raw: Raw): QueryBuilder< + (raw: Raw): QueryBuilder< TRecord, TResult2 >; @@ -1804,17 +1804,17 @@ export declare namespace Knex { interface Raw extends events.EventEmitter, ChainableInterface> { - timeout(ms: number, options?: {cancel?: boolean}): Raw; - wrap(before: string, after: string): Raw; - toSQL(): Sql; - queryContext(context: any): Raw; - queryContext(): any; + timeout (ms: number, options?: { cancel?: boolean }): Raw; + wrap (before: string, after: string): Raw; + toSQL (): Sql; + queryContext (context: any): Raw; + queryContext (): any; } interface RawBuilder { - (value: Value): Raw; - (sql: string, ...bindings: readonly RawBinding[]): Raw; - (sql: string, bindings: readonly RawBinding[] | ValueDict): Raw; + (value: Value): Raw; + (sql: string, ...bindings: readonly RawBinding[]): Raw; + (sql: string, bindings: readonly RawBinding[] | ValueDict): Raw; } const RefMemberTag: unique symbol; @@ -1835,18 +1835,18 @@ export declare namespace Knex { src: TSrc, mapping: TMapping }; - withSchema(schema: string): this; - as(alias: TAlias): Ref; + withSchema (schema: string): this; + as (alias: TAlias): Ref; } interface RefBuilder { - (src: TSrc): Ref; + (src: TSrc): Ref; } interface BatchInsertBuilder extends Promise> { - transacting(trx: Transaction): this; + transacting (trx: Transaction): this; // see returning methods from QueryInterface - returning(column: '*'): BatchInsertBuilder[]>; + returning (column: '*'): BatchInsertBuilder[]>; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.Augment< @@ -1854,7 +1854,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - >( + > ( column: TKey ): BatchInsertBuilder; returning< @@ -1863,12 +1863,12 @@ export declare namespace Knex { DeferredKeySelection.Augment, ResolveTableType, TKey>, false >[] - >( + > ( columns: readonly TKey[] ): BatchInsertBuilder; // if data with specific type passed, exclude this method - returning[]>( - column: unknown extends TRecord ? string | readonly (string | Raw)[] | Raw: never + returning[]> ( + column: unknown extends TRecord ? string | readonly (string | Raw)[] | Raw : never ): BatchInsertBuilder; } @@ -1890,7 +1890,7 @@ export declare namespace Knex { interface QueryBuilder< TRecord extends {} = any, TResult = any - > + > extends QueryInterface, ChainableInterface> { client: Client; @@ -1899,33 +1899,33 @@ export declare namespace Knex { and: QueryBuilder; // TODO: Promise? - columnInfo(column: keyof DeferredKeySelection.Resolve): Promise; - columnInfo(): Promise, ColumnInfo>>; + columnInfo (column: keyof DeferredKeySelection.Resolve): Promise; + columnInfo (): Promise, ColumnInfo>>; - forUpdate(...tableNames: string[]): QueryBuilder; - forUpdate(tableNames: readonly string[]): QueryBuilder; + forUpdate (...tableNames: string[]): QueryBuilder; + forUpdate (tableNames: readonly string[]): QueryBuilder; - forShare(...tableNames: string[]): QueryBuilder; - forShare(tableNames: readonly string[]): QueryBuilder; + forShare (...tableNames: string[]): QueryBuilder; + forShare (tableNames: readonly string[]): QueryBuilder; - forNoKeyUpdate(...tableNames: string[]): QueryBuilder; - forNoKeyUpdate(tableNames: readonly string[]): QueryBuilder; + forNoKeyUpdate (...tableNames: string[]): QueryBuilder; + forNoKeyUpdate (tableNames: readonly string[]): QueryBuilder; - forKeyShare(...tableNames: string[]): QueryBuilder; - forKeyShare(tableNames: readonly string[]): QueryBuilder; + forKeyShare (...tableNames: string[]): QueryBuilder; + forKeyShare (tableNames: readonly string[]): QueryBuilder; - skipLocked(): QueryBuilder; - noWait(): QueryBuilder; + skipLocked (): QueryBuilder; + noWait (): QueryBuilder; - toSQL(): Sql; + toSQL (): Sql; - on(event: string, callback: Function): QueryBuilder; + on (event: string, callback: Function): QueryBuilder; - queryContext(context: any): QueryBuilder; - queryContext(): any; + queryContext (context: any): QueryBuilder; + queryContext (): any; - clone(): QueryBuilder; - timeout(ms: number, options?: {cancel?: boolean}): QueryBuilder; + clone (): QueryBuilder; + timeout (ms: number, options?: { cancel?: boolean }): QueryBuilder; } interface Sql { @@ -1933,7 +1933,7 @@ export declare namespace Knex { options: any; bindings: readonly Value[]; sql: string; - toNative(): SqlNative; + toNative (): SqlNative; } interface SqlNative { @@ -1954,23 +1954,23 @@ export declare namespace Knex { readonly [Symbol.toStringTag]: string; } interface ChainableInterface extends Pick, keyof Promise & ExposedPromiseKeys>, StringTagSupport { - generateDdlCommands(): Promise<{ pre: string[], sql: string[], check: string | null, post: string[] }>; - toQuery(): string; - options(options: Readonly<{ [key: string]: any }>): this; - connection(connection: any): this; - debug(enabled: boolean): this; - transacting(trx: Transaction): this; - stream(handler: (readable: stream.PassThrough) => any): Promise; - stream( + generateDdlCommands (): Promise<{ pre: string[], sql: string[], check: string | null, post: string[] }>; + toQuery (): string; + options (options: Readonly<{ [key: string]: any }>): this; + connection (connection: any): this; + debug (enabled: boolean): this; + transacting (trx: Transaction): this; + stream (handler: (readable: stream.PassThrough) => any): Promise; + stream ( options: Readonly<{ [key: string]: any }>, handler: (readable: stream.PassThrough) => any ): Promise; - stream(options?: Readonly<{ [key: string]: any }>): stream.PassThrough & AsyncIterable>; - pipe( + stream (options?: Readonly<{ [key: string]: any }>): stream.PassThrough & AsyncIterable>; + pipe ( writable: T, options?: Readonly<{ [key: string]: any }> ): stream.PassThrough; - asCallback(callback: Function): Promise; + asCallback (callback: Function): Promise; } // Not all of these are possible for all drivers, notably, sqlite doesn't support any of these @@ -1987,17 +1987,17 @@ export declare namespace Knex { executionPromise: Promise; isCompleted: () => boolean; - query( + query ( conn: any, sql: any, status: any, value: any ): QueryBuilder; - savepoint( + savepoint ( transactionScope: (trx: Transaction) => any ): Promise; - commit(value?: any): QueryBuilder; - rollback(error?: any): QueryBuilder; + commit (value?: any): QueryBuilder; + rollback (error?: any): QueryBuilder; } type TransactionProvider = () => Promise; @@ -2008,203 +2008,203 @@ export declare namespace Knex { interface SchemaBuilder extends ChainableInterface { // Views - createView( + createView ( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - createViewOrReplace( + createViewOrReplace ( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - createMaterializedView( + createMaterializedView ( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - refreshMaterializedView(viewName: string, concurrently?: boolean): SchemaBuilder; - dropView(viewName: string): SchemaBuilder; - dropViewIfExists(viewName: string): SchemaBuilder; - dropMaterializedView(viewName: string): SchemaBuilder; - dropMaterializedViewIfExists(viewName: string): SchemaBuilder; - renameView(oldViewName: string, newViewName: string): Promise; - view( + refreshMaterializedView (viewName: string, concurrently?: boolean): SchemaBuilder; + dropView (viewName: string): SchemaBuilder; + dropViewIfExists (viewName: string): SchemaBuilder; + dropMaterializedView (viewName: string): SchemaBuilder; + dropMaterializedViewIfExists (viewName: string): SchemaBuilder; + renameView (oldViewName: string, newViewName: string): Promise; + view ( viewName: string, callback: (viewBuilder: AlterViewBuilder) => any ): Promise; - alterView( + alterView ( viewName: string, callback: (tableBuilder: AlterViewBuilder) => any ): SchemaBuilder; // Tables - createTable( + createTable ( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - createTableIfNotExists( + createTableIfNotExists ( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - createTableLike( + createTableLike ( tableName: string, tableNameLike: string, callback?: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - alterTable( + alterTable ( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - renameTable(oldTableName: string, newTableName: string): Promise; - dropTable(tableName: string): SchemaBuilder; - hasTable(tableName: string): Promise; - table( + renameTable (oldTableName: string, newTableName: string): Promise; + dropTable (tableName: string): SchemaBuilder; + hasTable (tableName: string): Promise; + table ( tableName: string, callback: (tableBuilder: AlterTableBuilder) => any ): Promise; - dropTableIfExists(tableName: string): SchemaBuilder; + dropTableIfExists (tableName: string): SchemaBuilder; // Schema - createSchema(schemaName: string): SchemaBuilder; - createSchemaIfNotExists(schemaName: string): SchemaBuilder; - dropSchema(schemaName: string, cascade?: boolean): SchemaBuilder; - dropSchemaIfExists(schemaName: string, cascade?: boolean): SchemaBuilder; - withSchema(schemaName: string): SchemaBuilder; + createSchema (schemaName: string): SchemaBuilder; + createSchemaIfNotExists (schemaName: string): SchemaBuilder; + dropSchema (schemaName: string, cascade?: boolean): SchemaBuilder; + dropSchemaIfExists (schemaName: string, cascade?: boolean): SchemaBuilder; + withSchema (schemaName: string): SchemaBuilder; // Others - hasColumn(tableName: string, columnName: string): Promise; - raw(statement: string): SchemaBuilder; - queryContext(context: any): SchemaBuilder; - toString(): string; - toSQL(): Sql; + hasColumn (tableName: string, columnName: string): Promise; + raw (statement: string): SchemaBuilder; + queryContext (context: any): SchemaBuilder; + toString (): string; + toSQL (): Sql; } interface TableBuilder { - increments( + increments ( columnName?: string, options?: { primaryKey?: boolean } ): ColumnBuilder; - bigIncrements( + bigIncrements ( columnName?: string, options?: { primaryKey?: boolean } ): ColumnBuilder; - dropColumn(columnName: string): TableBuilder; - dropColumns(...columnNames: string[]): TableBuilder; - renameColumn(from: string, to: string): TableBuilder; - integer(columnName: string, length?: number): ColumnBuilder; - tinyint(columnName: string, length?: number): ColumnBuilder; - smallint(columnName: string): ColumnBuilder; - mediumint(columnName: string): ColumnBuilder; - bigint(columnName: string): ColumnBuilder; - bigInteger(columnName: string): ColumnBuilder; - text(columnName: string, textType?: string): ColumnBuilder; - string(columnName: string, length?: number): ColumnBuilder; - float( + dropColumn (columnName: string): TableBuilder; + dropColumns (...columnNames: string[]): TableBuilder; + renameColumn (from: string, to: string): TableBuilder; + integer (columnName: string, length?: number): ColumnBuilder; + tinyint (columnName: string, length?: number): ColumnBuilder; + smallint (columnName: string): ColumnBuilder; + mediumint (columnName: string): ColumnBuilder; + bigint (columnName: string): ColumnBuilder; + bigInteger (columnName: string): ColumnBuilder; + text (columnName: string, textType?: string): ColumnBuilder; + string (columnName: string, length?: number): ColumnBuilder; + float ( columnName: string, precision?: number, scale?: number ): ColumnBuilder; - double( + double ( columnName: string, precision?: number, scale?: number ): ColumnBuilder; - decimal( + decimal ( columnName: string, precision?: number | null, scale?: number ): ColumnBuilder; - boolean(columnName: string): ColumnBuilder; - date(columnName: string): ColumnBuilder; - dateTime(columnName: string, options?: Readonly<{useTz?: boolean, precision?: number}>): ColumnBuilder; - datetime(columnName: string, options?: Readonly<{useTz?: boolean, precision?: number}>): ColumnBuilder; - time(columnName: string): ColumnBuilder; - timestamp(columnName: string, options?: Readonly<{useTz?: boolean, precision?: number}>): ColumnBuilder; + boolean (columnName: string): ColumnBuilder; + date (columnName: string): ColumnBuilder; + dateTime (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; + datetime (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; + time (columnName: string): ColumnBuilder; + timestamp (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; /** @deprecated */ - timestamp(columnName: string, withoutTz?: boolean, precision?: number): ColumnBuilder; - timestamps( + timestamp (columnName: string, withoutTz?: boolean, precision?: number): ColumnBuilder; + timestamps ( useTimestamps?: boolean, defaultToNow?: boolean, useCamelCase?: boolean ): ColumnBuilder; - timestamps( - options?: Readonly<{useTimestamps?: boolean, defaultToNow?: boolean, useCamelCase?: boolean}> + timestamps ( + options?: Readonly<{ useTimestamps?: boolean, defaultToNow?: boolean, useCamelCase?: boolean }> ): void; - geometry(columnName: string): ColumnBuilder; - geography(columnName: string): ColumnBuilder; - point(columnName: string): ColumnBuilder; - binary(columnName: string, length?: number): ColumnBuilder; - enum( + geometry (columnName: string): ColumnBuilder; + geography (columnName: string): ColumnBuilder; + point (columnName: string): ColumnBuilder; + binary (columnName: string, length?: number): ColumnBuilder; + enum ( columnName: string, values: (readonly Value[]) | null, options?: EnumOptions ): ColumnBuilder; - enu( + enu ( columnName: string, values: (readonly Value[]) | null, options?: EnumOptions ): ColumnBuilder; - json(columnName: string): ColumnBuilder; - jsonb(columnName: string): ColumnBuilder; - uuid(columnName: string, options?: Readonly<{useBinaryUuid?: boolean}>): ColumnBuilder; - comment(val: string): void; - specificType(columnName: string, type: string): ColumnBuilder; - primary(columnNames: readonly string[], options?: Readonly<{constraintName?: string, deferrable?: deferrableType}>): TableBuilder; + json (columnName: string): ColumnBuilder; + jsonb (columnName: string): ColumnBuilder; + uuid (columnName: string, options?: Readonly<{ useBinaryUuid?: boolean }>): ColumnBuilder; + comment (val: string): void; + specificType (columnName: string, type: string): ColumnBuilder; + primary (columnNames: readonly string[], options?: Readonly<{ constraintName?: string, deferrable?: deferrableType }>): TableBuilder; /** @deprecated */ - primary(columnNames: readonly string[], constraintName?: string): TableBuilder; - index( + primary (columnNames: readonly string[], constraintName?: string): TableBuilder; + index ( columnNames: string | readonly (string | Raw)[], indexName?: string, indexType?: string ): TableBuilder; - index( + index ( columnNames: string | readonly (string | Raw)[], indexName?: string, - options?: Readonly<{indexType?: string, storageEngineIndexType?: storageEngineIndexType, predicate?: QueryBuilder}> + options?: Readonly<{ indexType?: string, storageEngineIndexType?: storageEngineIndexType, predicate?: QueryBuilder }> ): TableBuilder; - setNullable(column: string): TableBuilder; - dropNullable(column: string): TableBuilder; - unique(columnNames: readonly (string | Raw)[], options?: Readonly<{indexName?: string, storageEngineIndexType?: string, deferrable?: deferrableType, useConstraint?: boolean}>): TableBuilder; + setNullable (column: string): TableBuilder; + dropNullable (column: string): TableBuilder; + unique (columnNames: readonly (string | Raw)[], options?: Readonly<{ indexName?: string, storageEngineIndexType?: string, deferrable?: deferrableType, useConstraint?: boolean }>): TableBuilder; /** @deprecated */ - unique(columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; - foreign(column: string, foreignKeyName?: string): ForeignConstraintBuilder; - foreign( + unique (columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; + foreign (column: string, foreignKeyName?: string): ForeignConstraintBuilder; + foreign ( columns: readonly string[], foreignKeyName?: string ): MultikeyForeignConstraintBuilder; - check(checkPredicate: string, bindings?: Record, constraintName?: string): TableBuilder; - dropForeign(columnNames: string | readonly string[], foreignKeyName?: string): TableBuilder; - dropUnique(columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; - dropPrimary(constraintName?: string): TableBuilder; - dropIndex(columnNames: string | readonly (string | Raw)[], indexName?: string): TableBuilder; - dropTimestamps(useCamelCase?: boolean): TableBuilder; - dropChecks(checkConstraintNames: string | string[]): TableBuilder; - queryContext(context: any): TableBuilder; + check (checkPredicate: string, bindings?: Record, constraintName?: string): TableBuilder; + dropForeign (columnNames: string | readonly string[], foreignKeyName?: string): TableBuilder; + dropUnique (columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; + dropPrimary (constraintName?: string): TableBuilder; + dropIndex (columnNames: string | readonly (string | Raw)[], indexName?: string): TableBuilder; + dropTimestamps (useCamelCase?: boolean): TableBuilder; + dropChecks (checkConstraintNames: string | string[]): TableBuilder; + queryContext (context: any): TableBuilder; } interface ViewBuilder { - columns(columns: any): ViewBuilder; - as(selectQuery: QueryBuilder): ViewBuilder; - checkOption(): Promise; - localCheckOption(): Promise; - cascadedCheckOption(): Promise; - queryContext(context: any): ViewBuilder; + columns (columns: any): ViewBuilder; + as (selectQuery: QueryBuilder): ViewBuilder; + checkOption (): Promise; + localCheckOption (): Promise; + cascadedCheckOption (): Promise; + queryContext (context: any): ViewBuilder; } interface CreateTableBuilder extends TableBuilder { - engine(val: string): CreateTableBuilder; - charset(val: string): CreateTableBuilder; - collate(val: string): CreateTableBuilder; - inherits(val: string): CreateTableBuilder; + engine (val: string): CreateTableBuilder; + charset (val: string): CreateTableBuilder; + collate (val: string): CreateTableBuilder; + inherits (val: string): CreateTableBuilder; } - interface AlterTableBuilder extends TableBuilder {} + interface AlterTableBuilder extends TableBuilder { } interface AlterColumnView extends ViewBuilder { - rename(newName: string): AlterColumnView; - defaultTo(defaultValue: string): AlterColumnView; + rename (newName: string): AlterColumnView; + defaultTo (defaultValue: string): AlterColumnView; } interface AlterViewBuilder extends ViewBuilder { - column(column: string): AlterColumnView; + column (column: string): AlterColumnView; } type deferrableType = 'not deferrable' | 'immediate' | 'deferred'; @@ -2212,67 +2212,67 @@ export declare namespace Knex { type lengthOperator = '>' | '<' | '<=' | '>=' | '!=' | '='; interface ColumnBuilder { - index(indexName?: string): ColumnBuilder; - primary(options?: Readonly<{constraintName?: string, deferrable?: deferrableType}>): ColumnBuilder; + index (indexName?: string): ColumnBuilder; + primary (options?: Readonly<{ constraintName?: string, deferrable?: deferrableType }>): ColumnBuilder; /** @deprecated */ - primary(constraintName?: string): ColumnBuilder; + primary (constraintName?: string): ColumnBuilder; - unique(options?: Readonly<{indexName?: string, deferrable?: deferrableType}>): ColumnBuilder; + unique (options?: Readonly<{ indexName?: string, deferrable?: deferrableType }>): ColumnBuilder; /** @deprecated */ - unique(indexName?: string): ColumnBuilder; - references(columnName: string): ReferencingColumnBuilder; - defaultTo(value: Value | null, options?: DefaultToOptions): ColumnBuilder; - unsigned(): ColumnBuilder; - notNullable(): ColumnBuilder; - nullable(): ColumnBuilder; - comment(value: string): ColumnBuilder; - alter(options?: Readonly<{alterNullable?: boolean, alterType?: boolean}>): ColumnBuilder; - queryContext(context: any): ColumnBuilder; - after(columnName: string): ColumnBuilder; - first(): ColumnBuilder; - checkPositive(constraintName?: string): ColumnBuilder; - checkNegative(constraintName?: string): ColumnBuilder; - checkIn(values: string[], constraintName?: string): ColumnBuilder; - checkNotIn(values: string[], constraintName?: string): ColumnBuilder; - checkBetween(values: any[] | any[][], constraintName?: string): ColumnBuilder; - checkLength(operator: lengthOperator, length: number, constraintName?: string): ColumnBuilder; - checkRegex(regex: string, constraintName?: string): ColumnBuilder; + unique (indexName?: string): ColumnBuilder; + references (columnName: string): ReferencingColumnBuilder; + defaultTo (value: Value | null, options?: DefaultToOptions): ColumnBuilder; + unsigned (): ColumnBuilder; + notNullable (): ColumnBuilder; + nullable (): ColumnBuilder; + comment (value: string): ColumnBuilder; + alter (options?: Readonly<{ alterNullable?: boolean, alterType?: boolean }>): ColumnBuilder; + queryContext (context: any): ColumnBuilder; + after (columnName: string): ColumnBuilder; + first (): ColumnBuilder; + checkPositive (constraintName?: string): ColumnBuilder; + checkNegative (constraintName?: string): ColumnBuilder; + checkIn (values: string[], constraintName?: string): ColumnBuilder; + checkNotIn (values: string[], constraintName?: string): ColumnBuilder; + checkBetween (values: any[] | any[][], constraintName?: string): ColumnBuilder; + checkLength (operator: lengthOperator, length: number, constraintName?: string): ColumnBuilder; + checkRegex (regex: string, constraintName?: string): ColumnBuilder; } interface ForeignConstraintBuilder { - references(columnName: string): ReferencingColumnBuilder; + references (columnName: string): ReferencingColumnBuilder; } interface MultikeyForeignConstraintBuilder { - references(columnNames: readonly string[]): ReferencingColumnBuilder; + references (columnNames: readonly string[]): ReferencingColumnBuilder; } interface PostgreSqlColumnBuilder extends ColumnBuilder { - index( + index ( indexName?: string, - options?: Readonly<{indexType?: string, predicate?: QueryBuilder}> + options?: Readonly<{ indexType?: string, predicate?: QueryBuilder }> ): ColumnBuilder; - index(indexName?: string, indexType?: string): ColumnBuilder; + index (indexName?: string, indexType?: string): ColumnBuilder; } interface SqlLiteColumnBuilder extends ColumnBuilder { - index( + index ( indexName?: string, - options?: Readonly<{predicate?: QueryBuilder}> + options?: Readonly<{ predicate?: QueryBuilder }> ): ColumnBuilder; } interface MsSqlColumnBuilder extends ColumnBuilder { - index( + index ( indexName?: string, - options?: Readonly<{predicate?: QueryBuilder}> + options?: Readonly<{ predicate?: QueryBuilder }> ): ColumnBuilder; } interface MySqlColumnBuilder extends ColumnBuilder { - index( + index ( indexName?: string, - options?: Readonly<{indexType?: string, storageEngineIndexType?: storageEngineIndexType}> + options?: Readonly<{ indexType?: string, storageEngineIndexType?: storageEngineIndexType }> ): ColumnBuilder; } @@ -2281,18 +2281,18 @@ export declare namespace Knex { type ReferencingColumnBuilder = { [K in keyof ColumnBuilder]: (...args: Parameters) => ReferencingColumnBuilder; } & { - inTable(tableName: string): ReferencingColumnBuilder; - deferrable(type: deferrableType): ReferencingColumnBuilder; - withKeyName(keyName: string): ReferencingColumnBuilder; - onDelete(command: string): ReferencingColumnBuilder; - onUpdate(command: string): ReferencingColumnBuilder; + inTable (tableName: string): ReferencingColumnBuilder; + deferrable (type: deferrableType): ReferencingColumnBuilder; + withKeyName (keyName: string): ReferencingColumnBuilder; + onDelete (command: string): ReferencingColumnBuilder; + onUpdate (command: string): ReferencingColumnBuilder; }; - interface AlterColumnBuilder extends ColumnBuilder {} + interface AlterColumnBuilder extends ColumnBuilder { } interface MySqlAlterColumnBuilder extends AlterColumnBuilder { - first(): AlterColumnBuilder; - after(columnName: string): AlterColumnBuilder; + first (): AlterColumnBuilder; + after (columnName: string): AlterColumnBuilder; } // @@ -2340,9 +2340,9 @@ export declare namespace Knex { | Sqlite3ConnectionConfig | SocketConnectionConfig; - type ConnectionConfigProvider = SyncConnectionConfigProvider | AsyncConnectionConfigProvider; - type SyncConnectionConfigProvider = () => StaticConnectionConfig; - type AsyncConnectionConfigProvider = () => Promise; + type ConnectionConfigProvider = SyncConnectionConfigProvider | AsyncConnectionConfigProvider; + type SyncConnectionConfigProvider = () => StaticConnectionConfig; + type AsyncConnectionConfigProvider = () => Promise; interface ConnectionConfig { host: string; @@ -2574,11 +2574,11 @@ export declare namespace Knex { // Config object for mysql2: https://github.com/sidorares/node-mysql2/blob/master/lib/connection_config.js // Some options for connection pooling and MySQL server API are excluded. interface MySql2ConnectionConfig extends MySqlConnectionConfig { - authPlugins?: {[pluginName: string]: (pluginMetadata: any) => ((pluginData: any) => any)}; + authPlugins?: { [pluginName: string]: (pluginMetadata: any) => ((pluginData: any) => any) }; authSwitchHandler?: (data: any, callback: () => void) => any; charsetNumber?: number; compress?: boolean; - connectAttributes?: {[attrNames: string]: any}; + connectAttributes?: { [attrNames: string]: any }; enableKeepAlive?: boolean; keepAliveInitialDelay?: number; maxPreparedStatements?: number; @@ -2628,7 +2628,7 @@ export declare namespace Knex { type PgGetTypeParser = (oid: number, format: string) => any; interface PgCustomTypesConfig { - getTypeParser: PgGetTypeParser; + getTypeParser: PgGetTypeParser; } type RedshiftConnectionConfig = PgConnectionConfig; @@ -2687,9 +2687,9 @@ export declare namespace Knex { } interface MigrationSource { - getMigrations(loadExtensions: readonly string[]): Promise; - getMigrationName(migration: TMigrationSpec): string; - getMigration(migration: TMigrationSpec): Promise; + getMigrations (loadExtensions: readonly string[]): Promise; + getMigrationName (migration: TMigrationSpec): string; + getMigration (migration: TMigrationSpec): Promise; } interface MigratorConfig { @@ -2708,15 +2708,15 @@ export declare namespace Knex { } interface Migrator { - make(name: string, config?: MigratorConfig): Promise; - latest(config?: MigratorConfig): Promise; - rollback(config?: MigratorConfig, all?: boolean): Promise; - status(config?: MigratorConfig): Promise; - currentVersion(config?: MigratorConfig): Promise; - list(config?: MigratorConfig): Promise; - up(config?: MigratorConfig): Promise; - down(config?: MigratorConfig): Promise; - forceFreeMigrationsLock(config?: MigratorConfig): Promise; + make (name: string, config?: MigratorConfig): Promise; + latest (config?: MigratorConfig): Promise; + rollback (config?: MigratorConfig, all?: boolean): Promise; + status (config?: MigratorConfig): Promise; + currentVersion (config?: MigratorConfig): Promise; + list (config?: MigratorConfig): Promise; + up (config?: MigratorConfig): Promise; + down (config?: MigratorConfig): Promise; + forceFreeMigrationsLock (config?: MigratorConfig): Promise; } interface Seed { @@ -2724,8 +2724,8 @@ export declare namespace Knex { } interface SeedSource { - getSeeds(config: SeederConfig): Promise; - getSeed(seed: TSeedSpec): Promise; + getSeeds (config: SeederConfig): Promise; + getSeed (seed: TSeedSpec): Promise; } interface SeederConfig { @@ -2742,16 +2742,16 @@ export declare namespace Knex { } class Seeder { - constructor(knex: Knex); - setConfig(config: SeederConfig): SeederConfig; - run(config?: SeederConfig): Promise<[string[]]>; - make(name: string, config?: SeederConfig): Promise; + constructor (knex: Knex); + setConfig (config: SeederConfig): SeederConfig; + run (config?: SeederConfig): Promise<[string[]]>; + make (name: string, config?: SeederConfig): Promise; } interface FunctionHelper { - now(precision?: number): Raw; - uuidToBin(uuid: string, ordered?: boolean): Buffer; - binToUuid(bin: Buffer, ordered?: boolean): string; + now (precision?: number): Raw; + uuidToBin (uuid: string, ordered?: boolean): Buffer; + binToUuid (bin: Buffer, ordered?: boolean): string; } interface EnumOptions { @@ -2767,58 +2767,58 @@ export declare namespace Knex { } class Client extends events.EventEmitter { - constructor(config: Config); + constructor (config: Config); config: Config; dialect: string; driverName: string; connectionSettings: object; - acquireRawConnection(): Promise; - destroyRawConnection(connection: any): Promise; - validateConnection(connection: any): Promise; + acquireRawConnection (): Promise; + destroyRawConnection (connection: any): Promise; + validateConnection (connection: any): Promise; logger: Logger; version?: string; connectionConfigProvider: any; connectionConfigExpirationChecker: null | (() => boolean); valueForUndefined: any; - formatter(builder: any): any; - queryBuilder(): QueryBuilder; - queryCompiler(builder: any): any; - schemaBuilder(): SchemaBuilder; - schemaCompiler(builder: SchemaBuilder): any; - tableBuilder(type: any, tableName: any, tableNameLike: any, fn: any): TableBuilder; - tableCompiler(tableBuilder: any): any; - columnBuilder(tableBuilder: any, type: any, args: any): ColumnBuilder; - columnCompiler(tableBuilder: any, columnBuilder: any): any; - runner(builder: any): any; - transaction(container: any, config: any, outerTx: any): Transaction; - raw(...args: any[]): any; - ref(...args: any[]): Ref; - query(connection: any, obj: any): any; - stream(connection: any, obj: any, stream: any, options: any): any; - prepBindings(bindings: any): any; - positionBindings(sql: any): any; - postProcessResponse(resp: any, queryContext: any): any; - wrapIdentifier(value: any, queryContext: any): any; - customWrapIdentifier(value: any, origImpl: any, queryContext: any): any; - wrapIdentifierImpl(value: any): string; - initializeDriver(): void; + formatter (builder: any): any; + queryBuilder (): QueryBuilder; + queryCompiler (builder: any): any; + schemaBuilder (): SchemaBuilder; + schemaCompiler (builder: SchemaBuilder): any; + tableBuilder (type: any, tableName: any, tableNameLike: any, fn: any): TableBuilder; + tableCompiler (tableBuilder: any): any; + columnBuilder (tableBuilder: any, type: any, args: any): ColumnBuilder; + columnCompiler (tableBuilder: any, columnBuilder: any): any; + runner (builder: any): any; + transaction (container: any, config: any, outerTx: any): Transaction; + raw (...args: any[]): any; + ref (...args: any[]): Ref; + query (connection: any, obj: any): any; + stream (connection: any, obj: any, stream: any, options: any): any; + prepBindings (bindings: any): any; + positionBindings (sql: any): any; + postProcessResponse (resp: any, queryContext: any): any; + wrapIdentifier (value: any, queryContext: any): any; + customWrapIdentifier (value: any, origImpl: any, queryContext: any): any; + wrapIdentifierImpl (value: any): string; + initializeDriver (): void; driver: any; - poolDefaults(): { + poolDefaults (): { min: number; max: number; propagateCreateError: boolean; }; - getPoolSettings(poolConfig: any): any; - initializePool(config?: {}): void; + getPoolSettings (poolConfig: any): any; + initializePool (config?: {}): void; pool: tarn.Pool | undefined; - acquireConnection(): any; - releaseConnection(connection: any): any; - destroy(callback: any): any; - database(): any; + acquireConnection (): any; + releaseConnection (connection: any): any; + destroy (callback: any): any; + database (): any; canCancelQuery: boolean; - assertCanCancelQuery(): void; - cancelQuery(): void; + assertCanCancelQuery (): void; + cancelQuery (): void; } } From 7e87a39e0a7f09f8b365518ad1c0881725f8730f Mon Sep 17 00:00:00 2001 From: Dominic Vonk Date: Tue, 14 Jun 2022 12:14:38 +0200 Subject: [PATCH 2/4] Added better types --- types/index.d.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index 960cbfa291..6c8eab07d1 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -385,39 +385,39 @@ export declare namespace knex { } class TableBuilder { - static extend ( + static extend ( methodName: string, fn: ( - this: Knex.TableBuilder, + this: T, ...args: any[] - ) => Knex.TableBuilder + ) => B ): void; } class ViewBuilder { - static extend ( + static extend ( methodName: string, fn: ( - this: Knex.ViewBuilder, + this: T, ...args: any[] - ) => Knex.ViewBuilder + ) => B ): void; } class SchemaBuilder { - static extend ( + static extend ( methodName: string, fn: ( - this: Knex.SchemaBuilder, + this: T, ...args: any[] - ) => Knex.SchemaBuilder + ) => B ): void; } class ColumnBuilder { - static extend ( + static extend ( methodName: string, fn: ( - this: Knex.ColumnBuilder, + this: T, ...args: any[] - ) => Knex.ColumnBuilder + ) => B ): void; } From 20a3dfded048809431de61fdb83fedc6f0cb3735 Mon Sep 17 00:00:00 2001 From: Dominic Vonk Date: Tue, 14 Jun 2022 12:21:15 +0200 Subject: [PATCH 3/4] Update formatting --- types/index.d.ts | 1820 ++++++++++++++++++++++++++++------------------ 1 file changed, 1111 insertions(+), 709 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index 78b2a96766..bb20041067 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -13,8 +13,8 @@ import ResultTypes = require('./result'); import { Tables } from './tables'; -import { ConnectionOptions } from "tls"; -import { Stream } from "stream"; +import { ConnectionOptions } from 'tls'; +import { Stream } from 'stream'; // # Generic type-level utilities @@ -30,9 +30,10 @@ type StrKey = string & keyof T; // If T is unknown then convert to any, else retain original type UnknownToAny = unknown extends T ? any : T; -type CurlyCurlyToAny = T extends unknown ? // distribute - (() => U extends T ? 0 : 1) extends - (() => U extends {} ? 0 : 1) ? any : T +type CurlyCurlyToAny = T extends unknown // distribute + ? (() => U extends T ? 0 : 1) extends () => U extends {} ? 0 : 1 + ? any + : T : never; type UnknownOrCurlyCurlyToAny = [UnknownToAny | CurlyCurlyToAny][0]; type AnyToUnknown = unknown extends T ? unknown : T; @@ -42,8 +43,8 @@ type AnyOrUnknownToOther = unknown extends T1 ? T2 : T1; // This is primarily to keep the signatures more intuitive. type AugmentParams = TParams extends {} ? keyof TParams extends never - ? TTarget - : {} & TTarget & TParams + ? TTarget + : {} & TTarget & TParams : TTarget; // Check if provided keys (expressed as a single or union type) are members of TBase @@ -52,9 +53,9 @@ type AreKeysOf = Boxed extends Boxed : false; // https://stackoverflow.com/a/50375286/476712 -type UnionToIntersection = (U extends any - ? (k: U) => void - : never) extends ((k: infer I) => void) +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I +) => void ? I : never; @@ -89,8 +90,8 @@ type PartialOrAny = Boxed extends Boxed // to facilitates type-safe aliasing for object syntax type MappedAliasType = {} & { [K in keyof TAliasMapping]: TAliasMapping[K] extends keyof TBase - ? TBase[TAliasMapping[K]] - : any + ? TBase[TAliasMapping[K]] + : any; }; // Container type for situations when we want a partial/intersection eventually @@ -149,7 +150,15 @@ declare namespace DeferredKeySelection { infer TIntersectProps, infer TUnionProps > - ? DeferredKeySelection + ? DeferredKeySelection< + TBase, + TKeys, + THasSelect, + TAliasMapping, + TSingle, + TIntersectProps, + TUnionProps + > : DeferredKeySelection; // If TSelection is already a deferred selection, then replace the base with TBase @@ -158,13 +167,15 @@ declare namespace DeferredKeySelection { // // For practical reasons applicable to current context, we always return arrays of // deferred selections. So, this particular operator may not be useful in generic contexts. - type ReplaceBase = UnwrapArrayMember< - TSelection - > extends DeferredKeySelection.Any - ? ArrayIfAlready, TBase>> - : unknown extends UnwrapArrayMember - ? ArrayIfAlready> - : TSelection; + type ReplaceBase = + UnwrapArrayMember extends DeferredKeySelection.Any + ? ArrayIfAlready< + TSelection, + DeferredKeySelection.SetBase, TBase> + > + : unknown extends UnwrapArrayMember + ? ArrayIfAlready> + : TSelection; // Type operators to substitute individual type parameters: @@ -180,7 +191,15 @@ declare namespace DeferredKeySelection { infer TIntersectProps, infer TUnionProps > - ? DeferredKeySelection + ? DeferredKeySelection< + TBase, + TKeys, + THasSelect, + TAliasMapping, + TSingle, + TIntersectProps, + TUnionProps + > : never; type AddKey< @@ -195,10 +214,21 @@ declare namespace DeferredKeySelection { infer TIntersectProps, infer TUnionProps > - ? DeferredKeySelection + ? DeferredKeySelection< + TBase, + TKeys | TKey, + true, + TAliasMapping, + TSingle, + TIntersectProps, + TUnionProps + > : DeferredKeySelection; - type AddAliases = TSelection extends DeferredKeySelection< + type AddAliases< + TSelection, + T extends {} + > = TSelection extends DeferredKeySelection< infer TBase, infer TKeys, infer THasSelect, @@ -207,7 +237,15 @@ declare namespace DeferredKeySelection { infer TIntersectProps, infer TUnionProps > - ? DeferredKeySelection + ? DeferredKeySelection< + TBase, + TKeys, + THasSelect, + TAliasMapping & T, + TSingle, + TIntersectProps, + TUnionProps + > : DeferredKeySelection; type AddUnionMember = TSelection extends DeferredKeySelection< @@ -219,15 +257,25 @@ declare namespace DeferredKeySelection { infer TIntersectProps, infer TUnionProps > - ? DeferredKeySelection + ? DeferredKeySelection< + TBase, + TKeys, + THasSelect, + TAliasMapping, + TSingle, + TIntersectProps, + TUnionProps | T + > : DeferredKeySelection; // Convenience utility to set base, keys and aliases in a single type // application - type Augment = AddAliases< - AddKey, TKey>, - TAliasMapping - >; + type Augment< + T, + TBase, + TKey extends string, + TAliasMapping extends {} = {} + > = AddAliases, TKey>, TAliasMapping>; // Core resolution logic -- Refer to docs for DeferredKeySelection for specifics type ResolveOne = TSelection extends DeferredKeySelection< @@ -240,27 +288,30 @@ declare namespace DeferredKeySelection { infer TUnionProps > ? UnknownOrCurlyCurlyToAny< - // ^ We convert final result to any if it is unknown for backward compatibility. - // Historically knex typings have been liberal with returning any and changing - // default return type to unknown would be a major breaking change for users. - // - // So we compromise on type safety here and return any. - AugmentParams< - AnyToUnknown extends {} - // ^ Conversion of any -> unknown is needed here to prevent distribution - // of any over the conditional - ? TSingle extends true - ? TKeys extends keyof TBase - ? TBase[TKeys] - : any - : AugmentParams< - true extends THasSelect ? PartialOrAny : TBase, - MappedAliasType - > - : unknown, - TIntersectProps - > | TUnionProps - > + // ^ We convert final result to any if it is unknown for backward compatibility. + // Historically knex typings have been liberal with returning any and changing + // default return type to unknown would be a major breaking change for users. + // + // So we compromise on type safety here and return any. + | AugmentParams< + AnyToUnknown extends {} + ? // ^ Conversion of any -> unknown is needed here to prevent distribution + // of any over the conditional + TSingle extends true + ? TKeys extends keyof TBase + ? TBase[TKeys] + : any + : AugmentParams< + true extends THasSelect + ? PartialOrAny + : TBase, + MappedAliasType + > + : unknown, + TIntersectProps + > + | TUnionProps + > : TSelection; type Resolve = TSelection extends DeferredKeySelection.Any @@ -272,7 +323,10 @@ declare namespace DeferredKeySelection { : UnknownOrCurlyCurlyToAny>; } -type AggregationQueryResult = ArrayIfAlready< +type AggregationQueryResult< + TResult, + TIntersectProps2 extends {} +> = ArrayIfAlready< TResult, UnwrapArrayMember extends DeferredKeySelection< infer TBase, @@ -283,10 +337,18 @@ type AggregationQueryResult = ArrayIfAlrea infer TIntersectProps, infer TUnionProps > - ? true extends THasSelect - ? DeferredKeySelection - : DeferredKeySelection<{}, never, true, {}, false, TIntersectProps2> - : TIntersectProps2 + ? true extends THasSelect + ? DeferredKeySelection< + TBase, + TKeys, + THasSelect, + TAliasMapping, + TSingle, + TIntersectProps & TIntersectProps2, + TUnionProps + > + : DeferredKeySelection<{}, never, true, {}, false, TIntersectProps2> + : TIntersectProps2 >; // If we have more categories of deferred selection in future, @@ -298,7 +360,7 @@ type ResolveResult = DeferredKeySelection.Resolve; type Callback = Function; type Client = Function; -type Dict = { [k: string]: T; }; +type Dict = { [k: string]: T }; type SafePick = T extends {} ? Pick : any; @@ -313,12 +375,19 @@ interface DMLOptions { } export interface Knex - extends Knex.QueryInterface, events.EventEmitter { - ( + extends Knex.QueryInterface, + events.EventEmitter { + ( tableName: TTable, options?: TableOptions - ): Knex.QueryBuilder, DeferredKeySelection>, never>[]>; - []> ( + ): Knex.QueryBuilder< + Knex.TableType, + DeferredKeySelection>, never>[] + >; + < + TRecord2 extends {} = TRecord, + TResult2 = DeferredKeySelection[] + >( tableName?: Knex.TableDescriptor | Knex.AliasDict, options?: TableOptions ): Knex.QueryBuilder; @@ -327,37 +396,35 @@ export interface Knex raw: Knex.RawBuilder; - transactionProvider ( + transactionProvider( config?: Knex.TransactionConfig ): Knex.TransactionProvider; - transaction ( - config?: Knex.TransactionConfig - ): Promise; - transaction ( + transaction(config?: Knex.TransactionConfig): Promise; + transaction( transactionScope?: null, config?: Knex.TransactionConfig ): Promise; - transaction ( + transaction( transactionScope: (trx: Knex.Transaction) => Promise | void, config?: Knex.TransactionConfig ): Promise; - initialize (config?: Knex.Config): void; - destroy (callback: Function): void; - destroy (): Promise; + initialize(config?: Knex.Config): void; + destroy(callback: Function): void; + destroy(): Promise; - batchInsert ( + batchInsert( tableName: Knex.TableDescriptor, data: TRecord2 extends Knex.CompositeTableType ? ReadonlyArray> : ReadonlyArray>, - chunkSize?: number, + chunkSize?: number ): Knex.BatchInsertBuilder; schema: Knex.SchemaBuilder; - queryBuilder (): Knex.QueryBuilder< - TRecord2, - TResult2 - >; + queryBuilder< + TRecord2 extends {} = TRecord, + TResult2 = TResult + >(): Knex.QueryBuilder; client: any; migrate: Knex.Migrator; @@ -365,63 +432,56 @@ export interface Knex fn: Knex.FunctionHelper; ref: Knex.RefBuilder; userParams: Record; - withUserParams (params: Record): Knex; + withUserParams(params: Record): Knex; isTransaction?: boolean; } -export declare function knex ( +export declare function knex( config: Knex.Config | string ): Knex; export declare namespace knex { class QueryBuilder { - static extend ( + static extend( methodName: string, fn: ( this: Knex.QueryBuilder, ...args: any[] - ) => Knex.QueryBuilder | Promise | DeferredKeySelection.Resolve> + ) => + | Knex.QueryBuilder + | Promise< + | QueryBuilder + | DeferredKeySelection.Resolve + > ): void; } class TableBuilder { - static extend ( + static extend( methodName: string, - fn: ( - this: T, - ...args: any[] - ) => B + fn: (this: T, ...args: any[]) => B ): void; } class ViewBuilder { - static extend ( + static extend( methodName: string, - fn: ( - this: T, - ...args: any[] - ) => B + fn: (this: T, ...args: any[]) => B ): void; } class SchemaBuilder { - static extend ( + static extend( methodName: string, - fn: ( - this: T, - ...args: any[] - ) => B + fn: (this: T, ...args: any[]) => B ): void; } class ColumnBuilder { - static extend ( + static extend( methodName: string, - fn: ( - this: T, - ...args: any[] - ) => B + fn: (this: T, ...args: any[]) => B ): void; } - export class KnexTimeoutError extends Error { } + export class KnexTimeoutError extends Error {} export const Client: typeof Knex.Client; } @@ -444,8 +504,8 @@ export declare namespace Knex { | Buffer | Knex.Raw; - interface ValueDict extends Dict { } - interface AliasDict extends Dict { } + interface ValueDict extends Dict {} + interface AliasDict extends Dict {} type ColumnDescriptor = | string @@ -460,15 +520,16 @@ export declare namespace Knex { type TableDescriptor = string | Knex.Raw | Knex.QueryBuilder; - type Lookup = - TKey extends keyof TRegistry ? - TRegistry[TKey] : - TDefault; + type Lookup< + TRegistry extends {}, + TKey extends string, + TDefault = never + > = TKey extends keyof TRegistry ? TRegistry[TKey] : TDefault; type MaybeRawColumn = TColumn | Raw; type MaybeRawRecord = { - [K in keyof TRecord]: MaybeRawColumn + [K in keyof TRecord]: MaybeRawColumn; }; type DbColumn = Readonly>; @@ -477,11 +538,16 @@ export declare namespace Knex { type DbRecordArr = Readonly>>; - export type CompositeTableType, TUpsert = Partial> = { - base: TBase, - insert: TInsert, - update: TUpdate, - upsert: TUpsert, + export type CompositeTableType< + TBase, + TInsert = TBase, + TUpdate = Partial, + TUpsert = Partial + > = { + base: TBase; + insert: TInsert; + update: TUpdate; + upsert: TUpsert; }; type TableNames = keyof Tables; @@ -490,20 +556,40 @@ export declare namespace Knex { type TableType = Tables[TTable]; - type ResolveTableType = TCompositeTableType extends CompositeTableType + type ResolveTableType< + TCompositeTableType, + TScope extends TableInterfaceScope = 'base' + > = TCompositeTableType extends CompositeTableType ? TCompositeTableType[TScope] : TCompositeTableType; interface OnConflictQueryBuilder { - ignore (): QueryBuilder; - merge (mergeColumns?: (keyof TRecord)[]): QueryBuilder; - merge (data?: Extract>, object>): QueryBuilder; + ignore(): QueryBuilder; + merge(mergeColumns?: (keyof TRecord)[]): QueryBuilder; + merge( + data?: Extract>, object> + ): QueryBuilder; } // // QueryInterface // - type ClearStatements = "with" | "select" | "columns" | "hintComments" | "where" | "union" | "using" | "join" | "group" | "order" | "having" | "limit" | "offset" | "counter" | "counters"; + type ClearStatements = + | 'with' + | 'select' + | 'columns' + | 'hintComments' + | 'where' + | 'union' + | 'using' + | 'join' + | 'group' + | 'order' + | 'having' + | 'limit' + | 'offset' + | 'counter' + | 'counters'; interface QueryInterface { select: Select; @@ -644,7 +730,7 @@ export declare namespace Knex { orHavingNotIn: HavingRange; // Clear - clearSelect (): QueryBuilder< + clearSelect(): QueryBuilder< TRecord, UnwrapArrayMember extends DeferredKeySelection< infer TBase, @@ -655,23 +741,37 @@ export declare namespace Knex { any, any > - ? DeferredKeySelection[] - : TResult + ? DeferredKeySelection[] + : TResult >; - clearWhere (): QueryBuilder; - clearGroup (): QueryBuilder; - clearOrder (): QueryBuilder; - clearHaving (): QueryBuilder; - clearCounters (): QueryBuilder; - clear (statement: ClearStatements): QueryBuilder; + clearWhere(): QueryBuilder; + clearGroup(): QueryBuilder; + clearOrder(): QueryBuilder; + clearHaving(): QueryBuilder; + clearCounters(): QueryBuilder; + clear(statement: ClearStatements): QueryBuilder; // Paging - offset (offset: number, options?: boolean | Readonly<{ skipBinding?: boolean }>): QueryBuilder; - limit (limit: number, options?: string | Readonly<{ skipBinding?: boolean }>): QueryBuilder; + offset( + offset: number, + options?: boolean | Readonly<{ skipBinding?: boolean }> + ): QueryBuilder; + limit( + limit: number, + options?: string | Readonly<{ skipBinding?: boolean }> + ): QueryBuilder; // Aggregation - count: AsymmetricAggregation>; - countDistinct: AsymmetricAggregation>; + count: AsymmetricAggregation< + TRecord, + TResult, + Lookup + >; + countDistinct: AsymmetricAggregation< + TRecord, + TResult, + Lookup + >; min: TypePreservingAggregation; max: TypePreservingAggregation; sum: TypePreservingAggregation; @@ -679,20 +779,20 @@ export declare namespace Knex { avg: TypePreservingAggregation; avgDistinct: TypePreservingAggregation; - increment ( + increment( columnName: keyof TRecord, amount?: number ): QueryBuilder; - increment ( + increment( columnName: string, amount?: number ): QueryBuilder; - decrement ( + decrement( columnName: keyof TRecord, amount?: number ): QueryBuilder; - decrement ( + decrement( columnName: string, amount?: number ): QueryBuilder; @@ -703,16 +803,21 @@ export declare namespace Knex { rowNumber: AnalyticFunction; // Others - first: Select, undefined>>; + first: Select< + TRecord, + DeferredKeySelection.AddUnionMember, undefined> + >; - pluck ( + pluck( column: K ): QueryBuilder; - pluck (column: string): QueryBuilder; + pluck(column: string): QueryBuilder; - insert ( + insert( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: '*', options?: DMLOptions @@ -724,9 +829,11 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: TKey, options?: DMLOptions @@ -738,9 +845,11 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions @@ -752,9 +861,11 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: TKey, options?: DMLOptions @@ -766,22 +877,28 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - insert ( + insert( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray> ): QueryBuilder; - upsert ( + upsert( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: '*', options?: DMLOptions @@ -793,9 +910,11 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: TKey, options?: DMLOptions @@ -807,9 +926,11 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions @@ -821,9 +942,11 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: TKey, options?: DMLOptions @@ -835,20 +958,24 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray>, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - upsert ( + upsert( data: TRecord extends CompositeTableType - ? ResolveTableType | ReadonlyArray> + ? + | ResolveTableType + | ReadonlyArray> : DbRecordArr | ReadonlyArray> ): QueryBuilder; - modify ( + modify( callback: QueryCallbackWithArgs, ...args: any[] ): QueryBuilder; @@ -860,7 +987,7 @@ export declare namespace Knex { ResolveTableType, K2 >[] - > ( + >( columnName: K1, value: DbColumn[K1]>, returning: K2, @@ -874,23 +1001,23 @@ export declare namespace Knex { ResolveTableType, K2 >[] - > ( + >( columnName: K1, value: DbColumn[K1]>, returning: readonly K2[], options?: DMLOptions ): QueryBuilder; - update ( + update( columnName: K, value: DbColumn ): QueryBuilder; - update[]> ( + update[]>( columnName: string, value: Value, returning: string | readonly string[], options?: DMLOptions ): QueryBuilder; - update ( + update( data: DbRecordArr, returning: '*', options?: DMLOptions @@ -902,8 +1029,10 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( - data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, + >( + data: TRecord extends CompositeTableType + ? ResolveTableType + : DbRecordArr, returning: TKey, options?: DMLOptions ): QueryBuilder; @@ -914,8 +1043,10 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( - data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, + >( + data: TRecord extends CompositeTableType + ? ResolveTableType + : DbRecordArr, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; @@ -926,8 +1057,10 @@ export declare namespace Knex { TRecord, TKey >[] - > ( - data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, + >( + data: TRecord extends CompositeTableType + ? ResolveTableType + : DbRecordArr, returning: TKey | readonly TKey[], options?: DMLOptions ): QueryBuilder; @@ -938,18 +1071,28 @@ export declare namespace Knex { TRecord, TKey >[] - > ( - data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr, + >( + data: TRecord extends CompositeTableType + ? ResolveTableType + : DbRecordArr, returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - update ( - data: TRecord extends CompositeTableType ? ResolveTableType : DbRecordArr + update( + data: TRecord extends CompositeTableType + ? ResolveTableType + : DbRecordArr ): QueryBuilder; - update (columnName: string, value: Value): QueryBuilder; + update( + columnName: string, + value: Value + ): QueryBuilder; - returning (column: '*', options?: DMLOptions): QueryBuilder[]>; + returning( + column: '*', + options?: DMLOptions + ): QueryBuilder[]>; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.Augment< @@ -957,51 +1100,45 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( column: TKey, options?: DMLOptions ): QueryBuilder; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.SetSingle< - DeferredKeySelection.Augment, ResolveTableType, TKey>, + DeferredKeySelection.Augment< + UnwrapArrayMember, + ResolveTableType, + TKey + >, false >[] - > ( + >( columns: readonly TKey[], options?: DMLOptions ): QueryBuilder; - returning[]> ( + returning[]>( column: string | readonly (string | Raw)[] | Raw, options?: DMLOptions ): QueryBuilder; - onConflict< - TKey extends StrKey> - > ( + onConflict>>( column: TKey ): OnConflictQueryBuilder; - onConflict< - TKey extends StrKey> - > ( + onConflict>>( columns: readonly TKey[] ): OnConflictQueryBuilder; - onConflict ( - columns: string - ): OnConflictQueryBuilder; + onConflict(columns: string): OnConflictQueryBuilder; - onConflict ( - columns: string[] - ): OnConflictQueryBuilder; + onConflict(columns: string[]): OnConflictQueryBuilder; - onConflict ( - raw: Raw - ): OnConflictQueryBuilder; + onConflict(raw: Raw): OnConflictQueryBuilder; - onConflict (): OnConflictQueryBuilder; + onConflict(): OnConflictQueryBuilder; - del ( + del( returning: '*', options?: DMLOptions ): QueryBuilder[]>; @@ -1012,7 +1149,7 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( returning: TKey, options?: DMLOptions ): QueryBuilder; @@ -1023,17 +1160,17 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - del[]> ( + del[]>( returning: string | readonly string[], options?: DMLOptions ): QueryBuilder; - del (): QueryBuilder; + del(): QueryBuilder; - delete ( + delete( returning: '*', options?: DMLOptions ): QueryBuilder[]>; @@ -1044,7 +1181,7 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( returning: TKey, options?: DMLOptions ): QueryBuilder; @@ -1055,17 +1192,17 @@ export declare namespace Knex { TRecord, TKey >[] - > ( + >( returning: readonly TKey[], options?: DMLOptions ): QueryBuilder; - delete ( + delete( returning: string | readonly (string | Raw)[] | Raw, options?: DMLOptions ): QueryBuilder; - delete (): QueryBuilder; + delete(): QueryBuilder; - truncate (): QueryBuilder; + truncate(): QueryBuilder; } interface As { @@ -1073,79 +1210,98 @@ export declare namespace Knex { (columnName: string): QueryBuilder; } - type IntersectAliases = - UnionToIntersection< - IncompatibleToAlt< - AliasUT extends (infer I)[] + type IntersectAliases = UnionToIntersection< + IncompatibleToAlt< + AliasUT extends (infer I)[] ? I extends Ref - ? TMapping - : I + ? TMapping + : I : never, - Dict, - {} - > - > & {}; // filters out `null` and `undefined` + Dict, + {} + > + > & {}; // filters out `null` and `undefined` interface AliasQueryBuilder { < AliasUT extends InferrableColumnDescriptor>[], - TResult2 = ArrayIfAlready, - ResolveTableType, - IncompatibleToAlt, string, never>, - IntersectAliases - >> - > ( + TResult2 = ArrayIfAlready< + TResult, + DeferredKeySelection.Augment< + UnwrapArrayMember, + ResolveTableType, + IncompatibleToAlt, string, never>, + IntersectAliases + > + > + >( ...aliases: AliasUT ): QueryBuilder; < AliasUT extends InferrableColumnDescriptor>[], - TResult2 = ArrayIfAlready, - ResolveTableType, - IncompatibleToAlt, string, never>, - IntersectAliases - >> - > ( + TResult2 = ArrayIfAlready< + TResult, + DeferredKeySelection.Augment< + UnwrapArrayMember, + ResolveTableType, + IncompatibleToAlt, string, never>, + IntersectAliases + > + > + >( aliases: AliasUT ): QueryBuilder; < AliasUT extends (Dict | string)[], - TResult2 = ArrayIfAlready, - ResolveTableType, - IncompatibleToAlt, string, never>, - IntersectAliases - >> - > ( + TResult2 = ArrayIfAlready< + TResult, + DeferredKeySelection.Augment< + UnwrapArrayMember, + ResolveTableType, + IncompatibleToAlt, string, never>, + IntersectAliases + > + > + >( ...aliases: AliasUT ): QueryBuilder; < AliasUT extends (Dict | string)[], - TResult2 = ArrayIfAlready, - TRecord, - IncompatibleToAlt, string, never>, - IntersectAliases - >> - > ( + TResult2 = ArrayIfAlready< + TResult, + DeferredKeySelection.Augment< + UnwrapArrayMember, + TRecord, + IncompatibleToAlt, string, never>, + IntersectAliases + > + > + >( aliases: AliasUT ): QueryBuilder; } interface Select extends AliasQueryBuilder, - ColumnNameQueryBuilder { + ColumnNameQueryBuilder { (): QueryBuilder; - , TInnerRecord extends {} = any, TInnerResult = any> ( + < + TResult2 = ArrayIfAlready, + TInnerRecord extends {} = any, + TInnerResult = any + >( ...subQueryBuilders: readonly QueryBuilder[] ): QueryBuilder; - , TInnerRecord extends {} = any, TInnerResult = any> ( + < + TResult2 = ArrayIfAlready, + TInnerRecord extends {} = any, + TInnerResult = any + >( subQueryBuilders: readonly QueryBuilder[] ): QueryBuilder; } @@ -1158,20 +1314,42 @@ export declare namespace Knex { } interface JsonExtract { - (column: string | Raw | QueryBuilder, path: string, alias?: string, singleValue?: boolean): QueryBuilder; - (column: JsonExtraction[] | any[][], singleValue?: boolean): QueryBuilder; + ( + column: string | Raw | QueryBuilder, + path: string, + alias?: string, + singleValue?: boolean + ): QueryBuilder; + (column: JsonExtraction[] | any[][], singleValue?: boolean): QueryBuilder< + TRecord, + TResult + >; } interface JsonSet { - (column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder; + ( + column: string | Raw | QueryBuilder, + path: string, + value: any, + alias?: string + ): QueryBuilder; } interface JsonInsert { - (column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder; + ( + column: string | Raw | QueryBuilder, + path: string, + value: any, + alias?: string + ): QueryBuilder; } interface JsonRemove { - (column: string | Raw | QueryBuilder, path: string, alias?: string): QueryBuilder; + ( + column: string | Raw | QueryBuilder, + path: string, + alias?: string + ): QueryBuilder; } interface HintComment { @@ -1183,43 +1361,46 @@ export declare namespace Knex { < TTable extends TableNames, TRecord2 extends {} = TableType, - TResult2 = DeferredKeySelection.ReplaceBase> - > ( + TResult2 = DeferredKeySelection.ReplaceBase< + TResult, + ResolveTableType + > + >( tableName: TTable, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( callback: Function, options?: TableOptions ): QueryBuilder; < TRecord2 extends {} = {}, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( raw: Raw, options?: TableOptions ): QueryBuilder; } interface Distinct - extends ColumnNameQueryBuilder { } + extends ColumnNameQueryBuilder {} interface DistinctOn { - ( + ( ...columnNames: readonly ColNameUT[] ): QueryBuilder; - ( + ( columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1236,15 +1417,15 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( raw: Raw ): QueryBuilder; < TTable extends TableNames, TRecord2 extends {} = ResolveTableType & - ResolveTableType>, + ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TTable, clause: JoinCallback ): QueryBuilder; @@ -1252,7 +1433,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, clause: JoinCallback ): QueryBuilder; @@ -1260,7 +1441,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, columns: { [key: string]: string | number | boolean | Raw } ): QueryBuilder; @@ -1268,19 +1449,20 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, raw: Raw ): QueryBuilder; < TTable1 extends TableNames, TTable2 extends TableNames, - TKey1 extends StrKey>> & StrKey, + TKey1 extends StrKey>> & + StrKey, TKey2 extends StrKey>>, TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TTable2, column1: `${TTable1}.${TKey1}`, column2: `${TTable2}.${TKey2}` @@ -1288,12 +1470,13 @@ export declare namespace Knex { < TTable1 extends TableNames, TTable2 extends TableNames, - TKey1 extends StrKey>> & StrKey, + TKey1 extends StrKey>> & + StrKey, TKey2 extends StrKey>>, TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TTable2, column1: `${TTable2}.${TKey2}`, column2: `${TTable1}.${TKey1}` @@ -1302,7 +1485,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, column2: string @@ -1311,7 +1494,7 @@ export declare namespace Knex { TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, raw: Raw @@ -1319,12 +1502,13 @@ export declare namespace Knex { < TTable1 extends TableNames, TTable2 extends TableNames, - TKey1 extends StrKey>> & StrKey, + TKey1 extends StrKey>> & + StrKey, TKey2 extends StrKey>>, TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TTable2, column1: `${TTable1}.${TKey1}`, operator: string, @@ -1333,22 +1517,23 @@ export declare namespace Knex { < TTable1 extends TableNames, TTable2 extends TableNames, - TKey1 extends StrKey>> & StrKey, + TKey1 extends StrKey>> & + StrKey, TKey2 extends StrKey>>, TRecord1 = ResolveTableType, TRecord2 extends {} = TRecord1 & ResolveTableType>, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TTable2, column1: `${TTable2}.${TKey2}`, operator: string, - column2: `${TTable1}.${TKey1}`, + column2: `${TTable1}.${TKey1}` ): QueryBuilder; < TJoinTargetRecord extends {} = any, TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase - > ( + >( tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, operator: string, @@ -1357,60 +1542,70 @@ export declare namespace Knex { } interface JoinClause { - on (raw: Raw): JoinClause; - on (callback: JoinCallback): JoinClause; - on (columns: { [key: string]: string | Raw }): JoinClause; - on (column1: string, column2: string): JoinClause; - on (column1: string, raw: Raw): JoinClause; - on (column1: string, operator: string, column2: string | Raw): JoinClause; - andOn (raw: Raw): JoinClause; - andOn (callback: JoinCallback): JoinClause; - andOn (columns: { [key: string]: string | Raw }): JoinClause; - andOn (column1: string, column2: string): JoinClause; - andOn (column1: string, raw: Raw): JoinClause; - andOn (column1: string, operator: string, column2: string | Raw): JoinClause; - orOn (raw: Raw): JoinClause; - orOn (callback: JoinCallback): JoinClause; - orOn (columns: { [key: string]: string | Raw }): JoinClause; - orOn (column1: string, column2: string): JoinClause; - orOn (column1: string, raw: Raw): JoinClause; - orOn (column1: string, operator: string, column2: string | Raw): JoinClause; - onVal (column1: string, value: Value): JoinClause; - onVal (column1: string, operator: string, value: Value): JoinClause; - andOnVal (column1: string, value: Value): JoinClause; - andOnVal (column1: string, operator: string, value: Value): JoinClause; - orOnVal (column1: string, value: Value): JoinClause; - orOnVal (column1: string, operator: string, value: Value): JoinClause; - onIn (column1: string, values: readonly any[] | Raw): JoinClause; - andOnIn (column1: string, values: readonly any[] | Raw): JoinClause; - orOnIn (column1: string, values: readonly any[] | Raw): JoinClause; - onNotIn (column1: string, values: readonly any[] | Raw): JoinClause; - andOnNotIn (column1: string, values: readonly any[] | Raw): JoinClause; - orOnNotIn (column1: string, values: readonly any[] | Raw): JoinClause; - onNull (column1: string): JoinClause; - andOnNull (column1: string): JoinClause; - orOnNull (column1: string): JoinClause; - onNotNull (column1: string): JoinClause; - andOnNotNull (column1: string): JoinClause; - orOnNotNull (column1: string): JoinClause; - onExists (callback: QueryCallback): JoinClause; - andOnExists (callback: QueryCallback): JoinClause; - orOnExists (callback: QueryCallback): JoinClause; - onNotExists (callback: QueryCallback): JoinClause; - andOnNotExists (callback: QueryCallback): JoinClause; - orOnNotExists (callback: QueryCallback): JoinClause; - onBetween (column1: string, range: readonly [any, any]): JoinClause; - andOnBetween (column1: string, range: readonly [any, any]): JoinClause; - orOnBetween (column1: string, range: readonly [any, any]): JoinClause; - onNotBetween (column1: string, range: readonly [any, any]): JoinClause; - andOnNotBetween (column1: string, range: readonly [any, any]): JoinClause; - orOnNotBetween (column1: string, range: readonly [any, any]): JoinClause; - onJsonPathEquals (columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; - orOnJsonPathEquals (columnFirst: string, jsonPathFirst: string, columnSecond: string, jsonPathSecond: string): JoinClause; - using ( + on(raw: Raw): JoinClause; + on(callback: JoinCallback): JoinClause; + on(columns: { [key: string]: string | Raw }): JoinClause; + on(column1: string, column2: string): JoinClause; + on(column1: string, raw: Raw): JoinClause; + on(column1: string, operator: string, column2: string | Raw): JoinClause; + andOn(raw: Raw): JoinClause; + andOn(callback: JoinCallback): JoinClause; + andOn(columns: { [key: string]: string | Raw }): JoinClause; + andOn(column1: string, column2: string): JoinClause; + andOn(column1: string, raw: Raw): JoinClause; + andOn(column1: string, operator: string, column2: string | Raw): JoinClause; + orOn(raw: Raw): JoinClause; + orOn(callback: JoinCallback): JoinClause; + orOn(columns: { [key: string]: string | Raw }): JoinClause; + orOn(column1: string, column2: string): JoinClause; + orOn(column1: string, raw: Raw): JoinClause; + orOn(column1: string, operator: string, column2: string | Raw): JoinClause; + onVal(column1: string, value: Value): JoinClause; + onVal(column1: string, operator: string, value: Value): JoinClause; + andOnVal(column1: string, value: Value): JoinClause; + andOnVal(column1: string, operator: string, value: Value): JoinClause; + orOnVal(column1: string, value: Value): JoinClause; + orOnVal(column1: string, operator: string, value: Value): JoinClause; + onIn(column1: string, values: readonly any[] | Raw): JoinClause; + andOnIn(column1: string, values: readonly any[] | Raw): JoinClause; + orOnIn(column1: string, values: readonly any[] | Raw): JoinClause; + onNotIn(column1: string, values: readonly any[] | Raw): JoinClause; + andOnNotIn(column1: string, values: readonly any[] | Raw): JoinClause; + orOnNotIn(column1: string, values: readonly any[] | Raw): JoinClause; + onNull(column1: string): JoinClause; + andOnNull(column1: string): JoinClause; + orOnNull(column1: string): JoinClause; + onNotNull(column1: string): JoinClause; + andOnNotNull(column1: string): JoinClause; + orOnNotNull(column1: string): JoinClause; + onExists(callback: QueryCallback): JoinClause; + andOnExists(callback: QueryCallback): JoinClause; + orOnExists(callback: QueryCallback): JoinClause; + onNotExists(callback: QueryCallback): JoinClause; + andOnNotExists(callback: QueryCallback): JoinClause; + orOnNotExists(callback: QueryCallback): JoinClause; + onBetween(column1: string, range: readonly [any, any]): JoinClause; + andOnBetween(column1: string, range: readonly [any, any]): JoinClause; + orOnBetween(column1: string, range: readonly [any, any]): JoinClause; + onNotBetween(column1: string, range: readonly [any, any]): JoinClause; + andOnNotBetween(column1: string, range: readonly [any, any]): JoinClause; + orOnNotBetween(column1: string, range: readonly [any, any]): JoinClause; + onJsonPathEquals( + columnFirst: string, + jsonPathFirst: string, + columnSecond: string, + jsonPathSecond: string + ): JoinClause; + orOnJsonPathEquals( + columnFirst: string, + jsonPathFirst: string, + columnSecond: string, + jsonPathSecond: string + ): JoinClause; + using( column: string | readonly string[] | Raw | { [key: string]: string | Raw } ): JoinClause; - type (type: string): JoinClause; + type(type: string): JoinClause; } interface JoinRaw { @@ -1426,19 +1621,26 @@ export declare namespace Knex { interface With extends WithRaw, - WithWrapped { } + WithWrapped {} interface WithRaw { (alias: string, raw: Raw | QueryBuilder): QueryBuilder; - (alias: string, sql: string, bindings?: readonly Value[] | Object): QueryBuilder< - TRecord, - TResult - >; - (alias: string, columnList: string[], raw: Raw | QueryBuilder): QueryBuilder; - (alias: string, columnList: string[], sql: string, bindings?: readonly Value[] | Object): QueryBuilder< - TRecord, - TResult - >; + ( + alias: string, + sql: string, + bindings?: readonly Value[] | Object + ): QueryBuilder; + ( + alias: string, + columnList: string[], + raw: Raw | QueryBuilder + ): QueryBuilder; + ( + alias: string, + columnList: string[], + sql: string, + bindings?: readonly Value[] | Object + ): QueryBuilder; } interface WithSchema { @@ -1451,7 +1653,11 @@ export declare namespace Knex { alias: string, callback: (queryBuilder: QueryBuilder) => any ): QueryBuilder; - (alias: string, columnList: string[], queryBuilder: QueryBuilder): QueryBuilder; + ( + alias: string, + columnList: string[], + queryBuilder: QueryBuilder + ): QueryBuilder; ( alias: string, columnList: string[], @@ -1461,24 +1667,27 @@ export declare namespace Knex { interface Where extends WhereRaw, - WhereWrapped, - WhereNull { + WhereWrapped, + WhereNull { (raw: Raw): QueryBuilder; (callback: QueryCallback): QueryBuilder; - (object: DbRecord>): QueryBuilder; + (object: DbRecord>): QueryBuilder< + TRecord, + TResult + >; (object: Readonly): QueryBuilder; - > ( + >( columnName: T, value: DbColumn[T]> | null ): QueryBuilder; (columnName: string, value: Value | null): QueryBuilder; - > ( + >( columnName: T, operator: ComparisonOperator, value: DbColumn[T]> | null @@ -1489,13 +1698,17 @@ export declare namespace Knex { TResult >; - , TRecordInner extends {}, TResultInner> ( + < + T extends keyof ResolveTableType, + TRecordInner extends {}, + TResultInner + >( columnName: T, operator: ComparisonOperator, value: QueryBuilder ): QueryBuilder; - ( + ( columnName: string, operator: string, value: QueryBuilder @@ -1506,7 +1719,7 @@ export declare namespace Knex { TResult >; - ( + ( left: Raw, operator: string, right: QueryBuilder @@ -1528,16 +1741,19 @@ export declare namespace Knex { } interface WhereBetween { - ( + ( columnName: K, range: readonly [DbColumn, DbColumn] ): QueryBuilder; - (columnName: string, range: readonly [Value, Value]): QueryBuilder; + (columnName: string, range: readonly [Value, Value]): QueryBuilder< + TRecord, + TResult + >; } interface WhereExists { (callback: QueryCallback): QueryBuilder; - ( + ( query: QueryBuilder ): QueryBuilder; } @@ -1547,39 +1763,46 @@ export declare namespace Knex { } interface WhereJsonPath { - (columnName: keyof TRecord, jsonPath: string, operator: string, value: any): QueryBuilder; + ( + columnName: keyof TRecord, + jsonPath: string, + operator: string, + value: any + ): QueryBuilder; } interface WhereIn { - > ( + >( columnName: K, values: readonly DbColumn[K]>[] | QueryCallback ): QueryBuilder; - (columnName: string, values: readonly Value[] | QueryCallback): QueryBuilder< - TRecord, - TResult - >; - > ( + ( + columnName: string, + values: readonly Value[] | QueryCallback + ): QueryBuilder; + >( columnNames: readonly K[], - values: readonly (readonly DbColumn[K]>[])[] | QueryCallback + values: + | readonly (readonly DbColumn[K]>[])[] + | QueryCallback ): QueryBuilder; - (columnNames: readonly string[], values: readonly Value[][] | QueryCallback): QueryBuilder< - TRecord, - TResult - >; - ( + ( + columnNames: readonly string[], + values: readonly Value[][] | QueryCallback + ): QueryBuilder; + ( columnName: K, values: QueryBuilder ): QueryBuilder; - ( + ( columnName: string, values: Value[] | QueryBuilder ): QueryBuilder; - ( + ( columnNames: readonly K[], values: QueryBuilder ): QueryBuilder; - ( + ( columnNames: readonly string[], values: QueryBuilder ): QueryBuilder; @@ -1589,55 +1812,90 @@ export declare namespace Knex { // by extracting out a common base interface will not work because order of overloads // is significant. - interface AsymmetricAggregation { + interface AsymmetricAggregation< + TRecord extends {} = any, + TResult = unknown[], + TValue = any + > { < - TOptions extends { "as": string }, - TResult2 = AggregationQueryResult - > ( + TOptions extends { as: string }, + TResult2 = AggregationQueryResult< + TResult, + { [k in TOptions['as']]: TValue } + > + >( columnName: Readonly>, options: Readonly ): QueryBuilder; - >> ( + >>( ...columnNames: readonly (keyof ResolveTableType)[] ): QueryBuilder; < TAliases extends {} = Record, - TResult2 = AggregationQueryResult - > (aliases: TAliases): QueryBuilder; - >> ( - ...columnNames: ReadonlyArray> | Knex.Raw | string> + TResult2 = AggregationQueryResult< + TResult, + { [k in keyof TAliases]?: TValue } + > + >( + aliases: TAliases + ): QueryBuilder; + >>( + ...columnNames: ReadonlyArray< + | Readonly> + | Knex.Raw + | string + > ): QueryBuilder; } - interface TypePreservingAggregation { + interface TypePreservingAggregation< + TRecord extends {} = any, + TResult = unknown[], + TValue = any + > { < TKey extends keyof ResolveTableType, - TOptions extends { "as": string }, - TResult2 = AggregationQueryResult[TKey] - }> - > ( + TOptions extends { as: string }, + TResult2 = AggregationQueryResult< + TResult, + { + [k in TOptions['as']]: ResolveTableType[TKey]; + } + > + >( columnName: Readonly, options: Readonly ): QueryBuilder; < TKey extends keyof ResolveTableType, - TResult2 = AggregationQueryResult[TKey]>> - > ( + TResult2 = AggregationQueryResult< + TResult, + Dict[TKey]> + > + >( ...columnNames: readonly TKey[] ): QueryBuilder; < - TAliases extends {} = Readonly>, - TResult2 = AggregationQueryResult - > (aliases: TAliases): QueryBuilder; - >> ( - ...columnNames: ReadonlyArray> | Knex.Raw | string> + TAliases extends {} = Readonly< + Record + >, + TResult2 = AggregationQueryResult< + TResult, + { + // We have optional here because in most dialects aggregating by multiple keys simultaneously + // causes rest of the keys to be dropped and only first to be considered + [K in keyof TAliases]?: K extends keyof TRecord ? TRecord[K] : TValue; + } + > + >( + aliases: TAliases + ): QueryBuilder; + >>( + ...columnNames: ReadonlyArray< + | Readonly> + | Knex.Raw + | string + > ): QueryBuilder; } @@ -1645,50 +1903,67 @@ export declare namespace Knex { < TAlias extends string, TResult2 = AggregationQueryResult - > (alias: TAlias, raw: Raw | QueryCallback): QueryBuilder; + >( + alias: TAlias, + raw: Raw | QueryCallback + ): QueryBuilder; < TAlias extends string, TKey extends keyof ResolveTableType, TResult2 = AggregationQueryResult - > (alias: TAlias, - orderBy: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc', nulls?: 'first' | 'last' }, - partitionBy?: TKey | TKey[] | { columnName: TKey, order?: 'asc' | 'desc' }): - QueryBuilder< - TRecord, - TResult2 - >; + >( + alias: TAlias, + orderBy: + | TKey + | TKey[] + | { + columnName: TKey; + order?: 'asc' | 'desc'; + nulls?: 'first' | 'last'; + }, + partitionBy?: TKey | TKey[] | { columnName: TKey; order?: 'asc' | 'desc' } + ): QueryBuilder; } interface GroupBy extends RawQueryBuilder, - ColumnNameQueryBuilder { } + ColumnNameQueryBuilder {} interface OrderBy { - (columnName: keyof TRecord | QueryBuilder, order?: 'asc' | 'desc', nulls?: 'first' | 'last'): QueryBuilder< - TRecord, - TResult - >; - (columnName: string | QueryBuilder, order?: string, nulls?: string): QueryBuilder; + ( + columnName: keyof TRecord | QueryBuilder, + order?: 'asc' | 'desc', + nulls?: 'first' | 'last' + ): QueryBuilder; + ( + columnName: string | QueryBuilder, + order?: string, + nulls?: string + ): QueryBuilder; ( columnDefs: Array< - keyof TRecord | Readonly<{ - column: keyof TRecord | QueryBuilder; - order?: 'asc' | 'desc', - nulls?: 'first' | 'last' - }> + | keyof TRecord + | Readonly<{ + column: keyof TRecord | QueryBuilder; + order?: 'asc' | 'desc'; + nulls?: 'first' | 'last'; + }> > ): QueryBuilder; ( - columnDefs: Array> + columnDefs: Array< + | string + | Readonly<{ + column: string | QueryBuilder; + order?: string; + nulls?: string; + }> + > ): QueryBuilder; } interface PartitionBy - extends OrderBy { } + extends OrderBy {} interface Intersect { ( @@ -1701,11 +1976,11 @@ export declare namespace Knex { } interface Union - extends Intersect { } + extends Intersect {} interface Having extends WhereWrapped { - ( + ( column: K, operator: ComparisonOperator, value: DbColumn @@ -1717,23 +1992,26 @@ export declare namespace Knex { value: Value | QueryBuilder | null ): QueryBuilder; - (raw: Raw): QueryBuilder< - TRecord, - TResult - >; + (raw: Raw): QueryBuilder; } interface HavingRange { - ( + ( columnName: K, values: readonly DbColumn[] ): QueryBuilder; - (columnName: string, values: readonly Value[]): QueryBuilder; + (columnName: string, values: readonly Value[]): QueryBuilder< + TRecord, + TResult + >; } // commons - interface ColumnNameQueryBuilder { + interface ColumnNameQueryBuilder< + TRecord extends {} = any, + TResult = unknown[] + > { // When all columns are known to be keys of original record, // we can extend our selection by these columns (columnName: '*'): QueryBuilder< @@ -1748,7 +2026,7 @@ export declare namespace Knex { ResolveTableType, ColNameUT & string >[] - > ( + >( ...columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1759,7 +2037,7 @@ export declare namespace Knex { ResolveTableType, ColNameUT & string >[] - > ( + >( columnNames: readonly ColNameUT[] ): QueryBuilder; @@ -1771,7 +2049,7 @@ export declare namespace Knex { SafePartial, keyof TRecord & string >[] - > ( + >( ...columnNames: readonly ColumnDescriptor[] ): QueryBuilder; @@ -1781,7 +2059,7 @@ export declare namespace Knex { SafePartial, keyof TRecord & string >[] - > ( + >( columnNames: readonly ColumnDescriptor[] ): QueryBuilder; } @@ -1789,32 +2067,35 @@ export declare namespace Knex { type RawBinding = Value | QueryBuilder; interface RawQueryBuilder { - ( + ( sql: string, bindings?: readonly RawBinding[] | ValueDict | RawBinding ): QueryBuilder; - (raw: Raw): QueryBuilder< - TRecord, - TResult2 - >; + (raw: Raw): QueryBuilder; } // Raw interface Raw extends events.EventEmitter, - ChainableInterface> { - timeout (ms: number, options?: { cancel?: boolean }): Raw; - wrap (before: string, after: string): Raw; - toSQL (): Sql; - queryContext (context: any): Raw; - queryContext (): any; + ChainableInterface> { + timeout(ms: number, options?: { cancel?: boolean }): Raw; + wrap(before: string, after: string): Raw; + toSQL(): Sql; + queryContext(context: any): Raw; + queryContext(): any; } interface RawBuilder { - (value: Value): Raw; - (sql: string, ...bindings: readonly RawBinding[]): Raw; - (sql: string, bindings: readonly RawBinding[] | ValueDict): Raw; + (value: Value): Raw; + ( + sql: string, + ...bindings: readonly RawBinding[] + ): Raw; + ( + sql: string, + bindings: readonly RawBinding[] | ValueDict + ): Raw; } const RefMemberTag: unique symbol; @@ -1832,21 +2113,26 @@ export declare namespace Knex { // Because unique symbol is used here, there is no way to actually // access this at runtime [RefMemberTag]: { - src: TSrc, - mapping: TMapping + src: TSrc; + mapping: TMapping; }; - withSchema (schema: string): this; - as (alias: TAlias): Ref; + withSchema(schema: string): this; + as( + alias: TAlias + ): Ref; } interface RefBuilder { - (src: TSrc): Ref; + (src: TSrc): Ref; } - interface BatchInsertBuilder extends Promise> { - transacting (trx: Transaction): this; + interface BatchInsertBuilder + extends Promise> { + transacting(trx: Transaction): this; // see returning methods from QueryInterface - returning (column: '*'): BatchInsertBuilder[]>; + returning( + column: '*' + ): BatchInsertBuilder[]>; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.Augment< @@ -1854,21 +2140,27 @@ export declare namespace Knex { ResolveTableType, TKey >[] - > ( + >( column: TKey ): BatchInsertBuilder; returning< TKey extends StrKey>, TResult2 = DeferredKeySelection.SetSingle< - DeferredKeySelection.Augment, ResolveTableType, TKey>, + DeferredKeySelection.Augment< + UnwrapArrayMember, + ResolveTableType, + TKey + >, false >[] - > ( + >( columns: readonly TKey[] ): BatchInsertBuilder; // if data with specific type passed, exclude this method - returning[]> ( - column: unknown extends TRecord ? string | readonly (string | Raw)[] | Raw : never + returning[]>( + column: unknown extends TRecord + ? string | readonly (string | Raw)[] | Raw + : never ): BatchInsertBuilder; } @@ -1887,45 +2179,51 @@ export declare namespace Knex { ...args: any[] ) => void; - interface QueryBuilder< - TRecord extends {} = any, - TResult = any - > + interface QueryBuilder extends QueryInterface, - ChainableInterface> { + ChainableInterface> { client: Client; or: QueryBuilder; not: QueryBuilder; and: QueryBuilder; // TODO: Promise? - columnInfo (column: keyof DeferredKeySelection.Resolve): Promise; - columnInfo (): Promise, ColumnInfo>>; + columnInfo( + column: keyof DeferredKeySelection.Resolve + ): Promise; + columnInfo(): Promise< + Record, ColumnInfo> + >; - forUpdate (...tableNames: string[]): QueryBuilder; - forUpdate (tableNames: readonly string[]): QueryBuilder; + forUpdate(...tableNames: string[]): QueryBuilder; + forUpdate(tableNames: readonly string[]): QueryBuilder; - forShare (...tableNames: string[]): QueryBuilder; - forShare (tableNames: readonly string[]): QueryBuilder; + forShare(...tableNames: string[]): QueryBuilder; + forShare(tableNames: readonly string[]): QueryBuilder; - forNoKeyUpdate (...tableNames: string[]): QueryBuilder; - forNoKeyUpdate (tableNames: readonly string[]): QueryBuilder; + forNoKeyUpdate(...tableNames: string[]): QueryBuilder; + forNoKeyUpdate( + tableNames: readonly string[] + ): QueryBuilder; - forKeyShare (...tableNames: string[]): QueryBuilder; - forKeyShare (tableNames: readonly string[]): QueryBuilder; + forKeyShare(...tableNames: string[]): QueryBuilder; + forKeyShare(tableNames: readonly string[]): QueryBuilder; - skipLocked (): QueryBuilder; - noWait (): QueryBuilder; + skipLocked(): QueryBuilder; + noWait(): QueryBuilder; - toSQL (): Sql; + toSQL(): Sql; - on (event: string, callback: Function): QueryBuilder; + on(event: string, callback: Function): QueryBuilder; - queryContext (context: any): QueryBuilder; - queryContext (): any; + queryContext(context: any): QueryBuilder; + queryContext(): any; - clone (): QueryBuilder; - timeout (ms: number, options?: { cancel?: boolean }): QueryBuilder; + clone(): QueryBuilder; + timeout( + ms: number, + options?: { cancel?: boolean } + ): QueryBuilder; } interface Sql { @@ -1933,7 +2231,7 @@ export declare namespace Knex { options: any; bindings: readonly Value[]; sql: string; - toNative (): SqlNative; + toNative(): SqlNative; } interface SqlNative { @@ -1945,36 +2243,47 @@ export declare namespace Knex { // Chainable interface // - type ExposedPromiseKeys = - | "then" - | "catch" - | "finally"; + type ExposedPromiseKeys = 'then' | 'catch' | 'finally'; interface StringTagSupport { readonly [Symbol.toStringTag]: string; } - interface ChainableInterface extends Pick, keyof Promise & ExposedPromiseKeys>, StringTagSupport { - generateDdlCommands (): Promise<{ pre: string[], sql: string[], check: string | null, post: string[] }>; - toQuery (): string; - options (options: Readonly<{ [key: string]: any }>): this; - connection (connection: any): this; - debug (enabled: boolean): this; - transacting (trx: Transaction): this; - stream (handler: (readable: stream.PassThrough) => any): Promise; - stream ( + interface ChainableInterface + extends Pick, keyof Promise & ExposedPromiseKeys>, + StringTagSupport { + generateDdlCommands(): Promise<{ + pre: string[]; + sql: string[]; + check: string | null; + post: string[]; + }>; + toQuery(): string; + options(options: Readonly<{ [key: string]: any }>): this; + connection(connection: any): this; + debug(enabled: boolean): this; + transacting(trx: Transaction): this; + stream(handler: (readable: stream.PassThrough) => any): Promise; + stream( options: Readonly<{ [key: string]: any }>, handler: (readable: stream.PassThrough) => any ): Promise; - stream (options?: Readonly<{ [key: string]: any }>): stream.PassThrough & AsyncIterable>; - pipe ( + stream( + options?: Readonly<{ [key: string]: any }> + ): stream.PassThrough & AsyncIterable>; + pipe( writable: T, options?: Readonly<{ [key: string]: any }> ): stream.PassThrough; - asCallback (callback: Function): Promise; + asCallback(callback: Function): Promise; } // Not all of these are possible for all drivers, notably, sqlite doesn't support any of these - type IsolationLevels = 'read uncommitted' | 'read committed' | 'snapshot' | 'repeatable read' | 'serializable'; + type IsolationLevels = + | 'read uncommitted' + | 'read committed' + | 'snapshot' + | 'repeatable read' + | 'serializable'; interface TransactionConfig { isolationLevel?: IsolationLevels; userParams?: Record; @@ -1987,17 +2296,15 @@ export declare namespace Knex { executionPromise: Promise; isCompleted: () => boolean; - query ( + query( conn: any, sql: any, status: any, value: any ): QueryBuilder; - savepoint ( - transactionScope: (trx: Transaction) => any - ): Promise; - commit (value?: any): QueryBuilder; - rollback (error?: any): QueryBuilder; + savepoint(transactionScope: (trx: Transaction) => any): Promise; + commit(value?: any): QueryBuilder; + rollback(error?: any): QueryBuilder; } type TransactionProvider = () => Promise; @@ -2008,203 +2315,263 @@ export declare namespace Knex { interface SchemaBuilder extends ChainableInterface { // Views - createView ( + createView( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - createViewOrReplace ( + createViewOrReplace( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - createMaterializedView ( + createMaterializedView( viewName: string, callback: (viewBuilder: ViewBuilder) => any ): SchemaBuilder; - refreshMaterializedView (viewName: string, concurrently?: boolean): SchemaBuilder; - dropView (viewName: string): SchemaBuilder; - dropViewIfExists (viewName: string): SchemaBuilder; - dropMaterializedView (viewName: string): SchemaBuilder; - dropMaterializedViewIfExists (viewName: string): SchemaBuilder; - renameView (oldViewName: string, newViewName: string): Promise; - view ( + refreshMaterializedView( + viewName: string, + concurrently?: boolean + ): SchemaBuilder; + dropView(viewName: string): SchemaBuilder; + dropViewIfExists(viewName: string): SchemaBuilder; + dropMaterializedView(viewName: string): SchemaBuilder; + dropMaterializedViewIfExists(viewName: string): SchemaBuilder; + renameView(oldViewName: string, newViewName: string): Promise; + view( viewName: string, callback: (viewBuilder: AlterViewBuilder) => any ): Promise; - alterView ( + alterView( viewName: string, callback: (tableBuilder: AlterViewBuilder) => any ): SchemaBuilder; // Tables - createTable ( + createTable( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - createTableIfNotExists ( + createTableIfNotExists( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - createTableLike ( + createTableLike( tableName: string, tableNameLike: string, callback?: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - alterTable ( + alterTable( tableName: string, callback: (tableBuilder: CreateTableBuilder) => any ): SchemaBuilder; - renameTable (oldTableName: string, newTableName: string): Promise; - dropTable (tableName: string): SchemaBuilder; - hasTable (tableName: string): Promise; - table ( + renameTable(oldTableName: string, newTableName: string): Promise; + dropTable(tableName: string): SchemaBuilder; + hasTable(tableName: string): Promise; + table( tableName: string, callback: (tableBuilder: AlterTableBuilder) => any ): Promise; - dropTableIfExists (tableName: string): SchemaBuilder; + dropTableIfExists(tableName: string): SchemaBuilder; // Schema - createSchema (schemaName: string): SchemaBuilder; - createSchemaIfNotExists (schemaName: string): SchemaBuilder; - dropSchema (schemaName: string, cascade?: boolean): SchemaBuilder; - dropSchemaIfExists (schemaName: string, cascade?: boolean): SchemaBuilder; - withSchema (schemaName: string): SchemaBuilder; + createSchema(schemaName: string): SchemaBuilder; + createSchemaIfNotExists(schemaName: string): SchemaBuilder; + dropSchema(schemaName: string, cascade?: boolean): SchemaBuilder; + dropSchemaIfExists(schemaName: string, cascade?: boolean): SchemaBuilder; + withSchema(schemaName: string): SchemaBuilder; // Others - hasColumn (tableName: string, columnName: string): Promise; - raw (statement: string): SchemaBuilder; - queryContext (context: any): SchemaBuilder; - toString (): string; - toSQL (): Sql; + hasColumn(tableName: string, columnName: string): Promise; + raw(statement: string): SchemaBuilder; + queryContext(context: any): SchemaBuilder; + toString(): string; + toSQL(): Sql; } interface TableBuilder { - increments ( + increments( columnName?: string, options?: { primaryKey?: boolean } ): ColumnBuilder; - bigIncrements ( + bigIncrements( columnName?: string, options?: { primaryKey?: boolean } ): ColumnBuilder; - dropColumn (columnName: string): TableBuilder; - dropColumns (...columnNames: string[]): TableBuilder; - renameColumn (from: string, to: string): TableBuilder; - integer (columnName: string, length?: number): ColumnBuilder; - tinyint (columnName: string, length?: number): ColumnBuilder; - smallint (columnName: string): ColumnBuilder; - mediumint (columnName: string): ColumnBuilder; - bigint (columnName: string): ColumnBuilder; - bigInteger (columnName: string): ColumnBuilder; - text (columnName: string, textType?: string): ColumnBuilder; - string (columnName: string, length?: number): ColumnBuilder; - float ( + dropColumn(columnName: string): TableBuilder; + dropColumns(...columnNames: string[]): TableBuilder; + renameColumn(from: string, to: string): TableBuilder; + integer(columnName: string, length?: number): ColumnBuilder; + tinyint(columnName: string, length?: number): ColumnBuilder; + smallint(columnName: string): ColumnBuilder; + mediumint(columnName: string): ColumnBuilder; + bigint(columnName: string): ColumnBuilder; + bigInteger(columnName: string): ColumnBuilder; + text(columnName: string, textType?: string): ColumnBuilder; + string(columnName: string, length?: number): ColumnBuilder; + float( columnName: string, precision?: number, scale?: number ): ColumnBuilder; - double ( + double( columnName: string, precision?: number, scale?: number ): ColumnBuilder; - decimal ( + decimal( columnName: string, precision?: number | null, scale?: number ): ColumnBuilder; - boolean (columnName: string): ColumnBuilder; - date (columnName: string): ColumnBuilder; - dateTime (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; - datetime (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; - time (columnName: string): ColumnBuilder; - timestamp (columnName: string, options?: Readonly<{ useTz?: boolean, precision?: number }>): ColumnBuilder; + boolean(columnName: string): ColumnBuilder; + date(columnName: string): ColumnBuilder; + dateTime( + columnName: string, + options?: Readonly<{ useTz?: boolean; precision?: number }> + ): ColumnBuilder; + datetime( + columnName: string, + options?: Readonly<{ useTz?: boolean; precision?: number }> + ): ColumnBuilder; + time(columnName: string): ColumnBuilder; + timestamp( + columnName: string, + options?: Readonly<{ useTz?: boolean; precision?: number }> + ): ColumnBuilder; /** @deprecated */ - timestamp (columnName: string, withoutTz?: boolean, precision?: number): ColumnBuilder; - timestamps ( + timestamp( + columnName: string, + withoutTz?: boolean, + precision?: number + ): ColumnBuilder; + timestamps( useTimestamps?: boolean, defaultToNow?: boolean, useCamelCase?: boolean ): ColumnBuilder; - timestamps ( - options?: Readonly<{ useTimestamps?: boolean, defaultToNow?: boolean, useCamelCase?: boolean }> + timestamps( + options?: Readonly<{ + useTimestamps?: boolean; + defaultToNow?: boolean; + useCamelCase?: boolean; + }> ): void; - geometry (columnName: string): ColumnBuilder; - geography (columnName: string): ColumnBuilder; - point (columnName: string): ColumnBuilder; - binary (columnName: string, length?: number): ColumnBuilder; - enum ( + geometry(columnName: string): ColumnBuilder; + geography(columnName: string): ColumnBuilder; + point(columnName: string): ColumnBuilder; + binary(columnName: string, length?: number): ColumnBuilder; + enum( columnName: string, - values: (readonly Value[]) | null, + values: readonly Value[] | null, options?: EnumOptions ): ColumnBuilder; - enu ( + enu( columnName: string, - values: (readonly Value[]) | null, + values: readonly Value[] | null, options?: EnumOptions ): ColumnBuilder; json(columnName: string): ColumnBuilder; jsonb(columnName: string): ColumnBuilder; - uuid(columnName: string, options?: Readonly<{useBinaryUuid?: boolean, primaryKey?: boolean}>): ColumnBuilder; + uuid( + columnName: string, + options?: Readonly<{ useBinaryUuid?: boolean; primaryKey?: boolean }> + ): ColumnBuilder; comment(val: string): void; specificType(columnName: string, type: string): ColumnBuilder; - primary(columnNames: readonly string[], options?: Readonly<{constraintName?: string, deferrable?: deferrableType}>): TableBuilder; + primary( + columnNames: readonly string[], + options?: Readonly<{ + constraintName?: string; + deferrable?: deferrableType; + }> + ): TableBuilder; /** @deprecated */ - primary (columnNames: readonly string[], constraintName?: string): TableBuilder; - index ( + primary( + columnNames: readonly string[], + constraintName?: string + ): TableBuilder; + index( columnNames: string | readonly (string | Raw)[], indexName?: string, indexType?: string ): TableBuilder; - index ( + index( columnNames: string | readonly (string | Raw)[], indexName?: string, - options?: Readonly<{ indexType?: string, storageEngineIndexType?: storageEngineIndexType, predicate?: QueryBuilder }> + options?: Readonly<{ + indexType?: string; + storageEngineIndexType?: storageEngineIndexType; + predicate?: QueryBuilder; + }> + ): TableBuilder; + setNullable(column: string): TableBuilder; + dropNullable(column: string): TableBuilder; + unique( + columnNames: readonly (string | Raw)[], + options?: Readonly<{ + indexName?: string; + storageEngineIndexType?: string; + deferrable?: deferrableType; + useConstraint?: boolean; + }> ): TableBuilder; - setNullable (column: string): TableBuilder; - dropNullable (column: string): TableBuilder; - unique (columnNames: readonly (string | Raw)[], options?: Readonly<{ indexName?: string, storageEngineIndexType?: string, deferrable?: deferrableType, useConstraint?: boolean }>): TableBuilder; /** @deprecated */ - unique (columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; - foreign (column: string, foreignKeyName?: string): ForeignConstraintBuilder; - foreign ( + unique( + columnNames: readonly (string | Raw)[], + indexName?: string + ): TableBuilder; + foreign(column: string, foreignKeyName?: string): ForeignConstraintBuilder; + foreign( columns: readonly string[], foreignKeyName?: string ): MultikeyForeignConstraintBuilder; - check (checkPredicate: string, bindings?: Record, constraintName?: string): TableBuilder; - dropForeign (columnNames: string | readonly string[], foreignKeyName?: string): TableBuilder; - dropUnique (columnNames: readonly (string | Raw)[], indexName?: string): TableBuilder; - dropPrimary (constraintName?: string): TableBuilder; - dropIndex (columnNames: string | readonly (string | Raw)[], indexName?: string): TableBuilder; - dropTimestamps (useCamelCase?: boolean): TableBuilder; - dropChecks (checkConstraintNames: string | string[]): TableBuilder; - queryContext (context: any): TableBuilder; + check( + checkPredicate: string, + bindings?: Record, + constraintName?: string + ): TableBuilder; + dropForeign( + columnNames: string | readonly string[], + foreignKeyName?: string + ): TableBuilder; + dropUnique( + columnNames: readonly (string | Raw)[], + indexName?: string + ): TableBuilder; + dropPrimary(constraintName?: string): TableBuilder; + dropIndex( + columnNames: string | readonly (string | Raw)[], + indexName?: string + ): TableBuilder; + dropTimestamps(useCamelCase?: boolean): TableBuilder; + dropChecks(checkConstraintNames: string | string[]): TableBuilder; + queryContext(context: any): TableBuilder; } interface ViewBuilder { - columns (columns: any): ViewBuilder; - as (selectQuery: QueryBuilder): ViewBuilder; - checkOption (): Promise; - localCheckOption (): Promise; - cascadedCheckOption (): Promise; - queryContext (context: any): ViewBuilder; + columns(columns: any): ViewBuilder; + as(selectQuery: QueryBuilder): ViewBuilder; + checkOption(): Promise; + localCheckOption(): Promise; + cascadedCheckOption(): Promise; + queryContext(context: any): ViewBuilder; } interface CreateTableBuilder extends TableBuilder { - engine (val: string): CreateTableBuilder; - charset (val: string): CreateTableBuilder; - collate (val: string): CreateTableBuilder; - inherits (val: string): CreateTableBuilder; + engine(val: string): CreateTableBuilder; + charset(val: string): CreateTableBuilder; + collate(val: string): CreateTableBuilder; + inherits(val: string): CreateTableBuilder; } - interface AlterTableBuilder extends TableBuilder { } + interface AlterTableBuilder extends TableBuilder {} interface AlterColumnView extends ViewBuilder { - rename (newName: string): AlterColumnView; - defaultTo (defaultValue: string): AlterColumnView; + rename(newName: string): AlterColumnView; + defaultTo(defaultValue: string): AlterColumnView; } interface AlterViewBuilder extends ViewBuilder { - column (column: string): AlterColumnView; + column(column: string): AlterColumnView; } type deferrableType = 'not deferrable' | 'immediate' | 'deferred'; @@ -2212,87 +2579,108 @@ export declare namespace Knex { type lengthOperator = '>' | '<' | '<=' | '>=' | '!=' | '='; interface ColumnBuilder { - index (indexName?: string): ColumnBuilder; - primary (options?: Readonly<{ constraintName?: string, deferrable?: deferrableType }>): ColumnBuilder; + index(indexName?: string): ColumnBuilder; + primary( + options?: Readonly<{ + constraintName?: string; + deferrable?: deferrableType; + }> + ): ColumnBuilder; /** @deprecated */ - primary (constraintName?: string): ColumnBuilder; + primary(constraintName?: string): ColumnBuilder; - unique (options?: Readonly<{ indexName?: string, deferrable?: deferrableType }>): ColumnBuilder; + unique( + options?: Readonly<{ indexName?: string; deferrable?: deferrableType }> + ): ColumnBuilder; /** @deprecated */ - unique (indexName?: string): ColumnBuilder; - references (columnName: string): ReferencingColumnBuilder; - defaultTo (value: Value | null, options?: DefaultToOptions): ColumnBuilder; - unsigned (): ColumnBuilder; - notNullable (): ColumnBuilder; - nullable (): ColumnBuilder; - comment (value: string): ColumnBuilder; - alter (options?: Readonly<{ alterNullable?: boolean, alterType?: boolean }>): ColumnBuilder; - queryContext (context: any): ColumnBuilder; - after (columnName: string): ColumnBuilder; - first (): ColumnBuilder; - checkPositive (constraintName?: string): ColumnBuilder; - checkNegative (constraintName?: string): ColumnBuilder; - checkIn (values: string[], constraintName?: string): ColumnBuilder; - checkNotIn (values: string[], constraintName?: string): ColumnBuilder; - checkBetween (values: any[] | any[][], constraintName?: string): ColumnBuilder; - checkLength (operator: lengthOperator, length: number, constraintName?: string): ColumnBuilder; - checkRegex (regex: string, constraintName?: string): ColumnBuilder; + unique(indexName?: string): ColumnBuilder; + references(columnName: string): ReferencingColumnBuilder; + defaultTo(value: Value | null, options?: DefaultToOptions): ColumnBuilder; + unsigned(): ColumnBuilder; + notNullable(): ColumnBuilder; + nullable(): ColumnBuilder; + comment(value: string): ColumnBuilder; + alter( + options?: Readonly<{ alterNullable?: boolean; alterType?: boolean }> + ): ColumnBuilder; + queryContext(context: any): ColumnBuilder; + after(columnName: string): ColumnBuilder; + first(): ColumnBuilder; + checkPositive(constraintName?: string): ColumnBuilder; + checkNegative(constraintName?: string): ColumnBuilder; + checkIn(values: string[], constraintName?: string): ColumnBuilder; + checkNotIn(values: string[], constraintName?: string): ColumnBuilder; + checkBetween( + values: any[] | any[][], + constraintName?: string + ): ColumnBuilder; + checkLength( + operator: lengthOperator, + length: number, + constraintName?: string + ): ColumnBuilder; + checkRegex(regex: string, constraintName?: string): ColumnBuilder; } interface ForeignConstraintBuilder { - references (columnName: string): ReferencingColumnBuilder; + references(columnName: string): ReferencingColumnBuilder; } interface MultikeyForeignConstraintBuilder { - references (columnNames: readonly string[]): ReferencingColumnBuilder; + references(columnNames: readonly string[]): ReferencingColumnBuilder; } interface PostgreSqlColumnBuilder extends ColumnBuilder { - index ( + index( indexName?: string, - options?: Readonly<{ indexType?: string, predicate?: QueryBuilder }> + options?: Readonly<{ indexType?: string; predicate?: QueryBuilder }> ): ColumnBuilder; - index (indexName?: string, indexType?: string): ColumnBuilder; + index(indexName?: string, indexType?: string): ColumnBuilder; } interface SqlLiteColumnBuilder extends ColumnBuilder { - index ( + index( indexName?: string, options?: Readonly<{ predicate?: QueryBuilder }> ): ColumnBuilder; } interface MsSqlColumnBuilder extends ColumnBuilder { - index ( + index( indexName?: string, options?: Readonly<{ predicate?: QueryBuilder }> ): ColumnBuilder; } interface MySqlColumnBuilder extends ColumnBuilder { - index ( + index( indexName?: string, - options?: Readonly<{ indexType?: string, storageEngineIndexType?: storageEngineIndexType }> + options?: Readonly<{ + indexType?: string; + storageEngineIndexType?: storageEngineIndexType; + }> ): ColumnBuilder; } // patched ColumnBuilder methods to return ReferencingColumnBuilder with new methods // relies on ColumnBuilder returning only ColumnBuilder type ReferencingColumnBuilder = { - [K in keyof ColumnBuilder]: (...args: Parameters) => ReferencingColumnBuilder; + [K in keyof ColumnBuilder]: ( + ...args: Parameters + ) => ReferencingColumnBuilder; } & { - inTable (tableName: string): ReferencingColumnBuilder; - deferrable (type: deferrableType): ReferencingColumnBuilder; - withKeyName (keyName: string): ReferencingColumnBuilder; - onDelete (command: string): ReferencingColumnBuilder; - onUpdate (command: string): ReferencingColumnBuilder; + inTable(tableName: string): ReferencingColumnBuilder; + deferrable(type: deferrableType): ReferencingColumnBuilder; + withKeyName(keyName: string): ReferencingColumnBuilder; + onDelete(command: string): ReferencingColumnBuilder; + onUpdate(command: string): ReferencingColumnBuilder; }; - interface AlterColumnBuilder extends ColumnBuilder { } + interface AlterColumnBuilder extends ColumnBuilder {} interface MySqlAlterColumnBuilder extends AlterColumnBuilder { - first (): AlterColumnBuilder; - after (columnName: string): AlterColumnBuilder; + first(): AlterColumnBuilder; + after(columnName: string): AlterColumnBuilder; } // @@ -2340,7 +2728,9 @@ export declare namespace Knex { | Sqlite3ConnectionConfig | SocketConnectionConfig; - type ConnectionConfigProvider = SyncConnectionConfigProvider | AsyncConnectionConfigProvider; + type ConnectionConfigProvider = + | SyncConnectionConfigProvider + | AsyncConnectionConfigProvider; type SyncConnectionConfigProvider = () => StaticConnectionConfig; type AsyncConnectionConfigProvider = () => Promise; @@ -2486,7 +2876,12 @@ export declare namespace Knex { abortTransactionOnError?: boolean; trustedConnection?: boolean; enableArithAbort?: boolean; - isolationLevel?: 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE' | 'SNAPSHOT'; + isolationLevel?: + | 'READ_UNCOMMITTED' + | 'READ_COMMITTED' + | 'REPEATABLE_READ' + | 'SERIALIZABLE' + | 'SNAPSHOT'; maxRetriesOnTransientErrors?: number; multiSubnetFailover?: boolean; packetSize?: number; @@ -2574,7 +2969,9 @@ export declare namespace Knex { // Config object for mysql2: https://github.com/sidorares/node-mysql2/blob/master/lib/connection_config.js // Some options for connection pooling and MySQL server API are excluded. interface MySql2ConnectionConfig extends MySqlConnectionConfig { - authPlugins?: { [pluginName: string]: (pluginMetadata: any) => ((pluginData: any) => any) }; + authPlugins?: { + [pluginName: string]: (pluginMetadata: any) => (pluginData: any) => any; + }; authSwitchHandler?: (data: any, callback: () => void) => any; charsetNumber?: number; compress?: boolean; @@ -2687,9 +3084,9 @@ export declare namespace Knex { } interface MigrationSource { - getMigrations (loadExtensions: readonly string[]): Promise; - getMigrationName (migration: TMigrationSpec): string; - getMigration (migration: TMigrationSpec): Promise; + getMigrations(loadExtensions: readonly string[]): Promise; + getMigrationName(migration: TMigrationSpec): string; + getMigration(migration: TMigrationSpec): Promise; } interface MigratorConfig { @@ -2708,15 +3105,15 @@ export declare namespace Knex { } interface Migrator { - make (name: string, config?: MigratorConfig): Promise; - latest (config?: MigratorConfig): Promise; - rollback (config?: MigratorConfig, all?: boolean): Promise; - status (config?: MigratorConfig): Promise; - currentVersion (config?: MigratorConfig): Promise; - list (config?: MigratorConfig): Promise; - up (config?: MigratorConfig): Promise; - down (config?: MigratorConfig): Promise; - forceFreeMigrationsLock (config?: MigratorConfig): Promise; + make(name: string, config?: MigratorConfig): Promise; + latest(config?: MigratorConfig): Promise; + rollback(config?: MigratorConfig, all?: boolean): Promise; + status(config?: MigratorConfig): Promise; + currentVersion(config?: MigratorConfig): Promise; + list(config?: MigratorConfig): Promise; + up(config?: MigratorConfig): Promise; + down(config?: MigratorConfig): Promise; + forceFreeMigrationsLock(config?: MigratorConfig): Promise; } interface Seed { @@ -2724,8 +3121,8 @@ export declare namespace Knex { } interface SeedSource { - getSeeds (config: SeederConfig): Promise; - getSeed (seed: TSeedSpec): Promise; + getSeeds(config: SeederConfig): Promise; + getSeed(seed: TSeedSpec): Promise; } interface SeederConfig { @@ -2742,16 +3139,16 @@ export declare namespace Knex { } class Seeder { - constructor (knex: Knex); - setConfig (config: SeederConfig): SeederConfig; - run (config?: SeederConfig): Promise<[string[]]>; - make (name: string, config?: SeederConfig): Promise; + constructor(knex: Knex); + setConfig(config: SeederConfig): SeederConfig; + run(config?: SeederConfig): Promise<[string[]]>; + make(name: string, config?: SeederConfig): Promise; } interface FunctionHelper { - now (precision?: number): Raw; - uuidToBin (uuid: string, ordered?: boolean): Buffer; - binToUuid (bin: Buffer, ordered?: boolean): string; + now(precision?: number): Raw; + uuidToBin(uuid: string, ordered?: boolean): Buffer; + binToUuid(bin: Buffer, ordered?: boolean): string; } interface EnumOptions { @@ -2767,58 +3164,63 @@ export declare namespace Knex { } class Client extends events.EventEmitter { - constructor (config: Config); + constructor(config: Config); config: Config; dialect: string; driverName: string; connectionSettings: object; - acquireRawConnection (): Promise; - destroyRawConnection (connection: any): Promise; - validateConnection (connection: any): Promise; + acquireRawConnection(): Promise; + destroyRawConnection(connection: any): Promise; + validateConnection(connection: any): Promise; logger: Logger; version?: string; connectionConfigProvider: any; connectionConfigExpirationChecker: null | (() => boolean); valueForUndefined: any; - formatter (builder: any): any; - queryBuilder (): QueryBuilder; - queryCompiler (builder: any): any; - schemaBuilder (): SchemaBuilder; - schemaCompiler (builder: SchemaBuilder): any; - tableBuilder (type: any, tableName: any, tableNameLike: any, fn: any): TableBuilder; - tableCompiler (tableBuilder: any): any; - columnBuilder (tableBuilder: any, type: any, args: any): ColumnBuilder; - columnCompiler (tableBuilder: any, columnBuilder: any): any; - runner (builder: any): any; - transaction (container: any, config: any, outerTx: any): Transaction; - raw (...args: any[]): any; - ref (...args: any[]): Ref; - query (connection: any, obj: any): any; - stream (connection: any, obj: any, stream: any, options: any): any; - prepBindings (bindings: any): any; - positionBindings (sql: any): any; - postProcessResponse (resp: any, queryContext: any): any; - wrapIdentifier (value: any, queryContext: any): any; - customWrapIdentifier (value: any, origImpl: any, queryContext: any): any; - wrapIdentifierImpl (value: any): string; - initializeDriver (): void; + formatter(builder: any): any; + queryBuilder(): QueryBuilder; + queryCompiler(builder: any): any; + schemaBuilder(): SchemaBuilder; + schemaCompiler(builder: SchemaBuilder): any; + tableBuilder( + type: any, + tableName: any, + tableNameLike: any, + fn: any + ): TableBuilder; + tableCompiler(tableBuilder: any): any; + columnBuilder(tableBuilder: any, type: any, args: any): ColumnBuilder; + columnCompiler(tableBuilder: any, columnBuilder: any): any; + runner(builder: any): any; + transaction(container: any, config: any, outerTx: any): Transaction; + raw(...args: any[]): any; + ref(...args: any[]): Ref; + query(connection: any, obj: any): any; + stream(connection: any, obj: any, stream: any, options: any): any; + prepBindings(bindings: any): any; + positionBindings(sql: any): any; + postProcessResponse(resp: any, queryContext: any): any; + wrapIdentifier(value: any, queryContext: any): any; + customWrapIdentifier(value: any, origImpl: any, queryContext: any): any; + wrapIdentifierImpl(value: any): string; + initializeDriver(): void; driver: any; - poolDefaults (): { + poolDefaults(): { min: number; max: number; propagateCreateError: boolean; }; - getPoolSettings (poolConfig: any): any; - initializePool (config?: {}): void; + getPoolSettings(poolConfig: any): any; + initializePool(config?: {}): void; pool: tarn.Pool | undefined; - acquireConnection (): any; - releaseConnection (connection: any): any; - destroy (callback: any): any; - database (): any; + acquireConnection(): any; + releaseConnection(connection: any): any; + destroy(callback: any): any; + database(): any; canCancelQuery: boolean; - assertCanCancelQuery (): void; - cancelQuery (): void; + assertCanCancelQuery(): void; + cancelQuery(): void; } } From b04711d870041ac4066fbd59f982c9d403b6aa3a Mon Sep 17 00:00:00 2001 From: Dominic Vonk Date: Tue, 14 Jun 2022 12:26:55 +0200 Subject: [PATCH 4/4] Update --- types/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/index.d.ts b/types/index.d.ts index bb20041067..65a40027ec 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -450,7 +450,7 @@ export declare namespace knex { ) => | Knex.QueryBuilder | Promise< - | QueryBuilder + | Knex.QueryBuilder | DeferredKeySelection.Resolve > ): void;