kysely 0.16.11 → 0.17.0

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 (170) 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-introspector.js +2 -1
  4. package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
  5. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
  6. package/dist/cjs/index-nodeless.d.ts +2 -0
  7. package/dist/cjs/index-nodeless.js +2 -0
  8. package/dist/cjs/kysely.d.ts +3 -6
  9. package/dist/cjs/kysely.js +7 -12
  10. package/dist/cjs/migration/migrator.js +4 -4
  11. package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
  12. package/dist/cjs/operation-node/raw-node.d.ts +4 -2
  13. package/dist/cjs/operation-node/raw-node.js +8 -2
  14. package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
  15. package/dist/cjs/parser/complex-expression-parser.js +5 -4
  16. package/dist/cjs/parser/filter-parser.d.ts +9 -9
  17. package/dist/cjs/parser/filter-parser.js +31 -30
  18. package/dist/cjs/parser/group-by-parser.d.ts +1 -2
  19. package/dist/cjs/parser/group-by-parser.js +2 -2
  20. package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
  21. package/dist/cjs/parser/insert-values-parser.js +6 -6
  22. package/dist/cjs/parser/join-parser.d.ts +1 -2
  23. package/dist/cjs/parser/join-parser.js +8 -7
  24. package/dist/cjs/parser/order-by-parser.d.ts +1 -2
  25. package/dist/cjs/parser/order-by-parser.js +4 -4
  26. package/dist/cjs/parser/parse-utils.d.ts +10 -0
  27. package/dist/cjs/parser/parse-utils.js +38 -0
  28. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  29. package/dist/cjs/parser/reference-parser.js +5 -5
  30. package/dist/cjs/parser/select-parser.d.ts +1 -2
  31. package/dist/cjs/parser/select-parser.js +5 -5
  32. package/dist/cjs/parser/table-parser.d.ts +2 -3
  33. package/dist/cjs/parser/table-parser.js +5 -5
  34. package/dist/cjs/parser/update-set-parser.d.ts +1 -2
  35. package/dist/cjs/parser/update-set-parser.js +2 -2
  36. package/dist/cjs/parser/value-parser.d.ts +3 -4
  37. package/dist/cjs/parser/value-parser.js +7 -7
  38. package/dist/cjs/parser/with-parser.d.ts +1 -2
  39. package/dist/cjs/parser/with-parser.js +3 -2
  40. package/dist/cjs/query-builder/delete-query-builder.d.ts +23 -19
  41. package/dist/cjs/query-builder/delete-query-builder.js +15 -15
  42. package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
  43. package/dist/cjs/query-builder/expression-builder.js +12 -21
  44. package/dist/cjs/query-builder/function-builder.d.ts +2 -6
  45. package/dist/cjs/query-builder/function-builder.js +5 -8
  46. package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
  47. package/dist/cjs/query-builder/insert-query-builder.js +8 -7
  48. package/dist/cjs/query-builder/join-builder.d.ts +0 -2
  49. package/dist/cjs/query-builder/join-builder.js +8 -8
  50. package/dist/cjs/query-builder/on-conflict-builder.d.ts +24 -20
  51. package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
  52. package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
  53. package/dist/cjs/query-builder/select-query-builder.d.ts +41 -29
  54. package/dist/cjs/query-builder/select-query-builder.js +28 -26
  55. package/dist/cjs/query-builder/update-query-builder.d.ts +30 -24
  56. package/dist/cjs/query-builder/update-query-builder.js +22 -20
  57. package/dist/cjs/query-builder/where-interface.d.ts +20 -16
  58. package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
  59. package/dist/cjs/query-creator.d.ts +10 -129
  60. package/dist/cjs/query-creator.js +5 -136
  61. package/dist/cjs/query-executor/default-query-executor.d.ts +8 -1
  62. package/dist/cjs/query-executor/default-query-executor.js +13 -13
  63. package/dist/cjs/query-executor/noop-query-executor.d.ts +8 -0
  64. package/dist/cjs/query-executor/noop-query-executor.js +8 -1
  65. package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
  66. package/dist/cjs/query-executor/query-executor-provider.js +2 -0
  67. package/dist/cjs/query-executor/query-executor.d.ts +7 -0
  68. package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
  69. package/dist/cjs/raw-builder/raw-builder.js +55 -56
  70. package/dist/cjs/raw-builder/sql.d.ts +323 -0
  71. package/dist/cjs/raw-builder/sql.js +153 -0
  72. package/dist/cjs/schema/alter-table-builder.d.ts +20 -8
  73. package/dist/cjs/schema/column-definition-builder.d.ts +20 -8
  74. package/dist/cjs/schema/create-index-builder.d.ts +3 -1
  75. package/dist/cjs/schema/create-index-builder.js +3 -1
  76. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  77. package/dist/cjs/schema/create-table-builder.js +6 -2
  78. package/dist/cjs/schema/create-view-builder.d.ts +3 -3
  79. package/dist/cjs/schema/create-view-builder.js +3 -3
  80. package/dist/cjs/util/query-id.js +10 -4
  81. package/dist/cjs/util/random-string.js +65 -2
  82. package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
  83. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
  84. package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
  85. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
  86. package/dist/esm/index-nodeless.d.ts +2 -0
  87. package/dist/esm/index-nodeless.js +2 -0
  88. package/dist/esm/kysely.d.ts +3 -6
  89. package/dist/esm/kysely.js +7 -12
  90. package/dist/esm/migration/migrator.js +4 -4
  91. package/dist/esm/operation-node/operation-node-transformer.js +1 -1
  92. package/dist/esm/operation-node/raw-node.d.ts +4 -2
  93. package/dist/esm/operation-node/raw-node.js +8 -2
  94. package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
  95. package/dist/esm/parser/complex-expression-parser.js +5 -4
  96. package/dist/esm/parser/filter-parser.d.ts +9 -9
  97. package/dist/esm/parser/filter-parser.js +31 -30
  98. package/dist/esm/parser/group-by-parser.d.ts +1 -2
  99. package/dist/esm/parser/group-by-parser.js +2 -2
  100. package/dist/esm/parser/insert-values-parser.d.ts +1 -2
  101. package/dist/esm/parser/insert-values-parser.js +6 -6
  102. package/dist/esm/parser/join-parser.d.ts +1 -2
  103. package/dist/esm/parser/join-parser.js +8 -7
  104. package/dist/esm/parser/order-by-parser.d.ts +1 -2
  105. package/dist/esm/parser/order-by-parser.js +4 -4
  106. package/dist/esm/parser/parse-utils.d.ts +10 -0
  107. package/dist/esm/parser/parse-utils.js +32 -0
  108. package/dist/esm/parser/reference-parser.d.ts +2 -3
  109. package/dist/esm/parser/reference-parser.js +5 -5
  110. package/dist/esm/parser/select-parser.d.ts +1 -2
  111. package/dist/esm/parser/select-parser.js +5 -5
  112. package/dist/esm/parser/table-parser.d.ts +2 -3
  113. package/dist/esm/parser/table-parser.js +5 -5
  114. package/dist/esm/parser/update-set-parser.d.ts +1 -2
  115. package/dist/esm/parser/update-set-parser.js +2 -2
  116. package/dist/esm/parser/value-parser.d.ts +3 -4
  117. package/dist/esm/parser/value-parser.js +7 -7
  118. package/dist/esm/parser/with-parser.d.ts +1 -2
  119. package/dist/esm/parser/with-parser.js +3 -2
  120. package/dist/esm/query-builder/delete-query-builder.d.ts +23 -19
  121. package/dist/esm/query-builder/delete-query-builder.js +15 -15
  122. package/dist/esm/query-builder/expression-builder.d.ts +4 -13
  123. package/dist/esm/query-builder/expression-builder.js +12 -21
  124. package/dist/esm/query-builder/function-builder.d.ts +2 -6
  125. package/dist/esm/query-builder/function-builder.js +5 -8
  126. package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
  127. package/dist/esm/query-builder/insert-query-builder.js +8 -7
  128. package/dist/esm/query-builder/join-builder.d.ts +0 -2
  129. package/dist/esm/query-builder/join-builder.js +8 -8
  130. package/dist/esm/query-builder/on-conflict-builder.d.ts +24 -20
  131. package/dist/esm/query-builder/on-conflict-builder.js +17 -17
  132. package/dist/esm/query-builder/returning-interface.d.ts +3 -1
  133. package/dist/esm/query-builder/select-query-builder.d.ts +41 -29
  134. package/dist/esm/query-builder/select-query-builder.js +28 -26
  135. package/dist/esm/query-builder/update-query-builder.d.ts +30 -24
  136. package/dist/esm/query-builder/update-query-builder.js +22 -20
  137. package/dist/esm/query-builder/where-interface.d.ts +20 -16
  138. package/dist/esm/query-compiler/default-query-compiler.js +1 -1
  139. package/dist/esm/query-creator.d.ts +10 -129
  140. package/dist/esm/query-creator.js +5 -136
  141. package/dist/esm/query-executor/default-query-executor.d.ts +8 -1
  142. package/dist/esm/query-executor/default-query-executor.js +13 -13
  143. package/dist/esm/query-executor/noop-query-executor.d.ts +8 -0
  144. package/dist/esm/query-executor/noop-query-executor.js +7 -0
  145. package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
  146. package/dist/esm/query-executor/query-executor-provider.js +2 -0
  147. package/dist/esm/query-executor/query-executor.d.ts +7 -0
  148. package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
  149. package/dist/esm/raw-builder/raw-builder.js +56 -57
  150. package/dist/esm/raw-builder/sql.d.ts +323 -0
  151. package/dist/esm/raw-builder/sql.js +151 -0
  152. package/dist/esm/schema/alter-table-builder.d.ts +20 -8
  153. package/dist/esm/schema/column-definition-builder.d.ts +20 -8
  154. package/dist/esm/schema/create-index-builder.d.ts +3 -1
  155. package/dist/esm/schema/create-index-builder.js +3 -1
  156. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  157. package/dist/esm/schema/create-table-builder.js +6 -2
  158. package/dist/esm/schema/create-view-builder.d.ts +3 -3
  159. package/dist/esm/schema/create-view-builder.js +3 -3
  160. package/dist/esm/util/query-id.js +10 -4
  161. package/dist/esm/util/random-string.js +65 -2
  162. package/package.json +13 -13
  163. package/dist/cjs/parser/parse-context.d.ts +0 -55
  164. package/dist/cjs/parser/parse-context.js +0 -50
  165. package/dist/cjs/util/private-symbols.d.ts +0 -5
  166. package/dist/cjs/util/private-symbols.js +0 -8
  167. package/dist/esm/parser/parse-context.d.ts +0 -55
  168. package/dist/esm/parser/parse-context.js +0 -47
  169. package/dist/esm/util/private-symbols.d.ts +0 -5
  170. package/dist/esm/util/private-symbols.js +0 -6
