kysely 0.16.2 → 0.16.6

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 (265) 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/driver/dummy-driver.d.ts +40 -0
  18. package/dist/cjs/driver/dummy-driver.js +34 -0
  19. package/dist/cjs/driver/runtime-driver.d.ts +1 -1
  20. package/dist/cjs/driver/runtime-driver.js +30 -33
  21. package/dist/cjs/index-nodeless.d.ts +1 -0
  22. package/dist/cjs/index-nodeless.js +1 -0
  23. package/dist/cjs/index.d.ts +3 -0
  24. package/dist/cjs/index.js +3 -0
  25. package/dist/cjs/migration/migrator.d.ts +2 -2
  26. package/dist/cjs/operation-node/primitive-value-list-node.d.ts +2 -3
  27. package/dist/cjs/operation-node/value-node.d.ts +3 -4
  28. package/dist/cjs/parser/complex-expression-parser.d.ts +1 -0
  29. package/dist/cjs/parser/complex-expression-parser.js +5 -1
  30. package/dist/cjs/parser/default-value-parser.d.ts +2 -3
  31. package/dist/cjs/parser/default-value-parser.js +2 -2
  32. package/dist/cjs/parser/insert-values-parser.js +4 -3
  33. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  34. package/dist/cjs/parser/value-parser.d.ts +2 -3
  35. package/dist/cjs/parser/value-parser.js +6 -7
  36. package/dist/cjs/query-builder/expression-builder.d.ts +42 -0
  37. package/dist/cjs/query-builder/expression-builder.js +48 -0
  38. package/dist/cjs/query-builder/insert-query-builder.d.ts +16 -0
  39. package/dist/cjs/query-builder/insert-query-builder.js +16 -0
  40. package/dist/cjs/query-builder/on-conflict-builder.d.ts +5 -3
  41. package/dist/cjs/query-compiler/default-query-compiler.d.ts +1 -2
  42. package/dist/cjs/query-creator.d.ts +1 -1
  43. package/dist/cjs/schema/alter-table-builder.d.ts +30 -4
  44. package/dist/cjs/schema/alter-table-builder.js +2 -5
  45. package/dist/cjs/schema/column-definition-builder.d.ts +27 -2
  46. package/dist/cjs/util/log.d.ts +1 -0
  47. package/dist/cjs/util/log.js +3 -0
  48. package/dist/cjs/util/object-utils.d.ts +4 -5
  49. package/dist/cjs/util/object-utils.js +3 -11
  50. package/dist/esm/dialect/database-introspector.js +1 -0
  51. package/dist/esm/dialect/dialect-adapter-base.js +1 -0
  52. package/dist/esm/dialect/dialect-adapter.js +1 -0
  53. package/dist/esm/dialect/dialect.js +1 -0
  54. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -0
  55. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +205 -0
  56. package/dist/esm/dialect/mysql/mysql-dialect-config.js +2 -0
  57. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -205
  58. package/dist/esm/dialect/mysql/mysql-dialect.js +1 -0
  59. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  60. package/dist/esm/dialect/mysql/mysql-driver.js +12 -3
  61. package/dist/esm/dialect/mysql/mysql-introspector.js +1 -0
  62. package/dist/esm/dialect/mysql/mysql-query-compiler.js +1 -0
  63. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -0
  64. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +103 -0
  65. package/dist/esm/dialect/postgres/postgres-dialect-config.js +2 -0
  66. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -103
  67. package/dist/esm/dialect/postgres/postgres-dialect.js +1 -0
  68. package/dist/esm/dialect/postgres/postgres-driver.d.ts +1 -1
  69. package/dist/esm/dialect/postgres/postgres-driver.js +12 -2
  70. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -0
  71. package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -0
  72. package/dist/esm/dialect/sqlite/sqlite-adapter.js +1 -0
  73. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
  74. package/dist/esm/dialect/sqlite/sqlite-dialect-config.js +2 -0
  75. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -43
  76. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  77. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +1 -1
  78. package/dist/esm/dialect/sqlite/sqlite-driver.js +11 -2
  79. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  80. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +1 -0
  81. package/dist/esm/driver/connection-provider.js +1 -0
  82. package/dist/esm/driver/database-connection.js +1 -0
  83. package/dist/esm/driver/default-connection-provider.js +1 -0
  84. package/dist/esm/driver/driver.js +1 -0
  85. package/dist/esm/driver/dummy-driver.d.ts +40 -0
  86. package/dist/esm/driver/dummy-driver.js +31 -0
  87. package/dist/esm/driver/runtime-driver.d.ts +1 -1
  88. package/dist/esm/driver/runtime-driver.js +30 -32
  89. package/dist/esm/driver/single-connection-provider.js +1 -0
  90. package/dist/esm/dynamic/dynamic-reference-builder.js +1 -0
  91. package/dist/esm/dynamic/dynamic.js +1 -0
  92. package/dist/esm/index-nodeless.d.ts +1 -0
  93. package/dist/esm/index-nodeless.js +2 -0
  94. package/dist/esm/index.d.ts +3 -0
  95. package/dist/esm/index.js +4 -0
  96. package/dist/esm/kysely.js +1 -0
  97. package/dist/esm/migration/file-migration-provider.js +1 -0
  98. package/dist/esm/migration/migrator.d.ts +2 -2
  99. package/dist/esm/migration/migrator.js +1 -0
  100. package/dist/esm/operation-node/add-column-node.js +1 -0
  101. package/dist/esm/operation-node/add-constraint-node.js +1 -0
  102. package/dist/esm/operation-node/alias-node.js +1 -0
  103. package/dist/esm/operation-node/alter-column-node.js +1 -0
  104. package/dist/esm/operation-node/alter-table-node.js +1 -0
  105. package/dist/esm/operation-node/and-node.js +1 -0
  106. package/dist/esm/operation-node/check-constraint-node.js +1 -0
  107. package/dist/esm/operation-node/column-definition-node.js +1 -0
  108. package/dist/esm/operation-node/column-node.js +1 -0
  109. package/dist/esm/operation-node/column-update-node.js +1 -0
  110. package/dist/esm/operation-node/common-table-expression-name-node.js +1 -0
  111. package/dist/esm/operation-node/common-table-expression-node.js +1 -0
  112. package/dist/esm/operation-node/constraint-node.js +1 -0
  113. package/dist/esm/operation-node/create-index-node.js +1 -0
  114. package/dist/esm/operation-node/create-schema-node.js +1 -0
  115. package/dist/esm/operation-node/create-table-node.js +1 -0
  116. package/dist/esm/operation-node/create-view-node.js +1 -0
  117. package/dist/esm/operation-node/data-type-node.js +1 -0
  118. package/dist/esm/operation-node/default-value-node.js +1 -0
  119. package/dist/esm/operation-node/delete-query-node.js +1 -0
  120. package/dist/esm/operation-node/drop-column-node.js +1 -0
  121. package/dist/esm/operation-node/drop-constraint-node.js +1 -0
  122. package/dist/esm/operation-node/drop-index-node.js +1 -0
  123. package/dist/esm/operation-node/drop-schema-node.js +1 -0
  124. package/dist/esm/operation-node/drop-table-node.js +1 -0
  125. package/dist/esm/operation-node/drop-view-node.js +1 -0
  126. package/dist/esm/operation-node/filter-node.js +1 -0
  127. package/dist/esm/operation-node/foreign-key-constraint-node.js +1 -0
  128. package/dist/esm/operation-node/from-node.js +1 -0
  129. package/dist/esm/operation-node/generated-node.js +1 -0
  130. package/dist/esm/operation-node/group-by-item-node.js +1 -0
  131. package/dist/esm/operation-node/group-by-node.js +1 -0
  132. package/dist/esm/operation-node/having-node.js +1 -0
  133. package/dist/esm/operation-node/identifier-node.js +1 -0
  134. package/dist/esm/operation-node/insert-query-node.js +1 -0
  135. package/dist/esm/operation-node/join-node.js +1 -0
  136. package/dist/esm/operation-node/limit-node.js +1 -0
  137. package/dist/esm/operation-node/list-node.js +1 -0
  138. package/dist/esm/operation-node/modify-column-node.js +1 -0
  139. package/dist/esm/operation-node/offset-node.js +1 -0
  140. package/dist/esm/operation-node/on-conflict-node.js +1 -0
  141. package/dist/esm/operation-node/on-duplicate-key-node.js +1 -0
  142. package/dist/esm/operation-node/on-node.js +1 -0
  143. package/dist/esm/operation-node/operation-node-source.js +1 -0
  144. package/dist/esm/operation-node/operation-node-transformer.js +1 -0
  145. package/dist/esm/operation-node/operation-node-utils.js +1 -0
  146. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  147. package/dist/esm/operation-node/operation-node.js +1 -0
  148. package/dist/esm/operation-node/operator-node.js +1 -0
  149. package/dist/esm/operation-node/or-node.js +1 -0
  150. package/dist/esm/operation-node/order-by-item-node.js +1 -0
  151. package/dist/esm/operation-node/order-by-node.js +1 -0
  152. package/dist/esm/operation-node/parens-node.js +1 -0
  153. package/dist/esm/operation-node/primary-constraint-node.js +1 -0
  154. package/dist/esm/operation-node/primitive-value-list-node.d.ts +2 -3
  155. package/dist/esm/operation-node/primitive-value-list-node.js +1 -0
  156. package/dist/esm/operation-node/query-node.js +1 -0
  157. package/dist/esm/operation-node/raw-node.js +1 -0
  158. package/dist/esm/operation-node/reference-node.js +1 -0
  159. package/dist/esm/operation-node/references-node.js +1 -0
  160. package/dist/esm/operation-node/rename-column-node.js +1 -0
  161. package/dist/esm/operation-node/returning-node.js +1 -0
  162. package/dist/esm/operation-node/select-all-node.js +1 -0
  163. package/dist/esm/operation-node/select-query-node.js +1 -0
  164. package/dist/esm/operation-node/selection-node.js +1 -0
  165. package/dist/esm/operation-node/table-node.js +1 -0
  166. package/dist/esm/operation-node/union-node.js +1 -0
  167. package/dist/esm/operation-node/unique-constraint-node.js +1 -0
  168. package/dist/esm/operation-node/update-query-node.js +1 -0
  169. package/dist/esm/operation-node/value-list-node.js +1 -0
  170. package/dist/esm/operation-node/value-node.d.ts +3 -4
  171. package/dist/esm/operation-node/value-node.js +1 -0
  172. package/dist/esm/operation-node/values-node.js +1 -0
  173. package/dist/esm/operation-node/where-node.js +1 -0
  174. package/dist/esm/operation-node/with-node.js +1 -0
  175. package/dist/esm/parser/complex-expression-parser.d.ts +1 -0
  176. package/dist/esm/parser/complex-expression-parser.js +4 -0
  177. package/dist/esm/parser/data-type-parser.js +1 -0
  178. package/dist/esm/parser/default-value-parser.d.ts +2 -3
  179. package/dist/esm/parser/default-value-parser.js +3 -2
  180. package/dist/esm/parser/filter-parser.js +1 -0
  181. package/dist/esm/parser/group-by-parser.js +1 -0
  182. package/dist/esm/parser/insert-values-parser.js +6 -4
  183. package/dist/esm/parser/join-parser.js +1 -0
  184. package/dist/esm/parser/order-by-parser.js +1 -0
  185. package/dist/esm/parser/parse-context.js +1 -0
  186. package/dist/esm/parser/reference-parser.d.ts +2 -3
  187. package/dist/esm/parser/reference-parser.js +2 -1
  188. package/dist/esm/parser/returning-parser.js +1 -0
  189. package/dist/esm/parser/select-parser.js +1 -0
  190. package/dist/esm/parser/table-parser.js +1 -0
  191. package/dist/esm/parser/union-parser.js +1 -0
  192. package/dist/esm/parser/update-set-parser.js +1 -0
  193. package/dist/esm/parser/value-parser.d.ts +2 -3
  194. package/dist/esm/parser/value-parser.js +9 -9
  195. package/dist/esm/parser/with-parser.js +1 -0
  196. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -0
  197. package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -0
  198. package/dist/esm/plugin/camel-case/camel-case.js +1 -0
  199. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +1 -0
  200. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +1 -0
  201. package/dist/esm/plugin/kysely-plugin.js +1 -0
  202. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -0
  203. package/dist/esm/plugin/with-schema/with-schema-transformer.js +1 -0
  204. package/dist/esm/query-builder/delete-query-builder.js +1 -0
  205. package/dist/esm/query-builder/delete-result.js +1 -0
  206. package/dist/esm/query-builder/expression-builder.d.ts +42 -0
  207. package/dist/esm/query-builder/expression-builder.js +49 -0
  208. package/dist/esm/query-builder/function-builder.js +1 -0
  209. package/dist/esm/query-builder/having-interface.js +1 -0
  210. package/dist/esm/query-builder/insert-query-builder.d.ts +16 -0
  211. package/dist/esm/query-builder/insert-query-builder.js +17 -0
  212. package/dist/esm/query-builder/insert-result.js +1 -0
  213. package/dist/esm/query-builder/join-builder.js +1 -0
  214. package/dist/esm/query-builder/join-interface.js +1 -0
  215. package/dist/esm/query-builder/no-result-error.js +1 -0
  216. package/dist/esm/query-builder/on-conflict-builder.d.ts +5 -3
  217. package/dist/esm/query-builder/on-conflict-builder.js +1 -0
  218. package/dist/esm/query-builder/returning-interface.js +1 -0
  219. package/dist/esm/query-builder/select-query-builder.js +1 -0
  220. package/dist/esm/query-builder/update-query-builder.js +1 -0
  221. package/dist/esm/query-builder/update-result.js +1 -0
  222. package/dist/esm/query-builder/where-interface.js +1 -0
  223. package/dist/esm/query-compiler/compiled-query.js +1 -0
  224. package/dist/esm/query-compiler/default-query-compiler.d.ts +1 -2
  225. package/dist/esm/query-compiler/default-query-compiler.js +1 -0
  226. package/dist/esm/query-compiler/query-compiler.js +1 -0
  227. package/dist/esm/query-creator.d.ts +1 -1
  228. package/dist/esm/query-creator.js +1 -0
  229. package/dist/esm/query-executor/default-query-executor.js +1 -0
  230. package/dist/esm/query-executor/noop-query-executor.js +1 -0
  231. package/dist/esm/query-executor/query-executor.js +1 -0
  232. package/dist/esm/raw-builder/raw-builder.js +1 -0
  233. package/dist/esm/schema/alter-table-builder.d.ts +30 -4
  234. package/dist/esm/schema/alter-table-builder.js +3 -5
  235. package/dist/esm/schema/column-definition-builder.d.ts +27 -2
  236. package/dist/esm/schema/column-definition-builder.js +1 -0
  237. package/dist/esm/schema/create-index-builder.js +1 -0
  238. package/dist/esm/schema/create-schema-builder.js +1 -0
  239. package/dist/esm/schema/create-table-builder.js +1 -0
  240. package/dist/esm/schema/create-view-builder.js +1 -0
  241. package/dist/esm/schema/drop-index-builder.js +1 -0
  242. package/dist/esm/schema/drop-schema-builder.js +1 -0
  243. package/dist/esm/schema/drop-table-builder.js +1 -0
  244. package/dist/esm/schema/drop-view-builder.js +1 -0
  245. package/dist/esm/schema/foreign-key-constraint-builder.js +1 -0
  246. package/dist/esm/schema/schema.js +1 -0
  247. package/dist/esm/util/assert.js +1 -0
  248. package/dist/esm/util/column-type.js +1 -0
  249. package/dist/esm/util/compilable.js +1 -0
  250. package/dist/esm/util/log.d.ts +1 -0
  251. package/dist/esm/util/log.js +4 -0
  252. package/dist/esm/util/object-utils.d.ts +4 -5
  253. package/dist/esm/util/object-utils.js +3 -9
  254. package/dist/esm/util/performance-now.js +1 -0
  255. package/dist/esm/util/prevent-await.js +1 -0
  256. package/dist/esm/util/private-symbols.js +1 -0
  257. package/dist/esm/util/query-id.js +1 -0
  258. package/dist/esm/util/random-string.js +1 -0
  259. package/dist/esm/util/type-utils.js +1 -0
  260. package/package.json +11 -6
  261. package/.prettierignore +0 -1
  262. package/dist/cjs/util/dynamic-import.d.ts +0 -2
  263. package/dist/cjs/util/dynamic-import.js +0 -32
  264. package/dist/esm/util/dynamic-import.d.ts +0 -2
  265. package/dist/esm/util/dynamic-import.js +0 -27
