kysely 0.16.1 → 0.16.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.
Files changed (253) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +205 -0
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.js +2 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -205
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-driver.js +10 -2
  7. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +103 -0
  8. package/dist/cjs/dialect/postgres/postgres-dialect-config.js +2 -0
  9. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -103
  10. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +1 -1
  11. package/dist/cjs/dialect/postgres/postgres-driver.js +11 -2
  12. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.js +2 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -43
  15. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +1 -1
  16. package/dist/cjs/dialect/sqlite/sqlite-driver.js +10 -2
  17. package/dist/cjs/index.d.ts +3 -0
  18. package/dist/cjs/index.js +3 -0
  19. package/dist/cjs/migration/migrator.d.ts +2 -2
  20. package/dist/cjs/operation-node/primitive-value-list-node.d.ts +2 -3
  21. package/dist/cjs/operation-node/value-node.d.ts +3 -4
  22. package/dist/cjs/parser/complex-expression-parser.d.ts +1 -0
  23. package/dist/cjs/parser/complex-expression-parser.js +5 -1
  24. package/dist/cjs/parser/default-value-parser.d.ts +2 -3
  25. package/dist/cjs/parser/default-value-parser.js +2 -2
  26. package/dist/cjs/parser/insert-values-parser.js +4 -3
  27. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  28. package/dist/cjs/parser/value-parser.d.ts +2 -3
  29. package/dist/cjs/parser/value-parser.js +6 -7
  30. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  31. package/dist/cjs/query-builder/expression-builder.d.ts +42 -0
  32. package/dist/cjs/query-builder/expression-builder.js +48 -0
  33. package/dist/cjs/query-builder/insert-query-builder.d.ts +16 -0
  34. package/dist/cjs/query-builder/insert-query-builder.js +16 -0
  35. package/dist/cjs/query-builder/on-conflict-builder.d.ts +5 -3
  36. package/dist/cjs/query-compiler/default-query-compiler.d.ts +1 -2
  37. package/dist/cjs/query-creator.d.ts +1 -1
  38. package/dist/cjs/schema/alter-table-builder.d.ts +30 -4
  39. package/dist/cjs/schema/alter-table-builder.js +2 -5
  40. package/dist/cjs/schema/column-definition-builder.d.ts +27 -2
  41. package/dist/cjs/util/object-utils.d.ts +4 -5
  42. package/dist/cjs/util/object-utils.js +8 -16
  43. package/dist/esm/dialect/database-introspector.js +1 -0
  44. package/dist/esm/dialect/dialect-adapter-base.js +1 -0
  45. package/dist/esm/dialect/dialect-adapter.js +1 -0
  46. package/dist/esm/dialect/dialect.js +1 -0
  47. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -0
  48. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +205 -0
  49. package/dist/esm/dialect/mysql/mysql-dialect-config.js +2 -0
  50. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -205
  51. package/dist/esm/dialect/mysql/mysql-dialect.js +1 -0
  52. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  53. package/dist/esm/dialect/mysql/mysql-driver.js +12 -3
  54. package/dist/esm/dialect/mysql/mysql-introspector.js +1 -0
  55. package/dist/esm/dialect/mysql/mysql-query-compiler.js +1 -0
  56. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -0
  57. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +103 -0
  58. package/dist/esm/dialect/postgres/postgres-dialect-config.js +2 -0
  59. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -103
  60. package/dist/esm/dialect/postgres/postgres-dialect.js +1 -0
  61. package/dist/esm/dialect/postgres/postgres-driver.d.ts +1 -1
  62. package/dist/esm/dialect/postgres/postgres-driver.js +12 -2
  63. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -0
  64. package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -0
  65. package/dist/esm/dialect/sqlite/sqlite-adapter.js +1 -0
  66. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
  67. package/dist/esm/dialect/sqlite/sqlite-dialect-config.js +2 -0
  68. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -43
  69. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  70. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +1 -1
  71. package/dist/esm/dialect/sqlite/sqlite-driver.js +11 -2
  72. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  73. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +1 -0
  74. package/dist/esm/driver/connection-provider.js +1 -0
  75. package/dist/esm/driver/database-connection.js +1 -0
  76. package/dist/esm/driver/default-connection-provider.js +1 -0
  77. package/dist/esm/driver/driver.js +1 -0
  78. package/dist/esm/driver/runtime-driver.js +1 -0
  79. package/dist/esm/driver/single-connection-provider.js +1 -0
  80. package/dist/esm/dynamic/dynamic-reference-builder.js +1 -0
  81. package/dist/esm/dynamic/dynamic.js +1 -0
  82. package/dist/esm/index-nodeless.js +1 -0
  83. package/dist/esm/index.d.ts +3 -0
  84. package/dist/esm/index.js +4 -0
  85. package/dist/esm/kysely.js +1 -0
  86. package/dist/esm/migration/file-migration-provider.js +1 -0
  87. package/dist/esm/migration/migrator.d.ts +2 -2
  88. package/dist/esm/migration/migrator.js +1 -0
  89. package/dist/esm/operation-node/add-column-node.js +1 -0
  90. package/dist/esm/operation-node/add-constraint-node.js +1 -0
  91. package/dist/esm/operation-node/alias-node.js +1 -0
  92. package/dist/esm/operation-node/alter-column-node.js +1 -0
  93. package/dist/esm/operation-node/alter-table-node.js +1 -0
  94. package/dist/esm/operation-node/and-node.js +1 -0
  95. package/dist/esm/operation-node/check-constraint-node.js +1 -0
  96. package/dist/esm/operation-node/column-definition-node.js +1 -0
  97. package/dist/esm/operation-node/column-node.js +1 -0
  98. package/dist/esm/operation-node/column-update-node.js +1 -0
  99. package/dist/esm/operation-node/common-table-expression-name-node.js +1 -0
  100. package/dist/esm/operation-node/common-table-expression-node.js +1 -0
  101. package/dist/esm/operation-node/constraint-node.js +1 -0
  102. package/dist/esm/operation-node/create-index-node.js +1 -0
  103. package/dist/esm/operation-node/create-schema-node.js +1 -0
  104. package/dist/esm/operation-node/create-table-node.js +1 -0
  105. package/dist/esm/operation-node/create-view-node.js +1 -0
  106. package/dist/esm/operation-node/data-type-node.js +1 -0
  107. package/dist/esm/operation-node/default-value-node.js +1 -0
  108. package/dist/esm/operation-node/delete-query-node.js +1 -0
  109. package/dist/esm/operation-node/drop-column-node.js +1 -0
  110. package/dist/esm/operation-node/drop-constraint-node.js +1 -0
  111. package/dist/esm/operation-node/drop-index-node.js +1 -0
  112. package/dist/esm/operation-node/drop-schema-node.js +1 -0
  113. package/dist/esm/operation-node/drop-table-node.js +1 -0
  114. package/dist/esm/operation-node/drop-view-node.js +1 -0
  115. package/dist/esm/operation-node/filter-node.js +1 -0
  116. package/dist/esm/operation-node/foreign-key-constraint-node.js +1 -0
  117. package/dist/esm/operation-node/from-node.js +1 -0
  118. package/dist/esm/operation-node/generated-node.js +1 -0
  119. package/dist/esm/operation-node/group-by-item-node.js +1 -0
  120. package/dist/esm/operation-node/group-by-node.js +1 -0
  121. package/dist/esm/operation-node/having-node.js +1 -0
  122. package/dist/esm/operation-node/identifier-node.js +1 -0
  123. package/dist/esm/operation-node/insert-query-node.js +1 -0
  124. package/dist/esm/operation-node/join-node.js +1 -0
  125. package/dist/esm/operation-node/limit-node.js +1 -0
  126. package/dist/esm/operation-node/list-node.js +1 -0
  127. package/dist/esm/operation-node/modify-column-node.js +1 -0
  128. package/dist/esm/operation-node/offset-node.js +1 -0
  129. package/dist/esm/operation-node/on-conflict-node.js +1 -0
  130. package/dist/esm/operation-node/on-duplicate-key-node.js +1 -0
  131. package/dist/esm/operation-node/on-node.js +1 -0
  132. package/dist/esm/operation-node/operation-node-source.js +1 -0
  133. package/dist/esm/operation-node/operation-node-transformer.js +1 -0
  134. package/dist/esm/operation-node/operation-node-utils.js +1 -0
  135. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  136. package/dist/esm/operation-node/operation-node.js +1 -0
  137. package/dist/esm/operation-node/operator-node.js +1 -0
  138. package/dist/esm/operation-node/or-node.js +1 -0
  139. package/dist/esm/operation-node/order-by-item-node.js +1 -0
  140. package/dist/esm/operation-node/order-by-node.js +1 -0
  141. package/dist/esm/operation-node/parens-node.js +1 -0
  142. package/dist/esm/operation-node/primary-constraint-node.js +1 -0
  143. package/dist/esm/operation-node/primitive-value-list-node.d.ts +2 -3
  144. package/dist/esm/operation-node/primitive-value-list-node.js +1 -0
  145. package/dist/esm/operation-node/query-node.js +1 -0
  146. package/dist/esm/operation-node/raw-node.js +1 -0
  147. package/dist/esm/operation-node/reference-node.js +1 -0
  148. package/dist/esm/operation-node/references-node.js +1 -0
  149. package/dist/esm/operation-node/rename-column-node.js +1 -0
  150. package/dist/esm/operation-node/returning-node.js +1 -0
  151. package/dist/esm/operation-node/select-all-node.js +1 -0
  152. package/dist/esm/operation-node/select-query-node.js +1 -0
  153. package/dist/esm/operation-node/selection-node.js +1 -0
  154. package/dist/esm/operation-node/table-node.js +1 -0
  155. package/dist/esm/operation-node/union-node.js +1 -0
  156. package/dist/esm/operation-node/unique-constraint-node.js +1 -0
  157. package/dist/esm/operation-node/update-query-node.js +1 -0
  158. package/dist/esm/operation-node/value-list-node.js +1 -0
  159. package/dist/esm/operation-node/value-node.d.ts +3 -4
  160. package/dist/esm/operation-node/value-node.js +1 -0
  161. package/dist/esm/operation-node/values-node.js +1 -0
  162. package/dist/esm/operation-node/where-node.js +1 -0
  163. package/dist/esm/operation-node/with-node.js +1 -0
  164. package/dist/esm/parser/complex-expression-parser.d.ts +1 -0
  165. package/dist/esm/parser/complex-expression-parser.js +4 -0
  166. package/dist/esm/parser/data-type-parser.js +1 -0
  167. package/dist/esm/parser/default-value-parser.d.ts +2 -3
  168. package/dist/esm/parser/default-value-parser.js +3 -2
  169. package/dist/esm/parser/filter-parser.js +1 -0
  170. package/dist/esm/parser/group-by-parser.js +1 -0
  171. package/dist/esm/parser/insert-values-parser.js +6 -4
  172. package/dist/esm/parser/join-parser.js +1 -0
  173. package/dist/esm/parser/order-by-parser.js +1 -0
  174. package/dist/esm/parser/parse-context.js +1 -0
  175. package/dist/esm/parser/reference-parser.d.ts +2 -3
  176. package/dist/esm/parser/reference-parser.js +2 -1
  177. package/dist/esm/parser/returning-parser.js +1 -0
  178. package/dist/esm/parser/select-parser.js +1 -0
  179. package/dist/esm/parser/table-parser.js +1 -0
  180. package/dist/esm/parser/union-parser.js +1 -0
  181. package/dist/esm/parser/update-set-parser.js +1 -0
  182. package/dist/esm/parser/value-parser.d.ts +2 -3
  183. package/dist/esm/parser/value-parser.js +9 -9
  184. package/dist/esm/parser/with-parser.js +1 -0
  185. package/dist/esm/plugin/camel-case/camel-case-plugin.js +3 -2
  186. package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -0
  187. package/dist/esm/plugin/camel-case/camel-case.js +1 -0
  188. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +1 -0
  189. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +1 -0
  190. package/dist/esm/plugin/kysely-plugin.js +1 -0
  191. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -0
  192. package/dist/esm/plugin/with-schema/with-schema-transformer.js +1 -0
  193. package/dist/esm/query-builder/delete-query-builder.js +1 -0
  194. package/dist/esm/query-builder/delete-result.js +1 -0
  195. package/dist/esm/query-builder/expression-builder.d.ts +42 -0
  196. package/dist/esm/query-builder/expression-builder.js +49 -0
  197. package/dist/esm/query-builder/function-builder.js +1 -0
  198. package/dist/esm/query-builder/having-interface.js +1 -0
  199. package/dist/esm/query-builder/insert-query-builder.d.ts +16 -0
  200. package/dist/esm/query-builder/insert-query-builder.js +17 -0
  201. package/dist/esm/query-builder/insert-result.js +1 -0
  202. package/dist/esm/query-builder/join-builder.js +1 -0
  203. package/dist/esm/query-builder/join-interface.js +1 -0
  204. package/dist/esm/query-builder/no-result-error.js +1 -0
  205. package/dist/esm/query-builder/on-conflict-builder.d.ts +5 -3
  206. package/dist/esm/query-builder/on-conflict-builder.js +1 -0
  207. package/dist/esm/query-builder/returning-interface.js +1 -0
  208. package/dist/esm/query-builder/select-query-builder.js +1 -0
  209. package/dist/esm/query-builder/update-query-builder.js +1 -0
  210. package/dist/esm/query-builder/update-result.js +1 -0
  211. package/dist/esm/query-builder/where-interface.js +1 -0
  212. package/dist/esm/query-compiler/compiled-query.js +1 -0
  213. package/dist/esm/query-compiler/default-query-compiler.d.ts +1 -2
  214. package/dist/esm/query-compiler/default-query-compiler.js +1 -0
  215. package/dist/esm/query-compiler/query-compiler.js +1 -0
  216. package/dist/esm/query-creator.d.ts +1 -1
  217. package/dist/esm/query-creator.js +1 -0
  218. package/dist/esm/query-executor/default-query-executor.js +1 -0
  219. package/dist/esm/query-executor/noop-query-executor.js +1 -0
  220. package/dist/esm/query-executor/query-executor.js +1 -0
  221. package/dist/esm/raw-builder/raw-builder.js +1 -0
  222. package/dist/esm/schema/alter-table-builder.d.ts +30 -4
  223. package/dist/esm/schema/alter-table-builder.js +3 -5
  224. package/dist/esm/schema/column-definition-builder.d.ts +27 -2
  225. package/dist/esm/schema/column-definition-builder.js +1 -0
  226. package/dist/esm/schema/create-index-builder.js +1 -0
  227. package/dist/esm/schema/create-schema-builder.js +1 -0
  228. package/dist/esm/schema/create-table-builder.js +1 -0
  229. package/dist/esm/schema/create-view-builder.js +1 -0
  230. package/dist/esm/schema/drop-index-builder.js +1 -0
  231. package/dist/esm/schema/drop-schema-builder.js +1 -0
  232. package/dist/esm/schema/drop-table-builder.js +1 -0
  233. package/dist/esm/schema/drop-view-builder.js +1 -0
  234. package/dist/esm/schema/foreign-key-constraint-builder.js +1 -0
  235. package/dist/esm/schema/schema.js +1 -0
  236. package/dist/esm/util/assert.js +1 -0
  237. package/dist/esm/util/column-type.js +1 -0
  238. package/dist/esm/util/compilable.js +1 -0
  239. package/dist/esm/util/log.js +1 -0
  240. package/dist/esm/util/object-utils.d.ts +4 -5
  241. package/dist/esm/util/object-utils.js +6 -12
  242. package/dist/esm/util/performance-now.js +1 -0
  243. package/dist/esm/util/prevent-await.js +1 -0
  244. package/dist/esm/util/private-symbols.js +1 -0
  245. package/dist/esm/util/query-id.js +1 -0
  246. package/dist/esm/util/random-string.js +1 -0
  247. package/dist/esm/util/type-utils.js +1 -0
  248. package/package.json +3 -2
  249. package/.prettierignore +0 -1
  250. package/dist/cjs/util/dynamic-import.d.ts +0 -2
  251. package/dist/cjs/util/dynamic-import.js +0 -32
  252. package/dist/esm/util/dynamic-import.d.ts +0 -2
  253. package/dist/esm/util/dynamic-import.js +0 -27
