knex 1.0.2 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/index.d.ts CHANGED
@@ -30,6 +30,11 @@ type StrKey<T> = string & keyof T;
30
30
 
31
31
  // If T is unknown then convert to any, else retain original
32
32
  type UnknownToAny<T> = unknown extends T ? any : T;
33
+ type CurlyCurlyToAny<T> = T extends unknown ? // distribute
34
+ (<U>() => U extends T ? 0 : 1) extends
35
+ (<U>() => U extends {} ? 0 : 1) ? any : T
36
+ : never;
37
+ type UnknownOrCurlyCurlyToAny<T> = [UnknownToAny<T> | CurlyCurlyToAny<T>][0];
33
38
  type AnyToUnknown<T> = unknown extends T ? unknown : T;
34
39
  type AnyOrUnknownToOther<T1, T2> = unknown extends T1 ? T2 : T1;
35
40
 
@@ -193,7 +198,7 @@ declare namespace DeferredKeySelection {
193
198
  ? DeferredKeySelection<TBase, TKeys | TKey, true, TAliasMapping, TSingle, TIntersectProps, TUnionProps>
194
199
  : DeferredKeySelection<unknown, TKey, true>;
195
200
 
196
- type AddAliases<TSelection, T> = TSelection extends DeferredKeySelection<
201
+ type AddAliases<TSelection, T extends {}> = TSelection extends DeferredKeySelection<
197
202
  infer TBase,
198
203
  infer TKeys,
199
204
  infer THasSelect,
@@ -219,7 +224,7 @@ declare namespace DeferredKeySelection {
219
224
 
220
225
  // Convenience utility to set base, keys and aliases in a single type
221
226
  // application
222
- type Augment<T, TBase, TKey extends string, TAliasMapping = {}> = AddAliases<
227
+ type Augment<T, TBase, TKey extends string, TAliasMapping extends {} = {}> = AddAliases<
223
228
  AddKey<SetBase<T, TBase>, TKey>,
224
229
  TAliasMapping
225
230
  >;
@@ -234,7 +239,7 @@ declare namespace DeferredKeySelection {
234
239
  infer TIntersectProps,
235
240
  infer TUnionProps
236
241
  >
237
- ? UnknownToAny<
242
+ ? UnknownOrCurlyCurlyToAny<
238
243
  // ^ We convert final result to any if it is unknown for backward compatibility.
239
244
  // Historically knex typings have been liberal with returning any and changing
240
245
  // default return type to unknown would be a major breaking change for users.
@@ -263,11 +268,11 @@ declare namespace DeferredKeySelection {
263
268
  : TSelection extends DeferredKeySelection.Any[]
264
269
  ? Knex.ResolveTableType<ResolveOne<TSelection[0]>>[]
265
270
  : TSelection extends (infer I)[]
266
- ? UnknownToAny<Knex.ResolveTableType<I>>[]
267
- : UnknownToAny<Knex.ResolveTableType<TSelection>>;
271
+ ? UnknownOrCurlyCurlyToAny<Knex.ResolveTableType<I>>[]
272
+ : UnknownOrCurlyCurlyToAny<Knex.ResolveTableType<TSelection>>;
268
273
  }
269
274
 
270
- type AggregationQueryResult<TResult, TIntersectProps2> = ArrayIfAlready<
275
+ type AggregationQueryResult<TResult, TIntersectProps2 extends {}> = ArrayIfAlready<
271
276
  TResult,
272
277
  UnwrapArrayMember<TResult> extends DeferredKeySelection<
273
278
  infer TBase,
@@ -284,27 +289,6 @@ type AggregationQueryResult<TResult, TIntersectProps2> = ArrayIfAlready<
284
289
  : TIntersectProps2
285
290
  >;
286
291
 
287
- // Convenience alias and associated companion namespace for working
288
- // with DeferredSelection having TSingle=true.
289
- //
290
- // When TSingle=true in DeferredSelection, then we are effectively
291
- // deferring an index access operation (TBase[TKey]) over a potentially
292
- // unknown initial type of TBase and potentially never initial type of TKey
293
-
294
- type DeferredIndex<TBase, TKey extends string> = DeferredKeySelection<TBase, TKey, false, {}, true>;
295
-
296
- declare namespace DeferredIndex {
297
- type Augment<
298
- T,
299
- TBase,
300
- TKey extends string,
301
- TAliasMapping = {}
302
- > = DeferredKeySelection.SetSingle<
303
- DeferredKeySelection.AddKey<DeferredKeySelection.SetBase<T, TBase>, TKey>,
304
- true
305
- >;
306
- }
307
-
308
292
  // If we have more categories of deferred selection in future,
309
293
  // this will combine all of them
310
294
  type ResolveResult<S> = DeferredKeySelection.Resolve<S>;
@@ -328,13 +312,13 @@ interface DMLOptions {
328
312
  includeTriggerModifications?: boolean;
329
313
  }
330
314
 
331
- export interface Knex<TRecord extends {} = any, TResult = Record<string, any>[]>
315
+ export interface Knex<TRecord extends {} = any, TResult = any[]>
332
316
  extends Knex.QueryInterface<TRecord, TResult>, events.EventEmitter {
333
317
  <TTable extends Knex.TableNames>(
334
318
  tableName: TTable,
335
319
  options?: TableOptions
336
320
  ): Knex.QueryBuilder<Knex.TableType<TTable>, DeferredKeySelection<Knex.ResolveTableType<Knex.TableType<TTable>>, never>[]>;
337
- <TRecord2 = TRecord, TResult2 = DeferredKeySelection<TRecord2, never>[]>(
321
+ <TRecord2 extends {} = TRecord, TResult2 = DeferredKeySelection<TRecord2, never>[]>(
338
322
  tableName?: Knex.TableDescriptor | Knex.AliasDict,
339
323
  options?: TableOptions
340
324
  ): Knex.QueryBuilder<TRecord2, TResult2>;
@@ -361,7 +345,7 @@ export interface Knex<TRecord extends {} = any, TResult = Record<string, any>[]>
361
345
  destroy(callback: Function): void;
362
346
  destroy(): Promise<void>;
363
347
 
364
- batchInsert<TRecord2 = TRecord, TResult2 = number[]>(
348
+ batchInsert<TRecord2 extends {} = TRecord, TResult2 = number[]>(
365
349
  tableName: Knex.TableDescriptor,
366
350
  data: TRecord2 extends Knex.CompositeTableType<unknown>
367
351
  ? ReadonlyArray<Knex.ResolveTableType<TRecord2, 'insert'>>
@@ -370,7 +354,7 @@ export interface Knex<TRecord extends {} = any, TResult = Record<string, any>[]>
370
354
  ): Knex.BatchInsertBuilder<TRecord2, TResult2>;
371
355
 
372
356
  schema: Knex.SchemaBuilder;
373
- queryBuilder<TRecord2 = TRecord, TResult2 = TResult>(): Knex.QueryBuilder<
357
+ queryBuilder<TRecord2 extends {} = TRecord, TResult2 = TResult>(): Knex.QueryBuilder<
374
358
  TRecord2,
375
359
  TResult2
376
360
  >;
@@ -426,7 +410,7 @@ export declare namespace Knex {
426
410
  interface ValueDict extends Dict<Value | Knex.QueryBuilder> {}
427
411
  interface AliasDict extends Dict<string> {}
428
412
 
429
- type ColumnDescriptor<TRecord, TResult> =
413
+ type ColumnDescriptor<TRecord extends {}, TResult> =
430
414
  | string
431
415
  | Knex.Raw
432
416
  | Knex.QueryBuilder<TRecord, TResult>
@@ -473,7 +457,7 @@ export declare namespace Knex {
473
457
  ? TCompositeTableType[TScope]
474
458
  : TCompositeTableType;
475
459
 
476
- interface OnConflictQueryBuilder<TRecord, TResult> {
460
+ interface OnConflictQueryBuilder<TRecord extends {}, TResult> {
477
461
  ignore(): QueryBuilder<TRecord, TResult>;
478
462
  merge(mergeColumns?: (keyof TRecord)[]): QueryBuilder<TRecord, TResult>;
479
463
  merge(data?: Extract<DbRecord<ResolveTableType<TRecord, 'update'>>, object>): QueryBuilder<TRecord, TResult>;
@@ -548,7 +532,11 @@ export declare namespace Knex {
548
532
  whereNotIn: WhereIn<TRecord, TResult>;
549
533
  orWhereNotIn: WhereIn<TRecord, TResult>;
550
534
  whereLike: Where<TRecord, TResult>;
535
+ andWhereLike: Where<TRecord, TResult>;
536
+ orWhereLike: Where<TRecord, TResult>;
551
537
  whereILike: Where<TRecord, TResult>;
538
+ andWhereILike: Where<TRecord, TResult>;
539
+ orWhereILike: Where<TRecord, TResult>;
552
540
  whereNull: WhereNull<TRecord, TResult>;
553
541
  orWhereNull: WhereNull<TRecord, TResult>;
554
542
  whereNotNull: WhereNull<TRecord, TResult>;
@@ -694,7 +682,7 @@ export declare namespace Knex {
694
682
  ): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
695
683
  insert<
696
684
  TKey extends StrKey<ResolveTableType<TRecord>>,
697
- TResult2 = DeferredIndex.Augment<
685
+ TResult2 = DeferredKeySelection.Augment<
698
686
  UnwrapArrayMember<TResult>,
699
687
  ResolveTableType<TRecord>,
700
688
  TKey
@@ -722,7 +710,7 @@ export declare namespace Knex {
722
710
  ): QueryBuilder<TRecord, TResult2>;
723
711
  insert<
724
712
  TKey extends string,
725
- TResult2 = DeferredIndex.Augment<
713
+ TResult2 = DeferredKeySelection.Augment<
726
714
  UnwrapArrayMember<TResult>,
727
715
  TRecord,
728
716
  TKey
@@ -736,7 +724,7 @@ export declare namespace Knex {
736
724
  ): QueryBuilder<TRecord, TResult2>;
737
725
  insert<
738
726
  TKey extends string,
739
- TResult2 = DeferredIndex.Augment<
727
+ TResult2 = DeferredKeySelection.Augment<
740
728
  UnwrapArrayMember<TResult>,
741
729
  TRecord,
742
730
  TKey
@@ -763,7 +751,7 @@ export declare namespace Knex {
763
751
  ): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
764
752
  upsert<
765
753
  TKey extends StrKey<ResolveTableType<TRecord>>,
766
- TResult2 = DeferredIndex.Augment<
754
+ TResult2 = DeferredKeySelection.Augment<
767
755
  UnwrapArrayMember<TResult>,
768
756
  ResolveTableType<TRecord>,
769
757
  TKey
@@ -791,7 +779,7 @@ export declare namespace Knex {
791
779
  ): QueryBuilder<TRecord, TResult2>;
792
780
  upsert<
793
781
  TKey extends string,
794
- TResult2 = DeferredIndex.Augment<
782
+ TResult2 = DeferredKeySelection.Augment<
795
783
  UnwrapArrayMember<TResult>,
796
784
  TRecord,
797
785
  TKey
@@ -805,7 +793,7 @@ export declare namespace Knex {
805
793
  ): QueryBuilder<TRecord, TResult2>;
806
794
  upsert<
807
795
  TKey extends string,
808
- TResult2 = DeferredIndex.Augment<
796
+ TResult2 = DeferredKeySelection.Augment<
809
797
  UnwrapArrayMember<TResult>,
810
798
  TRecord,
811
799
  TKey
@@ -830,7 +818,7 @@ export declare namespace Knex {
830
818
  update<
831
819
  K1 extends StrKey<ResolveTableType<TRecord, 'update'>>,
832
820
  K2 extends StrKey<ResolveTableType<TRecord>>,
833
- TResult2 = DeferredIndex.Augment<
821
+ TResult2 = DeferredKeySelection.Augment<
834
822
  UnwrapArrayMember<TResult>,
835
823
  ResolveTableType<TRecord>,
836
824
  K2
@@ -872,7 +860,7 @@ export declare namespace Knex {
872
860
  ): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
873
861
  update<
874
862
  TKey extends StrKey<ResolveTableType<TRecord>>,
875
- TResult2 = DeferredIndex.Augment<
863
+ TResult2 = DeferredKeySelection.Augment<
876
864
  UnwrapArrayMember<TResult>,
877
865
  ResolveTableType<TRecord>,
878
866
  TKey
@@ -927,7 +915,7 @@ export declare namespace Knex {
927
915
  returning(column: '*', options?: DMLOptions): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
928
916
  returning<
929
917
  TKey extends StrKey<ResolveTableType<TRecord>>,
930
- TResult2 = DeferredIndex.Augment<
918
+ TResult2 = DeferredKeySelection.Augment<
931
919
  UnwrapArrayMember<TResult>,
932
920
  ResolveTableType<TRecord>,
933
921
  TKey
@@ -952,24 +940,15 @@ export declare namespace Knex {
952
940
  ): QueryBuilder<TRecord, TResult2>;
953
941
 
954
942
  onConflict<
955
- TKey extends StrKey<ResolveTableType<TRecord>>,
956
- TResult2 = DeferredIndex.Augment<
957
- UnwrapArrayMember<TResult>,
958
- TRecord,
959
- TKey
960
- >[]
943
+ TKey extends StrKey<ResolveTableType<TRecord>>
961
944
  >(
962
945
  column: TKey
963
- ): OnConflictQueryBuilder<TRecord, TResult2>;
946
+ ): OnConflictQueryBuilder<TRecord, TResult>;
964
947
  onConflict<
965
- TKey extends StrKey<ResolveTableType<TRecord>>,
966
- TResult2 = DeferredKeySelection.SetSingle<
967
- DeferredKeySelection.Augment<UnwrapArrayMember<TResult>, TRecord, TKey>,
968
- false
969
- >[]
948
+ TKey extends StrKey<ResolveTableType<TRecord>>
970
949
  >(
971
950
  columns: readonly TKey[]
972
- ): OnConflictQueryBuilder<TRecord, TResult2>;
951
+ ): OnConflictQueryBuilder<TRecord, TResult>;
973
952
 
974
953
  onConflict(
975
954
  columns: string
@@ -991,7 +970,7 @@ export declare namespace Knex {
991
970
  ): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
992
971
  del<
993
972
  TKey extends StrKey<TRecord>,
994
- TResult2 = DeferredIndex.Augment<
973
+ TResult2 = DeferredKeySelection.Augment<
995
974
  UnwrapArrayMember<TResult>,
996
975
  TRecord,
997
976
  TKey
@@ -1023,7 +1002,7 @@ export declare namespace Knex {
1023
1002
  ): QueryBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
1024
1003
  delete<
1025
1004
  TKey extends StrKey<ResolveTableType<TRecord>>,
1026
- TResult2 = DeferredIndex.Augment<
1005
+ TResult2 = DeferredKeySelection.Augment<
1027
1006
  UnwrapArrayMember<TResult>,
1028
1007
  ResolveTableType<TRecord>,
1029
1008
  TKey
@@ -1052,7 +1031,7 @@ export declare namespace Knex {
1052
1031
  truncate(): QueryBuilder<TRecord, void>;
1053
1032
  }
1054
1033
 
1055
- interface As<TRecord, TResult> {
1034
+ interface As<TRecord extends {}, TResult> {
1056
1035
  (columnName: keyof TRecord): QueryBuilder<TRecord, TResult>;
1057
1036
  (columnName: string): QueryBuilder<TRecord, TResult>;
1058
1037
  }
@@ -1068,7 +1047,7 @@ export declare namespace Knex {
1068
1047
  Dict,
1069
1048
  {}
1070
1049
  >
1071
- >;
1050
+ > & {}; // filters out `null` and `undefined`
1072
1051
 
1073
1052
  interface AliasQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
1074
1053
  <
@@ -1125,11 +1104,11 @@ export declare namespace Knex {
1125
1104
  ColumnNameQueryBuilder<TRecord, TResult> {
1126
1105
  (): QueryBuilder<TRecord, TResult>;
1127
1106
 
1128
- <TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord = any, TInnerResult = any>(
1107
+ <TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord extends {} = any, TInnerResult = any>(
1129
1108
  ...subQueryBuilders: readonly QueryBuilder<TInnerRecord, TInnerResult>[]
1130
1109
  ): QueryBuilder<TRecord, TResult2>;
1131
1110
 
1132
- <TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord = any, TInnerResult = any>(
1111
+ <TResult2 = ArrayIfAlready<TResult, any>, TInnerRecord extends {} = any, TInnerResult = any>(
1133
1112
  subQueryBuilders: readonly QueryBuilder<TInnerRecord, TInnerResult>[]
1134
1113
  ): QueryBuilder<TRecord, TResult2>;
1135
1114
  }
@@ -1141,53 +1120,53 @@ export declare namespace Knex {
1141
1120
  singleValue?: boolean;
1142
1121
  }
1143
1122
 
1144
- interface JsonExtract<TRecord extends {} = any, TResult extends {} = any> {
1123
+ interface JsonExtract<TRecord extends {} = any, TResult = any> {
1145
1124
  (column: string | Raw | QueryBuilder, path: string, alias?: string, singleValue?: boolean): QueryBuilder<TRecord, TResult>;
1146
1125
  (column: JsonExtraction[] | any[][], singleValue?: boolean): QueryBuilder<TRecord, TResult>;
1147
1126
  }
1148
1127
 
1149
- interface JsonSet<TRecord extends {} = any, TResult extends {} = any> {
1128
+ interface JsonSet<TRecord extends {} = any, TResult = any> {
1150
1129
  (column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder<TRecord, TResult>;
1151
1130
  }
1152
1131
 
1153
- interface JsonInsert<TRecord extends {} = any, TResult extends {} = any> {
1132
+ interface JsonInsert<TRecord extends {} = any, TResult = any> {
1154
1133
  (column: string | Raw | QueryBuilder, path: string, value: any, alias?: string): QueryBuilder<TRecord, TResult>;
1155
1134
  }
1156
1135
 
1157
- interface JsonRemove<TRecord extends {} = any, TResult extends {} = any> {
1136
+ interface JsonRemove<TRecord extends {} = any, TResult = any> {
1158
1137
  (column: string | Raw | QueryBuilder, path: string, alias?: string): QueryBuilder<TRecord, TResult>;
1159
1138
  }
1160
1139
 
1161
- interface HintComment<TRecord extends {} = any, TResult extends {} = any> {
1140
+ interface HintComment<TRecord extends {} = any, TResult = any> {
1162
1141
  (hint: string): QueryBuilder<TRecord, TResult>;
1163
1142
  (hints: readonly string[]): QueryBuilder<TRecord, TResult>;
1164
1143
  }
1165
1144
 
1166
- interface Table<TRecord extends {} = any, TResult extends {} = any> {
1145
+ interface Table<TRecord extends {} = any, TResult = any> {
1167
1146
  <
1168
1147
  TTable extends TableNames,
1169
- TRecord2 = TableType<TTable>,
1148
+ TRecord2 extends {} = TableType<TTable>,
1170
1149
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, ResolveTableType<TRecord2>>
1171
1150
  >(
1172
1151
  tableName: TTable,
1173
1152
  options?: TableOptions
1174
1153
  ): QueryBuilder<TRecord2, TResult2>;
1175
1154
  <
1176
- TRecord2 = unknown,
1155
+ TRecord2 extends {} = {},
1177
1156
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1178
1157
  >(
1179
1158
  tableName: TableDescriptor | AliasDict,
1180
1159
  options?: TableOptions
1181
1160
  ): QueryBuilder<TRecord2, TResult2>;
1182
1161
  <
1183
- TRecord2 = unknown,
1162
+ TRecord2 extends {} = {},
1184
1163
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1185
1164
  >(
1186
1165
  callback: Function,
1187
1166
  options?: TableOptions
1188
1167
  ): QueryBuilder<TRecord2, TResult2>;
1189
1168
  <
1190
- TRecord2 = unknown,
1169
+ TRecord2 extends {} = {},
1191
1170
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1192
1171
  >(
1193
1172
  raw: Raw,
@@ -1225,7 +1204,7 @@ export declare namespace Knex {
1225
1204
  ): QueryBuilder<TRecord2, TResult2>;
1226
1205
  <
1227
1206
  TTable extends TableNames,
1228
- TRecord2 = ResolveTableType<TRecord> &
1207
+ TRecord2 extends {} = ResolveTableType<TRecord> &
1229
1208
  ResolveTableType<TableType<TTable>>,
1230
1209
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1231
1210
  >(
@@ -1262,7 +1241,7 @@ export declare namespace Knex {
1262
1241
  TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
1263
1242
  TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
1264
1243
  TRecord1 = ResolveTableType<TRecord>,
1265
- TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
1244
+ TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
1266
1245
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1267
1246
  >(
1268
1247
  tableName: TTable2,
@@ -1275,7 +1254,7 @@ export declare namespace Knex {
1275
1254
  TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
1276
1255
  TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
1277
1256
  TRecord1 = ResolveTableType<TRecord>,
1278
- TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
1257
+ TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
1279
1258
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1280
1259
  >(
1281
1260
  tableName: TTable2,
@@ -1306,7 +1285,7 @@ export declare namespace Knex {
1306
1285
  TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
1307
1286
  TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
1308
1287
  TRecord1 = ResolveTableType<TRecord>,
1309
- TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
1288
+ TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
1310
1289
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1311
1290
  >(
1312
1291
  tableName: TTable2,
@@ -1320,7 +1299,7 @@ export declare namespace Knex {
1320
1299
  TKey1 extends StrKey<ResolveTableType<TableType<TTable1>>> & StrKey<TRecord1>,
1321
1300
  TKey2 extends StrKey<ResolveTableType<TableType<TTable2>>>,
1322
1301
  TRecord1 = ResolveTableType<TRecord>,
1323
- TRecord2 = TRecord1 & ResolveTableType<TableType<TTable2>>,
1302
+ TRecord2 extends {} = TRecord1 & ResolveTableType<TableType<TTable2>>,
1324
1303
  TResult2 = DeferredKeySelection.ReplaceBase<TResult, TRecord2>
1325
1304
  >(
1326
1305
  tableName: TTable2,
@@ -1397,22 +1376,22 @@ export declare namespace Knex {
1397
1376
  type(type: string): JoinClause;
1398
1377
  }
1399
1378
 
1400
- interface JoinRaw<TRecord = any, TResult = unknown[]> {
1379
+ interface JoinRaw<TRecord extends {} = any, TResult = unknown[]> {
1401
1380
  (tableName: string, binding?: Value | Value[] | ValueDict): QueryBuilder<
1402
1381
  TRecord,
1403
1382
  TResult
1404
1383
  >;
1405
1384
  }
1406
1385
 
1407
- interface Using<TRecord = any, TResult = unknown[]> {
1386
+ interface Using<TRecord extends {} = any, TResult = unknown[]> {
1408
1387
  (tables: string[]): QueryBuilder<TRecord, TResult>;
1409
1388
  }
1410
1389
 
1411
- interface With<TRecord = any, TResult = unknown[]>
1390
+ interface With<TRecord extends {} = any, TResult = unknown[]>
1412
1391
  extends WithRaw<TRecord, TResult>,
1413
1392
  WithWrapped<TRecord, TResult> {}
1414
1393
 
1415
- interface WithRaw<TRecord = any, TResult = unknown[]> {
1394
+ interface WithRaw<TRecord extends {} = any, TResult = unknown[]> {
1416
1395
  (alias: string, raw: Raw | QueryBuilder): QueryBuilder<TRecord, TResult>;
1417
1396
  (alias: string, sql: string, bindings?: readonly Value[] | Object): QueryBuilder<
1418
1397
  TRecord,
@@ -1425,11 +1404,11 @@ export declare namespace Knex {
1425
1404
  >;
1426
1405
  }
1427
1406
 
1428
- interface WithSchema<TRecord = any, TResult = unknown[]> {
1407
+ interface WithSchema<TRecord extends {} = any, TResult = unknown[]> {
1429
1408
  (schema: string): QueryBuilder<TRecord, TResult>;
1430
1409
  }
1431
1410
 
1432
- interface WithWrapped<TRecord = any, TResult = unknown[]> {
1411
+ interface WithWrapped<TRecord extends {} = any, TResult = unknown[]> {
1433
1412
  (alias: string, queryBuilder: QueryBuilder): QueryBuilder<TRecord, TResult>;
1434
1413
  (
1435
1414
  alias: string,
@@ -1443,7 +1422,7 @@ export declare namespace Knex {
1443
1422
  ): QueryBuilder<TRecord, TResult>;
1444
1423
  }
1445
1424
 
1446
- interface Where<TRecord = any, TResult = unknown>
1425
+ interface Where<TRecord extends {} = any, TResult = unknown>
1447
1426
  extends WhereRaw<TRecord, TResult>,
1448
1427
  WhereWrapped<TRecord, TResult>,
1449
1428
  WhereNull<TRecord, TResult> {
@@ -1473,13 +1452,13 @@ export declare namespace Knex {
1473
1452
  TResult
1474
1453
  >;
1475
1454
 
1476
- <T extends keyof ResolveTableType<TRecord>, TRecordInner, TResultInner>(
1455
+ <T extends keyof ResolveTableType<TRecord>, TRecordInner extends {}, TResultInner>(
1477
1456
  columnName: T,
1478
1457
  operator: ComparisonOperator,
1479
1458
  value: QueryBuilder<TRecordInner, TResultInner>
1480
1459
  ): QueryBuilder<TRecord, TResult>;
1481
1460
 
1482
- <TRecordInner, TResultInner>(
1461
+ <TRecordInner extends {}, TResultInner>(
1483
1462
  columnName: string,
1484
1463
  operator: string,
1485
1464
  value: QueryBuilder<TRecordInner, TResultInner>
@@ -1490,28 +1469,28 @@ export declare namespace Knex {
1490
1469
  TResult
1491
1470
  >;
1492
1471
 
1493
- <TRecordInner, TResultInner>(
1472
+ <TRecordInner extends {}, TResultInner>(
1494
1473
  left: Raw,
1495
1474
  operator: string,
1496
1475
  right: QueryBuilder<TRecordInner, TResultInner>
1497
1476
  ): QueryBuilder<TRecord, TResult>;
1498
1477
  }
1499
1478
 
1500
- interface WhereRaw<TRecord = any, TResult = unknown[]>
1479
+ interface WhereRaw<TRecord extends {} = any, TResult = unknown[]>
1501
1480
  extends RawQueryBuilder<TRecord, TResult> {
1502
1481
  (condition: boolean): QueryBuilder<TRecord, TResult>;
1503
1482
  }
1504
1483
 
1505
- interface WhereWrapped<TRecord = any, TResult = unknown[]> {
1484
+ interface WhereWrapped<TRecord extends {} = any, TResult = unknown[]> {
1506
1485
  (callback: QueryCallback<TRecord, TResult>): QueryBuilder<TRecord, TResult>;
1507
1486
  }
1508
1487
 
1509
- interface WhereNull<TRecord = any, TResult = unknown[]> {
1488
+ interface WhereNull<TRecord extends {} = any, TResult = unknown[]> {
1510
1489
  (columnName: keyof TRecord): QueryBuilder<TRecord, TResult>;
1511
1490
  (columnName: string): QueryBuilder<TRecord, TResult>;
1512
1491
  }
1513
1492
 
1514
- interface WhereBetween<TRecord = any, TResult = unknown[]> {
1493
+ interface WhereBetween<TRecord extends {} = any, TResult = unknown[]> {
1515
1494
  <K extends keyof TRecord>(
1516
1495
  columnName: K,
1517
1496
  range: readonly [DbColumn<TRecord[K]>, DbColumn<TRecord[K]>]
@@ -1519,22 +1498,22 @@ export declare namespace Knex {
1519
1498
  (columnName: string, range: readonly [Value, Value]): QueryBuilder<TRecord, TResult>;
1520
1499
  }
1521
1500
 
1522
- interface WhereExists<TRecord = any, TResult = unknown[]> {
1501
+ interface WhereExists<TRecord extends {} = any, TResult = unknown[]> {
1523
1502
  (callback: QueryCallback<TRecord, TResult>): QueryBuilder<TRecord, TResult>;
1524
- <TRecordInner, TResultInner>(
1503
+ <TRecordInner extends {}, TResultInner>(
1525
1504
  query: QueryBuilder<TRecordInner, TResultInner>
1526
1505
  ): QueryBuilder<TRecord, TResult>;
1527
1506
  }
1528
1507
 
1529
- interface WhereJsonObject<TRecord = any, TResult = unknown[]> {
1508
+ interface WhereJsonObject<TRecord extends {} = any, TResult = unknown[]> {
1530
1509
  (columnName: keyof TRecord, value: any): QueryBuilder<TRecord, TResult>;
1531
1510
  }
1532
1511
 
1533
- interface WhereJsonPath<TRecord = any, TResult = unknown[]> {
1512
+ interface WhereJsonPath<TRecord extends {} = any, TResult = unknown[]> {
1534
1513
  (columnName: keyof TRecord, jsonPath: string, operator: string, value: any): QueryBuilder<TRecord, TResult>;
1535
1514
  }
1536
1515
 
1537
- interface WhereIn<TRecord = any, TResult = unknown[]> {
1516
+ interface WhereIn<TRecord extends {} = any, TResult = unknown[]> {
1538
1517
  <K extends keyof ResolveTableType<TRecord>>(
1539
1518
  columnName: K,
1540
1519
  values: readonly DbColumn<ResolveTableType<TRecord>[K]>[] | QueryCallback
@@ -1551,19 +1530,19 @@ export declare namespace Knex {
1551
1530
  TRecord,
1552
1531
  TResult
1553
1532
  >;
1554
- <K extends keyof TRecord, TRecordInner, TResultInner>(
1533
+ <K extends keyof TRecord, TRecordInner extends {}, TResultInner>(
1555
1534
  columnName: K,
1556
1535
  values: QueryBuilder<TRecordInner, TRecord[K]>
1557
1536
  ): QueryBuilder<TRecord, TResult>;
1558
- <TRecordInner, TResultInner>(
1537
+ <TRecordInner extends {}, TResultInner>(
1559
1538
  columnName: string,
1560
1539
  values: Value[] | QueryBuilder<TRecordInner, TResultInner>
1561
1540
  ): QueryBuilder<TRecord, TResult>;
1562
- <K extends keyof TRecord, TRecordInner, TResultInner>(
1541
+ <K extends keyof TRecord, TRecordInner extends {}, TResultInner>(
1563
1542
  columnNames: readonly K[],
1564
1543
  values: QueryBuilder<TRecordInner, TRecord[K]>
1565
1544
  ): QueryBuilder<TRecord, TResult>;
1566
- <TRecordInner, TResultInner>(
1545
+ <TRecordInner extends {}, TResultInner>(
1567
1546
  columnNames: readonly string[],
1568
1547
  values: QueryBuilder<TRecordInner, TResultInner>
1569
1548
  ): QueryBuilder<TRecord, TResult>;
@@ -1573,7 +1552,7 @@ export declare namespace Knex {
1573
1552
  // by extracting out a common base interface will not work because order of overloads
1574
1553
  // is significant.
1575
1554
 
1576
- interface AsymmetricAggregation<TRecord = any, TResult = unknown[], TValue = any> {
1555
+ interface AsymmetricAggregation<TRecord extends {} = any, TResult = unknown[], TValue = any> {
1577
1556
  <
1578
1557
  TOptions extends { "as": string },
1579
1558
  TResult2 = AggregationQueryResult<TResult, {[k in TOptions["as"]]: TValue}>
@@ -1593,7 +1572,7 @@ export declare namespace Knex {
1593
1572
  ): QueryBuilder<TRecord, TResult2>;
1594
1573
  }
1595
1574
 
1596
- interface TypePreservingAggregation<TRecord = any, TResult = unknown[], TValue = any> {
1575
+ interface TypePreservingAggregation<TRecord extends {} = any, TResult = unknown[], TValue = any> {
1597
1576
  <
1598
1577
  TKey extends keyof ResolveTableType<TRecord>,
1599
1578
  TOptions extends { "as": string },
@@ -1625,7 +1604,7 @@ export declare namespace Knex {
1625
1604
  ): QueryBuilder<TRecord, TResult2>;
1626
1605
  }
1627
1606
 
1628
- interface AnalyticFunction<TRecord = any, TResult = unknown[]> {
1607
+ interface AnalyticFunction<TRecord extends {} = any, TResult = unknown[]> {
1629
1608
  <
1630
1609
  TAlias extends string,
1631
1610
  TResult2 = AggregationQueryResult<TResult, {[x in TAlias]: number}>
@@ -1643,11 +1622,11 @@ export declare namespace Knex {
1643
1622
  >;
1644
1623
  }
1645
1624
 
1646
- interface GroupBy<TRecord = any, TResult = unknown[]>
1625
+ interface GroupBy<TRecord extends {} = any, TResult = unknown[]>
1647
1626
  extends RawQueryBuilder<TRecord, TResult>,
1648
1627
  ColumnNameQueryBuilder<TRecord, TResult> {}
1649
1628
 
1650
- interface OrderBy<TRecord = any, TResult = unknown[]> {
1629
+ interface OrderBy<TRecord extends {} = any, TResult = unknown[]> {
1651
1630
  (columnName: keyof TRecord | QueryBuilder, order?: 'asc' | 'desc', nulls?: 'first' | 'last'): QueryBuilder<
1652
1631
  TRecord,
1653
1632
  TResult
@@ -1671,10 +1650,10 @@ export declare namespace Knex {
1671
1650
  ): QueryBuilder<TRecord, TResult>;
1672
1651
  }
1673
1652
 
1674
- interface PartitionBy<TRecord = any, TResult = unknown[]>
1653
+ interface PartitionBy<TRecord extends {} = any, TResult = unknown[]>
1675
1654
  extends OrderBy<TRecord, TResult> {}
1676
1655
 
1677
- interface Intersect<TRecord = any, TResult = unknown[]> {
1656
+ interface Intersect<TRecord extends {} = any, TResult = unknown[]> {
1678
1657
  (
1679
1658
  callback: MaybeArray<QueryCallback | QueryBuilder<TRecord> | Raw>,
1680
1659
  wrap?: boolean
@@ -1684,10 +1663,10 @@ export declare namespace Knex {
1684
1663
  ): QueryBuilder<TRecord, TResult>;
1685
1664
  }
1686
1665
 
1687
- interface Union<TRecord = any, TResult = unknown[]>
1666
+ interface Union<TRecord extends {} = any, TResult = unknown[]>
1688
1667
  extends Intersect<TRecord, TResult> {}
1689
1668
 
1690
- interface Having<TRecord = any, TResult = unknown[]>
1669
+ interface Having<TRecord extends {} = any, TResult = unknown[]>
1691
1670
  extends WhereWrapped<TRecord, TResult> {
1692
1671
  <K extends keyof TRecord>(
1693
1672
  column: K,
@@ -1707,7 +1686,7 @@ export declare namespace Knex {
1707
1686
  >;
1708
1687
  }
1709
1688
 
1710
- interface HavingRange<TRecord = any, TResult = unknown[]> {
1689
+ interface HavingRange<TRecord extends {} = any, TResult = unknown[]> {
1711
1690
  <K extends keyof TRecord>(
1712
1691
  columnName: K,
1713
1692
  values: readonly DbColumn<TRecord[K]>[]
@@ -1717,7 +1696,7 @@ export declare namespace Knex {
1717
1696
 
1718
1697
  // commons
1719
1698
 
1720
- interface ColumnNameQueryBuilder<TRecord = any, TResult = unknown[]> {
1699
+ interface ColumnNameQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
1721
1700
  // When all columns are known to be keys of original record,
1722
1701
  // we can extend our selection by these columns
1723
1702
  (columnName: '*'): QueryBuilder<
@@ -1772,7 +1751,7 @@ export declare namespace Knex {
1772
1751
 
1773
1752
  type RawBinding = Value | QueryBuilder;
1774
1753
 
1775
- interface RawQueryBuilder<TRecord = any, TResult = unknown[]> {
1754
+ interface RawQueryBuilder<TRecord extends {} = any, TResult = unknown[]> {
1776
1755
  <TResult2 = TResult>(
1777
1756
  sql: string,
1778
1757
  bindings?: readonly RawBinding[] | ValueDict | RawBinding
@@ -1833,7 +1812,7 @@ export declare namespace Knex {
1833
1812
  returning(column: '*'): BatchInsertBuilder<TRecord, DeferredKeySelection<TRecord, never>[]>;
1834
1813
  returning<
1835
1814
  TKey extends StrKey<ResolveTableType<TRecord>>,
1836
- TResult2 = DeferredIndex.Augment<
1815
+ TResult2 = DeferredKeySelection.Augment<
1837
1816
  UnwrapArrayMember<TResult>,
1838
1817
  ResolveTableType<TRecord>,
1839
1818
  TKey
@@ -1860,12 +1839,12 @@ export declare namespace Knex {
1860
1839
  // QueryBuilder
1861
1840
  //
1862
1841
 
1863
- type QueryCallback<TRecord = any, TResult = unknown[]> = (
1842
+ type QueryCallback<TRecord extends {} = any, TResult = unknown[]> = (
1864
1843
  this: QueryBuilder<TRecord, TResult>,
1865
1844
  builder: QueryBuilder<TRecord, TResult>
1866
1845
  ) => void;
1867
1846
 
1868
- type QueryCallbackWithArgs<TRecord = any, TResult = unknown[]> = (
1847
+ type QueryCallbackWithArgs<TRecord extends {} = any, TResult = unknown[]> = (
1869
1848
  this: QueryBuilder<TRecord, TResult>,
1870
1849
  builder: QueryBuilder<TRecord, TResult>,
1871
1850
  ...args: any[]
@@ -2031,7 +2010,7 @@ export declare namespace Knex {
2031
2010
  createTableLike(
2032
2011
  tableName: string,
2033
2012
  tableNameLike: string,
2034
- callback: (tableBuilder: CreateTableBuilder) => any
2013
+ callback?: (tableBuilder: CreateTableBuilder) => any
2035
2014
  ): SchemaBuilder;
2036
2015
  alterTable(
2037
2016
  tableName: string,
@@ -2210,7 +2189,7 @@ export declare namespace Knex {
2210
2189
  notNullable(): ColumnBuilder;
2211
2190
  nullable(): ColumnBuilder;
2212
2191
  comment(value: string): ColumnBuilder;
2213
- alter(options: Readonly<{alterNullable?: boolean, alterType?: boolean}>): ColumnBuilder;
2192
+ alter(options?: Readonly<{alterNullable?: boolean, alterType?: boolean}>): ColumnBuilder;
2214
2193
  queryContext(context: any): ColumnBuilder;
2215
2194
  after(columnName: string): ColumnBuilder;
2216
2195
  first(): ColumnBuilder;
@@ -2662,7 +2641,7 @@ export declare namespace Knex {
2662
2641
  interface MigrationSource<TMigrationSpec> {
2663
2642
  getMigrations(loadExtensions: readonly string[]): Promise<TMigrationSpec[]>;
2664
2643
  getMigrationName(migration: TMigrationSpec): string;
2665
- getMigration(migration: TMigrationSpec): Migration;
2644
+ getMigration(migration: TMigrationSpec): Promise<Migration>;
2666
2645
  }
2667
2646
 
2668
2647
  interface MigratorConfig {