kysely 0.26.2 → 0.27.0

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 (215) hide show
  1. package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
  2. package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
  3. package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
  4. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
  5. package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
  6. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  7. package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
  8. package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
  9. package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
  10. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
  11. package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
  12. package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
  13. package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
  14. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  15. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
  16. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  17. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
  19. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  22. package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
  23. package/dist/cjs/driver/driver.d.ts +1 -1
  24. package/dist/cjs/driver/driver.js +1 -0
  25. package/dist/cjs/driver/runtime-driver.js +5 -1
  26. package/dist/cjs/driver/single-connection-provider.js +7 -8
  27. package/dist/cjs/expression/expression-builder.d.ts +66 -73
  28. package/dist/cjs/expression/expression-builder.js +8 -17
  29. package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
  30. package/dist/cjs/helpers/mssql.d.ts +152 -0
  31. package/dist/cjs/helpers/mssql.js +160 -0
  32. package/dist/cjs/helpers/mysql.d.ts +3 -3
  33. package/dist/cjs/helpers/sqlite.d.ts +3 -3
  34. package/dist/cjs/index.d.ts +8 -2
  35. package/dist/cjs/index.js +6 -0
  36. package/dist/cjs/migration/migrator.js +12 -16
  37. package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
  38. package/dist/cjs/operation-node/add-index-node.js +31 -0
  39. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
  40. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  41. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  42. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  43. package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
  44. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  45. package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
  46. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  47. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  48. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  50. package/dist/cjs/operation-node/operator-node.js +2 -0
  51. package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
  52. package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
  53. package/dist/cjs/parser/binary-operation-parser.js +1 -1
  54. package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
  55. package/dist/cjs/parser/expression-parser.d.ts +2 -2
  56. package/dist/cjs/parser/reference-parser.d.ts +3 -2
  57. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  58. package/dist/cjs/parser/select-parser.d.ts +20 -9
  59. package/dist/cjs/parser/update-set-parser.d.ts +5 -2
  60. package/dist/cjs/parser/update-set-parser.js +13 -3
  61. package/dist/cjs/parser/value-parser.d.ts +2 -2
  62. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
  63. package/dist/cjs/query-builder/case-builder.d.ts +5 -4
  64. package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -6
  65. package/dist/cjs/query-builder/function-module.d.ts +98 -27
  66. package/dist/cjs/query-builder/function-module.js +17 -3
  67. package/dist/cjs/query-builder/having-interface.d.ts +3 -5
  68. package/dist/cjs/query-builder/insert-query-builder.d.ts +32 -12
  69. package/dist/cjs/query-builder/insert-query-builder.js +3 -3
  70. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  71. package/dist/cjs/query-builder/insert-result.js +8 -1
  72. package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
  73. package/dist/cjs/query-builder/json-path-builder.js +6 -3
  74. package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
  75. package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
  76. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  77. package/dist/cjs/query-builder/returning-interface.d.ts +3 -2
  78. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
  79. package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
  80. package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
  81. package/dist/cjs/query-builder/select-query-builder.js +5 -2
  82. package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
  83. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  84. package/dist/cjs/query-builder/where-interface.d.ts +3 -3
  85. package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
  86. package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
  87. package/dist/cjs/query-creator.d.ts +5 -3
  88. package/dist/cjs/query-creator.js +0 -47
  89. package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
  90. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
  91. package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
  92. package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
  93. package/dist/cjs/schema/alter-table-builder.js +59 -2
  94. package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
  95. package/dist/cjs/schema/column-definition-builder.js +27 -0
  96. package/dist/cjs/schema/create-index-builder.d.ts +23 -0
  97. package/dist/cjs/schema/create-index-builder.js +30 -0
  98. package/dist/cjs/schema/create-table-builder.d.ts +28 -2
  99. package/dist/cjs/schema/create-table-builder.js +38 -3
  100. package/dist/cjs/schema/create-view-builder.d.ts +2 -2
  101. package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
  102. package/dist/cjs/schema/unique-constraint-builder.js +24 -0
  103. package/dist/cjs/util/infer-result.d.ts +2 -1
  104. package/dist/cjs/util/log.js +5 -1
  105. package/dist/cjs/util/object-utils.d.ts +1 -1
  106. package/dist/cjs/util/type-utils.d.ts +27 -20
  107. package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
  108. package/dist/esm/dialect/dialect-adapter-base.js +3 -0
  109. package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
  110. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
  111. package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
  112. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  113. package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
  114. package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
  115. package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
  116. package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
  117. package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
  118. package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
  119. package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
  120. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  121. package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
  122. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  123. package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
  124. package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
  125. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  126. package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
  127. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  128. package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
  129. package/dist/esm/driver/driver.d.ts +1 -1
  130. package/dist/esm/driver/driver.js +1 -0
  131. package/dist/esm/driver/runtime-driver.js +5 -1
  132. package/dist/esm/driver/single-connection-provider.js +7 -8
  133. package/dist/esm/expression/expression-builder.d.ts +66 -73
  134. package/dist/esm/expression/expression-builder.js +10 -19
  135. package/dist/esm/expression/expression-wrapper.d.ts +8 -8
  136. package/dist/esm/helpers/mssql.d.ts +152 -0
  137. package/dist/esm/helpers/mssql.js +155 -0
  138. package/dist/esm/helpers/mysql.d.ts +3 -3
  139. package/dist/esm/helpers/sqlite.d.ts +3 -3
  140. package/dist/esm/index.d.ts +8 -2
  141. package/dist/esm/index.js +6 -0
  142. package/dist/esm/migration/migrator.js +12 -16
  143. package/dist/esm/operation-node/add-index-node.d.ts +21 -0
  144. package/dist/esm/operation-node/add-index-node.js +29 -0
  145. package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
  146. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  147. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  148. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  149. package/dist/esm/operation-node/create-table-node.d.ts +1 -0
  150. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  151. package/dist/esm/operation-node/operation-node-transformer.js +17 -0
  152. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  153. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  154. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  155. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  156. package/dist/esm/operation-node/operator-node.js +2 -0
  157. package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
  158. package/dist/esm/operation-node/unique-constraint-node.js +8 -1
  159. package/dist/esm/parser/binary-operation-parser.js +1 -1
  160. package/dist/esm/parser/coalesce-parser.d.ts +12 -2
  161. package/dist/esm/parser/expression-parser.d.ts +2 -2
  162. package/dist/esm/parser/reference-parser.d.ts +3 -2
  163. package/dist/esm/parser/returning-parser.d.ts +2 -1
  164. package/dist/esm/parser/select-parser.d.ts +20 -9
  165. package/dist/esm/parser/update-set-parser.d.ts +5 -2
  166. package/dist/esm/parser/update-set-parser.js +10 -1
  167. package/dist/esm/parser/value-parser.d.ts +2 -2
  168. package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
  169. package/dist/esm/query-builder/case-builder.d.ts +5 -4
  170. package/dist/esm/query-builder/delete-query-builder.d.ts +8 -6
  171. package/dist/esm/query-builder/function-module.d.ts +98 -27
  172. package/dist/esm/query-builder/function-module.js +17 -3
  173. package/dist/esm/query-builder/having-interface.d.ts +3 -5
  174. package/dist/esm/query-builder/insert-query-builder.d.ts +32 -12
  175. package/dist/esm/query-builder/insert-query-builder.js +4 -4
  176. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  177. package/dist/esm/query-builder/insert-result.js +8 -1
  178. package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
  179. package/dist/esm/query-builder/json-path-builder.js +6 -3
  180. package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
  181. package/dist/esm/query-builder/on-conflict-builder.js +2 -7
  182. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  183. package/dist/esm/query-builder/returning-interface.d.ts +3 -2
  184. package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
  185. package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
  186. package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
  187. package/dist/esm/query-builder/select-query-builder.js +5 -2
  188. package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
  189. package/dist/esm/query-builder/update-query-builder.js +3 -3
  190. package/dist/esm/query-builder/where-interface.d.ts +3 -3
  191. package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
  192. package/dist/esm/query-compiler/default-query-compiler.js +65 -12
  193. package/dist/esm/query-creator.d.ts +5 -3
  194. package/dist/esm/query-creator.js +0 -47
  195. package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
  196. package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
  197. package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
  198. package/dist/esm/schema/alter-table-builder.d.ts +41 -1
  199. package/dist/esm/schema/alter-table-builder.js +59 -2
  200. package/dist/esm/schema/column-definition-builder.d.ts +25 -0
  201. package/dist/esm/schema/column-definition-builder.js +27 -0
  202. package/dist/esm/schema/create-index-builder.d.ts +23 -0
  203. package/dist/esm/schema/create-index-builder.js +30 -0
  204. package/dist/esm/schema/create-table-builder.d.ts +28 -2
  205. package/dist/esm/schema/create-table-builder.js +38 -3
  206. package/dist/esm/schema/create-view-builder.d.ts +2 -2
  207. package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
  208. package/dist/esm/schema/unique-constraint-builder.js +21 -0
  209. package/dist/esm/util/infer-result.d.ts +2 -1
  210. package/dist/esm/util/log.js +5 -1
  211. package/dist/esm/util/object-utils.d.ts +1 -1
  212. package/dist/esm/util/type-utils.d.ts +27 -20
  213. package/helpers/mssql.d.ts +1 -0
  214. package/helpers/mssql.js +1 -0
  215. package/package.json +17 -6
