kysely 0.11.3 → 0.12.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 (250) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
  3. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +36 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
  7. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +36 -0
  8. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
  9. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  10. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  13. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  16. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  17. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  18. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  19. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  20. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  21. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  22. package/dist/cjs/dynamic/dynamic.js +6 -7
  23. package/dist/cjs/index.d.ts +14 -3
  24. package/dist/cjs/index.js +12 -1
  25. package/dist/cjs/kysely.d.ts +170 -11
  26. package/dist/cjs/kysely.js +69 -9
  27. package/dist/cjs/migration/migration.d.ts +2 -2
  28. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  29. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  30. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  32. package/dist/cjs/operation-node/create-table-node.js +6 -6
  33. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  34. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  35. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
  36. package/dist/cjs/operation-node/operation-node-transformer.js +20 -1
  37. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
  38. package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
  39. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  41. package/dist/cjs/operation-node/query-node.js +0 -10
  42. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  43. package/dist/cjs/operation-node/values-node.js +18 -0
  44. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  45. package/dist/cjs/operation-node/with-node.js +2 -1
  46. package/dist/cjs/package.json +1 -3
  47. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  48. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  49. package/dist/cjs/parser/filter-parser.d.ts +13 -4
  50. package/dist/cjs/parser/filter-parser.js +21 -24
  51. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  52. package/dist/cjs/parser/insert-values-parser.js +31 -39
  53. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  54. package/dist/cjs/parser/parse-context.d.ts +22 -8
  55. package/dist/cjs/parser/parse-context.js +10 -10
  56. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  57. package/dist/cjs/parser/reference-parser.js +8 -17
  58. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  59. package/dist/cjs/parser/select-parser.d.ts +12 -14
  60. package/dist/cjs/parser/select-parser.js +5 -9
  61. package/dist/cjs/parser/table-parser.d.ts +9 -11
  62. package/dist/cjs/parser/table-parser.js +2 -8
  63. package/dist/cjs/parser/union-parser.d.ts +2 -2
  64. package/dist/cjs/parser/union-parser.js +1 -6
  65. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  66. package/dist/cjs/parser/update-set-parser.js +6 -26
  67. package/dist/cjs/parser/value-parser.d.ts +9 -6
  68. package/dist/cjs/parser/value-parser.js +7 -30
  69. package/dist/cjs/parser/with-parser.d.ts +36 -6
  70. package/dist/cjs/parser/with-parser.js +13 -2
  71. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  72. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  73. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  74. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  75. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  76. package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
  77. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  78. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  79. package/dist/cjs/query-builder/expression-builder.js +3 -3
  80. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  81. package/dist/cjs/query-builder/function-builder.js +2 -1
  82. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  83. package/dist/cjs/query-builder/having-interface.js +2 -0
  84. package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
  85. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  86. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  87. package/dist/cjs/query-builder/insert-result.js +3 -2
  88. package/dist/cjs/query-builder/join-builder.d.ts +19 -20
  89. package/dist/cjs/query-builder/join-builder.js +12 -12
  90. package/dist/cjs/query-builder/join-interface.d.ts +130 -0
  91. package/dist/cjs/query-builder/join-interface.js +2 -0
  92. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  93. package/dist/cjs/query-builder/no-result-error.js +14 -0
  94. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  95. package/dist/cjs/query-builder/returning-interface.js +2 -0
  96. package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  97. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  98. package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
  99. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  100. package/dist/cjs/query-builder/where-interface.d.ts +378 -0
  101. package/dist/cjs/query-builder/where-interface.js +2 -0
  102. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -0
  103. package/dist/cjs/query-compiler/default-query-compiler.js +33 -5
  104. package/dist/cjs/query-creator.d.ts +69 -43
  105. package/dist/cjs/query-creator.js +66 -29
  106. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  107. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  108. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  109. package/dist/cjs/query-executor/query-executor.js +1 -1
  110. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  111. package/dist/cjs/raw-builder/raw-builder.js +7 -1
  112. package/dist/cjs/schema/alter-table-builder.d.ts +218 -2
  113. package/dist/cjs/schema/column-definition-builder.d.ts +135 -20
  114. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  115. package/dist/cjs/schema/create-index-builder.js +2 -1
  116. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  117. package/dist/cjs/schema/create-table-builder.js +42 -9
  118. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  119. package/dist/cjs/schema/create-view-builder.js +25 -16
  120. package/dist/cjs/schema/schema.d.ts +18 -11
  121. package/dist/cjs/schema/schema.js +18 -11
  122. package/dist/cjs/util/log.d.ts +3 -2
  123. package/dist/cjs/util/log.js +8 -15
  124. package/dist/cjs/util/type-utils.d.ts +7 -7
  125. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  126. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +36 -0
  127. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
  128. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  129. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
  130. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +36 -0
  131. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
  132. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  133. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
  134. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  135. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  136. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  137. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  138. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  139. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  140. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  141. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  142. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  143. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  144. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  145. package/dist/esm/dynamic/dynamic.js +6 -7
  146. package/dist/esm/index.d.ts +14 -3
  147. package/dist/esm/index.js +12 -1
  148. package/dist/esm/kysely.d.ts +170 -11
  149. package/dist/esm/kysely.js +69 -9
  150. package/dist/esm/migration/migration.d.ts +2 -2
  151. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  152. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  153. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  154. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  155. package/dist/esm/operation-node/create-table-node.js +6 -6
  156. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  157. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  158. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
  159. package/dist/esm/operation-node/operation-node-transformer.js +20 -1
  160. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
  161. package/dist/esm/operation-node/operation-node-visitor.js +2 -0
  162. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  163. package/dist/esm/operation-node/query-node.d.ts +0 -2
  164. package/dist/esm/operation-node/query-node.js +0 -10
  165. package/dist/esm/operation-node/values-node.d.ts +15 -0
  166. package/dist/esm/operation-node/values-node.js +15 -0
  167. package/dist/esm/operation-node/with-node.d.ts +3 -1
  168. package/dist/esm/operation-node/with-node.js +2 -1
  169. package/dist/esm/package.json +1 -3
  170. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  171. package/dist/esm/parser/complex-expression-parser.js +20 -0
  172. package/dist/esm/parser/filter-parser.d.ts +13 -4
  173. package/dist/esm/parser/filter-parser.js +21 -24
  174. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  175. package/dist/esm/parser/insert-values-parser.js +31 -38
  176. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  177. package/dist/esm/parser/parse-context.d.ts +22 -8
  178. package/dist/esm/parser/parse-context.js +10 -10
  179. package/dist/esm/parser/reference-parser.d.ts +8 -7
  180. package/dist/esm/parser/reference-parser.js +9 -18
  181. package/dist/esm/parser/returning-parser.d.ts +1 -5
  182. package/dist/esm/parser/select-parser.d.ts +12 -14
  183. package/dist/esm/parser/select-parser.js +6 -10
  184. package/dist/esm/parser/table-parser.d.ts +9 -11
  185. package/dist/esm/parser/table-parser.js +3 -9
  186. package/dist/esm/parser/union-parser.d.ts +2 -2
  187. package/dist/esm/parser/union-parser.js +1 -6
  188. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  189. package/dist/esm/parser/update-set-parser.js +5 -24
  190. package/dist/esm/parser/value-parser.d.ts +9 -6
  191. package/dist/esm/parser/value-parser.js +8 -31
  192. package/dist/esm/parser/with-parser.d.ts +36 -6
  193. package/dist/esm/parser/with-parser.js +13 -2
  194. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  195. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  196. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  197. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  198. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  199. package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
  200. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  201. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  202. package/dist/esm/query-builder/expression-builder.js +3 -3
  203. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  204. package/dist/esm/query-builder/function-builder.js +2 -1
  205. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  206. package/dist/esm/query-builder/having-interface.js +1 -0
  207. package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
  208. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  209. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  210. package/dist/esm/query-builder/insert-result.js +3 -2
  211. package/dist/esm/query-builder/join-builder.d.ts +19 -20
  212. package/dist/esm/query-builder/join-builder.js +12 -12
  213. package/dist/esm/query-builder/join-interface.d.ts +130 -0
  214. package/dist/esm/query-builder/join-interface.js +1 -0
  215. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  216. package/dist/esm/query-builder/no-result-error.js +10 -0
  217. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  218. package/dist/esm/query-builder/returning-interface.js +1 -0
  219. package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  220. package/dist/esm/query-builder/select-query-builder.js +566 -0
  221. package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
  222. package/dist/esm/query-builder/update-query-builder.js +275 -0
  223. package/dist/esm/query-builder/where-interface.d.ts +378 -0
  224. package/dist/esm/query-builder/where-interface.js +1 -0
  225. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -0
  226. package/dist/esm/query-compiler/default-query-compiler.js +33 -5
  227. package/dist/esm/query-creator.d.ts +69 -43
  228. package/dist/esm/query-creator.js +66 -29
  229. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  230. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  231. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  232. package/dist/esm/query-executor/query-executor.js +1 -1
  233. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  234. package/dist/esm/raw-builder/raw-builder.js +7 -1
  235. package/dist/esm/schema/alter-table-builder.d.ts +218 -2
  236. package/dist/esm/schema/column-definition-builder.d.ts +135 -20
  237. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  238. package/dist/esm/schema/create-index-builder.js +2 -1
  239. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  240. package/dist/esm/schema/create-table-builder.js +43 -10
  241. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  242. package/dist/esm/schema/create-view-builder.js +25 -16
  243. package/dist/esm/schema/schema.d.ts +18 -11
  244. package/dist/esm/schema/schema.js +18 -11
  245. package/dist/esm/util/log.d.ts +3 -2
  246. package/dist/esm/util/log.js +7 -14
  247. package/dist/esm/util/type-utils.d.ts +7 -7
  248. package/package.json +10 -8
  249. package/dist/cjs/query-builder/query-builder.js +0 -1067
  250. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -1,5 +1,5 @@
