kysely 0.16.11 → 0.17.2

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 (198) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +19 -0
  4. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
  6. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
  7. package/dist/cjs/driver/connection-provider.d.ts +1 -1
  8. package/dist/cjs/driver/default-connection-provider.d.ts +1 -1
  9. package/dist/cjs/driver/default-connection-provider.js +2 -2
  10. package/dist/cjs/driver/dummy-driver.d.ts +8 -0
  11. package/dist/cjs/driver/dummy-driver.js +8 -0
  12. package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
  13. package/dist/cjs/driver/single-connection-provider.js +2 -2
  14. package/dist/cjs/index-nodeless.d.ts +2 -0
  15. package/dist/cjs/index-nodeless.js +2 -0
  16. package/dist/cjs/kysely.d.ts +3 -6
  17. package/dist/cjs/kysely.js +30 -41
  18. package/dist/cjs/migration/migrator.js +4 -4
  19. package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
  20. package/dist/cjs/operation-node/raw-node.d.ts +4 -2
  21. package/dist/cjs/operation-node/raw-node.js +8 -2
  22. package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
  23. package/dist/cjs/parser/complex-expression-parser.js +5 -4
  24. package/dist/cjs/parser/filter-parser.d.ts +9 -9
  25. package/dist/cjs/parser/filter-parser.js +31 -30
  26. package/dist/cjs/parser/group-by-parser.d.ts +1 -2
  27. package/dist/cjs/parser/group-by-parser.js +2 -2
  28. package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
  29. package/dist/cjs/parser/insert-values-parser.js +6 -6
  30. package/dist/cjs/parser/join-parser.d.ts +1 -2
  31. package/dist/cjs/parser/join-parser.js +8 -7
  32. package/dist/cjs/parser/order-by-parser.d.ts +1 -2
  33. package/dist/cjs/parser/order-by-parser.js +4 -4
  34. package/dist/cjs/parser/parse-utils.d.ts +10 -0
  35. package/dist/cjs/parser/parse-utils.js +38 -0
  36. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  37. package/dist/cjs/parser/reference-parser.js +5 -5
  38. package/dist/cjs/parser/select-parser.d.ts +1 -2
  39. package/dist/cjs/parser/select-parser.js +5 -5
  40. package/dist/cjs/parser/table-parser.d.ts +2 -3
  41. package/dist/cjs/parser/table-parser.js +5 -5
  42. package/dist/cjs/parser/update-set-parser.d.ts +1 -2
  43. package/dist/cjs/parser/update-set-parser.js +2 -2
  44. package/dist/cjs/parser/value-parser.d.ts +3 -4
  45. package/dist/cjs/parser/value-parser.js +7 -7
  46. package/dist/cjs/parser/with-parser.d.ts +1 -2
  47. package/dist/cjs/parser/with-parser.js +3 -2
  48. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
  49. package/dist/cjs/query-builder/delete-query-builder.d.ts +34 -23
  50. package/dist/cjs/query-builder/delete-query-builder.js +15 -15
  51. package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
  52. package/dist/cjs/query-builder/expression-builder.js +12 -21
  53. package/dist/cjs/query-builder/function-builder.d.ts +2 -6
  54. package/dist/cjs/query-builder/function-builder.js +5 -8
  55. package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
  56. package/dist/cjs/query-builder/insert-query-builder.js +8 -7
  57. package/dist/cjs/query-builder/join-builder.d.ts +0 -2
  58. package/dist/cjs/query-builder/join-builder.js +8 -8
  59. package/dist/cjs/query-builder/on-conflict-builder.d.ts +46 -28
  60. package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
  61. package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
  62. package/dist/cjs/query-builder/select-query-builder.d.ts +52 -33
  63. package/dist/cjs/query-builder/select-query-builder.js +28 -26
  64. package/dist/cjs/query-builder/update-query-builder.d.ts +41 -28
  65. package/dist/cjs/query-builder/update-query-builder.js +22 -20
  66. package/dist/cjs/query-builder/where-interface.d.ts +31 -20
  67. package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
  68. package/dist/cjs/query-creator.d.ts +10 -129
  69. package/dist/cjs/query-creator.js +5 -136
  70. package/dist/cjs/query-executor/default-query-executor.d.ts +21 -7
  71. package/dist/cjs/query-executor/default-query-executor.js +17 -19
  72. package/dist/cjs/query-executor/noop-query-executor.d.ts +20 -6
  73. package/dist/cjs/query-executor/noop-query-executor.js +11 -4
  74. package/dist/cjs/query-executor/query-executor-base.d.ts +62 -0
  75. package/dist/cjs/query-executor/query-executor-base.js +46 -0
  76. package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
  77. package/dist/cjs/query-executor/query-executor-provider.js +2 -0
  78. package/dist/cjs/query-executor/query-executor.d.ts +20 -13
  79. package/dist/cjs/query-executor/query-executor.js +0 -57
  80. package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
  81. package/dist/cjs/raw-builder/raw-builder.js +55 -56
  82. package/dist/cjs/raw-builder/sql.d.ts +331 -0
  83. package/dist/cjs/raw-builder/sql.js +161 -0
  84. package/dist/cjs/schema/alter-table-builder.d.ts +42 -8
  85. package/dist/cjs/schema/alter-table-builder.js +20 -0
  86. package/dist/cjs/schema/column-definition-builder.d.ts +22 -8
  87. package/dist/cjs/schema/create-index-builder.d.ts +3 -1
  88. package/dist/cjs/schema/create-index-builder.js +3 -1
  89. package/dist/cjs/schema/create-table-builder.d.ts +7 -3
  90. package/dist/cjs/schema/create-table-builder.js +7 -3
  91. package/dist/cjs/schema/create-view-builder.d.ts +3 -3
  92. package/dist/cjs/schema/create-view-builder.js +3 -3
  93. package/dist/cjs/util/query-id.js +10 -4
  94. package/dist/cjs/util/random-string.js +65 -2
  95. package/dist/cjs/util/type-utils.d.ts +1 -1
  96. package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
  97. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +19 -0
  98. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
  99. package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
  100. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
  101. package/dist/esm/driver/connection-provider.d.ts +1 -1
  102. package/dist/esm/driver/default-connection-provider.d.ts +1 -1
  103. package/dist/esm/driver/default-connection-provider.js +2 -2
  104. package/dist/esm/driver/dummy-driver.d.ts +8 -0
  105. package/dist/esm/driver/dummy-driver.js +8 -0
  106. package/dist/esm/driver/single-connection-provider.d.ts +1 -1
  107. package/dist/esm/driver/single-connection-provider.js +2 -2
  108. package/dist/esm/index-nodeless.d.ts +2 -0
  109. package/dist/esm/index-nodeless.js +2 -0
  110. package/dist/esm/kysely.d.ts +3 -6
  111. package/dist/esm/kysely.js +30 -41
  112. package/dist/esm/migration/migrator.js +4 -4
  113. package/dist/esm/operation-node/operation-node-transformer.js +1 -1
  114. package/dist/esm/operation-node/raw-node.d.ts +4 -2
  115. package/dist/esm/operation-node/raw-node.js +8 -2
  116. package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
  117. package/dist/esm/parser/complex-expression-parser.js +5 -4
  118. package/dist/esm/parser/filter-parser.d.ts +9 -9
  119. package/dist/esm/parser/filter-parser.js +31 -30
  120. package/dist/esm/parser/group-by-parser.d.ts +1 -2
  121. package/dist/esm/parser/group-by-parser.js +2 -2
  122. package/dist/esm/parser/insert-values-parser.d.ts +1 -2
  123. package/dist/esm/parser/insert-values-parser.js +6 -6
  124. package/dist/esm/parser/join-parser.d.ts +1 -2
  125. package/dist/esm/parser/join-parser.js +8 -7
  126. package/dist/esm/parser/order-by-parser.d.ts +1 -2
  127. package/dist/esm/parser/order-by-parser.js +4 -4
  128. package/dist/esm/parser/parse-utils.d.ts +10 -0
  129. package/dist/esm/parser/parse-utils.js +32 -0
  130. package/dist/esm/parser/reference-parser.d.ts +2 -3
  131. package/dist/esm/parser/reference-parser.js +5 -5
  132. package/dist/esm/parser/select-parser.d.ts +1 -2
  133. package/dist/esm/parser/select-parser.js +5 -5
  134. package/dist/esm/parser/table-parser.d.ts +2 -3
  135. package/dist/esm/parser/table-parser.js +5 -5
  136. package/dist/esm/parser/update-set-parser.d.ts +1 -2
  137. package/dist/esm/parser/update-set-parser.js +2 -2
  138. package/dist/esm/parser/value-parser.d.ts +3 -4
  139. package/dist/esm/parser/value-parser.js +7 -7
  140. package/dist/esm/parser/with-parser.d.ts +1 -2
  141. package/dist/esm/parser/with-parser.js +3 -2
  142. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
  143. package/dist/esm/query-builder/delete-query-builder.d.ts +34 -23
  144. package/dist/esm/query-builder/delete-query-builder.js +15 -15
  145. package/dist/esm/query-builder/expression-builder.d.ts +4 -13
  146. package/dist/esm/query-builder/expression-builder.js +12 -21
  147. package/dist/esm/query-builder/function-builder.d.ts +2 -6
  148. package/dist/esm/query-builder/function-builder.js +5 -8
  149. package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
  150. package/dist/esm/query-builder/insert-query-builder.js +8 -7
  151. package/dist/esm/query-builder/join-builder.d.ts +0 -2
  152. package/dist/esm/query-builder/join-builder.js +8 -8
  153. package/dist/esm/query-builder/on-conflict-builder.d.ts +46 -28
  154. package/dist/esm/query-builder/on-conflict-builder.js +17 -17
  155. package/dist/esm/query-builder/returning-interface.d.ts +3 -1
  156. package/dist/esm/query-builder/select-query-builder.d.ts +52 -33
  157. package/dist/esm/query-builder/select-query-builder.js +28 -26
  158. package/dist/esm/query-builder/update-query-builder.d.ts +41 -28
  159. package/dist/esm/query-builder/update-query-builder.js +22 -20
  160. package/dist/esm/query-builder/where-interface.d.ts +31 -20
  161. package/dist/esm/query-compiler/default-query-compiler.js +1 -1
  162. package/dist/esm/query-creator.d.ts +10 -129
  163. package/dist/esm/query-creator.js +5 -136
  164. package/dist/esm/query-executor/default-query-executor.d.ts +21 -7
  165. package/dist/esm/query-executor/default-query-executor.js +17 -19
  166. package/dist/esm/query-executor/noop-query-executor.d.ts +20 -6
  167. package/dist/esm/query-executor/noop-query-executor.js +10 -3
  168. package/dist/esm/query-executor/query-executor-base.d.ts +62 -0
  169. package/dist/esm/query-executor/query-executor-base.js +43 -0
  170. package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
  171. package/dist/esm/query-executor/query-executor-provider.js +2 -0
  172. package/dist/esm/query-executor/query-executor.d.ts +20 -13
  173. package/dist/esm/query-executor/query-executor.js +1 -55
  174. package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
  175. package/dist/esm/raw-builder/raw-builder.js +56 -57
  176. package/dist/esm/raw-builder/sql.d.ts +331 -0
  177. package/dist/esm/raw-builder/sql.js +159 -0
  178. package/dist/esm/schema/alter-table-builder.d.ts +42 -8
  179. package/dist/esm/schema/alter-table-builder.js +20 -0
  180. package/dist/esm/schema/column-definition-builder.d.ts +22 -8
  181. package/dist/esm/schema/create-index-builder.d.ts +3 -1
  182. package/dist/esm/schema/create-index-builder.js +3 -1
  183. package/dist/esm/schema/create-table-builder.d.ts +7 -3
  184. package/dist/esm/schema/create-table-builder.js +7 -3
  185. package/dist/esm/schema/create-view-builder.d.ts +3 -3
  186. package/dist/esm/schema/create-view-builder.js +3 -3
  187. package/dist/esm/util/query-id.js +10 -4
  188. package/dist/esm/util/random-string.js +65 -2
  189. package/dist/esm/util/type-utils.d.ts +1 -1
  190. package/package.json +14 -14
  191. package/dist/cjs/parser/parse-context.d.ts +0 -55
  192. package/dist/cjs/parser/parse-context.js +0 -50
  193. package/dist/cjs/util/private-symbols.d.ts +0 -5
  194. package/dist/cjs/util/private-symbols.js +0 -8
  195. package/dist/esm/parser/parse-context.d.ts +0 -55
  196. package/dist/esm/parser/parse-context.js +0 -47
  197. package/dist/esm/util/private-symbols.d.ts +0 -5
  198. package/dist/esm/util/private-symbols.js +0 -6