@@ -13,6 +13,8 @@ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.j
13
13
  import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
14
14
  import { parseTable } from '../parser/table-parser.js';
15
15
  import { parseOnCommitAction } from '../parser/on-commit-action-parse.js';
16
+ import { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';
17
+ import { parseExpression } from '../parser/expression-parser.js';
16
18
  /**
17
19
  * This builder can be used to create a `create table` query.
18
20
  */
@@ -84,7 +86,7 @@ export class CreateTableBuilder {
84
86
  * ```
85
87
  *
86
88
  * With this method, it's once again good to remember that Kysely just builds the
87
- * query and doesn't provide the same API for all databses. For example, some
89
+ * query and doesn't provide the same API for all databases. For example, some
88
90
  * databases like older MySQL don't support the `references` statement in the
89
91
  * column definition. Instead foreign key constraints need to be defined in the
90
92
  * `create table` query. See the next example:
@@ -143,11 +145,17 @@ export class CreateTableBuilder {
143
145
  * ```ts
144
146
  * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
145
147
  * ```
148
+ *
149
+ * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
150
+ * ```ts
151
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
152
+ * ```
146
153
  */
147
- addUniqueConstraint(constraintName, columns) {
154
+ addUniqueConstraint(constraintName, columns, build = noop) {
155
+ const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));
148
156
  return new CreateTableBuilder({
149
157
  ...this.#props,
150
- node: CreateTableNode.cloneWithConstraint(this.#props.node, UniqueConstraintNode.create(columns, constraintName)),
158
+ node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),
151
159
  });
152
160
  }
153
161
  /**
@@ -270,6 +278,33 @@ export class CreateTableBuilder {
270
278
  node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),
271
279
  });
272
280
  }
281
+ /**
282
+ * Allows to create table from `select` query.
283
+ *
284
+ * ### Examples
285
+ *
286
+ * ```ts
287
+ * db.schema.createTable('copy')
288
+ * .temporary()
289
+ * .as(db.selectFrom('person').select(['first_name', 'last_name']))
290
+ * .execute()
291
+ * ```
292
+ *
293
+ * The generated SQL (PostgreSQL):
294
+ *
295
+ * ```sql
296
+ * create temporary table "copy" as
297
+ * select "first_name", "last_name" from "person"
298
+ * ```
299
+ */
300
+ as(expression) {
301
+ return new CreateTableBuilder({
302
+ ...this.#props,
303
+ node: CreateTableNode.cloneWith(this.#props.node, {
304
+ selectQuery: parseExpression(expression),
305
+ }),
306
+ });
307
+ }
273
308
  /**
274
309
  * Calls the given function passing `this` as the only argument.
275
310
  *
@@ -4,8 +4,8 @@ import { Compilable } from '../util/compilable.js';
4
4
  import { QueryExecutor } from '../query-executor/query-executor.js';
5
5
  import { QueryId } from '../util/query-id.js';
6
6
  import { CreateViewNode } from '../operation-node/create-view-node.js';
7
- import { AnySelectQueryBuilder } from '../util/type-utils.js';
8
7
  import { RawBuilder } from '../raw-builder/raw-builder.js';
8
+ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
9
9
  export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
10
10
  #private;
11
11
  constructor(props: CreateViewBuilderProps);
@@ -31,7 +31,7 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
31
31
  * string opening an SQL injection vulnerability. DO NOT pass unchecked user input
32
32
  * into the query or raw expression passed to this method!
33
33
  */
34
- as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
34
+ as(query: SelectQueryBuilder<any, any, any> | RawBuilder<any>): CreateViewBuilder;
35
35
  /**
36
36
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
37
37
  * what the provided function returns.
@@ -0,0 +1,14 @@
1
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
+ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
3
+ export declare class UniqueConstraintNodeBuilder implements OperationNodeSource {
4
+ #private;
5
+ constructor(node: UniqueConstraintNode);
6
+ toOperationNode(): UniqueConstraintNode;
7
+ /**
8
+ * Adds `nulls not distinct` to the unique constraint definition
9
+ *
10
+ * Supported by PostgreSQL dialect only
11
+ */
12
+ nullsNotDistinct(): UniqueConstraintNodeBuilder;
13
+ }
14
+ export type UniqueConstraintNodeBuilderCallback = (builder: UniqueConstraintNodeBuilder) => UniqueConstraintNodeBuilder;
@@ -0,0 +1,21 @@
1
+ /// <reference types="./unique-constraint-builder.d.ts" />
2
+ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
3
+ import { preventAwait } from '../util/prevent-await.js';
4
+ export class UniqueConstraintNodeBuilder {
5
+ #node;
6
+ constructor(node) {
7
+ this.#node = node;
8
+ }
9
+ toOperationNode() {
10
+ return this.#node;
11
+ }
12
+ /**
13
+ * Adds `nulls not distinct` to the unique constraint definition
14
+ *
15
+ * Supported by PostgreSQL dialect only
16
+ */
17
+ nullsNotDistinct() {
18
+ return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));
19
+ }
20
+ }
21
+ preventAwait(UniqueConstraintNodeBuilder, "don't await UniqueConstraintNodeBuilder instances directly.");
@@ -3,6 +3,7 @@ import { InsertResult } from '../query-builder/insert-result.js';
3
3
  import { UpdateResult } from '../query-builder/update-result.js';
4
4
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
5
5
  import { Compilable } from './compilable.js';
6
+ import { Simplify } from './type-utils.js';
6
7
  /**
7
8
  * A helper type that allows inferring a select/insert/update/delete query's result
8
9
  * type from a query builder or compiled query.
@@ -42,5 +43,5 @@ import { Compilable } from './compilable.js';
42
43
  * ```
43
44
  */
44
45
  export type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
45
- type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
46
+ type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : Simplify<O>[];
46
47
  export {};
@@ -44,7 +44,11 @@ function defaultLogger(event) {
44
44
  console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);
45
45
  }
46
46
  else {
47
- console.error(`kysely:error: ${event}`);
47
+ console.error(`kysely:error: ${JSON.stringify({
48
+ error: event.error,
49
+ query: event.query.sql,
50
+ queryDurationMillis: event.queryDurationMillis,
51
+ })}`);
48
52
  }
49
53
  }