@@ -342,6 +342,22 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
342
342
  * values ($1, $2)
343
343
  * on conflict ("name") do nothing
344
344
  * ```
345
+ *
346
+ * You can refer to the columns of the virtual `excluded` table
347
+ * in a type-safe way using a callback and the `ref` method of
348
+ * `ExpressionBuilder`:
349
+ *
350
+ * ```ts
351
+ * db.insertInto('person')
352
+ * .values(person)
353
+ * .onConflict(oc => oc
354
+ * .column('id')
355
+ * .doUpdateSet({
356
+ * first_name: (eb) => eb.ref('excluded.first_name'),
357
+ * last_name: (eb) => eb.ref('excluded.last_name')
358
+ * })
359
+ * )
360
+ * ```
345
361
  */
346
362
  onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictDoNothingBuilder<DB, TB> | OnConflictUpdateBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
347
363
  /**
@@ -248,6 +248,22 @@ class InsertQueryBuilder {
248
248
  * values ($1, $2)
249
249
  * on conflict ("name") do nothing
250
250
  * ```
251
+ *
252
+ * You can refer to the columns of the virtual `excluded` table
253
+ * in a type-safe way using a callback and the `ref` method of
254
+ * `ExpressionBuilder`:
255
+ *
256
+ * ```ts
257
+ * db.insertInto('person')
258
+ * .values(person)
259
+ * .onConflict(oc => oc
260
+ * .column('id')
261
+ * .doUpdateSet({
262
+ * first_name: (eb) => eb.ref('excluded.first_name'),
263
+ * last_name: (eb) => eb.ref('excluded.last_name')
264
+ * })
265
+ * )
266
+ * ```
251
267
  */