@@ -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>;
@@ -68,13 +68,15 @@ class CreateTableBuilder {
68
68
  * ### Examples
69
69
  *
70
70
  * ```ts
71
+ * import { sql } from 'kysely'
72
+ *
71
73
  * await db.schema
72
74
  * .createTable('person')
73
75
  * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
74
76
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
75
77
  * .addColumn('last_name', 'varchar(255)')
76
78
  * .addColumn('bank_balance', 'numeric(8, 2)')
77
- * .addColumn('data', db.raw('customtype'))
79
+ * .addColumn('data', sql`customtype`)
78
80
  * .addColumn('parent_id', 'integer', (col) =>
79
81
  * col.references('person.id').onDelete('cascade'))
80
82
  * )
@@ -156,7 +158,9 @@ class CreateTableBuilder {
156
158
  * ### Examples
157
159
  *
158
160
  * ```ts
159
- * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
161
+ * import { sql } from 'kysely'
162
+ *
163
+ * addCheckConstraint('check_legs', sql`number_of_legs < 5`)
160
164
  * ```
161
165
  */
162
166
  addCheckConstraint(constraintName, checkExpression) {
@@ -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;
@@ -64,9 +64,9 @@ class CreateViewBuilder {
64
64
  *
65
65
  * WARNING!
66
66
  * Some dialects don't support parameterized queries in DDL statements and therefore
67
- * the query or `raw` expression passed here is interpolated into a single string
68
- * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
69
- * the query or `raw` expression passed to this method!
67
+ * the query or raw {@link sql } expression passed here is interpolated into a single
68
+ * string opening an SQL injection vulnerability. DO NOT pass unchecked user input
69
+ * into the query or raw expression passed to this method!
70
70
  */
71
71
  as(query) {
72
72
  const queryNode = query
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createQueryId = void 0;
4
- const object_utils_js_1 = require("./object-utils.js");
5
4
  const random_string_js_1 = require("./random-string.js");
6
5
  function createQueryId() {
7
- return (0, object_utils_js_1.freeze)({
8
- queryId: (0, random_string_js_1.randomString)(8),
9
- });
6
+ return new LazyQueryId();
10
7
  }
11
8
  exports.createQueryId = createQueryId;
9
+ class LazyQueryId {
10
+ #queryId;
11
+ get queryId() {
12
+ if (this.#queryId === undefined) {
13
+ this.#queryId = (0, random_string_js_1.randomString)(8);
14
+ }
15
+ return this.#queryId;
16
+ }
17
+ }
@@ -1,7 +1,70 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.randomString = void 0;
4
- const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
4
+ const CHARS = [
5
+ 'A',
6
+ 'B',
7
+ 'C',
8
+ 'D',
9
+ 'E',
10
+ 'F',
11
+ 'G',
12
+ 'H',
13
+ 'I',
14
+ 'J',
15
+ 'K',
16
+ 'L',
17
+ 'M',
18
+ 'N',
19
+ 'O',
20
+ 'P',
21
+ 'Q',
22
+ 'R',
23
+ 'S',
24
+ 'T',
25
+ 'U',
26
+ 'V',
27
+ 'W',
28
+ 'X',
29
+ 'Y',
30
+ 'Z',
31
+ 'a',
32
+ 'b',
33
+ 'c',
34
+ 'd',
35
+ 'e',
36
+ 'f',
37
+ 'g',
38
+ 'h',
39
+ 'i',
40
+ 'j',
41
+ 'k',
42
+ 'l',
43
+ 'm',
44
+ 'n',
45
+ 'o',
46
+ 'p',
47
+ 'q',
48
+ 'r',
49
+ 's',
50
+ 't',
51
+ 'u',
52
+ 'v',
53
+ 'w',
54
+ 'x',
55
+ 'y',
56
+ 'z',
57
+ '0',
58
+ '1',
59
+ '2',
60
+ '3',
61
+ '4',
62
+ '5',
63
+ '6',
64
+ '7',
65
+ '8',
66
+ '9',
67
+ ];
5
68
  function randomString(length) {
6
69
  let chars = '';
7
70
  for (let i = 0; i < length; ++i) {
@@ -11,5 +74,5 @@ function randomString(length) {
11
74
  }
12
75
  exports.randomString = randomString;
13
76
  function randomChar() {
14
- return CHARS[Math.floor(Math.random() * CHARS.length)];
77
+ return CHARS[~~(Math.random() * CHARS.length)];
15
78
  }
@@ -1,4 +1,5 @@
1
1
  /// <reference types="./mysql-adapter.d.ts" />
2
+ import { sql } from '../../raw-builder/sql.js';
2
3
  import { DialectAdapterBase } from '../dialect-adapter-base.js';
3
4
  const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
4
5
  const LOCK_TIMEOUT_SECONDS = 60 * 60;
@@ -16,11 +17,9 @@ export class MysqlAdapter extends DialectAdapterBase {
16
17
  // is released using `release_lock`. This way we know that the lock is either
17
18
  // released by us after successfull or failed migrations OR it's released by
18
19
  // MySQL if the process gets killed for some reason.
19
- await db
20
- .raw(`select get_lock('${LOCK_ID}', ${LOCK_TIMEOUT_SECONDS})`)
21
- .execute();
20
+ await sql `select get_lock(${sql.literal(LOCK_ID)}, ${sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
22
21
  }
23
22
  async releaseMigrationLock(db) {
24
- await db.raw(`select release_lock('${LOCK_ID}')`).execute();
23
+ await sql `select release_lock(${sql.literal(LOCK_ID)})`.execute(db);
25
24
  }
26
25
  }
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./mysql-introspector.d.ts" />
2
2
  import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
3
3
  import { freeze } from '../../util/object-utils.js';
4
+ import { sql } from '../../raw-builder/sql.js';
4
5
  export class MysqlIntrospector {
5
6
  #db;
6
7
  constructor(db) {
@@ -10,7 +11,7 @@ export class MysqlIntrospector {
10
11
  let query = this.#db
11
12
  .selectFrom('information_schema.columns')
12
13
  .selectAll()
13
- .where('table_schema', '=', this.#db.raw('database()'))
14
+ .where('table_schema', '=', sql `database()`)
14
15
  .castTo();
15
16
  if (!options.withInternalKyselyTables) {
16
17
  query = query
@@ -1,7 +1,8 @@
1
1
  /// <reference types="./postgres-adapter.d.ts" />
2
+ import { sql } from '../../raw-builder/sql.js';
2
3
  import { DialectAdapterBase } from '../dialect-adapter-base.js';
3
4
  // Random id for our transaction lock.
4
- const LOCK_ID = '3853314791062309107';
5
+ const LOCK_ID = 3853314791062309107n;
5
6
  export class PostgresAdapter extends DialectAdapterBase {
6
7
  get supportsTransactionalDdl() {
7
8
  return true;
@@ -11,7 +12,7 @@ export class PostgresAdapter extends DialectAdapterBase {
11
12
  }
12
13
  async acquireMigrationLock(db) {
13
14
  // Acquire a transaction level advisory lock.
14
- await db.raw(`select pg_advisory_xact_lock(${LOCK_ID})`).execute();
15
+ await sql `select pg_advisory_xact_lock(${sql.literal(LOCK_ID)})`.execute(db);
15
16
  }
16
17
  async releaseMigrationLock() {
17
18
  // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
@@ -1,5 +1,6 @@
1
1
  /// <reference types="./sqlite-introspector.d.ts" />
2
2
  import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
3
+ import { sql } from '../../raw-builder/sql.js';
3
4
  export class SqliteIntrospector {
4
5
  #db;
5
6
  constructor(db) {
@@ -25,7 +26,7 @@ export class SqliteIntrospector {
25
26
  async #getTableMetadata(table) {
26
27
  const db = this.#db;
27
28
  const columns = await db
28
- .selectFrom(db.raw(`PRAGMA_TABLE_INFO(?)`, [table]).as('table_info'))
29
+ .selectFrom(sql `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
29
30
  .select(['name', 'type', 'notnull'])
30
31
  .castTo()
31
32
  .execute();
@@ -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';
@@ -18,9 +18,11 @@ export * from './query-builder/delete-result.js';
18
18
  export * from './query-builder/update-result.js';
19
19
  export * from './query-builder/on-conflict-builder.js';
20
20
  export * from './raw-builder/raw-builder.js';
21
+ export * from './raw-builder/sql.js';
21
22
  export * from './query-executor/query-executor.js';
22
23
  export * from './query-executor/default-query-executor.js';
23
24
  export * from './query-executor/noop-query-executor.js';
25
+ export * from './query-executor/query-executor-provider.js';
24
26
  export * from './query-compiler/default-query-compiler.js';
25
27
  export * from './query-compiler/compiled-query.js';
26
28
  export * from './schema/schema.js';
@@ -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 {
@@ -9,10 +9,8 @@ import { RuntimeDriver } from './driver/runtime-driver.js';
9
9
  import { SingleConnectionProvider } from './driver/single-connection-provider.js';
10
10
  import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
11
11
  import { preventAwait } from './util/prevent-await.js';
12
- import { DefaultParseContext } from './parser/parse-context.js';
13
12
  import { FunctionBuilder } from './query-builder/function-builder.js';
14
13
  import { Log } from './util/log.js';
15
- import { PRIVATE_ADAPTER } from './util/private-symbols.js';
16
14
  /**
17
15
  * The main Kysely class.
18
16
  *
@@ -62,7 +60,7 @@ export class Kysely extends QueryCreator {
62
60
  let superProps;
63
61
  let props;
64
62
  if (isKyselyProps(args)) {
65
- superProps = { executor: args.executor, parseContext: args.parseContext };
63
+ superProps = { executor: args.executor };
66
64
  props = { ...args };
67
65
  }
68
66
  else {
@@ -71,17 +69,15 @@ export class Kysely extends QueryCreator {
71
69
  const compiler = dialect.createQueryCompiler();
72
70
  const adapter = dialect.createAdapter();
73
71
  const log = new Log(args.log ?? []);
74
- const parseContext = new DefaultParseContext(adapter);
75
72
  const runtimeDriver = new RuntimeDriver(driver, log);
76
73
  const connectionProvider = new DefaultConnectionProvider(runtimeDriver);
77
- const executor = new DefaultQueryExecutor(compiler, connectionProvider, args.plugins ?? []);
78
- superProps = { executor, parseContext };
74
+ const executor = new DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);
75
+ superProps = { executor };
79
76
  props = {
80
77
  config: args,
81
78
  executor,
82
79
  dialect,
83
80
  driver: runtimeDriver,
84
- parseContext,
85
81
  };
86
82
  }
87
83
  super(superProps);
@@ -137,7 +133,7 @@ export class Kysely extends QueryCreator {
137
133
  * ```
138
134
  */
139
135
  get fn() {
140
- return new FunctionBuilder({ executor: this.#props.executor });
136
+ return new FunctionBuilder();
141
137
  }
142
138
  /**
143
139
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
@@ -283,8 +279,8 @@ export class Kysely extends QueryCreator {
283
279
  * @internal
284
280
  * @private
285
281
  */
286
- get [PRIVATE_ADAPTER]() {
287
- return this.#props.parseContext.adapter;
282
+ getExecutor() {
283
+ return this.#props.executor;
288
284
  }
289
285
  }
290
286
  export class Transaction extends Kysely {
@@ -329,8 +325,7 @@ export function isKyselyProps(obj) {
329
325
  isObject(obj.config) &&
330
326
  isObject(obj.driver) &&
331
327
  isObject(obj.executor) &&
332
- isObject(obj.dialect) &&
333
- isObject(obj.parseContext));
328
+ isObject(obj.dialect));
334
329
  }
335
330
  export class ConnectionBuilder {
336
331
  #props;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="./migrator.d.ts" />
2
2
  import { freeze, getLast } from '../util/object-utils.js';
3
- import { PRIVATE_ADAPTER } from '../util/private-symbols.js';
4
3
  export const MIGRATION_TABLE = 'kysely_migration';
5
4
  export const MIGRATION_LOCK_TABLE = 'kysely_migration_lock';
6
5
  export const MIGRATION_LOCK_ID = 'migration_lock';
@@ -260,9 +259,10 @@ export class Migrator {
260
259
  return !!lockRow;
261
260
  }
262
261
  async #runMigrations(getTargetMigrationIndex) {
262
+ const adapter = this.#props.db.getExecutor().adapter;
263
263
  const run = async (db) => {
264
264
  try {
265
- await this.#props.db[PRIVATE_ADAPTER].acquireMigrationLock(db);
265
+ await adapter.acquireMigrationLock(db);
266
266
  const state = await this.#getState(db);
267
267
  if (state.migrations.length === 0) {
268
268
  return { results: [] };
@@ -280,10 +280,10 @@ export class Migrator {
280
280
  return { results: [] };
281
281
  }
282
282
  finally {
283
- await this.#props.db[PRIVATE_ADAPTER].releaseMigrationLock(db);
283
+ await adapter.releaseMigrationLock(db);
284
284
  }
285
285
  };
286
- if (this.#props.db[PRIVATE_ADAPTER].supportsTransactionalDdl) {
286
+ if (adapter.supportsTransactionalDdl) {
287
287
  return this.#props.db.transaction().execute(run);
288
288
  }
289
289
  else {
@@ -218,7 +218,7 @@ export class OperationNodeTransformer {
218
218
  return {
219
219
  kind: 'RawNode',
220
220
  sqlFragments: freeze([...node.sqlFragments]),
221
- params: this.transformNodeList(node.params),
221
+ parameters: this.transformNodeList(node.parameters),
222
222
  };
223
223
  }
224
224
  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
  }>;
@@ -7,14 +7,20 @@ export const RawNode = freeze({
7
7
  is(node) {
8
8
  return node.kind === 'RawNode';
9
9
  },
10
- create(sqlFragments, params) {
10
+ create(sqlFragments, parameters) {
11
11
  return freeze({
12
12
  kind: 'RawNode',
13
13
  sqlFragments: freeze(sqlFragments),
14
- params: freeze(params),
14
+ parameters: freeze(parameters),
15
15
  });
16
16
  },
17
17
  createWithSql(sql) {
18
18
  return RawNode.create([sql], []);
19
19
  },
20
+ createWithChild(child) {
21
+ return RawNode.create(['', ''], [child]);
22
+ },
23
+ createWithChildren(children) {
24
+ return RawNode.create(new Array(children.length + 1).fill(''), children);
25
+ },
20
26
  });
@@ -1,10 +1,10 @@
1
+ import { RawBuilder } from '../index-nodeless.js';
1
2
  import { AliasNode } from '../operation-node/alias-node.js';
2
3
  import { RawNode } from '../operation-node/raw-node.js';
3
4
  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>;
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>;
@@ -1,21 +1,22 @@
1
1
  /// <reference types="./complex-expression-parser.d.ts" />
2
2
  import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { isFunction } from '../util/object-utils.js';
4
- export function parseComplexExpression(ctx, exp) {
4
+ import { createExpressionBuilder } from './parse-utils.js';
5
+ export function parseComplexExpression(exp) {
5
6
  if (isOperationNodeSource(exp)) {
6
7
  return exp.toOperationNode();
7
8
  }
8
9
  else if (isFunction(exp)) {
9
- return exp(ctx.createExpressionBuilder()).toOperationNode();
10
+ return exp(createExpressionBuilder()).toOperationNode();
10
11
  }
11
12
  throw new Error(`invalid expression: ${JSON.stringify(exp)}`);
12
13
  }
13
- export function parseAliasedComplexExpression(ctx, exp) {
14
+ export function parseAliasedComplexExpression(exp) {
14
15
  if (isOperationNodeSource(exp)) {
15
16
  return exp.toOperationNode();
16
17
  }
17
18
  else if (isFunction(exp)) {
18
- return exp(ctx.createExpressionBuilder()).toOperationNode();
19
+ return exp(createExpressionBuilder()).toOperationNode();
19
20
  }
20
21
  throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
21
22
  }
@@ -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 {};