kysely 0.28.1 → 0.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +3 -2
  2. package/dist/cjs/dialect/mssql/mssql-driver.js +68 -57
  3. package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
  4. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
  5. package/dist/cjs/dynamic/dynamic-table-builder.d.ts +16 -0
  6. package/dist/cjs/dynamic/dynamic-table-builder.js +46 -0
  7. package/dist/cjs/dynamic/dynamic.d.ts +36 -1
  8. package/dist/cjs/dynamic/dynamic.js +37 -0
  9. package/dist/cjs/helpers/mssql.d.ts +4 -4
  10. package/dist/cjs/helpers/mysql.d.ts +4 -4
  11. package/dist/cjs/helpers/postgres.d.ts +4 -4
  12. package/dist/cjs/helpers/sqlite.d.ts +4 -4
  13. package/dist/cjs/index.d.ts +1 -1
  14. package/dist/cjs/kysely.d.ts +5 -1
  15. package/dist/cjs/kysely.js +12 -6
  16. package/dist/cjs/migration/migrator.js +2 -1
  17. package/dist/cjs/parser/delete-from-parser.d.ts +5 -1
  18. package/dist/cjs/parser/merge-into-parser.d.ts +3 -1
  19. package/dist/cjs/parser/select-from-parser.d.ts +3 -1
  20. package/dist/cjs/parser/table-parser.d.ts +4 -3
  21. package/dist/cjs/parser/table-parser.js +4 -0
  22. package/dist/cjs/parser/update-parser.d.ts +5 -1
  23. package/dist/cjs/query-builder/delete-query-builder.js +2 -2
  24. package/dist/cjs/query-builder/function-module.d.ts +5 -5
  25. package/dist/cjs/query-builder/insert-query-builder.js +2 -2
  26. package/dist/cjs/query-builder/merge-query-builder.js +1 -1
  27. package/dist/cjs/query-builder/order-by-interface.d.ts +0 -18
  28. package/dist/cjs/query-builder/select-query-builder.d.ts +0 -18
  29. package/dist/cjs/query-builder/select-query-builder.js +2 -2
  30. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  31. package/dist/cjs/query-compiler/default-query-compiler.js +1 -4
  32. package/dist/cjs/query-executor/query-executor-base.d.ts +2 -2
  33. package/dist/cjs/query-executor/query-executor-base.js +4 -4
  34. package/dist/cjs/query-executor/query-executor.d.ts +2 -2
  35. package/dist/cjs/raw-builder/raw-builder.js +1 -1
  36. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +1 -1
  37. package/dist/cjs/schema/alter-table-add-index-builder.js +1 -1
  38. package/dist/cjs/schema/alter-table-builder.js +1 -1
  39. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +1 -1
  40. package/dist/cjs/schema/alter-table-executor.js +1 -1
  41. package/dist/cjs/schema/create-index-builder.js +1 -1
  42. package/dist/cjs/schema/create-schema-builder.js +1 -1
  43. package/dist/cjs/schema/create-table-builder.js +1 -1
  44. package/dist/cjs/schema/create-type-builder.js +1 -1
  45. package/dist/cjs/schema/create-view-builder.js +1 -1
  46. package/dist/cjs/schema/drop-index-builder.js +1 -1
  47. package/dist/cjs/schema/drop-schema-builder.js +1 -1
  48. package/dist/cjs/schema/drop-table-builder.js +1 -1
  49. package/dist/cjs/schema/drop-type-builder.js +1 -1
  50. package/dist/cjs/schema/drop-view-builder.js +1 -1
  51. package/dist/cjs/schema/refresh-materialized-view-builder.js +1 -1
  52. package/dist/cjs/util/type-utils.d.ts +17 -0
  53. package/dist/esm/dialect/mssql/mssql-driver.d.ts +3 -2
  54. package/dist/esm/dialect/mssql/mssql-driver.js +68 -57
  55. package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
  56. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
  57. package/dist/esm/dynamic/dynamic-table-builder.d.ts +16 -0
  58. package/dist/esm/dynamic/dynamic-table-builder.js +41 -0
  59. package/dist/esm/dynamic/dynamic.d.ts +36 -1
  60. package/dist/esm/dynamic/dynamic.js +37 -0
  61. package/dist/esm/helpers/mssql.d.ts +4 -4
  62. package/dist/esm/helpers/mysql.d.ts +4 -4
  63. package/dist/esm/helpers/postgres.d.ts +4 -4
  64. package/dist/esm/helpers/sqlite.d.ts +4 -4
  65. package/dist/esm/index.d.ts +1 -1
  66. package/dist/esm/kysely.d.ts +5 -1
  67. package/dist/esm/kysely.js +12 -6
  68. package/dist/esm/migration/migrator.js +3 -2
  69. package/dist/esm/parser/delete-from-parser.d.ts +5 -1
  70. package/dist/esm/parser/merge-into-parser.d.ts +3 -1
  71. package/dist/esm/parser/select-from-parser.d.ts +3 -1
  72. package/dist/esm/parser/table-parser.d.ts +4 -3
  73. package/dist/esm/parser/table-parser.js +4 -0
  74. package/dist/esm/parser/update-parser.d.ts +5 -1
  75. package/dist/esm/query-builder/delete-query-builder.js +2 -2
  76. package/dist/esm/query-builder/function-module.d.ts +5 -5
  77. package/dist/esm/query-builder/insert-query-builder.js +2 -2
  78. package/dist/esm/query-builder/merge-query-builder.js +1 -1
  79. package/dist/esm/query-builder/order-by-interface.d.ts +0 -18
  80. package/dist/esm/query-builder/select-query-builder.d.ts +0 -18
  81. package/dist/esm/query-builder/select-query-builder.js +2 -2
  82. package/dist/esm/query-builder/update-query-builder.js +2 -2
  83. package/dist/esm/query-compiler/default-query-compiler.js +1 -4
  84. package/dist/esm/query-executor/query-executor-base.d.ts +2 -2
  85. package/dist/esm/query-executor/query-executor-base.js +4 -4
  86. package/dist/esm/query-executor/query-executor.d.ts +2 -2
  87. package/dist/esm/raw-builder/raw-builder.js +1 -1
  88. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +1 -1
  89. package/dist/esm/schema/alter-table-add-index-builder.js +1 -1
  90. package/dist/esm/schema/alter-table-builder.js +1 -1
  91. package/dist/esm/schema/alter-table-drop-constraint-builder.js +1 -1
  92. package/dist/esm/schema/alter-table-executor.js +1 -1
  93. package/dist/esm/schema/create-index-builder.js +1 -1
  94. package/dist/esm/schema/create-schema-builder.js +1 -1
  95. package/dist/esm/schema/create-table-builder.js +1 -1
  96. package/dist/esm/schema/create-type-builder.js +1 -1
  97. package/dist/esm/schema/create-view-builder.js +1 -1
  98. package/dist/esm/schema/drop-index-builder.js +1 -1
  99. package/dist/esm/schema/drop-schema-builder.js +1 -1
  100. package/dist/esm/schema/drop-table-builder.js +1 -1
  101. package/dist/esm/schema/drop-type-builder.js +1 -1
  102. package/dist/esm/schema/drop-view-builder.js +1 -1
  103. package/dist/esm/schema/refresh-materialized-view-builder.js +1 -1
  104. package/dist/esm/util/type-utils.d.ts +17 -0
  105. package/package.json +36 -33
  106. package/.renovaterc.json +0 -3
  107. package/CODE_OF_CONDUCT.md +0 -183
  108. package/FUNDING.md +0 -25
  109. package/deno.check.d.ts +0 -93
  110. package/deno.check.json +0 -21