252
268
  onConflict(callback) {
253
269
  return new InsertQueryBuilder({
@@ -377,14 +377,16 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
377
377
  * do update set "first_name" = $3
378
378
  * ```
379
379
  */
380
- doUpdateSet(updates: MutationObject<DB, TB>): OnConflictUpdateBuilder<{
381
- [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
382
- }, TB | 'excluded'>;
380
+ doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
383
381
  }
384
382
  export interface OnConflictBuilderProps {
385
383
  readonly onConflictNode: OnConflictNode;
386
384
  readonly parseContext: ParseContext;
387
385
  }
386
+ export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
387
+ [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
388
+ };
389
+ export declare type OnConflictTables<TB> = TB | 'excluded';
388
390
  export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
389
391
  #private;
390
392
  constructor(props: OnConflictBuilderProps);
@@ -44,7 +44,6 @@ import { ValueNode } from '../operation-node/value-node.js';
44
44
  import { WhereNode } from '../operation-node/where-node.js';
45
45
  import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
46
46
  import { WithNode } from '../operation-node/with-node.js';
47
- import { PrimitiveValue } from '../util/object-utils.js';
48
47
  import { CompiledQuery } from './compiled-query.js';
49
48
  import { RootOperationNode, QueryCompiler } from './query-compiler.js';
50
49
  import { HavingNode } from '../operation-node/having-node.js';
@@ -150,5 +149,5 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
150
149
  protected getRightIdentifierWrapper(): string;
151
150
  protected getCurrentParameterPlaceholder(): string;
152
151
  protected addParameter(parameter: unknown): void;
153
- protected appendImmediateValue(value: PrimitiveValue): void;
152
+ protected appendImmediateValue(value: unknown): void;
154
153
  }
@@ -412,7 +412,7 @@ export declare class QueryCreator<DB> {
412
412
  * @param params - The parameters that will be bound to the `?` and `??` placeholders in
413
413
  * the sql string.
414
414
  */
415
- raw<T = unknown>(sql: string, parameters?: any[]): RawBuilder<T>;
415
+ raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
416
416
  }
417
417
  export interface QueryCreatorProps {
418
418
  readonly executor: QueryExecutor;
@@ -5,13 +5,13 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
5
5
  import { OnModifyForeignAction } from '../operation-node/references-node.js';
6
6
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
7
7
  import { Compilable } from '../util/compilable.js';
8
- import { PrimitiveValue } from '../util/object-utils.js';
9
8
  import { ColumnDefinitionBuilder, ColumnDefinitionBuilderInterface } from './column-definition-builder.js';
10
9
  import { AnyRawBuilder } from '../util/type-utils.js';
11
10
  import { QueryId } from '../util/query-id.js';
12
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
13
12
  import { DataTypeExpression } from '../parser/data-type-parser.js';
14
13
  import { ForeignKeyConstraintBuilder, ForeignKeyConstraintBuilderInterface } from './foreign-key-constraint-builder.js';
14
+ import { DefaultValueExpression } from '../parser/default-value-parser.js';
15
15
  /**
16
16
  * This builder can be used to create a `alter table` query.
17
17
  */
@@ -43,7 +43,7 @@ export declare class AlterColumnBuilder {
43
43
  #private;
44
44
  constructor(props: AlterColumnBuilderProps);
45
45
  setDataType(dataType: ColumnDataType): AlterTableExecutor;
46
- setDefault(value: PrimitiveValue | AnyRawBuilder): AlterTableExecutor;
46
+ setDefault(value: DefaultValueExpression): AlterTableExecutor;
47
47
  dropDefault(): AlterTableExecutor;
48
48
  setNotNull(): AlterTableExecutor;
49
49
  dropNotNull(): AlterTableExecutor;
@@ -141,8 +141,21 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
141
141
  * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
142
142
  * .execute()
143
143
  * ```
144
+ *
145
+ * Raw expressions are also supported:
146
+ *
147
+ * ```ts
148
+ * db.schema
149
+ * .createTable('pet')
150
+ * .addColumn(
151
+ * 'number_of_legs',
152
+ * 'integer',
153
+ * (col) => col.defaultTo(db.raw('any SQL here'))
154
+ * )
155
+ * .execute()
156
+ * ```
144
157
  */
145
- defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
158
+ defaultTo(value: DefaultValueExpression): AlterTableAddColumnBuilder;
146
159
  /**
147
160
  * Adds a check constraint for the column.
148
161
  *
@@ -286,8 +299,21 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
286
299
  * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
287
300
  * .execute()
288
301
  * ```
302
+ *
303
+ * Raw expressions are also supported:
304
+ *
305
+ * ```ts
306
+ * db.schema
307
+ * .createTable('pet')
308
+ * .addColumn(
309
+ * 'number_of_legs',
310
+ * 'integer',
311
+ * (col) => col.defaultTo(db.raw('any SQL here'))
312
+ * )
313
+ * .execute()
314
+ * ```
289
315
  */
290
- defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
316
+ defaultTo(value: DefaultValueExpression): AlterTableModifyColumnBuilder;
291
317
  /**
292
318
  * Adds a check constraint for the column.
293
319
  *
@@ -8,10 +8,8 @@ const column_definition_node_js_1 = require("../operation-node/column-definition
8
8
  const data_type_node_js_1 = require("../operation-node/data-type-node.js");
9
9
  const drop_column_node_js_1 = require("../operation-node/drop-column-node.js");
10
10
  const identifier_node_js_1 = require("../operation-node/identifier-node.js");
11
- const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
12
11
  const rename_column_node_js_1 = require("../operation-node/rename-column-node.js");
13
12
  const table_node_js_1 = require("../operation-node/table-node.js");
14
- const value_node_js_1 = require("../operation-node/value-node.js");
15
13
  const object_utils_js_1 = require("../util/object-utils.js");
16
14
  const prevent_await_js_1 = require("../util/prevent-await.js");
17
15
  const column_definition_builder_js_1 = require("./column-definition-builder.js");
@@ -23,6 +21,7 @@ const unique_constraint_node_js_1 = require("../operation-node/unique-constraint
23
21
  const check_constraint_node_js_1 = require("../operation-node/check-constraint-node.js");
24
22
  const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-constraint-node.js");
25
23
  const column_node_js_1 = require("../operation-node/column-node.js");
24
+ const default_value_parser_js_1 = require("../parser/default-value-parser.js");
26
25
  /**
27
26
  * This builder can be used to create a `alter table` query.
28
27
  */
@@ -130,9 +129,7 @@ class AlterColumnBuilder {
130
129
  ...this.#props,
131
130
  alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
132
131
  alterColumn: alter_column_node_js_1.AlterColumnNode.cloneWith(this.#props.alterColumnNode, {
133
- setDefault: (0, operation_node_source_js_1.isOperationNodeSource)(value)
134
- ? value.toOperationNode()
135
- : value_node_js_1.ValueNode.createImmediate(value),
132
+ setDefault: (0, default_value_parser_js_1.parseDefaultValueExpression)(value),
136
133
  }),
137
134
  }),
138
135
  });
