kysely 0.27.4 → 0.27.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 (209) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/deno.check.d.ts +86 -0
  4. package/deno.check.json +21 -0
  5. package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
  6. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
  7. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
  8. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  9. package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
  10. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  11. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  12. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  13. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  14. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  15. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  16. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  17. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  18. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  19. package/dist/cjs/driver/dummy-driver.js +13 -12
  20. package/dist/cjs/dynamic/dynamic.d.ts +6 -6
  21. package/dist/cjs/dynamic/dynamic.js +6 -6
  22. package/dist/cjs/expression/expression-builder.d.ts +152 -61
  23. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  24. package/dist/cjs/expression/expression.d.ts +40 -5
  25. package/dist/cjs/helpers/mssql.d.ts +74 -14
  26. package/dist/cjs/helpers/mssql.js +74 -14
  27. package/dist/cjs/helpers/mysql.d.ts +14 -10
  28. package/dist/cjs/helpers/mysql.js +14 -10
  29. package/dist/cjs/helpers/postgres.d.ts +7 -4
  30. package/dist/cjs/helpers/postgres.js +7 -4
  31. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  32. package/dist/cjs/helpers/sqlite.js +41 -16
  33. package/dist/cjs/kysely.d.ts +99 -41
  34. package/dist/cjs/kysely.js +60 -36
  35. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  36. package/dist/cjs/migration/file-migration-provider.js +2 -2
  37. package/dist/cjs/migration/migrator.d.ts +82 -14
  38. package/dist/cjs/migration/migrator.js +82 -14
  39. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  40. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  41. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.js +12 -0
  43. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  45. package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
  46. package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
  47. package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
  48. package/dist/cjs/operation-node/query-node.d.ts +4 -0
  49. package/dist/cjs/operation-node/query-node.js +8 -0
  50. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  51. package/dist/cjs/operation-node/select-query-node.js +0 -8
  52. package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
  53. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  54. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
  55. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  56. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  57. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  58. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  59. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  60. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  61. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  62. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  63. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  64. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  65. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  66. package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
  67. package/dist/cjs/query-builder/delete-query-builder.js +76 -26
  68. package/dist/cjs/query-builder/function-module.d.ts +35 -88
  69. package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
  70. package/dist/cjs/query-builder/insert-query-builder.js +188 -52
  71. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  72. package/dist/cjs/query-builder/insert-result.js +10 -5
  73. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  74. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  75. package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
  76. package/dist/cjs/query-builder/merge-query-builder.js +68 -6
  77. package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
  78. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  79. package/dist/cjs/query-builder/output-interface.d.ts +50 -7
  80. package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
  81. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  82. package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
  83. package/dist/cjs/query-builder/select-query-builder.js +7 -7
  84. package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
  85. package/dist/cjs/query-builder/update-query-builder.js +75 -10
  86. package/dist/cjs/query-builder/update-result.d.ts +2 -2
  87. package/dist/cjs/query-builder/update-result.js +2 -2
  88. package/dist/cjs/query-builder/where-interface.d.ts +5 -1
  89. package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
  90. package/dist/cjs/query-creator.d.ts +66 -18
  91. package/dist/cjs/query-creator.js +2 -2
  92. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  93. package/dist/cjs/raw-builder/sql.d.ts +26 -7
  94. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  95. package/dist/cjs/schema/alter-column-builder.js +17 -3
  96. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
  97. package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
  98. package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
  99. package/dist/cjs/schema/column-definition-builder.js +283 -26
  100. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  101. package/dist/cjs/schema/create-table-builder.js +86 -33
  102. package/dist/cjs/util/column-type.d.ts +5 -9
  103. package/dist/cjs/util/require-all-props.d.ts +4 -2
  104. package/dist/cjs/util/require-all-props.js +4 -2
  105. package/dist/cjs/util/streamable.d.ts +1 -1
  106. package/dist/cjs/util/type-utils.d.ts +4 -2
  107. package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
  108. package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
  109. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
  110. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  111. package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
  112. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  113. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  114. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  115. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  116. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  117. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  118. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  119. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  120. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  121. package/dist/esm/driver/dummy-driver.js +13 -12
  122. package/dist/esm/dynamic/dynamic.d.ts +6 -6
  123. package/dist/esm/dynamic/dynamic.js +6 -6
  124. package/dist/esm/expression/expression-builder.d.ts +152 -61
  125. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  126. package/dist/esm/expression/expression.d.ts +40 -5
  127. package/dist/esm/helpers/mssql.d.ts +74 -14
  128. package/dist/esm/helpers/mssql.js +74 -14
  129. package/dist/esm/helpers/mysql.d.ts +14 -10
  130. package/dist/esm/helpers/mysql.js +14 -10
  131. package/dist/esm/helpers/postgres.d.ts +7 -4
  132. package/dist/esm/helpers/postgres.js +7 -4
  133. package/dist/esm/helpers/sqlite.d.ts +41 -16
  134. package/dist/esm/helpers/sqlite.js +41 -16
  135. package/dist/esm/kysely.d.ts +99 -41
  136. package/dist/esm/kysely.js +60 -36
  137. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  138. package/dist/esm/migration/file-migration-provider.js +2 -2
  139. package/dist/esm/migration/migrator.d.ts +82 -14
  140. package/dist/esm/migration/migrator.js +82 -14
  141. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  142. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  143. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  144. package/dist/esm/operation-node/data-type-node.js +12 -0
  145. package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
  146. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  147. package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
  148. package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
  149. package/dist/esm/operation-node/operation-node-transformer.js +14 -3
  150. package/dist/esm/operation-node/query-node.d.ts +4 -0
  151. package/dist/esm/operation-node/query-node.js +8 -0
  152. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  153. package/dist/esm/operation-node/select-query-node.js +0 -8
  154. package/dist/esm/operation-node/update-query-node.d.ts +1 -0
  155. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  156. package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
  157. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  158. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  159. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  160. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  161. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  162. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  163. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  164. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  165. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  166. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  167. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  168. package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
  169. package/dist/esm/query-builder/delete-query-builder.js +76 -26
  170. package/dist/esm/query-builder/function-module.d.ts +35 -88
  171. package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
  172. package/dist/esm/query-builder/insert-query-builder.js +188 -52
  173. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  174. package/dist/esm/query-builder/insert-result.js +10 -5
  175. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  176. package/dist/esm/query-builder/json-path-builder.js +8 -5
  177. package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
  178. package/dist/esm/query-builder/merge-query-builder.js +68 -6
  179. package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
  180. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  181. package/dist/esm/query-builder/output-interface.d.ts +50 -7
  182. package/dist/esm/query-builder/returning-interface.d.ts +5 -5
  183. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  184. package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
  185. package/dist/esm/query-builder/select-query-builder.js +7 -7
  186. package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
  187. package/dist/esm/query-builder/update-query-builder.js +75 -10
  188. package/dist/esm/query-builder/update-result.d.ts +2 -2
  189. package/dist/esm/query-builder/update-result.js +2 -2
  190. package/dist/esm/query-builder/where-interface.d.ts +5 -1
  191. package/dist/esm/query-compiler/default-query-compiler.js +20 -0
  192. package/dist/esm/query-creator.d.ts +66 -18
  193. package/dist/esm/query-creator.js +2 -2
  194. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  195. package/dist/esm/raw-builder/sql.d.ts +26 -7
  196. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  197. package/dist/esm/schema/alter-column-builder.js +17 -3
  198. package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
  199. package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
  200. package/dist/esm/schema/column-definition-builder.d.ts +283 -26
  201. package/dist/esm/schema/column-definition-builder.js +283 -26
  202. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  203. package/dist/esm/schema/create-table-builder.js +86 -33
  204. package/dist/esm/util/column-type.d.ts +5 -9
  205. package/dist/esm/util/require-all-props.d.ts +4 -2
  206. package/dist/esm/util/require-all-props.js +4 -2
  207. package/dist/esm/util/streamable.d.ts +1 -1
  208. package/dist/esm/util/type-utils.d.ts +4 -2
  209. package/package.json +28 -23
