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
package/README.md CHANGED
@@ -20,8 +20,8 @@ much anything you can think of. Typescript is always there for you offering comp
20
20
  you build a valid query.
21
21
 
22
22
  Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
23
- hatches for these situations. See the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref)
24
- for more info.
23
+ hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/modules.html#sql)
24
+ and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
25
25
 
26
26
  If you start using Kysely and can't find something you'd want to use, please open an issue or join our
27
27
  [discord server](https://discord.gg/C9aJ49mCra).
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MysqlAdapter = void 0;
4
+ const sql_js_1 = require("../../raw-builder/sql.js");
4
5
  const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
5
6
  const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
6
7
  const LOCK_TIMEOUT_SECONDS = 60 * 60;
@@ -18,12 +19,10 @@ class MysqlAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
18
19
  // is released using `release_lock`. This way we know that the lock is either
19
20
  // released by us after successfull or failed migrations OR it's released by
20
21
  // MySQL if the process gets killed for some reason.
21
- await db
22
- .raw(`select get_lock('${LOCK_ID}', ${LOCK_TIMEOUT_SECONDS})`)
23
- .execute();
22
+ await (0, sql_js_1.sql) `select get_lock(${sql_js_1.sql.literal(LOCK_ID)}, ${sql_js_1.sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
24
23
  }
25
24
  async releaseMigrationLock(db) {
26
- await db.raw(`select release_lock('${LOCK_ID}')`).execute();
25
+ await (0, sql_js_1.sql) `select release_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
27
26
  }
28
27
  }
29
28
  exports.MysqlAdapter = MysqlAdapter;