@@ -1,6 +1,5 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
2
  import { OnModifyForeignAction } from '../operation-node/references-node.js';
3
- import { PrimitiveValue } from '../util/object-utils.js';
4
3
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
5
4
  import { AnyRawBuilder } from '../util/type-utils.js';
6
5
  import { DefaultValueExpression } from '../parser/default-value-parser.js';
@@ -83,8 +82,21 @@ export interface ColumnDefinitionBuilderInterface {
83
82
  * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
84
83
  * .execute()
85
84
  * ```
85
+ *
86
+ * Raw expressions are also supported:
87
+ *
88
+ * ```ts
89
+ * db.schema
90
+ * .createTable('pet')
91
+ * .addColumn(
92
+ * 'number_of_legs',
93
+ * 'integer',
94
+ * (col) => col.defaultTo(db.raw('any SQL here'))
95
+ * )
96
+ * .execute()
97
+ * ```
86
98
  */
87
- defaultTo(value: PrimitiveValue | AnyRawBuilder): ColumnDefinitionBuilderInterface;
99
+ defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilderInterface;
88
100
  /**
89
101
  * Adds a check constraint for the column.
90
102
  *
@@ -222,6 +234,19 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
222
234
  * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
223
235
  * .execute()
224
236
  * ```
237
+ *
238
+ * Raw expressions are also supported:
239
+ *
240
+ * ```ts
241
+ * db.schema
242
+ * .createTable('pet')
243
+ * .addColumn(
244
+ * 'number_of_legs',
245
+ * 'integer',
246
+ * (col) => col.defaultTo(db.raw('any SQL here'))
247
+ * )
248
+ * .execute()
249
+ * ```
225
250
  */
226
251
  defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
227
252
  /**
@@ -1,14 +1,13 @@
1
- /// <reference types="node" />
2
- export declare type PrimitiveValue = string | number | boolean | null | Date | Buffer | BigInt;
3
- export declare function isEmpty(obj: ArrayLike<unknown> | string | object | Buffer): boolean;
1
+ export declare function isEmpty(obj: ArrayLike<unknown> | string | object): boolean;
4
2
  export declare function isString(obj: unknown): obj is string;
5
3
  export declare function isNumber(obj: unknown): obj is number;
6
4
  export declare function isBoolean(obj: unknown): obj is boolean;
7
5
  export declare function isNull(obj: unknown): obj is null;
8
6
  export declare function isDate(obj: unknown): obj is Date;
9
- export declare function isBuffer(obj: unknown): obj is Buffer;
10
7
  export declare function isBigInt(obj: unknown): obj is BigInt;
11
- export declare function isPrimitive(obj: unknown): obj is PrimitiveValue;
8
+ export declare function isBuffer(obj: unknown): obj is {
9
+ length: number;
10
+ };
12
11
  export declare function isFunction(obj: unknown): obj is Function;
13
12
  export declare function isObject(obj: unknown): obj is Record<string, unknown>;
14
13
  export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isPrimitive = exports.isBigInt = exports.isBuffer = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
3
+ exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
4
4
  function isEmpty(obj) {
5
- if (Array.isArray(obj) || isString(obj) || Buffer.isBuffer(obj)) {
5
+ if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
6
6
  return obj.length === 0;
7
7
  }
8
8
  else if (obj) {
@@ -31,24 +31,16 @@ function isDate(obj) {
31
31
  return obj instanceof Date;
32
32
  }
33
33
  exports.isDate = isDate;
34
- function isBuffer(obj) {
35
- return Buffer.isBuffer(obj);
36
- }
37
- exports.isBuffer = isBuffer;
38
34
  function isBigInt(obj) {
39
35
  return typeof obj === 'bigint';
40
36
  }
41
37
  exports.isBigInt = isBigInt;
42
- function isPrimitive(obj) {
43
- return (isString(obj) ||
44
- isNumber(obj) ||
45
- isBoolean(obj) ||
46
- isNull(obj) ||
47
- isDate(obj) ||
48
- isBuffer(obj) ||
49
- isBigInt(obj));
50
- }
51
- exports.isPrimitive = isPrimitive;
38
+ // Don't change the returnd type to `obj is Buffer` to not create a
39
+ // hard dependency to node.
40
+ function isBuffer(obj) {
41
+ return typeof Buffer !== 'undefined' && Buffer.isBuffer(obj);
42
+ }
43
+ exports.isBuffer = isBuffer;
52
44
  function isFunction(obj) {
53
45
  return typeof obj === 'function';
54
46
  }
@@ -1 +1,2 @@
1
+ /// <reference types="./database-introspector.d.ts" />
1
2
  export {};
@@ -1,3 +1,4 @@
1
+ /// <reference types="./dialect-adapter-base.d.ts" />
1
2
  /**
2
3
  * A basic implementation of `DialectAdapter` with sensible default values.
3
4
  * 3rd party dialects can extend this instead of implementing the `DialectAdapter`
@@ -1 +1,2 @@
1
+ /// <reference types="./dialect-adapter.d.ts" />
1
2
  export {};
@@ -1 +1,2 @@
1
+ /// <reference types="./dialect.d.ts" />
1
2
  export {};
@@ -1,3 +1,4 @@
1
+ /// <reference types="./mysql-adapter.d.ts" />
1
2
  import { DialectAdapterBase } from '../dialect-adapter-base.js';
2
3
  const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
3
4
  const LOCK_TIMEOUT_SECONDS = 60 * 60;
@@ -0,0 +1,205 @@
1
+ import { DatabaseConnection } from '../../driver/database-connection.js';
2
+ /**
3
+ * Config for the MySQL dialect.
4
+ *
5
+ * This interface is equal to `mysql2` library's pool config.
6
+ *
7
+ * https://github.com/sidorares/node-mysql2#using-connection-pools
8
+ */
9
+ export interface MysqlDialectConfig {
10
+ /**
11
+ * The MySQL user to authenticate as
12
+ */
13
+ user?: string;
14
+ /**
15
+ * The password of that MySQL user
16
+ */
17
+ password?: string;
18
+ /**
19
+ * Name of the database to use for this connection
20
+ */
21
+ database?: string;
22
+ /**
23
+ * The charset for the connection. This is called 'collation' in the SQL-level of MySQL (like utf8_general_ci).
24
+ * If a SQL-level charset is specified (like utf8mb4) then the default collation for that charset is used.
25
+ * (Default: 'UTF8_GENERAL_CI')
26
+ */
27
+ charset?: string;
28
+ /**
29
+ * The hostname of the database you are connecting to. (Default: localhost)
30
+ */
31
+ host?: string;
32
+ /**
33
+ * The port number to connect to. (Default: 3306)
34
+ */
35
+ port?: number;
36
+ /**
37
+ * The source IP address to use for TCP connection
38
+ */
39
+ localAddress?: string;
40
+ /**
41
+ * The path to a unix domain socket to connect to. When used host and port are ignored
42
+ */
43
+ socketPath?: string;
44
+ /**
45
+ * The timezone used to store local dates. (Default: 'local')
46
+ */
47
+ timezone?: string | 'local';
48
+ /**
49
+ * The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: 10 seconds)
50
+ */
51
+ connectTimeout?: number;
52
+ /**
53
+ * Stringify objects instead of converting to values. (Default: 'false')
54
+ */
55
+ stringifyObjects?: boolean;
56
+ /**
57
+ * Allow connecting to MySQL instances that ask for the old (insecure) authentication method. (Default: false)
58
+ */
59
+ insecureAuth?: boolean;
60
+ /**
61
+ * Determines if column values should be converted to native JavaScript types. It is not recommended (and may go away / change in the future)
62
+ * to disable type casting, but you can currently do so on either the connection or query level. (Default: true)
63
+ *
64
+ * You can also specify a function (field: any, next: () => void) => {} to do the type casting yourself.
65
+ *
66
+ * WARNING: YOU MUST INVOKE the parser using one of these three field functions in your custom typeCast callback. They can only be called once.
67
+ *
68
+ * field.string()
69
+ * field.buffer()
70
+ * field.geometry()
71
+ *
72
+ * are aliases for
73
+ *
74
+ * parser.parseLengthCodedString()
75
+ * parser.parseLengthCodedBuffer()
76
+ * parser.parseGeometryValue()
77
+ *
78
+ * You can find which field function you need to use by looking at: RowDataPacket.prototype._typeCast
79
+ */
80
+ typeCast?: boolean | ((field: any, next: () => void) => any);
81
+ /**
82
+ * A custom query format function
83
+ */
84
+ queryFormat?: (query: string, values: any) => void;
85
+ /**
86
+ * When dealing with big numbers (BIGINT and DECIMAL columns) in the database, you should enable this option
87
+ * (Default: false)
88
+ */
89
+ supportBigNumbers?: boolean;
90
+ /**
91
+ * Enabling both supportBigNumbers and bigNumberStrings forces big numbers (BIGINT and DECIMAL columns) to be
92
+ * always returned as JavaScript String objects (Default: false). Enabling supportBigNumbers but leaving
93
+ * bigNumberStrings disabled will return big numbers as String objects only when they cannot be accurately
94
+ * represented with [JavaScript Number objects] (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)
95
+ * (which happens when they exceed the [-2^53, +2^53] range), otherwise they will be returned as Number objects.
96
+ * This option is ignored if supportBigNumbers is disabled.
97
+ */
98
+ bigNumberStrings?: boolean;
99
+ /**
100
+ * Force date types (TIMESTAMP, DATETIME, DATE) to be returned as strings rather then inflated into JavaScript Date
101
+ * objects. Can be true/false or an array of type names to keep as strings.
102
+ *
103
+ * (Default: false)
104
+ */
105
+ dateStrings?: boolean | Array<'TIMESTAMP' | 'DATETIME' | 'DATE'>;
106
+ /**
107
+ * This will print all incoming and outgoing packets on stdout.
108
+ * You can also restrict debugging to packet types by passing an array of types (strings) to debug;
109
+ *
110
+ * (Default: false)
111
+ */
112
+ debug?: any;
113
+ /**
114
+ * Generates stack traces on Error to include call site of library entrance ('long stack traces'). Slight
115
+ * performance penalty for most calls. (Default: true)
116
+ */
117
+ trace?: boolean;
118
+ /**
119
+ * Allow multiple MySQL statements per query. Be careful with this, it exposes you to SQL injection attacks. (Default: false)
120
+ */
121
+ multipleStatements?: boolean;
122
+ /**
123
+ * List of connection flags to use other than the default ones. It is also possible to blacklist default ones
124
+ */
125
+ flags?: Array<string>;
126
+ /**
127
+ * object with ssl parameters or a string containing name of ssl profile
128
+ */
129
+ ssl?: string | MysqlSslOptions;
130
+ /**
131
+ * Return each row as an array, not as an object.
132
+ * This is useful when you have duplicate column names.
133
+ * This can also be set in the `QueryOption` object to be applied per-query.
134
+ */
135
+ rowsAsArray?: boolean;
136
+ /**
137
+ * The milliseconds before a timeout occurs during the connection acquisition. This is slightly different from connectTimeout,
138
+ * because acquiring a pool connection does not always involve making a connection. (Default: 10 seconds)
139
+ */
140
+ acquireTimeout?: number;
141
+ /**
142
+ * Determines the pool's action when no connections are available and the limit has been reached. If true, the pool will queue
143
+ * the connection request and call it when one becomes available. If false, the pool will immediately call back with an error.
144
+ * (Default: true)
145
+ */
146
+ waitForConnections?: boolean;
147
+ /**
148
+ * The maximum number of connections to create at once. (Default: 10)
149
+ */
150
+ connectionLimit?: number;
151
+ /**
152
+ * The maximum number of connection requests the pool will queue before returning an error from getConnection. If set to 0, there
153
+ * is no limit to the number of queued connection requests. (Default: 0)
154
+ */
155
+ queueLimit?: number;
156
+ /**
157
+ * Enable keep-alive on the socket. It's disabled by default, but the
158
+ * user can enable it and supply an initial delay.
159
+ */
160
+ enableKeepAlive?: true;
161
+ /**
162
+ * If keep-alive is enabled users can supply an initial delay.
163
+ */
164
+ keepAliveInitialDelay?: number;
165
+ /**
166
+ * Called once for each created connection.
167
+ *
168
+ * This is a Kysely specific feature and does not come from the `mysql2` module.
169
+ */
170
+ onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
171
+ }
172
+ export interface MysqlSslOptions {
173
+ /**
174
+ * A string or buffer holding the PFX or PKCS12 encoded private key, certificate and CA certificates
175
+ */
176
+ pfx?: string;
177
+ /**
178
+ * A string holding the PEM encoded private key
179
+ */
180
+ key?: string;
181
+ /**
182
+ * A string of passphrase for the private key or pfx
183
+ */
184
+ passphrase?: string;
185
+ /**
186
+ * A string holding the PEM encoded certificate
187
+ */
188
+ cert?: string;
189
+ /**
190
+ * Either a string or list of strings of PEM encoded CA certificates to trust.
191
+ */
192
+ ca?: string | string[];
193
+ /**
194
+ * Either a string or list of strings of PEM encoded CRLs (Certificate Revocation List)
195
+ */
196
+ crl?: string | string[];
197
+ /**
198
+ * A string describing the ciphers to use or exclude
199
+ */
200
+ ciphers?: string;
201
+ /**
202
+ * You can also connect to a MySQL server without properly providing the appropriate CA to trust. You should not do this.
203
+ */
204
+ rejectUnauthorized?: boolean;
205
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="./mysql-dialect-config.d.ts" />
2
+ export {};