@@ -83,15 +83,18 @@ export interface ColumnDefinitionBuilderInterface {
83
83
  * .execute()
84
84
  * ```
85
85
  *
86
- * Raw expressions are also supported:
86
+ * Values passed to `defaultTo` are interpreted as value literals by default. You can define
87
+ * an arbitrary SQL expression using the {@link sql} template tag:
87
88
  *
88
89
  * ```ts
90
+ * import { sql } from 'kysely'
91
+ *
89
92
  * db.schema
90
93
  * .createTable('pet')
91
94
  * .addColumn(
92
95
  * 'number_of_legs',
93
96
  * 'integer',
94
- * (col) => col.defaultTo(db.raw('any SQL here'))
97
+ * (col) => col.defaultTo(sql`any SQL here`)
95
98
  * )
96
99
  * .execute()
97
100
  * ```
@@ -103,10 +106,12 @@ export interface ColumnDefinitionBuilderInterface {
103
106
  * ### Examples
104
107
  *
105
108
  * ```ts
109
+ * import { sql } from 'kysely'
110
+ *
106
111
  * db.schema
107
112
  * .createTable('pet')
108
113
  * .addColumn('number_of_legs', 'integer', (col) =>
109
- * col.check(db.raw('number_of_legs < 5'))
114
+ * col.check(sql`number_of_legs < 5`)
110
115
  * )
111
116
  * .execute()
112
117
  * ```
@@ -118,10 +123,12 @@ export interface ColumnDefinitionBuilderInterface {
118
123
  * ### Examples
119
124
  *
120
125
  * ```ts
126
+ * import { sql } from 'kysely'
127
+ *
121
128
  * db.schema
122
129
  * .createTable('person')
123
130
  * .addColumn('full_name', 'varchar(255)',
124
- * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
131
+ * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
125
132
  * )
126
133
  * .execute()
127
134
  * ```
@@ -235,15 +242,18 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
235
242
  * .execute()
236
243
  * ```
237
244
  *
238
- * Raw expressions are also supported:
245
+ * Values passed to `defaultTo` are interpreted as value literals by default. You can define
246
+ * an arbitrary SQL expression using the {@link sql} template tag:
239
247
  *
240
248
  * ```ts
249
+ * import { sql } from 'kysely'
250
+ *
241
251
  * db.schema
242
252
  * .createTable('pet')
243
253
  * .addColumn(
244
254
  * 'number_of_legs',
245
255
  * 'integer',
246
- * (col) => col.defaultTo(db.raw('any SQL here'))
256
+ * (col) => col.defaultTo(sql`any SQL here`)
247
257
  * )
248
258
  * .execute()
249
259
  * ```
@@ -255,10 +265,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
255
265
  * ### Examples
256
266
  *
257
267
  * ```ts
268
+ * import { sql } from 'kysely'
269
+ *
258
270
  * db.schema
259
271
  * .createTable('pet')
260
272
  * .addColumn('number_of_legs', 'integer', (col) =>
261
- * col.check(db.raw('number_of_legs < 5'))
273
+ * col.check(sql`number_of_legs < 5`)
262
274
  * )
263
275
  * .execute()
264
276
  * ```
@@ -270,10 +282,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
270
282
  * ### Examples
271
283
  *
272
284
  * ```ts
285
+ * import { sql } from 'kysely'
286
+ *
273
287
  * db.schema
274
288
  * .createTable('person')
275
289
  * .addColumn('full_name', 'varchar(255)',
276
- * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
290
+ * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
277
291
  * )
278
292
  * .execute()
279
293
  * ```
@@ -34,10 +34,12 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
34
34
  * ### Examples
35
35
  *
36
36
  * ```ts
37
+ * import { sql } from 'kysely'
38
+ *
37
39
  * await db.schema
38
40
  * .createIndex('person_first_name_index')
39
41
  * .on('person')
40
- * .expression(db.raw('first_name COLLATE "fi_FI"'))
42
+ * .expression(sql`first_name COLLATE "fi_FI"`)
41
43
  * .execute()
42
44
  * ```
43
45
  */
@@ -65,10 +65,12 @@ export class CreateIndexBuilder {
65
65
  * ### Examples
66
66
  *
67
67
  * ```ts
68
+ * import { sql } from 'kysely'
69
+ *
68
70
  * await db.schema
69
71
  * .createIndex('person_first_name_index')
70
72
  * .on('person')
71
- * .expression(db.raw('first_name COLLATE "fi_FI"'))
73
+ * .expression(sql`first_name COLLATE "fi_FI"`)
72
74
  * .execute()
73
75
  * ```
74
76
  */
@@ -39,13 +39,15 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
39
39
  * ### Examples
40
40
  *
41
41
  * ```ts
42
+ * import { sql } from 'kysely'
43
+ *
42
44
  * await db.schema
43
45
  * .createTable('person')
44
46
  * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
45
47
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
46
48
  * .addColumn('last_name', 'varchar(255)')
47
49
  * .addColumn('bank_balance', 'numeric(8, 2)')
48
- * .addColumn('data', db.raw('customtype'))
50
+ * .addColumn('data', sql`customtype`)
49
51
  * .addColumn('parent_id', 'integer', (col) =>
50
52
  * col.references('person.id').onDelete('cascade'))
51
53
  * )
@@ -111,7 +113,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
111
113
  * ### Examples
112
114
  *
113
115
  * ```ts
114
- * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
116
+ * import { sql } from 'kysely'
117
+ *
118
+ * addCheckConstraint('check_legs', sql`number_of_legs < 5`)
115
119
  * ```
116
120
  */
117
121
  addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
@@ -132,7 +136,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
132
136
  * )
133
137
  * ```
134
138
  *
135
- * Add constraintfor multiple columns:
139
+ * Add constraint for multiple columns:
136
140
  *
137
141
  * ```ts
138
142
  * addForeignKeyConstraint(
@@ -66,13 +66,15 @@ export class CreateTableBuilder {
66
66
  * ### Examples
67
67
  *
68
68
  * ```ts
69
+ * import { sql } from 'kysely'
70
+ *
69
71
  * await db.schema
70
72
  * .createTable('person')
71
73
  * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
72
74
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
73
75
  * .addColumn('last_name', 'varchar(255)')
74
76
  * .addColumn('bank_balance', 'numeric(8, 2)')
75
- * .addColumn('data', db.raw('customtype'))
77
+ * .addColumn('data', sql`customtype`)
76
78
  * .addColumn('parent_id', 'integer', (col) =>
77
79
  * col.references('person.id').onDelete('cascade'))
78
80
  * )
@@ -154,7 +156,9 @@ export class CreateTableBuilder {
154
156
  * ### Examples
155
157
  *
156
158
  * ```ts
157
- * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
159
+ * import { sql } from 'kysely'
160
+ *
161
+ * addCheckConstraint('check_legs', sql`number_of_legs < 5`)
158
162
  * ```
159
163
  */
160
164
  addCheckConstraint(constraintName, checkExpression) {
@@ -180,7 +184,7 @@ export class CreateTableBuilder {
180
184
  * )
181
185
  * ```
182
186
  *
183
- * Add constraintfor multiple columns:
187
+ * Add constraint for multiple columns:
184
188
  *
185
189
  * ```ts
186
190
  * addForeignKeyConstraint(
@@ -26,9 +26,9 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
26
26
  *
27
27
  * WARNING!
28
28
  * Some dialects don't support parameterized queries in DDL statements and therefore
29
- * the query or `raw` expression passed here is interpolated into a single string
30
- * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
31
- * the query or `raw` expression passed to this method!
29
+ * the query or raw {@link sql } expression passed here is interpolated into a single
30
+ * string opening an SQL injection vulnerability. DO NOT pass unchecked user input
31
+ * into the query or raw expression passed to this method!
32
32
  */
33
33
  as(query: AnySelectQueryBuilder | AnyRawBuilder): CreateViewBuilder;
34
34
  toOperationNode(): CreateViewNode;
@@ -62,9 +62,9 @@ export class CreateViewBuilder {
62
62
  *
63
63
  * WARNING!
64
64
  * Some dialects don't support parameterized queries in DDL statements and therefore
65
- * the query or `raw` expression passed here is interpolated into a single string
66
- * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
67
- * the query or `raw` expression passed to this method!
65
+ * the query or raw {@link sql } expression passed here is interpolated into a single
66
+ * string opening an SQL injection vulnerability. DO NOT pass unchecked user input
67
+ * into the query or raw expression passed to this method!
68
68
  */
69
69
  as(query) {
70
70
  const queryNode = query
@@ -1,8 +1,14 @@
1
1
  /// <reference types="./query-id.d.ts" />
2
- import { freeze } from './object-utils.js';
3
2
  import { randomString } from './random-string.js';
4
3
  export function createQueryId() {
5
- return freeze({
6
- queryId: randomString(8),
7
- });
4
+ return new LazyQueryId();
5
+ }
6
+ class LazyQueryId {
7
+ #queryId;
8
+ get queryId() {
9
+ if (this.#queryId === undefined) {
10
+ this.#queryId = randomString(8);
11
+ }
12
+ return this.#queryId;
13
+ }
8
14
  }
@@ -1,5 +1,68 @@
1
1
  /// <reference types="./random-string.d.ts" />
2
- const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
2
+ const CHARS = [
3
+ 'A',
4
+ 'B',
5
+ 'C',
6
+ 'D',
7
+ 'E',
8
+ 'F',
9
+ 'G',
10
+ 'H',
11
+ 'I',
12
+ 'J',
13
+ 'K',
14
+ 'L',
15
+ 'M',
16
+ 'N',
17
+ 'O',
18
+ 'P',
19
+ 'Q',
20
+ 'R',
21
+ 'S',
22
+ 'T',
23
+ 'U',
24
+ 'V',
25
+ 'W',
26
+ 'X',
27
+ 'Y',
28
+ 'Z',
29
+ 'a',
30
+ 'b',
31
+ 'c',
32
+ 'd',
33
+ 'e',
34
+ 'f',
35
+ 'g',
36
+ 'h',
37
+ 'i',
38
+ 'j',
39
+ 'k',
40
+ 'l',
41
+ 'm',
42
+ 'n',
43
+ 'o',
44
+ 'p',
45
+ 'q',
46
+ 'r',
47
+ 's',
48
+ 't',
49
+ 'u',
50
+ 'v',
51
+ 'w',
52
+ 'x',
53
+ 'y',
54
+ 'z',
55
+ '0',
56
+ '1',
57
+ '2',
58
+ '3',
59
+ '4',
60
+ '5',
61
+ '6',
62
+ '7',
63
+ '8',
64
+ '9',
65
+ ];
3
66
  export function randomString(length) {
4
67
  let chars = '';
5
68
  for (let i = 0; i < length; ++i) {
@@ -8,5 +71,5 @@ export function randomString(length) {
8
71
  return chars;
9
72
  }
10
73
  function randomChar() {
11
- return CHARS[Math.floor(Math.random() * CHARS.length)];
74
+ return CHARS[~~(Math.random() * CHARS.length)];
12
75
  }
@@ -74,7 +74,7 @@ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
74
74
  * movie: Movie
75
75
  * }
76
76
  *
77
- * type Columns = AnyColumn<Database, 'person' | 'pet'>
77
+ * type Columns = AnyColumnWithTable<Database, 'person' | 'pet'>
78
78
  *
79
79
  * // Columns == 'person.id' | 'pet.name' | 'pet.species'
80
80
  * ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.16.11",
3
+ "version": "0.17.2",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
@@ -47,22 +47,22 @@
47
47
  "@types/node": "^16.11.9"
48
48
  },
49
49
  "devDependencies": {
50
- "@types/better-sqlite3": "^7.4.1",
50
+ "@types/better-sqlite3": "^7.5.0",
51
51
  "@types/chai": "^4.3.0",
52
52
  "@types/chai-subset": "^1.3.3",
53
- "@types/mocha": "^9.0.0",
54
- "@types/pg": "^8.6.1",
55
- "better-sqlite3": "^7.4.5",
56
- "chai": "^4.3.4",
53
+ "@types/mocha": "^9.1.0",
54
+ "@types/pg": "^8.6.5",
55
+ "better-sqlite3": "^7.5.0",
56
+ "chai": "^4.3.6",
57
57
  "chai-subset": "^1.6.0",
58
- "esbuild": "^0.14.11",
59
- "mocha": "^9.1.3",
58
+ "esbuild": "^0.14.27",
59
+ "mocha": "^9.2.2",
60
60
  "mysql2": "^2.3.3",
61
- "pg": "^8.7.1",
62
- "playwright": "^1.17.2",
63
- "prettier": "^2.5.1",
64
- "tsd": "^0.19.0",
65
- "typedoc": "^0.22.10",
66
- "typescript": "4.5.3"
61
+ "pg": "^8.7.3",
62
+ "playwright": "^1.20.0",
63
+ "prettier": "^2.6.0",
64
+ "tsd": "^0.19.1",
65
+ "typedoc": "^0.22.13",
66
+ "typescript": "4.6.2"
67
67
  }
68
68
  }
@@ -1,55 +0,0 @@
1
- import { DialectAdapter } from '../dialect/dialect-adapter.js';
2
- import { JoinType } from '../operation-node/join-node.js';
3
- import { JoinBuilder } from '../query-builder/join-builder.js';
4
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
5
- import { ExpressionBuilder } from '../query-builder/expression-builder.js';
6
- import { QueryCreator } from '../query-creator.js';
7
- import { TableExpression } from './table-parser.js';
8
- /**
9
- * This interface exposes everything the parsers need to be able to parse
10
- * method calls into {@link OperationNode} trees.
11
- */
12
- export interface ParseContext {
13
- readonly adapter: DialectAdapter;
14
- /**
15
- * Creates a select query builder with a {@link NoopQueryExecutor}.
16
- */
17
- createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
18
- /**
19
- * Creates an expression builder for building stuff like subqueries.
20
- * {@link NoopQueryExecutor} is used as the executor and the queries
21
- * built using the returned builder can never be executed.
22
- */
23
- createExpressionBuilder(): ExpressionBuilder<any, any>;
24
- /**
25
- * Creates a query creator with a {@link NoopQueryExecutor}.
26
- */
27
- createQueryCreator(): QueryCreator<any>;
28
- /**
29
- * Creates an instance of a join builder.
30
- */
31
- createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
32
- }
33
- export declare class DefaultParseContext implements ParseContext {
34
- #private;
35
- constructor(adapter: DialectAdapter);
36
- get adapter(): DialectAdapter;
37
- /**
38
- * Creates a select query builder with a {@link NoopQueryExecutor}.
39
- */
40
- createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
41
- /**
42
- * Creates an expression builder for building stuff like subqueries.
43
- * {@link NoopQueryExecutor} is used as the executor and the queries
44
- * built using the returned builder can never be executed.
45
- */
46
- createExpressionBuilder(): ExpressionBuilder<any, any>;
47
- /**
48
- * Creates a query creator with a {@link NoopQueryExecutor}.
49
- */
50
- createQueryCreator(): QueryCreator<any>;
51
- /**
52
- * Creates an instance of a join builder.
53
- */
54
- createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
55
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultParseContext = void 0;
4
- const join_node_js_1 = require("../operation-node/join-node.js");
5
- const select_query_node_js_1 = require("../operation-node/select-query-node.js");
6
- const join_builder_js_1 = require("../query-builder/join-builder.js");
7
- const select_query_builder_js_1 = require("../query-builder/select-query-builder.js");
8
- const expression_builder_js_1 = require("../query-builder/expression-builder.js");
9
- const query_creator_js_1 = require("../query-creator.js");
10
- const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
11
- const query_id_js_1 = require("../util/query-id.js");
12
- const table_parser_js_1 = require("./table-parser.js");
13
- class DefaultParseContext {
14
- #adapter;
15
- #noopExecutor;
16
- constructor(adapter) {
17
- this.#adapter = adapter;
18
- this.#noopExecutor = new noop_query_executor_js_1.NoopQueryExecutor();
19
- }
20
- get adapter() {
21
- return this.#adapter;
22
- }
23
- createSelectQueryBuilder() {
24
- return new select_query_builder_js_1.SelectQueryBuilder({
25
- queryId: (0, query_id_js_1.createQueryId)(),
26
- executor: this.#noopExecutor,
27
- parseContext: this,
28
- queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(this, [])),
29
- });
30
- }
31
- createExpressionBuilder() {
32
- return new expression_builder_js_1.ExpressionBuilder({
33
- executor: this.#noopExecutor,
34
- parseContext: this,
35
- });
36
- }
37
- createQueryCreator() {
38
- return new query_creator_js_1.QueryCreator({
39
- executor: this.#noopExecutor,
40
- parseContext: this,
41
- });
42
- }
43
- createJoinBuilder(joinType, table) {
44
- return new join_builder_js_1.JoinBuilder({
45
- joinNode: join_node_js_1.JoinNode.create(joinType, (0, table_parser_js_1.parseTableExpression)(this, table)),
46
- parseContext: this,
47
- });
48
- }
49
- }
50
- exports.DefaultParseContext = DefaultParseContext;
@@ -1,5 +0,0 @@
1
- /**
2
- * @internal
3
- * @private
4
- */
5
- export declare const PRIVATE_ADAPTER: unique symbol;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRIVATE_ADAPTER = void 0;
4
- /**
5
- * @internal
6
- * @private
7
- */
8
- exports.PRIVATE_ADAPTER = Symbol();
@@ -1,55 +0,0 @@
1
- import { DialectAdapter } from '../dialect/dialect-adapter.js';
2
- import { JoinType } from '../operation-node/join-node.js';
3
- import { JoinBuilder } from '../query-builder/join-builder.js';
4
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
5
- import { ExpressionBuilder } from '../query-builder/expression-builder.js';
6
- import { QueryCreator } from '../query-creator.js';
7
- import { TableExpression } from './table-parser.js';
8
- /**
9
- * This interface exposes everything the parsers need to be able to parse
10
- * method calls into {@link OperationNode} trees.
11
- */
12
- export interface ParseContext {
13
- readonly adapter: DialectAdapter;
14
- /**
15
- * Creates a select query builder with a {@link NoopQueryExecutor}.
16
- */
17
- createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
18
- /**
19
- * Creates an expression builder for building stuff like subqueries.
20
- * {@link NoopQueryExecutor} is used as the executor and the queries
21
- * built using the returned builder can never be executed.
22
- */
23
- createExpressionBuilder(): ExpressionBuilder<any, any>;
24
- /**
25
- * Creates a query creator with a {@link NoopQueryExecutor}.
26
- */
27
- createQueryCreator(): QueryCreator<any>;
28
- /**
29
- * Creates an instance of a join builder.
30
- */
31
- createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
32
- }
33
- export declare class DefaultParseContext implements ParseContext {
34
- #private;
35
- constructor(adapter: DialectAdapter);
36
- get adapter(): DialectAdapter;
37
- /**
38
- * Creates a select query builder with a {@link NoopQueryExecutor}.
39
- */
40
- createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
41
- /**
42
- * Creates an expression builder for building stuff like subqueries.
43
- * {@link NoopQueryExecutor} is used as the executor and the queries
44
- * built using the returned builder can never be executed.
45
- */
46
- createExpressionBuilder(): ExpressionBuilder<any, any>;
47
- /**
48
- * Creates a query creator with a {@link NoopQueryExecutor}.
49
- */
50
- createQueryCreator(): QueryCreator<any>;
51
- /**
52
- * Creates an instance of a join builder.
53
- */
54
- createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
55
- }
@@ -1,47 +0,0 @@
1
- /// <reference types="./parse-context.d.ts" />
2
- import { JoinNode } from '../operation-node/join-node.js';
3
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
- import { JoinBuilder } from '../query-builder/join-builder.js';
5
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
6
- import { ExpressionBuilder } from '../query-builder/expression-builder.js';
7
- import { QueryCreator } from '../query-creator.js';
8
- import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
9
- import { createQueryId } from '../util/query-id.js';
10
- import { parseTableExpression, parseTableExpressionOrList, } from './table-parser.js';
11
- export class DefaultParseContext {
12
- #adapter;
13
- #noopExecutor;
14
- constructor(adapter) {
15
- this.#adapter = adapter;
16
- this.#noopExecutor = new NoopQueryExecutor();
17
- }
18
- get adapter() {
19
- return this.#adapter;
20
- }
21
- createSelectQueryBuilder() {
22
- return new SelectQueryBuilder({
23
- queryId: createQueryId(),
24
- executor: this.#noopExecutor,
25
- parseContext: this,
26
- queryNode: SelectQueryNode.create(parseTableExpressionOrList(this, [])),
27
- });
28
- }
29
- createExpressionBuilder() {
30
- return new ExpressionBuilder({
31
- executor: this.#noopExecutor,
32
- parseContext: this,
33
- });
34
- }
35
- createQueryCreator() {
36
- return new QueryCreator({
37
- executor: this.#noopExecutor,
38
- parseContext: this,
39
- });
40
- }
41
- createJoinBuilder(joinType, table) {
42
- return new JoinBuilder({
43
- joinNode: JoinNode.create(joinType, parseTableExpression(this, table)),
44
- parseContext: this,
45
- });
46
- }
47
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * @internal
3
- * @private
4
- */
5
- export declare const PRIVATE_ADAPTER: unique symbol;
@@ -1,6 +0,0 @@
1
- /// <reference types="./private-symbols.d.ts" />
2
- /**
3
- * @internal
4
- * @private
5
- */
6
- export const PRIVATE_ADAPTER = Symbol();