50
54
  }
@@ -6,7 +6,7 @@ export declare function isNumber(obj: unknown): obj is number;
6
6
  export declare function isBoolean(obj: unknown): obj is boolean;
7
7
  export declare function isNull(obj: unknown): obj is null;
8
8
  export declare function isDate(obj: unknown): obj is Date;
9
- export declare function isBigInt(obj: unknown): obj is BigInt;
9
+ export declare function isBigInt(obj: unknown): obj is bigint;
10
10
  export declare function isBuffer(obj: unknown): obj is {
11
11
  length: number;
12
12
  };
@@ -1,4 +1,3 @@
1
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
2
1
  import { InsertResult } from '../query-builder/insert-result.js';
3
2
  import { DeleteResult } from '../query-builder/delete-result.js';
4
3
  import { UpdateResult } from '../query-builder/update-result.js';
@@ -34,15 +33,15 @@ import { KyselyTypeError } from './type-error.js';
34
33
  * // Columns == 'id' | 'name' | 'species'
35
34
  * ```
36
35
  */
37
- export type AnyColumn<DB, TB extends keyof DB> = DrainOuterGeneric<{
36
+ export type AnyColumn<DB, TB extends keyof DB> = {
38
37
  [T in TB]: keyof DB[T];
39
- }[TB] & string>;
38
+ }[TB] & string;
40
39
  /**
41
40
  * Extracts a column type.
42
41
  */
43
- export type ExtractColumnType<DB, TB extends keyof DB, C> = DrainOuterGeneric<{
42
+ export type ExtractColumnType<DB, TB extends keyof DB, C> = {
44
43
  [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
45
- }[TB]>;
44
+ }[TB];
46
45
  /**
47
46
  * Given a database type and a union of table names in that db, returns
48
47
  * a union type with all possible `table`.`column` combinations.
@@ -74,29 +73,21 @@ export type ExtractColumnType<DB, TB extends keyof DB, C> = DrainOuterGeneric<{
74
73
  * // Columns == 'person.id' | 'pet.name' | 'pet.species'
75
74
  * ```