1
1
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
2
- import { CreateTableNode } from '../operation-node/create-table-node.js';
2
+ import { CreateTableNode, } from '../operation-node/create-table-node.js';
3
3
  import { preventAwait } from '../util/prevent-await.js';
4
4
  import { ColumnDefinitionBuilder } from './column-definition-builder.js';
5
5
  import { freeze, noop } from '../util/object-utils.js';
@@ -19,6 +19,33 @@ export class CreateTableBuilder {
19
19
  constructor(props) {
20
20
  this.#props = freeze(props);
21
21
  }
22
+ /**
23
+ * Adds the "temporary" modifier.
24
+ *
25
+ * Use this to create a temporary table.
26
+ */
27
+ temporary() {
28
+ return new CreateTableBuilder({
29
+ ...this.#props,
30
+ createTableNode: CreateTableNode.cloneWith(this.#props.createTableNode, {
31
+ temporary: true,
32
+ }),
33
+ });
34
+ }
35
+ /**
36
+ * Adds an "on commit" statement.
37
+ *
38
+ * This can be used in conjunction with temporary tables on supported databases
39
+ * like PostgreSQL.
40
+ */
41
+ onCommit(onCommit) {
42
+ return new CreateTableBuilder({
43
+ ...this.#props,
44
+ createTableNode: CreateTableNode.cloneWith(this.#props.createTableNode, {
45
+ onCommit,
46
+ }),
47
+ });
48
+ }
22
49
  /**
23
50
  * Adds the "if not exists" modifier.
24
51
  *
@@ -27,13 +54,16 @@ export class CreateTableBuilder {
27
54
  ifNotExists() {
28
55
  return new CreateTableBuilder({
29
56
  ...this.#props,
30
- createTableNode: CreateTableNode.cloneWithIfNotExists(this.#props.createTableNode, true),
57
+ createTableNode: CreateTableNode.cloneWith(this.#props.createTableNode, {
58
+ ifNotExists: true,
59
+ }),
31
60
  });
32
61
  }
33
62
  /**
34
63
  * Adds a column to the table.
35
64
  *
36
- * @example
65
+ * ### Examples
66
+ *
37
67
  * ```ts
38
68
  * await db.schema
39
69
  * .createTable('person')
@@ -53,7 +83,6 @@ export class CreateTableBuilder {
53
83
  * foreign key constraints need to be defined in at the level of the `create table`
54
84
  * query. See the next example:
55
85
  *
56
- * @example
57
86
  * ```ts
58
87
  * .addColumn('parent_id', 'integer')
59
88
  * .addForeignKeyConstraint(
@@ -66,7 +95,6 @@ export class CreateTableBuilder {
66
95
  * keyword and you need to define an autoincrementing column for example using
67
96
  * `serial`:
68
97
  *
69
- * @example
70
98
  * ```ts
71
99
  * await db.schema
72
100
  * .createTable('person')
@@ -86,7 +114,8 @@ export class CreateTableBuilder {
86
114
  * The constraint name can be anything you want, but it must be unique
87
115
  * across the whole database.
88
116
  *
89
- * @example
117
+ * ### Examples
118
+ *
90
119
  * ```ts
91
120
  * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
92
121
  * ```
@@ -103,7 +132,8 @@ export class CreateTableBuilder {
103
132
  * The constraint name can be anything you want, but it must be unique
104
133
  * across the whole database.
105
134
  *
106
- * @example
135
+ * ### Examples
136
+ *
107
137
  * ```ts
108
138
  * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
109
139
  * ```
@@ -120,7 +150,8 @@ export class CreateTableBuilder {
120
150
  * The constraint name can be anything you want, but it must be unique
121
151
  * across the whole database.
122
152
  *
123
- * @example
153
+ * ### Examples
154
+ *
124
155
  * ```ts
125
156
  * addCheckConstraint('check_legs', 'number_of_legs < 5')
126
157
  * ```
@@ -137,7 +168,8 @@ export class CreateTableBuilder {
137
168
  * The constraint name can be anything you want, but it must be unique
138
169
  * across the whole database.
139
170
  *
140
- * @example
171
+ * ### Examples
172
+ *
141
173
  * ```ts
142
174
  * addForeignKeyConstraint(
143
175
  * 'owner_id_foreign',
@@ -147,7 +179,8 @@ export class CreateTableBuilder {
147
179
  * )
148
180
  * ```
149
181
  *
150
- * @example
182
+ * Add constraintfor multiple columns:
183
+ *
151
184
  * ```ts
152
185
  * addForeignKeyConstraint(
153
186
  * 'owner_id_foreign',
@@ -4,11 +4,16 @@ import { Compilable } from '../util/compilable.js';
4
4
  import { QueryExecutor } from '../query-executor/query-executor.js';
5
5
  import { QueryId } from '../util/query-id.js';
6
6
  import { CreateViewNode } from '../operation-node/create-view-node.js';
7
- import { AnyQueryBuilder } from '../index.js';
8
- import { AnyRawBuilder } from '../util/type-utils.js';
7
+ import { AnyRawBuilder, AnySelectQueryBuilder } from '../util/type-utils.js';
9
8
  export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
10
9
  #private;
11
10
  constructor(props: CreateViewBuilderProps);
11
+ /**
12
+ * Adds the "temporary" modifier.
13
+ *
14
+ * Use this to create a temporary view.
15
+ */
16
+ temporary(): CreateViewBuilder;
12
17
  materialized(): CreateViewBuilder;