@@ -202,4 +202,23 @@ export interface MysqlSslOptions {
202
202
  * You can also connect to a MySQL server without properly providing the appropriate CA to trust. You should not do this.
203
203
  */
204
204
  rejectUnauthorized?: boolean;
205
+ charsetNumber?: number;
206
+ compress?: boolean;
207
+ authSwitchHandler?: (data: any, callback: () => void) => any;
208
+ connectAttributes?: {
209
+ [param: string]: any;
210
+ };
211
+ decimalNumbers?: boolean;
212
+ isServer?: boolean;
213
+ maxPreparedStatements?: number;
214
+ namedPlaceholders?: boolean;
215
+ nestTables?: boolean | string;
216
+ passwordSha1?: string;
217
+ pool?: any;
218
+ stream?: any;
219
+ uri?: string;
220
+ Promise?: any;
221
+ authPlugins?: {
222
+ [key: string]: any;
223
+ };
205
224
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MysqlIntrospector = void 0;
4
4
  const migrator_js_1 = require("../../migration/migrator.js");
5
5
  const object_utils_js_1 = require("../../util/object-utils.js");
6
+ const sql_js_1 = require("../../raw-builder/sql.js");
6
7
  class MysqlIntrospector {
7
8
  #db;
8
9
  constructor(db) {
@@ -12,7 +13,7 @@ class MysqlIntrospector {
12
13
  let query = this.#db
13
14
  .selectFrom('information_schema.columns')
14
15
  .selectAll()
15
- .where('table_schema', '=', this.#db.raw('database()'))
16
+ .where('table_schema', '=', (0, sql_js_1.sql) `database()`)
16
17
  .castTo();
17
18
  if (!options.withInternalKyselyTables) {
18
19
  query = query
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PostgresAdapter = void 0;
4
+ const sql_js_1 = require("../../raw-builder/sql.js");
4
5
  const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
5
6
  // Random id for our transaction lock.
6
- const LOCK_ID = '3853314791062309107';
7
+ const LOCK_ID = 3853314791062309107n;
7
8
  class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
8
9
  get supportsTransactionalDdl() {
9
10
  return true;
@@ -13,7 +14,7 @@ class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
13
14
  }
14
15
  async acquireMigrationLock(db) {
15
16
  // Acquire a transaction level advisory lock.
16
- await db.raw(`select pg_advisory_xact_lock(${LOCK_ID})`).execute();
17
+ await (0, sql_js_1.sql) `select pg_advisory_xact_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
17
18
  }
18
19
  async releaseMigrationLock() {
19
20
  // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SqliteIntrospector = void 0;
4
4
  const migrator_js_1 = require("../../migration/migrator.js");
5
+ const sql_js_1 = require("../../raw-builder/sql.js");
5
6
  class SqliteIntrospector {
6
7
  #db;
7
8
  constructor(db) {
@@ -27,7 +28,7 @@ class SqliteIntrospector {
27
28
  async #getTableMetadata(table) {
28
29
  const db = this.#db;
29
30
  const columns = await db
30
- .selectFrom(db.raw(`PRAGMA_TABLE_INFO(?)`, [table]).as('table_info'))
31
+ .selectFrom((0, sql_js_1.sql) `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
31
32
  .select(['name', 'type', 'notnull'])
32
33
  .castTo()
33
34
  .execute();
@@ -4,5 +4,5 @@ export interface ConnectionProvider {
4
4
  * Provides a connection for the callback and takes care of disposing
5
5
  * the connection after the callback has been run.
6
6
  */
7
- withConnection<T>(runner: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
7
+ provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
8
8
  }
@@ -8,5 +8,5 @@ export declare class DefaultConnectionProvider implements ConnectionProvider {
8
8
  * Provides a connection for the callback and takes care of disposing
9
9
  * the connection after the callback has been run.
10
10
  */
11
- withConnection<T>(runner: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
11
+ provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
12
12
  }
@@ -6,10 +6,10 @@ class DefaultConnectionProvider {
6
6
  constructor(driver) {
7
7
  this.#driver = driver;
8
8
  }
9
- async withConnection(runner) {
9
+ async provideConnection(consumer) {
10
10
  const connection = await this.#driver.acquireConnection();
11
11
  try {
12
- return await runner(connection);
12
+ return await consumer(connection);
13
13
  }
14
14
  finally {
15
15
  await this.#driver.releaseConnection(connection);
@@ -27,6 +27,14 @@ import { Driver } from './driver.js';
27
27
  * },
28
28
  * })
29
29
  * ```
30
+ *
31
+ * You can use it to build a query and compile it to SQL but trying to
32
+ * execute the query will throw an error.
33
+ *
34
+ * ```ts
35
+ * const { sql } = db.selectFrom('person').selectAll().compile()
36
+ * console.log(sql) // select * from "person"
37
+ * ```
30
38
  */
31
39
  export declare class DummyDriver implements Driver {
32
40
  /**
@@ -28,6 +28,14 @@ exports.DummyDriver = void 0;
28
28
  * },
29
29
  * })
30
30
  * ```
31
+ *
32
+ * You can use it to build a query and compile it to SQL but trying to
33
+ * execute the query will throw an error.
34
+ *
35
+ * ```ts
36
+ * const { sql } = db.selectFrom('person').selectAll().compile()
37
+ * console.log(sql) // select * from "person"
38
+ * ```
31
39
  */
32
40
  class DummyDriver {
33
41
  async init() {
@@ -7,5 +7,5 @@ export declare class SingleConnectionProvider implements ConnectionProvider {
7
7
  * Provides a connection for the callback and takes care of disposing
8
8
  * the connection after the callback has been run.
9
9
  */
10
- withConnection<T>(runner: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
10
+ provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
11
11
  }
@@ -7,11 +7,11 @@ class SingleConnectionProvider {
7
7
  constructor(connection) {
8
8
  this.#connection = connection;
9
9
  }
10
- async withConnection(runner) {
10
+ async provideConnection(consumer) {
11
11
  while (this.#runningPromise) {
12
12
  await this.#runningPromise;
13
13
  }
14
- const promise = this.#run(runner);
14
+ const promise = this.#run(consumer);
15
15
  this.#runningPromise = promise
16
16
  .then(() => {
17
17
  this.#runningPromise = undefined;
@@ -17,9 +17,11 @@ export * from './query-builder/delete-result.js';
17
17
  export * from './query-builder/update-result.js';
18
18
  export * from './query-builder/on-conflict-builder.js';
19
19
  export * from './raw-builder/raw-builder.js';
20
+ export * from './raw-builder/sql.js';
20
21
  export * from './query-executor/query-executor.js';
21
22
  export * from './query-executor/default-query-executor.js';
22
23
  export * from './query-executor/noop-query-executor.js';
24
+ export * from './query-executor/query-executor-provider.js';
23
25
  export * from './query-compiler/default-query-compiler.js';
24
26
  export * from './query-compiler/compiled-query.js';
25
27
  export * from './schema/schema.js';
@@ -29,9 +29,11 @@ __exportStar(require("./query-builder/delete-result.js"), exports);
29
29
  __exportStar(require("./query-builder/update-result.js"), exports);
30
30
  __exportStar(require("./query-builder/on-conflict-builder.js"), exports);
31
31
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
32
+ __exportStar(require("./raw-builder/sql.js"), exports);
32
33
  __exportStar(require("./query-executor/query-executor.js"), exports);
33
34
  __exportStar(require("./query-executor/default-query-executor.js"), exports);
34
35
  __exportStar(require("./query-executor/noop-query-executor.js"), exports);
36
+ __exportStar(require("./query-executor/query-executor-provider.js"), exports);
35
37
  __exportStar(require("./query-compiler/default-query-compiler.js"), exports);
36
38
  __exportStar(require("./query-compiler/compiled-query.js"), exports);
37
39
  __exportStar(require("./schema/schema.js"), exports);
@@ -6,11 +6,9 @@ import { QueryCreator } from './query-creator.js';
6
6
  import { KyselyPlugin } from './plugin/kysely-plugin.js';
7
7
  import { DatabaseIntrospector } from './dialect/database-introspector.js';
8
8
  import { Driver, IsolationLevel } from './driver/driver.js';
9
- import { ParseContext } from './parser/parse-context.js';
10
9
  import { FunctionBuilder } from './query-builder/function-builder.js';
11
10
  import { LogConfig } from './util/log.js';
12
- import { PRIVATE_ADAPTER } from './util/private-symbols.js';
13
- import { DialectAdapter } from './dialect/dialect-adapter.js';
11
+ import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
14
12
  /**
15
13
  * The main Kysely class.
16
14
  *
@@ -54,7 +52,7 @@ import { DialectAdapter } from './dialect/dialect-adapter.js';
54
52
  * in the database and values must be interfaces that describe the rows in those
55
53
  * tables. See the examples above.
56
54
  */
57
- export declare class Kysely<DB> extends QueryCreator<DB> {
55
+ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider {
58
56
  #private;
59
57
  constructor(args: KyselyConfig);
60
58
  constructor(args: KyselyProps);
@@ -226,7 +224,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
226
224
  * @internal
227
225
  * @private
228
226
  */
229
- get [PRIVATE_ADAPTER](): DialectAdapter;
227
+ getExecutor(): QueryExecutor;
230
228
  }
231
229
  export declare class Transaction<DB> extends Kysely<DB> {
232
230
  #private;
@@ -357,7 +355,6 @@ export interface KyselyProps {
357
355
  readonly driver: Driver;
358
356
  readonly executor: QueryExecutor;
359
357
  readonly dialect: Dialect;
360
- readonly parseContext: ParseContext;
361
358
  }
362
359
  export declare function isKyselyProps(obj: unknown): obj is KyselyProps;
363
360
  export interface KyselyConfig {
@@ -11,10 +11,8 @@ const runtime_driver_js_1 = require("./driver/runtime-driver.js");
11
11
  const single_connection_provider_js_1 = require("./driver/single-connection-provider.js");
12
12
  const driver_js_1 = require("./driver/driver.js");
13
13
  const prevent_await_js_1 = require("./util/prevent-await.js");
14
- const parse_context_js_1 = require("./parser/parse-context.js");
15
14
  const function_builder_js_1 = require("./query-builder/function-builder.js");
16
15
  const log_js_1 = require("./util/log.js");
17
- const private_symbols_js_1 = require("./util/private-symbols.js");
18
16
  /**
19
17
  * The main Kysely class.
20
18
  *
@@ -64,7 +62,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
64
62
  let superProps;
65
63
  let props;
66
64
  if (isKyselyProps(args)) {
67
- superProps = { executor: args.executor, parseContext: args.parseContext };
65
+ superProps = { executor: args.executor };
68
66
  props = { ...args };
69
67
  }
70
68
  else {
@@ -73,17 +71,15 @@ class Kysely extends query_creator_js_1.QueryCreator {
73
71
  const compiler = dialect.createQueryCompiler();
74
72
  const adapter = dialect.createAdapter();
75
73
  const log = new log_js_1.Log(args.log ?? []);
76
- const parseContext = new parse_context_js_1.DefaultParseContext(adapter);
77
74
  const runtimeDriver = new runtime_driver_js_1.RuntimeDriver(driver, log);
78
75
  const connectionProvider = new default_connection_provider_js_1.DefaultConnectionProvider(runtimeDriver);
79
- const executor = new default_query_executor_js_1.DefaultQueryExecutor(compiler, connectionProvider, args.plugins ?? []);
80
- superProps = { executor, parseContext };
76
+ const executor = new default_query_executor_js_1.DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);
77
+ superProps = { executor };
81
78
  props = {
82
79
  config: args,
83
80
  executor,
84
81
  dialect,
85
82
  driver: runtimeDriver,
86
- parseContext,
87
83
  };
88
84
  }
89
85
  super(superProps);
@@ -139,7 +135,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
139
135
  * ```
140
136
  */
141
137
  get fn() {
142
- return new function_builder_js_1.FunctionBuilder({ executor: this.#props.executor });
138
+ return new function_builder_js_1.FunctionBuilder();
143
139
  }
144
140
  /**
145
141
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
@@ -285,8 +281,8 @@ class Kysely extends query_creator_js_1.QueryCreator {
285
281
  * @internal
286
282
  * @private
287
283
  */
288
- get [private_symbols_js_1.PRIVATE_ADAPTER]() {
289
- return this.#props.parseContext.adapter;
284
+ getExecutor() {
285
+ return this.#props.executor;
290
286
  }
291
287
  }
292
288
  exports.Kysely = Kysely;
@@ -333,8 +329,7 @@ function isKyselyProps(obj) {
333
329
  (0, object_utils_js_1.isObject)(obj.config) &&
334
330
  (0, object_utils_js_1.isObject)(obj.driver) &&
335
331
  (0, object_utils_js_1.isObject)(obj.executor) &&
336
- (0, object_utils_js_1.isObject)(obj.dialect) &&
337
- (0, object_utils_js_1.isObject)(obj.parseContext));
332
+ (0, object_utils_js_1.isObject)(obj.dialect));
338
333
  }
339
334
  exports.isKyselyProps = isKyselyProps;
340
335
  class ConnectionBuilder {
@@ -343,18 +338,14 @@ class ConnectionBuilder {
343
338
  this.#props = (0, object_utils_js_1.freeze)(props);
344
339
  }
345
340
  async execute(callback) {
346
- const connection = await this.#props.driver.acquireConnection();
347
- const connectionProvider = new single_connection_provider_js_1.SingleConnectionProvider(connection);
348
- const db = new Kysely({
349
- ...this.#props,
350
- executor: this.#props.executor.withConnectionProvider(connectionProvider),
351
- });
352
- try {
341
+ return this.#props.executor.provideConnection(async (connection) => {
342
+ const executor = this.#props.executor.withConnectionProvider(new single_connection_provider_js_1.SingleConnectionProvider(connection));
343
+ const db = new Kysely({
344
+ ...this.#props,
345
+ executor,
346
+ });
353
347
  return await callback(db);
354
- }
355
- finally {
356
- await this.#props.driver.releaseConnection(connection);
357
- }
348
+ });
358
349
  }
359
350
  }
360
351
  exports.ConnectionBuilder = ConnectionBuilder;
@@ -374,25 +365,23 @@ class TransactionBuilder {
374
365
  const { isolationLevel, ...kyselyProps } = this.#props;
375
366
  const settings = { isolationLevel };
376
367
  validateTransactionSettings(settings);
377
- const connection = await this.#props.driver.acquireConnection();
378
- const connectionProvider = new single_connection_provider_js_1.SingleConnectionProvider(connection);
379
- const transaction = new Transaction({
380
- ...kyselyProps,
381
- executor: this.#props.executor.withConnectionProvider(connectionProvider),
368
+ return this.#props.executor.provideConnection(async (connection) => {
369
+ const executor = this.#props.executor.withConnectionProvider(new single_connection_provider_js_1.SingleConnectionProvider(connection));
370
+ const transaction = new Transaction({
371
+ ...kyselyProps,
372
+ executor,
373
+ });
374
+ try {
375
+ await this.#props.driver.beginTransaction(connection, settings);
376
+ const result = await callback(transaction);
377
+ await this.#props.driver.commitTransaction(connection);
378
+ return result;
379
+ }
380
+ catch (error) {
381
+ await this.#props.driver.rollbackTransaction(connection);
382
+ throw error;
383
+ }
382
384
  });
383
- try {
384
- await this.#props.driver.beginTransaction(connection, settings);
385
- const result = await callback(transaction);
386
- await this.#props.driver.commitTransaction(connection);
387
- return result;
388
- }
389
- catch (error) {
390
- await this.#props.driver.rollbackTransaction(connection);
391
- throw error;
392
- }
393
- finally {
394
- await this.#props.driver.releaseConnection(connection);
395
- }
396
385
  }
397
386
  }
398
387
  exports.TransactionBuilder = TransactionBuilder;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Migrator = exports.NO_MIGRATIONS = exports.MIGRATION_LOCK_ID = exports.MIGRATION_LOCK_TABLE = exports.MIGRATION_TABLE = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
- const private_symbols_js_1 = require("../util/private-symbols.js");
6
5
  exports.MIGRATION_TABLE = 'kysely_migration';
7
6
  exports.MIGRATION_LOCK_TABLE = 'kysely_migration_lock';
8
7
  exports.MIGRATION_LOCK_ID = 'migration_lock';
@@ -262,9 +261,10 @@ class Migrator {
262
261
  return !!lockRow;
263
262
  }
264
263
  async #runMigrations(getTargetMigrationIndex) {
264
+ const adapter = this.#props.db.getExecutor().adapter;
265
265
  const run = async (db) => {
266
266
  try {
267
- await this.#props.db[private_symbols_js_1.PRIVATE_ADAPTER].acquireMigrationLock(db);
267
+ await adapter.acquireMigrationLock(db);
268
268
  const state = await this.#getState(db);
269
269
  if (state.migrations.length === 0) {
270
270
  return { results: [] };
@@ -282,10 +282,10 @@ class Migrator {
282
282
  return { results: [] };
283
283
  }
284
284
  finally {
285
- await this.#props.db[private_symbols_js_1.PRIVATE_ADAPTER].releaseMigrationLock(db);
285
+ await adapter.releaseMigrationLock(db);
286
286
  }
287
287
  };
288
- if (this.#props.db[private_symbols_js_1.PRIVATE_ADAPTER].supportsTransactionalDdl) {
288
+ if (adapter.supportsTransactionalDdl) {
289
289
  return this.#props.db.transaction().execute(run);
290
290
  }
291
291
  else {
@@ -220,7 +220,7 @@ class OperationNodeTransformer {
220
220
  return {
221
221
  kind: 'RawNode',
222
222
  sqlFragments: (0, object_utils_js_1.freeze)([...node.sqlFragments]),
223
- params: this.transformNodeList(node.params),
223
+ parameters: this.transformNodeList(node.parameters),
224
224
  };
225
225
  }
226
226
  transformWhere(node) {
@@ -2,13 +2,15 @@ import { OperationNode } from './operation-node.js';
2
2
  export interface RawNode extends OperationNode {
3
3
  readonly kind: 'RawNode';
4
4
  readonly sqlFragments: ReadonlyArray<string>;
5
- readonly params: ReadonlyArray<OperationNode>;
5
+ readonly parameters: ReadonlyArray<OperationNode>;
6
6
  }
7
7
  /**
8
8
  * @internal
9
9
  */
10
10
  export declare const RawNode: Readonly<{
11
11
  is(node: OperationNode): node is RawNode;
12
- create(sqlFragments: ReadonlyArray<string>, params: ReadonlyArray<OperationNode>): RawNode;
12
+ create(sqlFragments: ReadonlyArray<string>, parameters: ReadonlyArray<OperationNode>): RawNode;
13
13
  createWithSql(sql: string): RawNode;
14
+ createWithChild(child: OperationNode): RawNode;
15
+ createWithChildren(children: ReadonlyArray<OperationNode>): RawNode;
14
16
  }>;
@@ -9,14 +9,20 @@ exports.RawNode = (0, object_utils_js_1.freeze)({
9
9
  is(node) {
10
10
  return node.kind === 'RawNode';
11
11
  },
12
- create(sqlFragments, params) {
12
+ create(sqlFragments, parameters) {
13
13
  return (0, object_utils_js_1.freeze)({
14
14
  kind: 'RawNode',
15
15
  sqlFragments: (0, object_utils_js_1.freeze)(sqlFragments),
16
- params: (0, object_utils_js_1.freeze)(params),
16
+ parameters: (0, object_utils_js_1.freeze)(parameters),
17
17
  });
18
18
  },
19
19
  createWithSql(sql) {
20
20
  return exports.RawNode.create([sql], []);
21
21
  },
22
+ createWithChild(child) {
23
+ return exports.RawNode.create(['', ''], [child]);
24
+ },
25
+ createWithChildren(children) {
26
+ return exports.RawNode.create(new Array(children.length + 1).fill(''), children);
27
+ },
22
28
  });
@@ -1,10 +1,10 @@
1
1
  import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { RawNode } from '../operation-node/raw-node.js';
3
3
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
- import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, AnyRawBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
5
- import { ParseContext } from './parse-context.js';
6
- export declare type ComplexExpression<DB, TB extends keyof DB> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB>;
4
+ import { RawBuilder } from '../raw-builder/raw-builder.js';
5
+ import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
6
+ export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB>;
7
7
  export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
8
- export declare function parseComplexExpression(ctx: ParseContext, exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
9
- export declare function parseAliasedComplexExpression(ctx: ParseContext, exp: AliasedComplexExpression<any, any>): AliasNode;
8
+ export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
9
+ export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
10
10
  export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
@@ -3,22 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isComplexExpression = exports.parseAliasedComplexExpression = exports.parseComplexExpression = void 0;
4
4
  const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
- function parseComplexExpression(ctx, exp) {
6
+ const parse_utils_js_1 = require("./parse-utils.js");
7
+ function parseComplexExpression(exp) {
7
8
  if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
8
9
  return exp.toOperationNode();
9
10
  }
10
11
  else if ((0, object_utils_js_1.isFunction)(exp)) {
11
- return exp(ctx.createExpressionBuilder()).toOperationNode();
12
+ return exp((0, parse_utils_js_1.createExpressionBuilder)()).toOperationNode();
12
13
  }
13
14
  throw new Error(`invalid expression: ${JSON.stringify(exp)}`);
14
15
  }
15
16
  exports.parseComplexExpression = parseComplexExpression;
16
- function parseAliasedComplexExpression(ctx, exp) {
17
+ function parseAliasedComplexExpression(exp) {
17
18
  if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
18
19
  return exp.toOperationNode();
19
20
  }
20
21
  else if ((0, object_utils_js_1.isFunction)(exp)) {
21
- return exp(ctx.createExpressionBuilder()).toOperationNode();
22
+ return exp((0, parse_utils_js_1.createExpressionBuilder)()).toOperationNode();
22
23
  }
23
24
  throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
24
25
  }
@@ -4,21 +4,21 @@ import { Operator } from '../operation-node/operator-node.js';
4
4
  import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
5
5
  import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
6
6
  import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
7
- import { ParseContext } from './parse-context.js';
8
7
  import { WhereInterface } from '../query-builder/where-interface.js';
9
8
  import { HavingInterface } from '../query-builder/having-interface.js';
9
+ import { ComplexExpression } from './complex-expression-parser.js';
10
10
  export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
11
11
  export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
12
- export declare type ExistsExpression<DB, TB extends keyof DB> = ValueExpression<DB, TB, never>;
12
+ export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
13
13
  export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
14
14
  export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
15
15
  export declare type FilterOperator = Operator | AnyRawBuilder;
16
16
  declare type FilterType = 'where' | 'having' | 'on';
17
- export declare function parseWhereFilter(ctx: ParseContext, args: any[]): FilterExpressionNode;
18
- export declare function parseHavingFilter(ctx: ParseContext, args: any[]): FilterExpressionNode;
19
- export declare function parseOnFilter(ctx: ParseContext, args: any[]): FilterExpressionNode;
20
- export declare function parseReferenceFilter(ctx: ParseContext, lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
21
- export declare function parseExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
22
- export declare function parseNotExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
23
- export declare function parseFilter(ctx: ParseContext, type: FilterType, args: any[]): FilterExpressionNode;
17
+ export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
18
+ export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
19
+ export declare function parseOnFilter(args: any[]): FilterExpressionNode;
20
+ export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
21
+ export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
22
+ export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
23
+ export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
24
24
  export {};