@@ -4,7 +4,8 @@ import { AliasedExpressionOrFactory } from './expression-parser.js';
4
4
  import { OperationNode } from '../operation-node/operation-node.js';
5
5
  import { AliasedExpression } from '../expression/expression.js';
6
6
  import { DrainOuterGeneric } from '../util/type-utils.js';
7
- export type TableExpression<DB, TB extends keyof DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpressionOrFactory<DB, TB>;
7
+ import { AliasedDynamicTableBuilder } from '../dynamic/dynamic-table-builder.js';
8
+ export type TableExpression<DB, TB extends keyof DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpressionOrFactory<DB, TB> | AliasedDynamicTableBuilder<any, any>;
8
9
  export type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
9
10
  export type SimpleTableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB>;
10
11
  export type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
@@ -14,8 +15,8 @@ export type From<DB, TE> = DrainOuterGeneric<{
14
15
  }>;
15
16
  export type FromTables<DB, TB extends keyof DB, TE> = DrainOuterGeneric<TB | ExtractAliasFromTableExpression<DB, TE>>;
16
17
  export type ExtractTableAlias<DB, TE> = TE extends `${string} as ${infer TA}` ? TA extends keyof DB ? TA : never : TE extends keyof DB ? TE : never;
17
- type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
18
- type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
18
+ type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : TE extends AliasedDynamicTableBuilder<any, infer DA> ? DA : never;
19
+ type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedDynamicTableBuilder<infer T, infer DA> ? DA extends A ? T extends keyof DB ? DB[T] : never : never : never;
19
20
  export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