13
18
  /**
14
19
  * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
@@ -16,7 +21,16 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
16
21
  ifNotExists(): CreateViewBuilder;
17
22
  orReplace(): CreateViewBuilder;
18
23
  columns(columns: string[]): CreateViewBuilder;
19
- as(query: AnyQueryBuilder | AnyRawBuilder): CreateViewBuilder;
24
+ /**
25
+ * Sets the select query or a `values` statement that creates the view.
26
+ *
27
+ * WARNING!
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!
32
+ */
33
+ as(query: AnySelectQueryBuilder | AnyRawBuilder): CreateViewBuilder;
20
34
  toOperationNode(): CreateViewNode;
21
35
  compile(): CompiledQuery;
22
36
  execute(): Promise<void>;
@@ -2,22 +2,23 @@ import { preventAwait } from '../util/prevent-await.js';
2
2
  import { freeze } from '../util/object-utils.js';
3
3
  import { CreateViewNode } from '../operation-node/create-view-node.js';
4
4
  import { parseColumnName } from '../parser/reference-parser.js';
5
- import { QueryNode } from '../index.js';
6
5
  import { ImmediateValuePlugin } from '../plugin/immediate-value.ts/immediate-value-plugin.js';
7
6
  export class CreateViewBuilder {
8
7
  #props;
9
8
  constructor(props) {
10
- this.#props = freeze({
11
- ...props,
12
- // The select statement (defined using the `as` method) can't have parameters on some
13
- // dialects. We add the `ImmediateValuePlugin` to make all parameters "immediate"
14
- // meaning they are interpolated into the SQL instead of added as parameters.
15
- //
16
- // The values are therefore not escaped at all, which leads to SQL injection
17
- // vulnerabilities if user input is passed into the query. However, the use
18
- // case where user input is passed into a `create view` statement is a weird
19
- // one, and we can pretty safely just ignore it.
20
- executor: props.executor.withPlugin(new ImmediateValuePlugin()),
9
+ this.#props = freeze(props);
10
+ }
11
+ /**
12
+ * Adds the "temporary" modifier.
13
+ *
14
+ * Use this to create a temporary view.
15
+ */
16
+ temporary() {
17
+ return new CreateViewBuilder({
18
+ ...this.#props,
19
+ createViewNode: CreateViewNode.cloneWith(this.#props.createViewNode, {
20
+ temporary: true,
21
+ }),
21
22
  });
22
23
  }