@@ -2,7 +2,6 @@ import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
4
4
  import { ReferenceNode } from '../operation-node/reference-node.js';
5
- import { PrimitiveValue } from '../util/object-utils.js';
6
5
  import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
7
6
  import { RawBuilder } from '../raw-builder/raw-builder.js';
8
7
  import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
@@ -13,8 +12,8 @@ import { SelectType } from '../util/column-type.js';
13
12
  export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
14
13
  export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
15
14
  export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
16
- export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
17
- declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : PrimitiveValue;
15
+ export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : unknown;
16
+ declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : unknown;
18
17
  export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
19
18
  export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
20
19
  export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
@@ -1,11 +1,10 @@
1
1
  import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
2
2
  import { ValueNode } from '../operation-node/value-node.js';
3
- import { PrimitiveValue } from '../util/object-utils.js';
4
3
  import { ParseContext } from './parse-context.js';
5
4
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
6
5
  import { RawNode } from '../operation-node/raw-node.js';
7
6
  import { ComplexExpression } from './complex-expression-parser.js';
8
7
  export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
9
8
  export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
10
- export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, PrimitiveValue>): ValueExpressionNode;
11
- export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, PrimitiveValue>): ValueNode | SelectQueryNode | RawNode;
9
+ export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
10
+ export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
@@ -16,16 +16,15 @@ function parseValueExpressionOrList(ctx, arg) {
16
16
  }