20
21
  export declare function parseTableExpression(table: TableExpression<any, any>): OperationNode;
21
22
  export declare function parseAliasedTable(from: string): TableNode | AliasNode;
@@ -4,6 +4,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
4
4
  import { TableNode } from '../operation-node/table-node.js';
5
5
  import { parseAliasedExpression, } from './expression-parser.js';
6
6
  import { IdentifierNode } from '../operation-node/identifier-node.js';
7
+ import { isAliasedDynamicTableBuilder, } from '../dynamic/dynamic-table-builder.js';
7
8
  export function parseTableExpressionOrList(table) {
8
9
  if (isReadonlyArray(table)) {
9
10
  return table.map((it) => parseTableExpression(it));
@@ -16,6 +17,9 @@ export function parseTableExpression(table) {
16
17
  if (isString(table)) {
17
18
  return parseAliasedTable(table);
18
19
  }
20
+ else if (isAliasedDynamicTableBuilder(table)) {
21
+ return table.toOperationNode();
22
+ }
19
23
  else {
20
24
  return parseAliasedExpression(table);
21
25
  }
@@ -2,4 +2,8 @@ import type { UpdateQueryBuilder } from '../query-builder/update-query-builder.j
2
2
  import type { UpdateResult } from '../query-builder/update-result.js';
3
3
  import type { ShallowRecord } from '../util/type-utils.js';
4
4
  import type { ExtractTableAlias, From, FromTables, TableExpressionOrList } from './table-parser.js';
5
- export type UpdateTable<DB, TE extends TableExpressionOrList<DB, never>> = TE extends ReadonlyArray<infer T> ? UpdateQueryBuilder<From<DB, T>, FromTables<DB, never, T>, FromTables<DB, never, T>, UpdateResult> : TE extends keyof DB & string ? UpdateQueryBuilder<DB, ExtractTableAlias<DB, TE>, ExtractTableAlias<DB, TE>, UpdateResult> : TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? UpdateQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, A, UpdateResult> : never : UpdateQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, FromTables<DB, never, TE>, UpdateResult>;
5
+ export type UpdateTable<DB, TE extends TableExpressionOrList<DB, never>> = [
6
+ TE
7
+ ] extends [keyof DB] ? UpdateQueryBuilder<DB, ExtractTableAlias<DB, TE>, ExtractTableAlias<DB, TE>, UpdateResult> : [
8
+ TE
9
+ ] extends [`${infer T} as ${infer A}`] ? T extends keyof DB ? UpdateQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, A, UpdateResult> : never : TE extends ReadonlyArray<infer T> ? UpdateQueryBuilder<From<DB, T>, FromTables<DB, never, T>, FromTables<DB, never, T>, UpdateResult> : UpdateQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, FromTables<DB, never, TE>, UpdateResult>;
@@ -449,7 +449,7 @@ export class DeleteQueryBuilder {
449
449
  */
450
450
  async execute() {
451
451
  const compiledQuery = this.compile();
452
- const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
452
+ const result = await this.#props.executor.executeQuery(compiledQuery);
453
453
  const { adapter } = this.#props.executor;
454
454
  const query = compiledQuery.query;
455
455
  if ((query.returning && adapter.supportsReturning) ||
@@ -486,7 +486,7 @@ export class DeleteQueryBuilder {
486
486
  }
487
487
  async *stream(chunkSize = 100) {
488
488
  const compiledQuery = this.compile();
489
- const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
489
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize);
490
490
  for await (const item of stream) {
491
491
  yield* item.rows;
492
492
  }
@@ -3,10 +3,10 @@ import { Expression } from '../expression/expression.js';
3
3
  import { ExtractTypeFromCoalesce1, ExtractTypeFromCoalesce3, ExtractTypeFromCoalesce2, ExtractTypeFromCoalesce4, ExtractTypeFromCoalesce5 } from '../parser/coalesce-parser.js';
4
4
  import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference, ExtractTypeFromStringReference } from '../parser/reference-parser.js';
5
5
  import { KyselyTypeError } from '../util/type-error.js';
6
- import { IsNever } from '../util/type-utils.js';
6
+ import { IsNever, ShallowDehydrateObject, ShallowDehydrateValue, Simplify } from '../util/type-utils.js';
7
7
  import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
8
8
  import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
9
- import { Selectable } from '../util/column-type.js';
9
+ import { Selectable, SelectType } from '../util/column-type.js';
10
10
  /**
11
11
  * Helpers for type safe SQL function calls.
12
12
  *
@@ -565,8 +565,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
565
565
  * group by "person"."first_name"
566
566
  * ```
567
567
  */
568
- jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Selectable<DB[T]>[] : T extends Expression<infer O> ? O[] : never>;
569
- jsonAgg<RE extends StringReference<DB, TB>>(column: RE): AggregateFunctionBuilder<DB, TB, ExtractTypeFromStringReference<DB, TB, RE>[] | null>;
568
+ jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Simplify<ShallowDehydrateObject<Selectable<DB[T]>>>[] : T extends Expression<infer O> ? Simplify<ShallowDehydrateObject<O>>[] : never>;
569
+ jsonAgg<RE extends StringReference<DB, TB>>(column: RE): AggregateFunctionBuilder<DB, TB, ShallowDehydrateValue<SelectType<ExtractTypeFromStringReference<DB, TB, RE>>>[] | null>;
570
570
  /**
571
571
  * Creates a to_json function call.
572
572
  *
@@ -587,6 +587,6 @@ export interface FunctionModule<DB, TB extends keyof DB> {
587
587
  * inner join "pet" on "pet"."owner_id" = "person"."id"
588
588
  * ```
589
589
  */
590
- toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Selectable<DB[T]> : T extends Expression<infer O> ? O : never>;
590
+ toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Simplify<ShallowDehydrateObject<Selectable<DB[T]>>> : T extends Expression<infer O> ? Simplify<ShallowDehydrateObject<O>> : never>;
591
591
  }
592
592
  export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
@@ -1103,7 +1103,7 @@ export class InsertQueryBuilder {
1103
1103
  */
1104
1104
  async execute() {
1105
1105
  const compiledQuery = this.compile();
1106
- const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
1106
+ const result = await this.#props.executor.executeQuery(compiledQuery);
1107
1107
  const { adapter } = this.#props.executor;
1108
1108
  const query = compiledQuery.query;
1109
1109
  if ((query.returning && adapter.supportsReturning) ||
@@ -1142,7 +1142,7 @@ export class InsertQueryBuilder {
1142
1142
  }
1143
1143
  async *stream(chunkSize = 100) {
1144
1144
  const compiledQuery = this.compile();
1145
- const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
1145
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize);
1146
1146
  for await (const item of stream) {
1147
1147
  yield* item.rows;
1148
1148
  }
@@ -416,7 +416,7 @@ export class WheneableMergeQueryBuilder {
416
416
  */
417
417
  async execute() {
418
418
  const compiledQuery = this.compile();
419
- const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
419
+ const result = await this.#props.executor.executeQuery(compiledQuery);
420
420
  const { adapter } = this.#props.executor;
421
421
  const query = compiledQuery.query;
422
422
  if ((query.returning && adapter.supportsReturning) ||
@@ -40,24 +40,6 @@ export interface OrderByInterface<DB, TB extends keyof DB, O> {
40
40
  * order by "id", "fn" desc
41
41
  * ```
42
42
  *
43
- * Multiple columns/expressions per call:
44
- *
45
- * ```ts
46
- * await db
47
- * .selectFrom('person')
48
- * .select('person.first_name as fn')
49
- * .orderBy(['id', 'fn'])
50
- * .execute()
51
- * ```
52
- *
53
- * The generated SQL (PostgreSQL):
54
- *
55
- * ```sql
56
- * select "person"."first_name" as "fn"
57
- * from "person"
58
- * order by "id", "fn"
59
- * ```
60
- *
61
43
  * Building advanced modifiers:
62
44
  *
63
45
  * ```ts
@@ -1246,24 +1246,6 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1246
1246
  * order by "id", "fn" desc
1247
1247
  * ```
1248
1248
  *
1249
- * Multiple columns/expressions per call:
1250
- *
1251
- * ```ts
1252
- * await db
1253
- * .selectFrom('person')
1254
- * .select('person.first_name as fn')
1255
- * .orderBy(['id', 'fn'])
1256
- * .execute()
1257
- * ```
1258
- *
1259
- * The generated SQL (PostgreSQL):
1260
- *
1261
- * ```sql
1262
- * select "person"."first_name" as "fn"
1263
- * from "person"
1264
- * order by "id", "fn"
1265
- * ```
1266
- *
1267
1249
  * Building advanced modifiers:
1268
1250
  *
1269
1251
  * ```ts
@@ -314,7 +314,7 @@ class SelectQueryBuilderImpl {
314
314
  }
315
315
  async execute() {
316
316
  const compiledQuery = this.compile();
317
- const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
317
+ const result = await this.#props.executor.executeQuery(compiledQuery);
318
318
  return result.rows;
319
319
  }
320
320
  async executeTakeFirst() {
@@ -333,7 +333,7 @@ class SelectQueryBuilderImpl {
333
333
  }
334
334
  async *stream(chunkSize = 100) {
335
335
  const compiledQuery = this.compile();
336
- const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
336
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize);
337
337
  for await (const item of stream) {
338
338
  yield* item.rows;
339
339
  }
@@ -456,7 +456,7 @@ export class UpdateQueryBuilder {
456
456
  */
457
457
  async execute() {
458
458
  const compiledQuery = this.compile();
459
- const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
459
+ const result = await this.#props.executor.executeQuery(compiledQuery);
460
460
  const { adapter } = this.#props.executor;
461
461
  const query = compiledQuery.query;
462
462
  if ((query.returning && adapter.supportsReturning) ||
@@ -495,7 +495,7 @@ export class UpdateQueryBuilder {
495
495
  }
496
496
  async *stream(chunkSize = 100) {
497
497
  const compiledQuery = this.compile();
498
- const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
498
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize);
499
499
  for await (const item of stream) {
500
500
  yield* item.rows;
501
501
  }
@@ -1318,7 +1318,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
1318
1318
  if (isString(value)) {
1319
1319
  this.appendStringLiteral(value);
1320
1320
  }
1321
- else if (isNumber(value) || isBoolean(value)) {
1321
+ else if (isNumber(value) || isBoolean(value) || isBigInt(value)) {
1322
1322
  this.append(value.toString());
1323
1323
  }
1324
1324
  else if (isNull(value)) {
@@ -1327,9 +1327,6 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
1327
1327
  else if (isDate(value)) {
1328
1328
  this.appendImmediateValue(value.toISOString());
1329
1329
  }
1330
- else if (isBigInt(value)) {
1331
- this.appendImmediateValue(value.toString());
1332
- }
1333
1330
  else {
1334
1331
  throw new Error(`invalid immediate value ${value}`);
1335
1332
  }
@@ -35,13 +35,13 @@ export declare abstract class QueryExecutorBase implements QueryExecutor {
35
35
  * Executes a compiled query and runs the result through all plugins'
36
36
  * `transformResult` method.
37
37
  */
38
- executeQuery<R>(compiledQuery: CompiledQuery, queryId: QueryId): Promise<QueryResult<R>>;
38
+ executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
39
39
  /**
40
40
  * Executes a compiled query and runs the result through all plugins'
41
41
  * `transformResult` method. Results are streamead instead of loaded
42
42
  * at once.
43
43
  */
44
- stream<R>(compiledQuery: CompiledQuery, chunkSize: number, queryId: QueryId): AsyncIterableIterator<QueryResult<R>>;
44
+ stream<R>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<R>>;
45
45
  /**
46
46
  * Returns a copy of this executor with a new connection provider.
47
47
  */
@@ -30,20 +30,20 @@ export class QueryExecutorBase {
30
30
  }
31
31
  return node;
32
32
  }
33
- async executeQuery(compiledQuery, queryId) {
33
+ async executeQuery(compiledQuery) {
34
34
  return await this.provideConnection(async (connection) => {
35
35
  const result = await connection.executeQuery(compiledQuery);
36
36
  if ('numUpdatedOrDeletedRows' in result) {
37
37
  logOnce('kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.');
38
38
  }
39
- return await this.#transformResult(result, queryId);
39
+ return await this.#transformResult(result, compiledQuery.queryId);
40
40
  });
41
41
  }
42
- async *stream(compiledQuery, chunkSize, queryId) {
42
+ async *stream(compiledQuery, chunkSize) {
43
43
  const { connection, release } = await provideControlledConnection(this);
44
44
  try {
45
45
  for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {
46
- yield await this.#transformResult(result, queryId);
46
+ yield await this.#transformResult(result, compiledQuery.queryId);
47
47
  }
48
48
  }
49
49
  finally {
@@ -36,7 +36,7 @@ export interface QueryExecutor extends ConnectionProvider {
36
36
  * Executes a compiled query and runs the result through all plugins'
37
37
  * `transformResult` method.
38
38
  */
39
- executeQuery<R>(compiledQuery: CompiledQuery<R>, queryId: QueryId): Promise<QueryResult<R>>;
39
+ executeQuery<R>(compiledQuery: CompiledQuery<R>): Promise<QueryResult<R>>;
40
40
  /**
41
41
  * Executes a compiled query and runs the result through all plugins'
42
42
  * `transformResult` method. Results are streamead instead of loaded
@@ -47,7 +47,7 @@ export interface QueryExecutor extends ConnectionProvider {
47
47
  * How many rows should be pulled from the database at once. Supported
48
48
  * only by the postgres driver.
49
49
  */
50
- chunkSize: number, queryId: QueryId): AsyncIterableIterator<QueryResult<R>>;
50
+ chunkSize: number): AsyncIterableIterator<QueryResult<R>>;
51
51
  /**
52
52
  * Returns a copy of this executor with a new connection provider.
53
53
  */
@@ -40,7 +40,7 @@ class RawBuilderImpl {
40
40
  }
41
41
  async execute(executorProvider) {
42
42
  const executor = this.#getExecutor(executorProvider);
43
- return executor.executeQuery(this.#compile(executor), this.#props.queryId);
43
+ return executor.executeQuery(this.#compile(executor));
44
44
  }
45
45
  #getExecutor(executorProvider) {
46
46
  const executor = executorProvider !== undefined
@@ -59,6 +59,6 @@ export class AlterTableAddForeignKeyConstraintBuilder {
59
59
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
60
60
  }
61
61
  async execute() {
62
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
62
+ await this.#props.executor.executeQuery(this.compile());
63
63
  }
64
64
  }
@@ -157,6 +157,6 @@ export class AlterTableAddIndexBuilder {
157
157
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
158
158
  }
159
159
  async execute() {
160
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
160
+ await this.#props.executor.executeQuery(this.compile());
161
161
  }
162
162
  }
@@ -258,6 +258,6 @@ export class AlterTableColumnAlteringBuilder {
258
258
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
259
259
  }
260
260
  async execute() {
261
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
261
+ await this.#props.executor.executeQuery(this.compile());
262
262
  }
263
263
  }
@@ -51,6 +51,6 @@ export class AlterTableDropConstraintBuilder {
51
51
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
52
52
  }
53
53
  async execute() {
54
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
54
+ await this.#props.executor.executeQuery(this.compile());
55
55
  }
56
56
  }
@@ -12,6 +12,6 @@ export class AlterTableExecutor {
12
12
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
13
13
  }
14
14
  async execute() {
15
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
15
+ await this.#props.executor.executeQuery(this.compile());
16
16
  }
17
17
  }
@@ -194,6 +194,6 @@ export class CreateIndexBuilder {
194
194
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
195
195
  }
196
196
  async execute() {
197
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
197
+ await this.#props.executor.executeQuery(this.compile());
198
198
  }
199
199
  }
@@ -26,6 +26,6 @@ export class CreateSchemaBuilder {
26
26
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
27
27
  }
28
28
  async execute() {
29
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
29
+ await this.#props.executor.executeQuery(this.compile());
30
30
  }
31
31
  }
@@ -403,6 +403,6 @@ export class CreateTableBuilder {
403
403
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
404
404
  }
405
405
  async execute() {
406
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
406
+ await this.#props.executor.executeQuery(this.compile());
407
407
  }
408
408
  }
@@ -35,6 +35,6 @@ export class CreateTypeBuilder {
35
35
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
36
36
  }
37
37
  async execute() {
38
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
38
+ await this.#props.executor.executeQuery(this.compile());
39
39
  }
40
40
  }
@@ -90,6 +90,6 @@ export class CreateViewBuilder {
90
90
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
91
91
  }
92
92
  async execute() {
93
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
93
+ await this.#props.executor.executeQuery(this.compile());
94
94
  }
95
95
  }
@@ -49,6 +49,6 @@ export class DropIndexBuilder {
49
49
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
50
50
  }
51
51
  async execute() {
52
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
52
+ await this.#props.executor.executeQuery(this.compile());
53
53
  }
54
54
  }
@@ -36,6 +36,6 @@ export class DropSchemaBuilder {
36
36
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
37
37
  }
38
38
  async execute() {
39
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
39
+ await this.#props.executor.executeQuery(this.compile());
40
40
  }
41
41
  }
@@ -36,6 +36,6 @@ export class DropTableBuilder {
36
36
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
37
37
  }
38
38
  async execute() {
39
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
39
+ await this.#props.executor.executeQuery(this.compile());
40
40
  }
41
41
  }
@@ -28,6 +28,6 @@ export class DropTypeBuilder {
28
28
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
29
29
  }
30
30
  async execute() {
31
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
31
+ await this.#props.executor.executeQuery(this.compile());
32
32
  }
33
33
  }
@@ -44,6 +44,6 @@ export class DropViewBuilder {
44
44
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
45
45
  }
46
46
  async execute() {
47
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
47
+ await this.#props.executor.executeQuery(this.compile());
48
48
  }
49
49
  }
@@ -67,6 +67,6 @@ export class RefreshMaterializedViewBuilder {
67
67
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
68
68
  }
69
69
  async execute() {
70
- await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
70
+ await this.#props.executor.executeQuery(this.compile());
71
71
  }
72
72
  }
@@ -169,3 +169,20 @@ export type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;
169
169
  export type ShallowRecord<K extends keyof any, T> = DrainOuterGeneric<{
170
170
  [P in K]: T;
171
171
  }>;
172
+ /**
173
+ * Dehydrates any root properties of an object that are not valid JSON types.
174
+ *
175
+ * For now, we catch anything in {@link StringsWhenDataTypeNotAvailable} and convert it to `string`.
176
+ */
177
+ export type ShallowDehydrateObject<O> = {
178
+ [K in keyof O]: ShallowDehydrateValue<O[K]>;
179
+ };
180
+ /**
181
+ * Dehydrates a value when it is not a valid JSON type.
182
+ *
183
+ * For now, we catch anything in {@link StringsWhenDataTypeNotAvailable} and convert it to `string`.
184
+ */
185
+ export type ShallowDehydrateValue<T> = [T] extends [
186
+ (infer U)[] | null | undefined
187
+ ] ? Array<ShallowDehydrateValue<U>> | Extract<T, null | undefined> : T extends Exclude<T, StringsWhenDataTypeNotAvailable> ? T : string | Exclude<T, StringsWhenDataTypeNotAvailable>;
188
+ export type StringsWhenDataTypeNotAvailable = ArrayBuffer | bigint | Buffer | Date;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.28.1",
3
+ "version": "0.28.3",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/kysely-org/kysely.git"
8
8
  },
9
9
  "engines": {
10
- "node": ">=18.0.0"
10
+ "node": ">=20.0.0"
11
11
  },
12
12
  "main": "dist/cjs/index.js",
13
13
  "module": "dist/esm/index.js",
@@ -18,6 +18,11 @@
18
18
  ]
19
19
  }
20
20
  },
21
+ "files": [
22
+ "dist",
23
+ "helpers",
24
+ "outdated-typescript.d.ts"
25
+ ],
21
26
  "exports": {
22
27
  ".": {
23
28
  "import": "./dist/esm/index.js",
@@ -47,7 +52,7 @@
47
52
  },
48
53
  "scripts": {
49
54
  "clean": "rm -rf dist & rm -rf test/node/dist & rm -rf test/browser/bundle.js & rm -rf helpers",
50
- "bench:ts": "npm run build && cd ./test/ts-benchmarks && tsx ./index.ts",
55
+ "bench:ts": "npm run build && cd ./test/ts-benchmarks && node --experimental-strip-types ./index.ts",
51
56
  "test": "npm run build && npm run test:node:build && npm run test:node:run && npm run test:typings && npm run test:esmimports && npm run test:exports",
52
57
  "test:node:build": "tsc -p test/node",
53
58
  "test:node": "npm run build && npm run test:node:build && npm run test:node:run",
@@ -72,8 +77,8 @@
72
77
  "script:add-deno-type-references": "node scripts/add-deno-type-references.js",
73
78
  "script:align-site-version": "node scripts/align-site-version.js",
74
79
  "script:generate-site-examples": "node scripts/generate-site-examples.js",
75
- "prepublishOnly": "npm run build",
76
- "release:preview": "pkg-pr-new publish --template './example'"
80
+ "prepublishOnly": "npm run build && npm run test:exports",
81
+ "version": "npm run script:align-site-version && git add ."
77
82
  },
78
83
  "author": "Sami Koskimäki <sami@jakso.me>",
79
84
  "license": "MIT",
@@ -82,39 +87,37 @@
82
87
  "Igal Klebanov <igalklebanov@gmail.com>"
83
88
  ],
84
89
  "devDependencies": {
85
- "@arethetypeswrong/cli": "^0.17.0",
86
- "@ark/attest": "^0.36.0",
87
- "@types/better-sqlite3": "^7.6.11",
88
- "@types/chai": "^4.3.17",
89
- "@types/chai-as-promised": "^7.1.8",
90
- "@types/chai-subset": "^1.3.5",
91
- "@types/mocha": "^10.0.7",
92
- "@types/node": "^22.5.0",
93
- "@types/pg": "^8.11.6",
90
+ "@arethetypeswrong/cli": "^0.17.4",
91
+ "@ark/attest": "^0.46.0",
92
+ "@types/better-sqlite3": "^7.6.13",
93
+ "@types/chai": "^5.0.1",
94
+ "@types/chai-as-promised": "^8.0.2",
95
+ "@types/chai-subset": "^1.3.6",
96
+ "@types/mocha": "^10.0.10",
97
+ "@types/node": "^22.15.3",
98
+ "@types/pg": "^8.11.14",
94
99
  "@types/pg-cursor": "^2.7.2",
95
- "@types/semver": "^7.5.8",
96
- "@types/sinon": "^17.0.2",
100
+ "@types/semver": "^7.7.0",
101
+ "@types/sinon": "^17.0.4",
97
102
  "@types/tedious": "^4.0.9",
98
- "better-sqlite3": "^11.2.1",
99
- "chai": "^4.5.0",
100
- "chai-as-promised": "^7.1.2",
103
+ "better-sqlite3": "^11.9.1",
104
+ "chai": "^5.2.0",
105
+ "chai-as-promised": "^8.0.1",
101
106
  "chai-subset": "^1.6.0",
102
- "esbuild": "^0.24.0",
107
+ "esbuild": "^0.25.3",
103
108
  "lodash": "^4.17.21",
104
- "mocha": "^10.7.3",
105
- "mysql2": "^3.11.0",
106
- "pathe": "^1.1.2",
107
- "pg": "^8.12.0",
108
- "pg-cursor": "^2.11.0",
109
- "pkg-pr-new": "^0.0.30",
110
- "playwright": "^1.46.1",
111
- "prettier": "^3.3.3",
112
- "semver": "^7.6.3",
113
- "sinon": "^19.0.2",
109
+ "mocha": "^11.2.2",
110
+ "mysql2": "^3.14.1",
111
+ "pathe": "^2.0.3",
112
+ "pg": "^8.15.6",
113
+ "pg-cursor": "^2.14.6",
114
+ "playwright": "^1.52.0",
115
+ "prettier": "^3.5.3",
116
+ "semver": "^7.7.1",
117
+ "sinon": "^20.0.0",
114
118
  "tarn": "^3.0.2",
115
119
  "tedious": "^19.0.0",
116
- "tsd": "^0.31.1",
117
- "tsx": "^4.19.1",
118
- "typescript": "^5.6.3"
120
+ "tsd": "^0.32.0",
121
+ "typescript": "^5.8.3"
119
122
  }
120
123
  }
package/.renovaterc.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "rangeStrategy": "bump"
3
- }