@@ -17,11 +17,19 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
17
17
  * All expressions need to have this getter for complicated type-related reasons.
18
18
  * Simply add this getter for your expression and always return `undefined` from it:
19
19
  *
20
+ * ### Examples
21
+ *
20
22
  * ```ts
23
+ * import { type Expression, type OperationNode, sql } from 'kysely'
24
+ *
21
25
  * class SomeExpression<T> implements Expression<T> {
22
26
  * get expressionType(): T | undefined {
23
27
  * return undefined
24
28
  * }
29
+ *
30
+ * toOperationNode(): OperationNode {
31
+ * return sql`some sql here`.toOperationNode()
32
+ * }
25
33
  * }
26
34
  * ```
27
35
  *
@@ -33,6 +41,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
33
41
  /**
34
42
  * Returns an aliased version of the expression.
35
43
  *
44
+ * ### Examples
45
+ *
36
46
  * In addition to slapping `as "the_alias"` to the end of the SQL,
37
47
  * this method also provides strict typing:
38
48
  *
@@ -50,7 +60,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
50
60
  *
51
61
  * The generated SQL (PostgreSQL):
52
62
  *
53
- * ```ts
63
+ * ```sql
54
64
  * select "first_name" = $1 as "is_jennifer"
55
65
  * from "person"
56
66
  * ```
@@ -59,6 +69,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
59
69
  /**
60
70
  * Returns an aliased version of the expression.
61
71
  *
72
+ * ### Examples
73
+ *
62
74
  * In addition to slapping `as "the_alias"` at the end of the expression,
63
75
  * this method also provides strict typing:
64
76
  *
@@ -67,7 +79,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
67
79
  * .selectFrom('person')
68
80
  * .select((eb) =>
69
81
  * // `eb.fn<string>` returns an AliasableExpression<string>
70
- * eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
82
+ * eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
71
83
  * )
72
84
  * .executeTakeFirstOrThrow()
73
85
  *
@@ -77,7 +89,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
77
89
  *
78
90
  * The generated SQL (PostgreSQL):
79
91
  *
80
- * ```ts
92
+ * ```sql
81
93
  * select
82
94
  * concat("first_name", $1, "last_name") as "full_name"
83
95
  * from
@@ -88,6 +100,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
88
100
  * provide the alias as the only type argument:
89
101
  *
90
102
  * ```ts
103
+ * import { sql } from 'kysely'
104
+ *
91
105
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
92
106
  *
93
107
  * // The alias is `t(a, b)` which specifies the column names
@@ -102,11 +116,12 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
102
116
  * .expression(
103
117
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
104
118
  * )
119
+ * .execute()
105
120
  * ```
106
121
  *
107
122
  * The generated SQL (PostgreSQL):
108
123
  *
109
- * ```ts
124
+ * ```sql
110
125
  * insert into "person" ("first_name", "last_name")
111
126
  * from (values (1, 'foo')) as t(a, b)
112
127
  * select "t"."a", "t"."b"
@@ -121,17 +136,18 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
121
136
  * ### Examples
122
137
  *
123
138
  * ```ts
124
- * db.selectFrom('person')
139
+ * const result = await db.selectFrom('person')
125
140
  * .selectAll()
126
141
  * .where(eb => eb('first_name', '=', 'Jennifer')
127
142
  * .or('first_name', '=', 'Arnold')
128
143
  * .or('first_name', '=', 'Sylvester')
129
144
  * )
145
+ * .execute()
130
146
  * ```
131
147
  *
132
148
  * The generated SQL (PostgreSQL):
133
149
  *
134
- * ```ts
150
+ * ```sql
135
151
  * select *
136
152
  * from "person"
137
153
  * where (
@@ -145,7 +161,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
145
161
  * this method:
146
162
  *
147
163
  * ```ts
148
- * db.selectFrom('person')
164
+ * const result = await db.selectFrom('person')
149
165
  * .selectAll()
150
166
  * .where(eb => eb('first_name', '=', 'Jennifer')
151
167
  * .or(eb('first_name', '=', 'Sylvester').and('last_name', '=', 'Stallone'))
@@ -153,13 +169,14 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
153
169
  * eb.selectFrom('pet')
154
170
  * .select('id')
155
171
  * .whereRef('pet.owner_id', '=', 'person.id')
156
- * )
172
+ * ))
157
173
  * )
174
+ * .execute()
158
175
  * ```
159
176
  *
160
177
  * The generated SQL (PostgreSQL):
161
178
  *
162
- * ```ts
179
+ * ```sql
163
180
  * select *
164
181
  * from "person"
165
182
  * where (
@@ -183,17 +200,18 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
183
200
  * ### Examples
184
201
  *
185
202
  * ```ts
186
- * db.selectFrom('person')
203
+ * const result = await db.selectFrom('person')
187
204
  * .selectAll()
188
205
  * .where(eb => eb('first_name', '=', 'Jennifer')
189
206
  * .and('last_name', '=', 'Aniston')
190
207
  * .and('age', '>', 40)
191
208
  * )
209
+ * .execute()
192
210
  * ```
193
211
  *
194
212
  * The generated SQL (PostgreSQL):
195
213
  *
196
- * ```ts
214
+ * ```sql
197
215
  * select *
198
216
  * from "person"
199
217
  * where (
@@ -207,7 +225,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
207
225
  * this method:
208
226
  *
209
227
  * ```ts
210
- * db.selectFrom('person')
228
+ * const result = await db.selectFrom('person')
211
229
  * .selectAll()
212
230
  * .where(eb => eb('first_name', '=', 'Jennifer')
213
231
  * .and(eb('first_name', '=', 'Sylvester').or('last_name', '=', 'Stallone'))
@@ -215,13 +233,14 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
215
233
  * eb.selectFrom('pet')
216
234
  * .select('id')
217
235
  * .whereRef('pet.owner_id', '=', 'person.id')
218
- * )
236
+ * ))
219
237
  * )
238
+ * .execute()
220
239
  * ```
221
240
  *
222
241
  * The generated SQL (PostgreSQL):
223
242
  *
224
- * ```ts
243
+ * ```sql
225
244
  * select *
226
245
  * from "person"
227
246
  * where (
@@ -257,11 +276,19 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
257
276
  /**
258
277
  * Creates the OperationNode that describes how to compile this expression into SQL.
259
278
  *
279
+ * ### Examples
280
+ *
260
281
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
261
282
  * template tag to build the node:
262
283
  *
263
284
  * ```ts
285
+ * import { type Expression, type OperationNode, sql } from 'kysely'
286
+ *
264
287
  * class SomeExpression<T> implements Expression<T> {
288
+ * get expressionType(): T | undefined {
289
+ * return undefined
290
+ * }
291
+ *
265
292
  * toOperationNode(): OperationNode {
266
293
  * return sql`some sql here`.toOperationNode()
267
294
  * }
@@ -296,11 +323,19 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
296
323
  * All expressions need to have this getter for complicated type-related reasons.
297
324
  * Simply add this getter for your expression and always return `undefined` from it:
298
325
  *
326
+ * ### Examples
327
+ *
299
328
  * ```ts
329
+ * import { type Expression, type OperationNode, sql } from 'kysely'
330
+ *
300
331
  * class SomeExpression<T> implements Expression<T> {
301
332
  * get expressionType(): T | undefined {
302
333
  * return undefined
303
334
  * }
335
+ *
336
+ * toOperationNode(): OperationNode {
337
+ * return sql`some sql here`.toOperationNode()
338
+ * }
304
339
  * }
305
340
  * ```
306
341
  *
@@ -331,7 +366,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
331
366
  *
332
367
  * The generated SQL (PostgreSQL):
333
368
  *
334
- * ```ts
369
+ * ```sql
335
370
  * select "first_name" = $1 or "first_name" = $2 as "is_jennifer_or_sylvester"
336
371
  * from "person"
337
372
  * ```
@@ -340,6 +375,8 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
340
375
  /**
341
376
  * Returns an aliased version of the expression.
342
377
  *
378
+ * ### Examples
379
+ *
343
380
  * In addition to slapping `as "the_alias"` at the end of the expression,
344
381
  * this method also provides strict typing:
345
382
  *
@@ -348,7 +385,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
348
385
  * .selectFrom('person')
349
386
  * .select((eb) =>
350
387
  * // `eb.fn<string>` returns an AliasableExpression<string>
351
- * eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
388
+ * eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
352
389
  * )
353
390
  * .executeTakeFirstOrThrow()
354
391
  *
@@ -358,7 +395,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
358
395
  *
359
396
  * The generated SQL (PostgreSQL):
360
397
  *
361
- * ```ts
398
+ * ```sql
362
399
  * select
363
400
  * concat("first_name", $1, "last_name") as "full_name"
364
401
  * from
@@ -369,6 +406,8 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
369
406
  * provide the alias as the only type argument:
370
407
  *
371
408
  * ```ts
409
+ * import { sql } from 'kysely'
410
+ *
372
411
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
373
412
  *
374
413
  * // The alias is `t(a, b)` which specifies the column names
@@ -383,11 +422,12 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
383
422
  * .expression(
384
423
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
385
424
  * )
425
+ * .execute()
386
426
  * ```
387
427
  *
388
428
  * The generated SQL (PostgreSQL):
389
429
  *
390
- * ```ts
430
+ * ```sql
391
431
  * insert into "person" ("first_name", "last_name")
392
432
  * from (values (1, 'foo')) as t(a, b)
393
433
  * select "t"."a", "t"."b"
@@ -411,11 +451,19 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
411
451
  /**
412
452
  * Creates the OperationNode that describes how to compile this expression into SQL.
413
453
  *
454
+ * ### Examples
455
+ *
414
456
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
415
457
  * template tag to build the node:
416
458
  *
417
459
  * ```ts
460
+ * import { type Expression, type OperationNode, sql } from 'kysely'
461
+ *
418
462
  * class SomeExpression<T> implements Expression<T> {
463
+ * get expressionType(): T | undefined {
464
+ * return undefined
465
+ * }
466
+ *
419
467
  * toOperationNode(): OperationNode {
420
468
  * return sql`some sql here`.toOperationNode()
421
469
  * }
@@ -432,11 +480,19 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
432
480
  * All expressions need to have this getter for complicated type-related reasons.
433
481
  * Simply add this getter for your expression and always return `undefined` from it:
434
482
  *
483
+ * ### Examples
484
+ *
435
485
  * ```ts
486
+ * import { type Expression, type OperationNode, sql } from 'kysely'
487
+ *
436
488
  * class SomeExpression<T> implements Expression<T> {
437
489
  * get expressionType(): T | undefined {
438
490
  * return undefined
439
491
  * }
492
+ *
493
+ * toOperationNode(): OperationNode {
494
+ * return sql`some sql here`.toOperationNode()
495
+ * }
440
496
  * }
441
497
  * ```
442
498
  *
@@ -462,12 +518,12 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
462
518
  * .executeTakeFirstOrThrow()
463
519
  *
464
520
  * // `is_jennifer_aniston: SqlBool` field exists in the result type.
465
- * console.log(result.is_jennifer_or_sylvester)
521
+ * console.log(result.is_jennifer_aniston)
466
522
  * ```
467
523
  *
468
524
  * The generated SQL (PostgreSQL):
469
525
  *
470
- * ```ts
526
+ * ```sql
471
527
  * select "first_name" = $1 and "first_name" = $2 as "is_jennifer_aniston"
472
528
  * from "person"
473
529
  * ```
@@ -476,6 +532,8 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
476
532
  /**
477
533
  * Returns an aliased version of the expression.
478
534
  *
535
+ * ### Examples
536
+ *
479
537
  * In addition to slapping `as "the_alias"` at the end of the expression,
480
538
  * this method also provides strict typing:
481
539
  *
@@ -484,7 +542,7 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
484
542
  * .selectFrom('person')
485
543
  * .select((eb) =>
486
544
  * // `eb.fn<string>` returns an AliasableExpression<string>
487
- * eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
545
+ * eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
488
546
  * )
489
547
  * .executeTakeFirstOrThrow()
490
548
  *
@@ -494,7 +552,7 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
494
552
  *
495
553
  * The generated SQL (PostgreSQL):
496
554
  *
497
- * ```ts
555
+ * ```sql
498
556
  * select
499
557
  * concat("first_name", $1, "last_name") as "full_name"
500
558
  * from
@@ -505,6 +563,8 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
505
563
  * provide the alias as the only type argument:
506
564
  *
507
565
  * ```ts
566
+ * import { sql } from 'kysely'
567
+ *
508
568
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
509
569
  *
510
570
  * // The alias is `t(a, b)` which specifies the column names
@@ -519,11 +579,12 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
519
579
  * .expression(
520
580
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
521
581
  * )
582
+ * .execute()
522
583
  * ```
523
584
  *
524
585
  * The generated SQL (PostgreSQL):
525
586
  *
526
- * ```ts
587
+ * ```sql
527
588
  * insert into "person" ("first_name", "last_name")
528
589
  * from (values (1, 'foo')) as t(a, b)
529
590
  * select "t"."a", "t"."b"
@@ -547,11 +608,19 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
547
608
  /**
548
609
  * Creates the OperationNode that describes how to compile this expression into SQL.
549
610
  *
611
+ * ### Examples
612
+ *
550
613
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
551
614
  * template tag to build the node:
552
615
  *
553
616
  * ```ts
617
+ * import { type Expression, type OperationNode, sql } from 'kysely'
618
+ *
554
619
  * class SomeExpression<T> implements Expression<T> {
620
+ * get expressionType(): T | undefined {
621
+ * return undefined
622
+ * }
623
+ *
555
624
  * toOperationNode(): OperationNode {
556
625
  * return sql`some sql here`.toOperationNode()
557
626
  * }
@@ -7,7 +7,11 @@ import { OperationNode } from '../operation-node/operation-node.js';
7
7
  * Most Kysely methods accept instances of `Expression` and most classes like `SelectQueryBuilder`
8
8
  * and the return value of the {@link sql} template tag implement it.
9
9
  *
10
+ * ### Examples
11
+ *
10
12
  * ```ts
13
+ * import { type Expression, sql } from 'kysely'
14
+ *
11
15
  * const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
12
16
  * const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')
13
17
  * ```
@@ -19,11 +23,19 @@ export interface Expression<T> extends OperationNodeSource {
19
23
  * All expressions need to have this getter for complicated type-related reasons.
20
24
  * Simply add this getter for your expression and always return `undefined` from it:
21
25
  *
26
+ * ### Examples
27
+ *
22
28
  * ```ts
29
+ * import { type Expression, type OperationNode, sql } from 'kysely'
30
+ *
23
31
  * class SomeExpression<T> implements Expression<T> {
24
32
  * get expressionType(): T | undefined {
25
33
  * return undefined
26
34
  * }
35
+ *
36
+ * toOperationNode(): OperationNode {
37
+ * return sql`some sql here`.toOperationNode()
38
+ * }
27
39
  * }
28
40
  * ```
29
41
  *
@@ -35,11 +47,19 @@ export interface Expression<T> extends OperationNodeSource {
35
47
  /**
36
48
  * Creates the OperationNode that describes how to compile this expression into SQL.
37
49
  *
50
+ * ### Examples
51
+ *
38
52
  * If you are creating a custom expression, it's often easiest to use the {@link sql}
39
53
  * template tag to build the node:
40
54
  *
41
55
  * ```ts
56
+ * import { type Expression, type OperationNode, sql } from 'kysely'
57
+ *
42
58
  * class SomeExpression<T> implements Expression<T> {
59
+ * get expressionType(): T | undefined {
60
+ * return undefined
61
+ * }
62
+ *
43
63
  * toOperationNode(): OperationNode {
44
64
  * return sql`some sql here`.toOperationNode()
45
65
  * }
@@ -55,6 +75,8 @@ export interface AliasableExpression<T> extends Expression<T> {
55
75
  /**
56
76
  * Returns an aliased version of the expression.
57
77
  *
78
+ * ### Examples
79
+ *
58
80
  * In addition to slapping `as "the_alias"` at the end of the expression,
59
81
  * this method also provides strict typing:
60
82
  *
@@ -63,7 +85,7 @@ export interface AliasableExpression<T> extends Expression<T> {
63
85
  * .selectFrom('person')
64
86
  * .select((eb) =>
65
87
  * // `eb.fn<string>` returns an AliasableExpression<string>
66
- * eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
88
+ * eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
67
89
  * )
68
90
  * .executeTakeFirstOrThrow()
69
91
  *
@@ -73,7 +95,7 @@ export interface AliasableExpression<T> extends Expression<T> {
73
95
  *
74
96
  * The generated SQL (PostgreSQL):
75
97
  *
76
- * ```ts
98
+ * ```sql
77
99
  * select
78
100
  * concat("first_name", $1, "last_name") as "full_name"
79
101
  * from
@@ -84,6 +106,8 @@ export interface AliasableExpression<T> extends Expression<T> {
84
106
  * provide the alias as the only type argument:
85
107
  *
86
108
  * ```ts
109
+ * import { sql } from 'kysely'
110
+ *
87
111
  * const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
88
112
  *
89
113
  * // The alias is `t(a, b)` which specifies the column names
@@ -98,11 +122,12 @@ export interface AliasableExpression<T> extends Expression<T> {
98
122
  * .expression(
99
123
  * db.selectFrom(aliasedValues).select(['t.a', 't.b'])
100
124
  * )
125
+ * .execute()
101
126
  * ```
102
127
  *
103
128
  * The generated SQL (PostgreSQL):
104
129
  *
105
- * ```ts
130
+ * ```sql
106
131
  * insert into "person" ("first_name", "last_name")
107
132
  * from (values (1, 'foo')) as t(a, b)
108
133
  * select "t"."a", "t"."b"
@@ -119,9 +144,16 @@ export interface AliasableExpression<T> extends Expression<T> {
119
144
  * needs to implement an `AliasedExpression<T, A>`. `A` becomes the name of the selected expression
120
145
  * in the result and `T` becomes its type.
121
146
  *
122
- * @example
147
+ * ### Examples
123
148
  *
124
149
  * ```ts
150
+ * import {
151
+ * AliasNode,
152
+ * type AliasedExpression,
153
+ * type Expression,
154
+ * IdentifierNode
155
+ * } from 'kysely'
156
+ *
125
157
  * class SomeAliasedExpression<T, A extends string> implements AliasedExpression<T, A> {
126
158
  * #expression: Expression<T>
127
159
  * #alias: A
@@ -140,7 +172,10 @@ export interface AliasableExpression<T> extends Expression<T> {
140
172
  * }
141
173
  *
142
174
  * toOperationNode(): AliasNode {
143
- * return AliasNode.create(this.#expression.toOperationNode(), IdentifierNode.create(this.#alias))
175
+ * return AliasNode.create(
176
+ * this.#expression.toOperationNode(),
177
+ * IdentifierNode.create(this.#alias)
178
+ * )
144
179
  * }
145
180
  * }
146
181
  * ```
@@ -10,8 +10,26 @@ import { Simplify } from '../util/type-utils.js';
10
10
  * The plugin can be installed like this:
11
11
  *
12
12
  * ```ts
13
- * const db = new Kysely({
14
- * dialect: new MssqlDialect(config),
13
+ * import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
14
+ * import * as Tarn from 'tarn'
15
+ * import * as Tedious from 'tedious'
16
+ * import type { Database } from 'type-editor' // imaginary module
17
+ *
18
+ * const db = new Kysely<Database>({
19
+ * dialect: new MssqlDialect({
20
+ * tarn: { options: { max: 10, min: 0 }, ...Tarn },
21
+ * tedious: {
22
+ * ...Tedious,
23
+ * connectionFactory: () => new Tedious.Connection({
24
+ * authentication: {
25
+ * options: { password: 'password', userName: 'sa' },
26
+ * type: 'default',
27
+ * },
28
+ * options: { database: 'test', port: 21433, trustServerCertificate: true },
29
+ * server: 'localhost',
30
+ * }),
31
+ * },
32
+ * }),
15
33
  * plugins: [new ParseJSONResultsPlugin()]
16
34
  * })
17
35
  * ```
@@ -19,6 +37,8 @@ import { Simplify } from '../util/type-utils.js';
19
37
  * ### Examples
20
38
  *
21
39
  * ```ts
40
+ * import { jsonArrayFrom } from 'kysely/helpers/mssql'
41
+ *
22
42
  * const result = await db
23
43
  * .selectFrom('person')
24
44
  * .select((eb) => [
@@ -28,14 +48,14 @@ import { Simplify } from '../util/type-utils.js';
28
48
  * .select(['pet.id as pet_id', 'pet.name'])
29
49
  * .whereRef('pet.owner_id', '=', 'person.id')
30
50
  * .orderBy('pet.name')
31
- * .modifyEnd(sql`offset 0 rows`)
51
+ * .offset(0)
32
52
  * ).as('pets')
33
53
  * ])
34
54
  * .execute()
35
55
  *
36
- * result[0].id
37
- * result[0].pets[0].pet_id
38
- * result[0].pets[0].name
56
+ * result[0]?.id
57
+ * result[0]?.pets[0]?.pet_id
58
+ * result[0]?.pets[0]?.name
39
59
  * ```
40
60
  *
41
61
  * The generated SQL (MS SQL Server):
@@ -47,7 +67,7 @@ import { Simplify } from '../util/type-utils.js';
47
67
  * from "pet"
48
68
  * where "pet"."owner_id" = "person"."id"
49
69
  * order by "pet"."name"
50
- * offset 0 rows
70
+ * offset @1 rows
51
71
  * ) as "agg" for json path, include_null_values), '[]')
52
72
  * ) as "pets"
53
73
  * from "person"
@@ -65,8 +85,26 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
65
85
  * The plugin can be installed like this:
66
86
  *
67
87
  * ```ts
68
- * const db = new Kysely({
69
- * dialect: new MssqlDialect(config),
88
+ * import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
89
+ * import * as Tarn from 'tarn'
90
+ * import * as Tedious from 'tedious'
91
+ * import type { Database } from 'type-editor' // imaginary module
92
+ *
93
+ * const db = new Kysely<Database>({
94
+ * dialect: new MssqlDialect({
95
+ * tarn: { options: { max: 10, min: 0 }, ...Tarn },
96
+ * tedious: {
97
+ * ...Tedious,
98
+ * connectionFactory: () => new Tedious.Connection({
99
+ * authentication: {
100
+ * options: { password: 'password', userName: 'sa' },
101
+ * type: 'default',
102
+ * },
103
+ * options: { database: 'test', port: 21433, trustServerCertificate: true },
104
+ * server: 'localhost',
105
+ * }),
106
+ * },
107
+ * }),
70
108
  * plugins: [new ParseJSONResultsPlugin()]
71
109
  * })
72
110
  * ```
@@ -74,6 +112,8 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
74
112
  * ### Examples
75
113
  *
76
114
  * ```ts
115
+ * import { jsonObjectFrom } from 'kysely/helpers/mssql'
116
+ *
77
117
  * const result = await db
78
118
  * .selectFrom('person')
79
119
  * .select((eb) => [
@@ -87,9 +127,9 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
87
127
  * ])
88
128
  * .execute()
89
129
  *
90
- * result[0].id
91
- * result[0].favorite_pet.pet_id
92
- * result[0].favorite_pet.name
130
+ * result[0]?.id
131
+ * result[0]?.favorite_pet?.pet_id
132
+ * result[0]?.favorite_pet?.name
93
133
  * ```
94
134
  *
95
135
  * The generated SQL (MS SQL Server):
@@ -116,8 +156,26 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
116
156
  * The plugin can be installed like this:
117
157
  *
118
158
  * ```ts
119
- * const db = new Kysely({
120
- * dialect: new MssqlDialect(config),
159
+ * import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
160
+ * import * as Tarn from 'tarn'
161
+ * import * as Tedious from 'tedious'
162
+ * import type { Database } from 'type-editor' // imaginary module
163
+ *
164
+ * const db = new Kysely<Database>({
165
+ * dialect: new MssqlDialect({
166
+ * tarn: { options: { max: 10, min: 0 }, ...Tarn },
167
+ * tedious: {
168
+ * ...Tedious,
169
+ * connectionFactory: () => new Tedious.Connection({
170
+ * authentication: {
171
+ * options: { password: 'password', userName: 'sa' },
172
+ * type: 'default',
173
+ * },
174
+ * options: { database: 'test', port: 21433, trustServerCertificate: true },
175
+ * server: 'localhost',
176
+ * }),
177
+ * },
178
+ * }),
121
179
  * plugins: [new ParseJSONResultsPlugin()]
122
180
  * })
123
181
  * ```
@@ -125,6 +183,8 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
125
183
  * ### Examples
126
184
  *
127
185
  * ```ts
186
+ * import { jsonBuildObject } from 'kysely/helpers/mssql'
187
+ *
128
188
  * const result = await db
129
189
  * .selectFrom('person')
130
190
  * .select((eb) => [