23
24
  materialized() {
@@ -55,11 +56,19 @@ export class CreateViewBuilder {
55
56
  }),
56
57
  });
57
58
  }
59
+ /**
60
+ * Sets the select query or a `values` statement that creates the view.
61
+ *
62
+ * WARNING!
63
+ * Some dialects don't support parameterized queries in DDL statements and therefore
64
+ * the query or `raw` expression passed here is interpolated into a single string
65
+ * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
66
+ * the query or `raw` expression passed to this method!
67
+ */
58
68
  as(query) {
59
- const queryNode = query.toOperationNode();
60
- if (QueryNode.isMutating(queryNode)) {
61
- throw new Error('only select statements are allowd in views');
62
- }
69
+ const queryNode = query
70
+ .withPlugin(new ImmediateValuePlugin())
71
+ .toOperationNode();
63
72
  return new CreateViewBuilder({
64
73
  ...this.#props,
65
74
  createViewNode: CreateViewNode.cloneWith(this.#props.createViewNode, {
@@ -17,7 +17,8 @@ export declare class SchemaModule {
17
17
  /**
18
18
  * Create a new table.
19
19
  *
20
- * @example
20
+ * ### Examples
21
+ *
21
22
  * This example creates a new table with columns `id`, `first_name`,
22
23
  * `last_name` and `gender`:
23
24
  *
@@ -31,7 +32,6 @@ export declare class SchemaModule {
31
32
  * .execute()
32
33
  * ```
33
34
  *
34
- * @example
35
35
  * This example creates a table with a foreign key. Not all database
36
36
  * engines support column-level foreign key constraint definitions.
37
37
  * For example if you are using MySQL 5.X see the next example after
@@ -48,7 +48,6 @@ export declare class SchemaModule {
48
48
  * .execute()
49
49
  * ```
50
50
  *
51
- * @example
52
51
  * This example adds a foreign key constraint for a columns just
53
52
  * like the previous example, but using a table-level statement.
54
53
  * On MySQL 5.X you need to define foreign key constraints like
@@ -70,7 +69,8 @@ export declare class SchemaModule {
70
69
  /**
71
70
  * Drop a table.
72
71
  *
73
- * @example
72
+ * ### Examples
73
+ *
74
74
  * ```ts
75
75
  * await db.schema
76
76
  * .dropTable('person')
@@ -81,7 +81,8 @@ export declare class SchemaModule {
81
81
  /**
82
82
  * Create a new index.
83
83
  *
84
- * @example
84
+ * ### Examples
85
+ *
85
86
  * ```ts
86
87
  * await db.schema
87
88
  * .createIndex('person_full_name_unique_index')
@@ -94,7 +95,8 @@ export declare class SchemaModule {
94
95
  /**
95
96
  * Drop an index.
96
97
  *
97
- * @example
98
+ * ### Examples
99
+ *
98
100
  * ```ts
99
101
  * await db.schema
100
102
  * .dropIndex('person_full_name_unique_index')
@@ -105,7 +107,8 @@ export declare class SchemaModule {
105
107
  /**
106
108
  * Create a new schema.
107
109
  *
108
- * @example
110
+ * ### Examples
111
+ *
109
112
  * ```ts
110
113
  * await db.schema
111
114
  * .createSchema('some_schema')
@@ -116,7 +119,8 @@ export declare class SchemaModule {
116
119
  /**
117
120
  * Drop a schema.
118
121
  *
119
- * @example
122
+ * ### Examples
123
+ *
120
124
  * ```ts
121
125
  * await db.schema
122
126
  * .dropSchema('some_schema')
@@ -127,7 +131,8 @@ export declare class SchemaModule {
127
131
  /**
128
132
  * Alter a table.
129
133
  *
130
- * @example
134
+ * ### Examples
135
+ *
131
136
  * ```ts
132
137
  * await db.schema
133
138
  * .alterTable('person')
@@ -140,7 +145,8 @@ export declare class SchemaModule {
140
145
  /**
141
146
  * Create a new view.
142
147
  *
143
- * @example
148
+ * ### Examples
149
+ *
144
150
  * ```ts
145
151
  * await db.schema
146
152
  * .createView('dogs')
@@ -153,7 +159,8 @@ export declare class SchemaModule {
153
159
  /**
154
160
  * Drop a view.
155
161
  *
156
- * @example
162
+ * ### Examples
163
+ *
157
164
  * ```ts
158
165
  * await db.schema
159
166
  * .dropView('dogs')
@@ -30,7 +30,8 @@ export class SchemaModule {
30
30
  /**
31
31
  * Create a new table.
32
32
  *
33
- * @example
33
+ * ### Examples
34
+ *
34
35
  * This example creates a new table with columns `id`, `first_name`,
35
36
  * `last_name` and `gender`:
36
37
  *
@@ -44,7 +45,6 @@ export class SchemaModule {
44
45
  * .execute()
45
46
  * ```
46
47
  *
47
- * @example
48
48
  * This example creates a table with a foreign key. Not all database
49
49
  * engines support column-level foreign key constraint definitions.
50
50
  * For example if you are using MySQL 5.X see the next example after
@@ -61,7 +61,6 @@ export class SchemaModule {
61
61
  * .execute()
62
62
  * ```
63
63
  *
64
- * @example
65
64
  * This example adds a foreign key constraint for a columns just
66
65
  * like the previous example, but using a table-level statement.
67
66
  * On MySQL 5.X you need to define foreign key constraints like
@@ -89,7 +88,8 @@ export class SchemaModule {
89
88
  /**
90
89
  * Drop a table.
91
90
  *
92
- * @example
91
+ * ### Examples
92
+ *
93
93
  * ```ts
94
94
  * await db.schema
95
95
  * .dropTable('person')
@@ -106,7 +106,8 @@ export class SchemaModule {
106
106
  /**
107
107
  * Create a new index.
108
108
  *
109
- * @example
109
+ * ### Examples
110
+ *
110
111
  * ```ts
111
112
  * await db.schema
112
113
  * .createIndex('person_full_name_unique_index')
@@ -125,7 +126,8 @@ export class SchemaModule {
125
126
  /**
126
127
  * Drop an index.
127
128
  *
128
- * @example
129
+ * ### Examples
130
+ *
129
131
  * ```ts
130
132
  * await db.schema
131
133
  * .dropIndex('person_full_name_unique_index')
@@ -142,7 +144,8 @@ export class SchemaModule {
142
144
  /**
143
145
  * Create a new schema.
144
146
  *
145
- * @example
147
+ * ### Examples
148
+ *
146
149
  * ```ts
147
150
  * await db.schema
148
151
  * .createSchema('some_schema')
@@ -159,7 +162,8 @@ export class SchemaModule {
159
162
  /**
160
163
  * Drop a schema.
161
164
  *
162
- * @example
165
+ * ### Examples
166
+ *
163
167
  * ```ts
164
168
  * await db.schema
165
169
  * .dropSchema('some_schema')
@@ -176,7 +180,8 @@ export class SchemaModule {
176
180
  /**
177
181
  * Alter a table.
178
182
  *
179
- * @example
183
+ * ### Examples
184
+ *
180
185
  * ```ts
181
186
  * await db.schema
182
187
  * .alterTable('person')
@@ -195,7 +200,8 @@ export class SchemaModule {
195
200
  /**
196
201
  * Create a new view.
197
202
  *
198
- * @example
203
+ * ### Examples
204
+ *
199
205
  * ```ts
200
206
  * await db.schema
201
207
  * .createView('dogs')
@@ -214,7 +220,8 @@ export class SchemaModule {
214
220
  /**
215
221
  * Drop a view.
216
222
  *
217
- * @example
223
+ * ### Examples
224
+ *
218
225
  * ```ts
219
226
  * await db.schema
220
227
  * .dropView('dogs')
@@ -1,4 +1,4 @@
1
- import { CompiledQuery } from '../index.js';
1
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  import { ArrayItemType } from './type-utils.js';
3
3
  export declare const LOG_LEVELS: readonly ["query", "error"];
4
4
  export declare type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
@@ -12,7 +12,8 @@ export interface ErrorLogEvent {
12
12
  readonly error: unknown;
13
13
  }
14
14
  export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
15
- export declare type LogConfig = ReadonlyArray<LogLevel> | ((event: LogEvent) => void);
15
+ export declare type Logger = (event: LogEvent) => void;
16
+ export declare type LogConfig = ReadonlyArray<LogLevel> | Logger;
16
17
  export declare class Log {
17
18
  #private;
18
19
  constructor(config: LogConfig);
@@ -12,6 +12,7 @@ export class Log {
12
12
  });
13
13
  }
14
14
  else {
15
+ this.#logger = defaultLogger;
15
16
  this.#levels = freeze({
16
17
  query: config.includes('query'),
17
18
  error: config.includes('error'),
@@ -20,29 +21,21 @@ export class Log {
20
21
  }
21
22
  query(getEvent) {
22
23
  if (this.#levels.query) {
23
- if (this.#logger) {
24
- this.#logger(getEvent());
25
- }
26
- else {
27
- this.#defaultQuery(getEvent());
28
- }
24
+ this.#logger(getEvent());
29
25
  }
30
26
  }
31
27
  error(getEvent) {
32
28
  if (this.#levels.error) {
33
- if (this.#logger) {
34
- this.#logger(getEvent());
35
- }
36
- else {
37
- this.#defaultError(getEvent());
38
- }
29
+ this.#logger(getEvent());
39
30
  }
40
31
  }
41
- #defaultQuery(event) {
32
+ }
33
+ function defaultLogger(event) {
34
+ if (event.level === 'query') {
42
35
  console.log(`kysely:query: ${event.query.sql}`);
43
36
  console.log(`kysely:query: duration: ${event.queryDurationMillis.toFixed(1)}ms`);
44
37
  }
45
- #defaultError(event) {
38
+ else if (event.level === 'error') {
46
39
  if (event.error instanceof Error) {
47
40
  console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);
48
41
  }
@@ -1,5 +1,5 @@
1
1
  import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
2
- import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
2
+ import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
3
  import { ExpressionBuilder } from '../query-builder/expression-builder.js';
4
4
  import { InsertResult } from '../query-builder/insert-result.js';
5
5
  import { DeleteResult } from '../query-builder/delete-result.js';
@@ -41,7 +41,7 @@ export declare type ValueType<T> = T[keyof T];
41
41
  */
42
42
  export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
43
  /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
44
+ * Evil typescript magic to convert a union type `A | B | C` into an
45
45
  * intersection type `A & B & C`.
46
46
  */
47
47
  declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -73,12 +73,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
73
73
  *
74
74
  * type Columns = AnyColumn<Database, 'person' | 'pet'>
75
75
  *
76
- * // Columns == 'id' | 'name' | 'species'
76
+ * // Columns == 'id' | 'name' | 'species'
77
77
  * ```
78
78
  */
79
79
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
80
  [T in TB]: keyof DB[T];
81
- }[TB];
81
+ }[TB] & string;
82
82
  /**
83
83
  * Given a database type and a union of table names in that db, returns
84
84
  * a union type with all possible `table`.`column` combinations.
@@ -107,7 +107,7 @@ export declare type AnyColumn<DB, TB extends keyof DB> = {
107
107
  *
108
108
  * type Columns = AnyColumn<Database, 'person' | 'pet'>
109
109
  *
110
- * // Columns == 'person.id' | 'pet.name' | 'pet.species'
110
+ * // Columns == 'person.id' | 'pet.name' | 'pet.species'
111
111
  * ```
112
112
  */
113
113
  export declare type AnyColumnWithTable<DB, TB extends keyof DB> = {
@@ -129,11 +129,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
129
129
  * Extracts the item type of an array.
130
130
  */
131
131
  export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
132
- export declare type AnyQueryBuilder = QueryBuilder<any, any, any>;
132
+ export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
133
133
  export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
134
134
  export declare type AnyRawBuilder = RawBuilder<any>;
135
135
  export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
136
- export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => QueryBuilder<any, any, any>;
136
+ export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
137
137
  export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
138
138
  export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
139
139
  export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.11.3",
3
+ "version": "0.12.2",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/koskimas/kysely.git"
8
8
  },
9
9
  "engines": {
10
- "node": ">=16.0.0"
10
+ "node": ">=14.0.0"
11
11
  },
12
12
  "main": "dist/cjs/index.js",
13
13
  "module": "dist/esm/index.js",
@@ -20,16 +20,18 @@
20
20
  "scripts": {
21
21
  "test:build": "rm -rf test/dist && tsc -p test",
22
22
  "clean": "rm -rf dist && rm -rf test/dist",
23
- "test": "npm run clean && npm run build:cjs && npm run test:build && npm run test:integration && npm run test:typings && npm run test:esmimports",
23
+ "test": "npm run clean && npm run build:cjs && npm run script:copy-interface-doc && npm run test:build && npm run test:integration && npm run test:typings && npm run test:esmimports",
24
24
  "test:integration": "mocha --timeout 15000 test/dist/**/*.test.js",
25
25
  "test:typings": "tsd test/typings",
26
- "test:esmimports": "node check-esm-imports.js",
26
+ "test:esmimports": "node scripts/check-esm-imports.js",
27
27
  "prettier": "prettier --write src/**/*.ts test/**/*.ts",
28
- "build": "npm run clean && npm run build:esm && npm run build:cjs && ./module-fixup.sh",
28
+ "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run script:module-fixup && npm run script:copy-interface-doc",
29
29
  "build:esm": "tsc -p tsconfig.json",
30
30
  "build:cjs": "tsc -p tsconfig-cjs.json",
31
31
  "docs:build": "typedoc --excludePrivate --excludeInternal --customCss ./docs-theme.css src/index.ts && npm run docs:postprocess",
32
- "docs:postprocess": "node post-process-docs.js",
32
+ "docs:postprocess": "node scripts/post-process-docs.js",
33
+ "script:module-fixup": "node scripts/module-fixup.js",
34
+ "script:copy-interface-doc": "node scripts/copy-interface-documentation.js",
33
35
  "prepublishOnly": "npm run build"
34
36
  },
35
37
  "author": "Sami Koskimäki <sami@jakso.me>",
@@ -39,7 +41,7 @@
39
41
  },
40
42
  "devDependencies": {
41
43
  "@types/better-sqlite3": "^7.4.1",
42
- "@types/chai": "^4.2.22",
44
+ "@types/chai": "^4.3.0",
43
45
  "@types/chai-subset": "^1.3.3",
44
46
  "@types/mocha": "^9.0.0",
45
47
  "@types/pg": "^8.6.1",
@@ -52,6 +54,6 @@
52
54
  "prettier": "^2.5.1",
53
55
  "tsd": "^0.19.0",
54
56
  "typedoc": "^0.22.10",
55
- "typescript": "4.5.2"
57
+ "typescript": "4.5.3"
56
58
  }
57
59
  }