76
75
  */
77
- export type AnyColumnWithTable<DB, TB extends keyof DB> = DrainOuterGeneric<{
78
- [T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]}` : never : never;
79
- }[TB]>;
76
+ export type AnyColumnWithTable<DB, TB extends keyof DB> = {
77
+ [T in TB]: `${T & string}.${keyof DB[T] & string}`;
78
+ }[TB];
80
79
  /**
81
80
  * Just like {@link AnyColumn} but with a ` as <string>` suffix.
82
81
  */
83
- export type AnyAliasedColumn<DB, TB extends keyof DB> = DrainOuterGeneric<{
84
- [T in TB]: T extends string ? keyof DB[T] extends string ? `${keyof DB[T]} as ${string}` : never : never;
85
- }[TB]>;
82
+ export type AnyAliasedColumn<DB, TB extends keyof DB> = `${AnyColumn<DB, TB>} as ${string}`;
86
83
  /**
87
84
  * Just like {@link AnyColumnWithTable} but with a ` as <string>` suffix.
88
85
  */
89
- export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = DrainOuterGeneric<{
90
- [T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]} as ${string}` : never : never;
91
- }[TB]>;
86
+ export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = `${AnyColumnWithTable<DB, TB>} as ${string}`;
92
87
  /**
93
88
  * Extracts the item type of an array.
94
89
  */