17
17
  exports.parseValueExpressionOrList = parseValueExpressionOrList;
18
18
  function parseValueExpression(ctx, exp) {
19
- if ((0, object_utils_js_1.isPrimitive)(exp)) {
20
- return value_node_js_1.ValueNode.create(exp);
19
+ if ((0, complex_expression_parser_js_1.isComplexExpression)(exp)) {
20
+ return (0, complex_expression_parser_js_1.parseComplexExpression)(ctx, exp);
21
21
  }
22
- return (0, complex_expression_parser_js_1.parseComplexExpression)(ctx, exp);
22
+ return value_node_js_1.ValueNode.create(exp);
23
23
  }
24
24
  exports.parseValueExpression = parseValueExpression;
25
25
  function parseValueExpressionList(ctx, arg) {
26
- if (arg.every(object_utils_js_1.isPrimitive)) {
27
- // Optimization for large lists of primitive values.
28
- return primitive_value_list_node_js_1.PrimitiveValueListNode.create(arg);
26
+ if (arg.some(complex_expression_parser_js_1.isComplexExpression)) {
27
+ return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
29
28
  }
30
- return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
29
+ return primitive_value_list_node_js_1.PrimitiveValueListNode.create(arg);
31
30
  }
@@ -3,6 +3,8 @@ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from
3
3
  import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
4
4
  import { ParseContext } from '../parser/parse-context.js';
5
5
  import { FunctionBuilder } from './function-builder.js';
6
+ import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
7
+ import { RawBuilder } from '../raw-builder/raw-builder.js';
6
8
  export declare class ExpressionBuilder<DB, TB extends keyof DB> {
7
9
  #private;
8
10
  constructor(props: ExpressionBuilderProps);
@@ -44,6 +46,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
44
46
  * The query builder returned by this method is typed in a way that you can refer to
45
47
  * all tables of the parent query in addition to the subquery's tables.
46
48
  *
49
+ * This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
50
+ *
47
51
  * ### Examples
48
52
  *
49
53
  * This example shows that you can refer to both `pet.owner_id` and `person.id`
@@ -86,6 +90,44 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
86
90
  * See {@link QueryCreator.withSchema}
87
91
  */
88
92
  withSchema(schema: string): ExpressionBuilder<DB, TB>;
93
+ /**
94
+ * See {@link QueryCreator.raw}.
95
+ */
96
+ raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
97
+ /**
98
+ * This can be used to reference columns.
99
+ *
100
+ * ### Examples
101
+ *
102
+ * In the next example we use the `ref` method to reference
103
+ * columns of the virtual table `excluded` in a type-safe way
104
+ * to create an upsert operation:
105
+ *
106
+ * ```ts
107
+ * db.insertInto('person')
108
+ * .values(person)
109
+ * .onConflict(oc => oc
110
+ * .column('id')
111
+ * .doUpdateSet({
112
+ * first_name: (eb) => eb.ref('excluded.first_name'),
113
+ * last_name: (eb) => eb.ref('excluded.last_name')
114
+ * })
115
+ * )
116
+ * ```
117
+ *
118
+ * In the next example we use `ref` in a raw expression. Unless you
119
+ * want to be as type-safe as possible, this is probably overkill:
120
+ *
121
+ * ```ts
122
+ * db.update('pet').set({
123
+ * name: (eb) => eb.raw('concat(?, ?)', [
124
+ * eb.ref('pet.name'),
125
+ * suffix,
126
+ * ])
127
+ * })
128
+ * ```
129
+ */
130
+ ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
89
131
  }
90
132
  export interface ExpressionBuilderProps {
91
133
  readonly executor: NoopQueryExecutor;
@@ -8,6 +8,7 @@ const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugi
8
8
  const query_id_js_1 = require("../util/query-id.js");
9
9
  const object_utils_js_1 = require("../util/object-utils.js");
10
10
  const function_builder_js_1 = require("./function-builder.js");
11
+ const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
11
12
  class ExpressionBuilder {
12
13
  #props;
13
14
  constructor(props) {
@@ -64,5 +65,52 @@ class ExpressionBuilder {
64
65
  executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
65
66
  });
66
67
  }
68
+ /**
69
+ * See {@link QueryCreator.raw}.
70
+ */
71
+ raw(sql, parameters) {
72
+ return new raw_builder_js_1.RawBuilder({
73
+ queryId: (0, query_id_js_1.createQueryId)(),
74
+ executor: this.#props.executor,
75
+ sql,
76
+ parameters,
77
+ });
78
+ }
79
+ /**
80
+ * This can be used to reference columns.
81
+ *
82
+ * ### Examples
83
+ *
84
+ * In the next example we use the `ref` method to reference
85
+ * columns of the virtual table `excluded` in a type-safe way
86
+ * to create an upsert operation:
87
+ *
88
+ * ```ts
89
+ * db.insertInto('person')
90
+ * .values(person)
91
+ * .onConflict(oc => oc
92
+ * .column('id')
93
+ * .doUpdateSet({
94
+ * first_name: (eb) => eb.ref('excluded.first_name'),
95
+ * last_name: (eb) => eb.ref('excluded.last_name')
96
+ * })
97
+ * )
98
+ * ```
99
+ *
100
+ * In the next example we use `ref` in a raw expression. Unless you
101
+ * want to be as type-safe as possible, this is probably overkill:
102
+ *
103
+ * ```ts
104
+ * db.update('pet').set({
105
+ * name: (eb) => eb.raw('concat(?, ?)', [
106
+ * eb.ref('pet.name'),
107
+ * suffix,
108
+ * ])
109
+ * })
110
+ * ```
111
+ */
112
+ ref(reference) {
113
+ return this.raw('??', [reference]);
114
+ }
67
115
  }
68
116
  exports.ExpressionBuilder = ExpressionBuilder;
@@ -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
  /**
@@ -17,6 +17,7 @@ export declare type LogConfig = ReadonlyArray<LogLevel> | Logger;
17
17
  export declare class Log {
18
18
  #private;
19
19
  constructor(config: LogConfig);
20
+ isLevelEnabled(level: LogLevel): boolean;
20
21
  query(getEvent: () => QueryLogEvent): void;
21
22
  error(getEvent: () => ErrorLogEvent): void;
22
23
  }
@@ -22,6 +22,9 @@ class Log {
22
22
  });
23
23
  }
24
24
  }
25
+ isLevelEnabled(level) {
26
+ return this.#levels[level];
27
+ }
25
28
  query(getEvent) {
26
29
  if (this.#levels.query) {
27
30
  this.#logger(getEvent());
@@ -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
7
  export declare function isBigInt(obj: unknown): obj is BigInt;
10
- export declare function isBuffer(obj: unknown): obj is Buffer;
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,6 +1,6 @@
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.isBuffer = exports.isBigInt = 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
5
  if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
6
6
  return obj.length === 0;
@@ -35,20 +35,12 @@ function isBigInt(obj) {
35
35
  return typeof obj === 'bigint';
36
36
  }
37
37
  exports.isBigInt = isBigInt;
38
+ // Don't change the returnd type to `obj is Buffer` to not create a
39
+ // hard dependency to node.
38
40
  function isBuffer(obj) {
39
41
  return typeof Buffer !== 'undefined' && Buffer.isBuffer(obj);
40
42
  }
41
43
  exports.isBuffer = isBuffer;
42
- function isPrimitive(obj) {
43
- return (isString(obj) ||
44
- isNumber(obj) ||
45
- isBoolean(obj) ||
46
- isNull(obj) ||
47
- isDate(obj) ||
48
- isBigInt(obj) ||
49
- isBuffer(obj));
50
- }
51
- exports.isPrimitive = isPrimitive;
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;