95
90
  export type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
96
- /**
97
- * Any select query builder.
98
- */
99
- export type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
100
91
  export type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
101
92
  export type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
102
93
  export type Simplify<T> = DrainOuterGeneric<{
@@ -124,9 +115,25 @@ export type IsAny<T> = 0 extends T & 1 ? true : false;
124
115
  * Evaluates to `true` if the types `T` and `U` are equal.
125
116
  */
126
117
  export type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
127
- export type NarrowPartial<S, T> = DrainOuterGeneric<T extends object ? {
128
- [K in keyof S & string]: K extends keyof T ? T[K] extends S[K] ? T[K] : KyselyTypeError<`$narrowType() call failed: passed type does not exist in '${K}'s type union`> : S[K];
118
+ export type NarrowPartial<O, T> = DrainOuterGeneric<T extends object ? {
119
+ [K in keyof O & string]: K extends keyof T ? T[K] extends NotNull ? Exclude<O[K], null> : T[K] extends O[K] ? T[K] : KyselyTypeError<`$narrowType() call failed: passed type does not exist in '${K}'s type union`> : O[K];
129
120
  } : never>;
121
+ /**
122
+ * A type constant for marking a column as not null. Can be used with `$narrowPartial`.
123
+ *
124
+ * Example:
125
+ *
126
+ * ```ts
127
+ * const person = await db.selectFrom('person')
128
+ * .where('nullable_column', 'is not', null)
129
+ * .selectAll()
130
+ * .$narrowType<{ nullable_column: NotNull }>()
131
+ * .executeTakeFirstOrThrow()
132
+ * ```
133
+ */
134
+ export type NotNull = {
135
+ readonly __notNull__: unique symbol;
136
+ };
130
137
  export type SqlBool = boolean | 0 | 1;
131
138
  /**
132
139
  * Utility to reduce depth of TypeScript's internal type instantiation stack.
@@ -0,0 +1 @@
1
+ export * from '../dist/cjs/helpers/mssql.js'
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/cjs/helpers/mssql.js')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.26.2",
3
+ "version": "0.27.0",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,6 +27,11 @@
27
27
  "require": "./dist/cjs/helpers/mysql.js",
28
28
  "default": "./dist/cjs/helpers/mysql.js"
29
29
  },
30
+ "./helpers/mssql": {
31
+ "import": "./dist/esm/helpers/mssql.js",
32
+ "require": "./dist/cjs/helpers/mssql.js",
33
+ "default": "./dist/cjs/helpers/mssql.js"
34
+ },
30
35
  "./helpers/sqlite": {
31
36
  "import": "./dist/esm/helpers/sqlite.js",
32
37
  "require": "./dist/cjs/helpers/sqlite.js",
@@ -37,10 +42,11 @@
37
42
  "clean": "rm -rf dist & rm -rf test/node/dist & rm -rf test/browser/bundle.js & rm -rf helpers",
38
43
  "test": "npm run build && npm run test:node:build && concurrently -n node,typings,esmimports \"npm run test:node\" \"npm run test:typings\" \"npm run test:esmimports\"",
39
44
  "test:node:build": "tsc -p test/node",
40
- "test:node": "concurrently -n postgres,mysql,sqlite \"npm run test:node:postgres\" \"npm run test:node:mysql\" \"npm run test:node:sqlite\"",
41
- "test:node:postgres": "DIALECT=postgres npm run test:node:run",
42
- "test:node:mysql": "DIALECT=mysql npm run test:node:run",
43
- "test:node:sqlite": "DIALECT=sqlite npm run test:node:run",
45
+ "test:node": "concurrently -n postgres,mysql,mssql,sqlite \"npm run test:node:postgres\" \"npm run test:node:mysql\" \"npm run test:node:mssql\" \"npm run test:node:sqlite\"",
46
+ "test:node:postgres": "cross-env DIALECT=postgres npm run test:node:run",
47
+ "test:node:mysql": "cross-env DIALECT=mysql npm run test:node:run",
48
+ "test:node:mssql": "cross-env DIALECT=mssql npm run test:node:run",
49
+ "test:node:sqlite": "cross-env DIALECT=sqlite npm run test:node:run",
44
50
  "test:node:run": "mocha --reporter min --timeout 15000 test/node/dist/**/*.test.js",
45
51
  "test:browser:build": "rm -rf test/browser/bundle.js && esbuild test/browser/main.ts --bundle --outfile=test/browser/bundle.js",
46
52
  "test:browser": "npm run build && npm run test:browser:build && node test/browser/test.js",
@@ -63,6 +69,7 @@
63
69
  "author": "Sami Koskimäki <sami@jakso.me>",
64
70
  "license": "MIT",
65
71
  "contributors": [
72
+ "Sami Koskimäki <sami@jakso.me>",
66
73
  "Igal Klebanov <igalklebanov@gmail.com>"
67
74
  ],
68
75
  "devDependencies": {
@@ -75,11 +82,13 @@
75
82
  "@types/pg": "^8.10.2",
76
83
  "@types/pg-cursor": "^2.7.0",
77
84
  "@types/sinon": "^10.0.15",
85
+ "@types/tedious": "^4.0.9",
78
86
  "better-sqlite3": "^8.4.0",
79
87
  "chai": "^4.3.7",
80
88
  "chai-as-promised": "^7.1.1",
81
89
  "chai-subset": "^1.6.0",
82
90
  "concurrently": "^8.1.0",
91
+ "cross-env": "^7.0.3",
83
92
  "esbuild": "^0.17.19",
84
93
  "mocha": "^10.2.0",
85
94
  "mysql2": "^3.3.3",
@@ -88,7 +97,9 @@
88
97
  "playwright": "^1.34.3",
89
98
  "prettier": "^2.8.8",
90
99
  "sinon": "^15.1.0",
100
+ "tarn": "^3.0.2",
101
+ "tedious": "^16.4.0",
91
102
  "tsd": "^0.28.1",
92
- "typescript": "^5.1.6"
103
+ "typescript": "^5.2.2"
93
104
  }
94
105
  }