kysely 0.7.2 → 0.7.6

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 (122) hide show
  1. package/README.md +9 -5
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
  3. package/dist/cjs/index.d.ts +2 -1
  4. package/dist/cjs/index.js +2 -1
  5. package/dist/cjs/kysely.d.ts +2 -2
  6. package/dist/cjs/kysely.js +9 -7
  7. package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
  8. package/dist/cjs/operation-node/create-table-node.js +1 -5
  9. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
  10. package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
  11. package/dist/cjs/operation-node/join-node.d.ts +1 -0
  12. package/dist/cjs/operation-node/join-node.js +8 -0
  13. package/dist/cjs/operation-node/operation-node-transformer.js +3 -0
  14. package/dist/cjs/operation-node/references-node.d.ts +5 -3
  15. package/dist/cjs/operation-node/references-node.js +6 -0
  16. package/dist/cjs/operation-node/table-node.js +2 -2
  17. package/dist/cjs/parser/data-type-parser.d.ts +5 -0
  18. package/dist/cjs/parser/data-type-parser.js +11 -0
  19. package/dist/cjs/parser/default-value-parser.d.ts +6 -0
  20. package/dist/cjs/parser/default-value-parser.js +11 -0
  21. package/dist/cjs/parser/filter-parser.d.ts +2 -2
  22. package/dist/cjs/parser/filter-parser.js +34 -36
  23. package/dist/cjs/parser/join-parser.d.ts +1 -1
  24. package/dist/cjs/parser/join-parser.js +9 -11
  25. package/dist/cjs/parser/parse-context.d.ts +33 -6
  26. package/dist/cjs/parser/parse-context.js +40 -33
  27. package/dist/cjs/parser/reference-parser.d.ts +2 -2
  28. package/dist/cjs/parser/reference-parser.js +16 -12
  29. package/dist/cjs/parser/select-parser.d.ts +1 -2
  30. package/dist/cjs/parser/select-parser.js +4 -5
  31. package/dist/cjs/parser/table-parser.js +11 -6
  32. package/dist/cjs/parser/update-set-parser.js +1 -1
  33. package/dist/cjs/parser/value-parser.js +1 -1
  34. package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
  35. package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
  36. package/dist/cjs/query-builder/join-builder.d.ts +2 -2
  37. package/dist/cjs/query-builder/join-builder.js +8 -12
  38. package/dist/cjs/query-builder/query-builder.d.ts +2 -2
  39. package/dist/cjs/query-builder/query-builder.js +34 -36
  40. package/dist/cjs/query-builder/type-utils.d.ts +5 -5
  41. package/dist/cjs/query-compiler/default-query-compiler.js +13 -1
  42. package/dist/cjs/query-creator.d.ts +2 -2
  43. package/dist/cjs/query-creator.js +8 -12
  44. package/dist/cjs/schema/alter-table-builder.d.ts +26 -8
  45. package/dist/cjs/schema/alter-table-builder.js +75 -7
  46. package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
  47. package/dist/cjs/schema/column-definition-builder.js +11 -6
  48. package/dist/cjs/schema/create-index-builder.d.ts +5 -5
  49. package/dist/cjs/schema/create-index-builder.js +19 -28
  50. package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
  51. package/dist/cjs/schema/create-schema-builder.js +9 -13
  52. package/dist/cjs/schema/create-table-builder.d.ts +22 -10
  53. package/dist/cjs/schema/create-table-builder.js +41 -34
  54. package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
  55. package/dist/cjs/schema/drop-index-builder.js +11 -16
  56. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
  57. package/dist/cjs/schema/drop-schema-builder.js +9 -13
  58. package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
  59. package/dist/cjs/schema/drop-table-builder.js +9 -13
  60. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
  61. package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
  62. package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
  63. package/dist/esm/index.d.ts +2 -1
  64. package/dist/esm/index.js +2 -1
  65. package/dist/esm/kysely.d.ts +2 -2
  66. package/dist/esm/kysely.js +9 -7
  67. package/dist/esm/operation-node/create-table-node.d.ts +2 -1
  68. package/dist/esm/operation-node/create-table-node.js +1 -5
  69. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
  70. package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
  71. package/dist/esm/operation-node/join-node.d.ts +1 -0
  72. package/dist/esm/operation-node/join-node.js +8 -0
  73. package/dist/esm/operation-node/operation-node-transformer.js +3 -0
  74. package/dist/esm/operation-node/references-node.d.ts +5 -3
  75. package/dist/esm/operation-node/references-node.js +6 -0
  76. package/dist/esm/operation-node/table-node.js +2 -2
  77. package/dist/esm/parser/data-type-parser.d.ts +5 -0
  78. package/dist/esm/parser/data-type-parser.js +7 -0
  79. package/dist/esm/parser/default-value-parser.d.ts +6 -0
  80. package/dist/esm/parser/default-value-parser.js +7 -0
  81. package/dist/esm/parser/filter-parser.d.ts +2 -2
  82. package/dist/esm/parser/filter-parser.js +31 -33
  83. package/dist/esm/parser/join-parser.d.ts +1 -1
  84. package/dist/esm/parser/join-parser.js +7 -9
  85. package/dist/esm/parser/parse-context.d.ts +33 -6
  86. package/dist/esm/parser/parse-context.js +38 -31
  87. package/dist/esm/parser/reference-parser.d.ts +2 -2
  88. package/dist/esm/parser/reference-parser.js +16 -12
  89. package/dist/esm/parser/select-parser.d.ts +1 -2
  90. package/dist/esm/parser/select-parser.js +3 -3
  91. package/dist/esm/parser/table-parser.js +11 -6
  92. package/dist/esm/parser/update-set-parser.js +1 -1
  93. package/dist/esm/parser/value-parser.js +1 -1
  94. package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
  95. package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
  96. package/dist/esm/query-builder/join-builder.d.ts +2 -2
  97. package/dist/esm/query-builder/join-builder.js +9 -13
  98. package/dist/esm/query-builder/query-builder.d.ts +2 -2
  99. package/dist/esm/query-builder/query-builder.js +37 -39
  100. package/dist/esm/query-builder/type-utils.d.ts +5 -5
  101. package/dist/esm/query-compiler/default-query-compiler.js +14 -2
  102. package/dist/esm/query-creator.d.ts +2 -2
  103. package/dist/esm/query-creator.js +8 -12
  104. package/dist/esm/schema/alter-table-builder.d.ts +26 -8
  105. package/dist/esm/schema/alter-table-builder.js +73 -6
  106. package/dist/esm/schema/column-definition-builder.d.ts +10 -4
  107. package/dist/esm/schema/column-definition-builder.js +12 -7
  108. package/dist/esm/schema/create-index-builder.d.ts +5 -5
  109. package/dist/esm/schema/create-index-builder.js +19 -28
  110. package/dist/esm/schema/create-schema-builder.d.ts +5 -5
  111. package/dist/esm/schema/create-schema-builder.js +9 -13
  112. package/dist/esm/schema/create-table-builder.d.ts +22 -10
  113. package/dist/esm/schema/create-table-builder.js +41 -34
  114. package/dist/esm/schema/drop-index-builder.d.ts +5 -5
  115. package/dist/esm/schema/drop-index-builder.js +11 -16
  116. package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
  117. package/dist/esm/schema/drop-schema-builder.js +9 -13
  118. package/dist/esm/schema/drop-table-builder.d.ts +5 -5
  119. package/dist/esm/schema/drop-table-builder.js +9 -13
  120. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
  121. package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
  122. package/package.json +1 -1
@@ -4,14 +4,11 @@ exports.DropIndexBuilder = void 0;
4
4
  const drop_index_node_js_1 = require("../operation-node/drop-index-node.js");
5
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
6
6
  const table_parser_js_1 = require("../parser/table-parser.js");
7
+ const object_utils_js_1 = require("../util/object-utils.js");
7
8
  class DropIndexBuilder {
8
- #queryId;
9
- #dropIndexNode;
10
- #executor;
11
- constructor(args) {
12
- this.#queryId = args.queryId;
13
- this.#dropIndexNode = args.dropIndexNode;
14
- this.#executor = args.executor;
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = (0, object_utils_js_1.freeze)(props);
15
12
  }
16
13
  /**
17
14
  * Specifies the table the index was created for. This is not needed
@@ -19,30 +16,28 @@ class DropIndexBuilder {
19
16
  */
20
17
  on(table) {
21
18
  return new DropIndexBuilder({
22
- queryId: this.#queryId,
23
- executor: this.#executor,
24
- dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#dropIndexNode, {
19
+ ...this.#props,
20
+ dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#props.dropIndexNode, {
25
21
  table: (0, table_parser_js_1.parseTable)(table),
26
22
  }),
27
23
  });
28
24
  }
29
25
  ifExists() {
30
26
  return new DropIndexBuilder({
31
- queryId: this.#queryId,
32
- executor: this.#executor,
33
- dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#dropIndexNode, {
27
+ ...this.#props,
28
+ dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#props.dropIndexNode, {
34
29
  modifier: 'IfExists',
35
30
  }),
36
31
  });
37
32
  }
38
33
  toOperationNode() {
39
- return this.#executor.transformQuery(this.#dropIndexNode, this.#queryId);
34
+ return this.#props.executor.transformQuery(this.#props.dropIndexNode, this.#props.queryId);
40
35
  }
41
36
  compile() {
42
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
37
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
43
38
  }
44
39
  async execute() {
45
- await this.#executor.executeQuery(this.compile(), this.#queryId);
40
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
46
41
  }
47
42
  }
48
43
  exports.DropIndexBuilder = DropIndexBuilder;
@@ -6,14 +6,14 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
7
  export declare class DropSchemaBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: DropSchemaBuilderConstructorArgs);
9
+ constructor(props: DropSchemaBuilderProps);
10
10
  ifExists(): DropSchemaBuilder;
11
11
  toOperationNode(): DropSchemaNode;
12
12
  compile(): CompiledQuery;
13
13
  execute(): Promise<void>;
14
14
  }
15
- export interface DropSchemaBuilderConstructorArgs {
16
- queryId: QueryId;
17
- dropSchemaNode: DropSchemaNode;
18
- executor: QueryExecutor;
15
+ export interface DropSchemaBuilderProps {
16
+ readonly queryId: QueryId;
17
+ readonly executor: QueryExecutor;
18
+ readonly dropSchemaNode: DropSchemaNode;
19
19
  }
@@ -3,30 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DropSchemaBuilder = void 0;
4
4
  const drop_schema_node_js_1 = require("../operation-node/drop-schema-node.js");
5
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ const object_utils_js_1 = require("../util/object-utils.js");
6
7
  class DropSchemaBuilder {
7
- #queryId;
8
- #dropSchemaNode;
9
- #executor;
10
- constructor(args) {
11
- this.#queryId = args.queryId;
12
- this.#dropSchemaNode = args.dropSchemaNode;
13
- this.#executor = args.executor;
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = (0, object_utils_js_1.freeze)(props);
14
11
  }
15
12
  ifExists() {
16
13
  return new DropSchemaBuilder({
17
- queryId: this.#queryId,
18
- executor: this.#executor,
19
- dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.cloneWithModifier(this.#dropSchemaNode, 'IfExists'),
14
+ ...this.#props,
15
+ dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.cloneWithModifier(this.#props.dropSchemaNode, 'IfExists'),
20
16
  });
21
17
  }
22
18
  toOperationNode() {
23
- return this.#executor.transformQuery(this.#dropSchemaNode, this.#queryId);
19
+ return this.#props.executor.transformQuery(this.#props.dropSchemaNode, this.#props.queryId);
24
20
  }
25
21
  compile() {
26
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
22
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
27
23
  }
28
24
  async execute() {
29
- await this.#executor.executeQuery(this.compile(), this.#queryId);
25
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
30
26
  }
31
27
  }
32
28
  exports.DropSchemaBuilder = DropSchemaBuilder;
@@ -6,14 +6,14 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
7
  export declare class DropTableBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: DropTableBuilderConstructorArgs);
9
+ constructor(props: DropTableBuilderProps);
10
10
  ifExists(): DropTableBuilder;
11
11
  toOperationNode(): DropTableNode;
12
12
  compile(): CompiledQuery;
13
13
  execute(): Promise<void>;
14
14
  }
15
- export interface DropTableBuilderConstructorArgs {
16
- queryId: QueryId;
17
- dropTableNode: DropTableNode;
18
- executor: QueryExecutor;
15
+ export interface DropTableBuilderProps {
16
+ readonly queryId: QueryId;
17
+ readonly executor: QueryExecutor;
18
+ readonly dropTableNode: DropTableNode;
19
19
  }
@@ -3,30 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DropTableBuilder = void 0;
4
4
  const drop_table_node_js_1 = require("../operation-node/drop-table-node.js");
5
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ const object_utils_js_1 = require("../util/object-utils.js");
6
7
  class DropTableBuilder {
7
- #queryId;
8
- #dropTableNode;
9
- #executor;
10
- constructor(args) {
11
- this.#queryId = args.queryId;
12
- this.#dropTableNode = args.dropTableNode;
13
- this.#executor = args.executor;
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = (0, object_utils_js_1.freeze)(props);
14
11
  }
15
12
  ifExists() {
16
13
  return new DropTableBuilder({
17
- queryId: this.#queryId,
18
- executor: this.#executor,
19
- dropTableNode: drop_table_node_js_1.DropTableNode.cloneWithModifier(this.#dropTableNode, 'IfExists'),
14
+ ...this.#props,
15
+ dropTableNode: drop_table_node_js_1.DropTableNode.cloneWithModifier(this.#props.dropTableNode, 'IfExists'),
20
16
  });
21
17
  }
22
18
  toOperationNode() {
23
- return this.#executor.transformQuery(this.#dropTableNode, this.#queryId);
19
+ return this.#props.executor.transformQuery(this.#props.dropTableNode, this.#props.queryId);
24
20
  }
25
21
  compile() {
26
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
22
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
27
23
  }
28
24
  async execute() {
29
- await this.#executor.executeQuery(this.compile(), this.#queryId);
25
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
30
26
  }
31
27
  }
32
28
  exports.DropTableBuilder = DropTableBuilder;
@@ -0,0 +1,14 @@
1
+ import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { OnModifyForeignAction } from '../operation-node/references-node.js';
4
+ export interface ForeignKeyConstraintBuilderInterface<R> {
5
+ onDelete(onDelete: OnModifyForeignAction): R;
6
+ onUpdate(onUpdate: OnModifyForeignAction): R;
7
+ }
8
+ export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<ForeignKeyConstraintBuilder>, OperationNodeSource {
9
+ #private;
10
+ constructor(node: ForeignKeyConstraintNode);
11
+ onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
12
+ onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
13
+ toOperationNode(): ForeignKeyConstraintNode;
14
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForeignKeyConstraintBuilder = void 0;
4
+ const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-constraint-node.js");
5
+ const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ class ForeignKeyConstraintBuilder {
7
+ #node;
8
+ constructor(node) {
9
+ this.#node = node;
10
+ }
11
+ onDelete(onDelete) {
12
+ return new ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.cloneWith(this.#node, {
13
+ onDelete,
14
+ }));
15
+ }
16
+ onUpdate(onUpdate) {
17
+ return new ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.cloneWith(this.#node, {
18
+ onUpdate,
19
+ }));
20
+ }
21
+ toOperationNode() {
22
+ return this.#node;
23
+ }
24
+ }
25
+ exports.ForeignKeyConstraintBuilder = ForeignKeyConstraintBuilder;
26
+ (0, prevent_await_js_1.preventAwait)(ForeignKeyConstraintBuilder, "don't await ForeignKeyConstraintBuilder instances directly.");
@@ -1,13 +1,5 @@
1
1
  import { Kysely } from '../kysely.js';
2
- /**
3
- * The `DialectAdapter` encapsulates all differences between dialects outside
4
- * the `Driver` and `QueryCompiler`.
5
- *
6
- * For example, some databases support transactional DDL and therefore we want
7
- * to run migrations inside a transaction, while other databases don't support
8
- * it. For that there's a `supportsTransactionalDdl` boolean in this interface.
9
- */
10
- export interface DialectAdapter {
2
+ export interface DialectSupports {
11
3
  /**
12
4
  * Whether or not this dialect supports transactional DDL.
13
5
  *
@@ -19,6 +11,16 @@ export interface DialectAdapter {
19
11
  * upates and deletes.
20
12
  */
21
13
  readonly supportsReturning: boolean;
14
+ }
15
+ /**
16
+ * The `DialectAdapter` encapsulates all differences between dialects outside
17
+ * the `Driver` and `QueryCompiler`.
18
+ *
19
+ * For example, some databases support transactional DDL and therefore we want
20
+ * to run migrations inside a transaction, while other databases don't support
21
+ * it. For that there's a `supportsTransactionalDdl` boolean in this interface.
22
+ */
23
+ export interface DialectAdapter extends DialectSupports {
22
24
  /**
23
25
  * This method is used to acquire a lock for the migrations so that
24
26
  * it's not possible for two migration processes to run in parallel.
@@ -2,7 +2,7 @@ export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
3
  export * from './query-builder/query-builder.js';
4
4
  export * from './query-builder/join-builder.js';
5
- export * from './query-builder/sub-query-builder.js';
5
+ export * from './query-builder/expression-builder.js';
6
6
  export * from './raw-builder/raw-builder.js';
7
7
  export * from './query-executor/query-executor.js';
8
8
  export * from './query-executor/default-query-executor.js';
@@ -17,6 +17,7 @@ export * from './schema/drop-index-builder.js';
17
17
  export * from './schema/create-schema-builder.js';
18
18
  export * from './schema/drop-schema-builder.js';
19
19
  export * from './schema/column-definition-builder.js';
20
+ export * from './schema/foreign-key-constraint-builder.js';
20
21
  export * from './schema/alter-table-builder.js';
21
22
  export * from './dynamic/dynamic.js';
22
23
  export * from './driver/driver.js';
package/dist/esm/index.js CHANGED
@@ -2,7 +2,7 @@ export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
3
  export * from './query-builder/query-builder.js';
4
4
  export * from './query-builder/join-builder.js';
5
- export * from './query-builder/sub-query-builder.js';
5
+ export * from './query-builder/expression-builder.js';
6
6
  export * from './raw-builder/raw-builder.js';
7
7
  export * from './query-executor/query-executor.js';
8
8
  export * from './query-executor/default-query-executor.js';
@@ -17,6 +17,7 @@ export * from './schema/drop-index-builder.js';
17
17
  export * from './schema/create-schema-builder.js';
18
18
  export * from './schema/drop-schema-builder.js';
19
19
  export * from './schema/column-definition-builder.js';
20
+ export * from './schema/foreign-key-constraint-builder.js';
20
21
  export * from './schema/alter-table-builder.js';
21
22
  export * from './dynamic/dynamic.js';
22
23
  export * from './driver/driver.js';
@@ -8,7 +8,7 @@ import { KyselyPlugin } from './plugin/kysely-plugin.js';
8
8
  import { GeneratedPlaceholder } from './query-builder/type-utils.js';
9
9
  import { DatabaseIntrospector } from './introspection/database-introspector.js';
10
10
  import { Driver, IsolationLevel } from './driver/driver.js';
11
- import { DialectAdapter } from './dialect/dialect-adapter.js';
11
+ import { ParseContext } from './parser/parse-context.js';
12
12
  /**
13
13
  * The main Kysely class.
14
14
  *
@@ -186,7 +186,7 @@ export interface KyselyProps {
186
186
  readonly driver: Driver;
187
187
  readonly executor: QueryExecutor;
188
188
  readonly dialect: Dialect;
189
- readonly adapter: DialectAdapter;
189
+ readonly parseContext: ParseContext;
190
190
  }
191
191
  export declare function isKyselyProps(obj: unknown): obj is KyselyProps;
192
192
  export interface KyselyConfig {
@@ -10,6 +10,7 @@ import { RuntimeDriver } from './driver/runtime-driver.js';
10
10
  import { SingleConnectionProvider } from './driver/single-connection-provider.js';
11
11
  import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
12
12
  import { preventAwait } from './util/prevent-await.js';
13
+ import { DefaultParseContext } from './parser/parse-context.js';
13
14
  /**
14
15
  * The main Kysely class.
15
16
  *
@@ -54,7 +55,7 @@ export class Kysely extends QueryCreator {
54
55
  #props;
55
56
  constructor(args) {
56
57
  if (isKyselyProps(args)) {
57
- super({ executor: args.executor, adapter: args.adapter });
58
+ super({ executor: args.executor, parseContext: args.parseContext });
58
59
  this.#props = freeze(args);
59
60
  }
60
61
  else {
@@ -62,16 +63,17 @@ export class Kysely extends QueryCreator {
62
63
  const driver = dialect.createDriver();
63
64
  const compiler = dialect.createQueryCompiler();
64
65
  const adapter = dialect.createAdapter();
66
+ const parseContext = new DefaultParseContext(adapter);
65
67
  const runtimeDriver = new RuntimeDriver(driver);
66
68
  const connectionProvider = new DefaultConnectionProvider(runtimeDriver);
67
69
  const executor = new DefaultQueryExecutor(compiler, connectionProvider, args.plugins ?? []);
68
- super({ executor, adapter });
70
+ super({ executor, parseContext });
69
71
  this.#props = freeze({
70
72
  config: args,
71
73
  executor,
72
- adapter,
73
74
  dialect,
74
- driver,
75
+ driver: runtimeDriver,
76
+ parseContext,
75
77
  });
76
78
  }
77
79
  }
@@ -85,7 +87,7 @@ export class Kysely extends QueryCreator {
85
87
  * Returns the {@link MigrationModule} module for managing and running migrations.
86
88
  */
87
89
  get migration() {
88
- return new MigrationModule(this, this.#props.adapter);
90
+ return new MigrationModule(this, this.#props.parseContext.adapter);
89
91
  }
90
92
  /**
91
93
  * Returns a the {@link DynamicModule} module.
@@ -243,7 +245,7 @@ export function isKyselyProps(obj) {
243
245
  isObject(obj.driver) &&
244
246
  isObject(obj.executor) &&
245
247
  isObject(obj.dialect) &&
246
- isObject(obj.adapter));
248
+ isObject(obj.parseContext));
247
249
  }
248
250
  export class ConnectionBuilder {
249
251
  #props;
@@ -269,7 +271,7 @@ preventAwait(ConnectionBuilder, "don't await ConnectionBuilder instances directl
269
271
  export class TransactionBuilder {
270
272
  #props;
271
273
  constructor(props) {
272
- this.#props = props;
274
+ this.#props = freeze(props);
273
275
  }
274
276
  setIsolationLevel(isolationLevel) {
275
277
  return new TransactionBuilder({
@@ -1,5 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
+ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
3
4
  import { ConstraintNode } from './constraint-node.js';
4
5
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
6
  export declare type CreateTableNodeModifier = 'IfNotExists';
@@ -21,5 +22,5 @@ export declare const CreateTableNode: Readonly<{
21
22
  cloneWithPrimaryKeyConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
22
23
  cloneWithUniqueConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
23
24
  cloneWithCheckConstraint(createTable: CreateTableNode, constraintName: string, sql: string): CreateTableNode;
24
- cloneWithForeignKeyConstraint(createTable: CreateTableNode, constraintName: string, sourceColumns: string[], targetTable: string, targetColumns: string[]): CreateTableNode;
25
+ cloneWithForeignKeyConstraint(createTable: CreateTableNode, constraint: ForeignKeyConstraintNode): CreateTableNode;
25
26
  }>;
@@ -1,10 +1,7 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
2
  import { CheckConstraintNode } from './check-constraint-node.js';
3
- import { TableNode } from './table-node.js';
4
3
  import { PrimaryConstraintNode } from './primary-constraint-node.js';
5
4
  import { UniqueConstraintNode } from './unique-constraint-node.js';
6
- import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
7
- import { ColumnNode } from './column-node.js';
8
5
  /**
9
6
  * @internal
10
7
  */
@@ -58,8 +55,7 @@ export const CreateTableNode = freeze({
58
55
  : freeze([constraint]),
59
56
  });
60
57
  },
61
- cloneWithForeignKeyConstraint(createTable, constraintName, sourceColumns, targetTable, targetColumns) {
62
- const constraint = ForeignKeyConstraintNode.create(sourceColumns.map(ColumnNode.create), TableNode.create(targetTable), targetColumns.map(ColumnNode.create), constraintName);
58
+ cloneWithForeignKeyConstraint(createTable, constraint) {
63
59
  return freeze({
64
60
  ...createTable,
65
61
  constraints: createTable.constraints
@@ -1,12 +1,15 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { IdentifierNode } from './identifier-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
- import { ReferencesNode } from './references-node.js';
4
+ import { OnModifyForeignAction, ReferencesNode } from './references-node.js';
5
5
  import { TableNode } from './table-node.js';
6
+ export declare type ForeignKeyConstraintNodeProps = Omit<ForeignKeyConstraintNode, 'kind' | 'columns' | 'references'>;
6
7
  export interface ForeignKeyConstraintNode extends OperationNode {
7
8
  readonly kind: 'ForeignKeyConstraintNode';
8
9
  readonly columns: ReadonlyArray<ColumnNode>;
9
10
  readonly references: ReferencesNode;
11
+ readonly onDelete?: OnModifyForeignAction;
12
+ readonly onUpdate?: OnModifyForeignAction;
10
13
  readonly name?: IdentifierNode;
11
14
  }
12
15
  /**
@@ -15,4 +18,12 @@ export interface ForeignKeyConstraintNode extends OperationNode {
15
18
  export declare const ForeignKeyConstraintNode: Readonly<{
16
19
  is(node: OperationNode): node is ForeignKeyConstraintNode;
17
20
  create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string | undefined): ForeignKeyConstraintNode;
21
+ cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
22
+ name?: IdentifierNode | undefined;
23
+ onDelete?: OnModifyForeignAction | undefined;
24
+ onUpdate?: OnModifyForeignAction | undefined;
25
+ kind: 'ForeignKeyConstraintNode';
26
+ columns: ReadonlyArray<ColumnNode>;
27
+ references: ReferencesNode;
28
+ }>;
18
29
  }>;
@@ -16,4 +16,10 @@ export const ForeignKeyConstraintNode = freeze({
16
16
  name: constraintName ? IdentifierNode.create(constraintName) : undefined,
17
17
  });
18
18
  },
19
+ cloneWith(node, props) {
20
+ return freeze({
21
+ ...node,
22
+ ...props,
23
+ });
24
+ },
19
25
  });
@@ -20,5 +20,6 @@ export interface JoinNode extends OperationNode {
20
20
  export declare const JoinNode: Readonly<{
21
21
  is(node: OperationNode): node is JoinNode;
22
22
  create(joinType: JoinType, table: JoinTableNode): JoinNode;
23
+ createWithOn(joinType: JoinType, table: JoinTableNode, on: JoinNodeOnNode): JoinNode;
23
24
  cloneWithOn(joinNode: JoinNode, op: 'And' | 'Or', on: JoinNodeOnNode): JoinNode;
24
25
  }>;
@@ -16,6 +16,14 @@ export const JoinNode = freeze({
16
16
  on: undefined,
17
17
  });
18
18
  },
19
+ createWithOn(joinType, table, on) {
20
+ return freeze({
21
+ kind: 'JoinNode',
22
+ joinType,
23
+ table,
24
+ on,
25
+ });
26
+ },
19
27
  cloneWithOn(joinNode, op, on) {
20
28
  return freeze({
21
29
  ...joinNode,
@@ -396,6 +396,8 @@ export class OperationNodeTransformer {
396
396
  columns: this.transformNodeList(node.columns),
397
397
  references: this.transformNode(node.references),
398
398
  name: this.transformNode(node.name),
399
+ onDelete: node.onDelete,
400
+ onUpdate: node.onUpdate,
399
401
  };
400
402
  }
401
403
  transformReferences(node) {
@@ -404,6 +406,7 @@ export class OperationNodeTransformer {
404
406
  table: this.transformNode(node.table),
405
407
  columns: this.transformNodeList(node.columns),
406
408
  onDelete: node.onDelete,
409
+ onUpdate: node.onUpdate,
407
410
  };
408
411
  }
409
412
  transformCheckConstraint(node) {
@@ -1,12 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
3
  import { TableNode } from './table-node.js';
4
- export declare type OnDelete = 'cascade' | 'set null';
4
+ export declare type OnModifyForeignAction = 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default';
5
5
  export interface ReferencesNode extends OperationNode {
6
6
  readonly kind: 'ReferencesNode';
7
7
  readonly table: TableNode;
8
8
  readonly columns: ReadonlyArray<ColumnNode>;
9
- readonly onDelete?: OnDelete;
9
+ readonly onDelete?: OnModifyForeignAction;
10
+ readonly onUpdate?: OnModifyForeignAction;
10
11
  }
11
12
  /**
12
13
  * @internal
@@ -14,5 +15,6 @@ export interface ReferencesNode extends OperationNode {
14
15
  export declare const ReferencesNode: Readonly<{
15
16
  is(node: OperationNode): node is ReferencesNode;
16
17
  create(table: TableNode, columns: ReadonlyArray<ColumnNode>): ReferencesNode;
17
- cloneWithOnDelete(references: ReferencesNode, onDelete: OnDelete): ReferencesNode;
18
+ cloneWithOnDelete(references: ReferencesNode, onDelete: OnModifyForeignAction): ReferencesNode;
19
+ cloneWithOnUpdate(references: ReferencesNode, onUpdate: OnModifyForeignAction): ReferencesNode;
18
20
  }>;
@@ -19,4 +19,10 @@ export const ReferencesNode = freeze({
19
19
  onDelete,
20
20
  });
21
21
  },
22
+ cloneWithOnUpdate(references, onUpdate) {
23
+ return freeze({
24
+ ...references,
25
+ onUpdate,
26
+ });
27
+ },
22
28
  });
@@ -8,10 +8,10 @@ export const TableNode = freeze({
8
8
  return node.kind === 'TableNode';
9
9
  },
10
10
  create(table) {
11
- return {
11
+ return freeze({
12
12
  kind: 'TableNode',
13
13
  table: IdentifierNode.create(table),
14
- };
14
+ });
15
15
  },
16
16
  createWithSchema(schema, table) {
17
17
  return freeze({
@@ -0,0 +1,5 @@
1
+ import { ColumnDataType, DataTypeNode } from '../operation-node/data-type-node.js';
2
+ import { RawNode } from '../operation-node/raw-node.js';
3
+ import { AnyRawBuilder } from '../query-builder/type-utils.js';
4
+ export declare type DataTypeExpression = ColumnDataType | AnyRawBuilder;
5
+ export declare function parseDataTypeExpression(dataType: DataTypeExpression): DataTypeNode | RawNode;
@@ -0,0 +1,7 @@
1
+ import { DataTypeNode, } from '../operation-node/data-type-node.js';
2
+ import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ export function parseDataTypeExpression(dataType) {
4
+ return isOperationNodeSource(dataType)
5
+ ? dataType.toOperationNode()
6
+ : DataTypeNode.create(dataType);
7
+ }
@@ -0,0 +1,6 @@
1
+ import { RawNode } from '../operation-node/raw-node.js';
2
+ import { ValueNode } from '../operation-node/value-node.js';
3
+ import { AnyRawBuilder } from '../query-builder/type-utils.js';
4
+ import { PrimitiveValue } from '../util/object-utils.js';
5
+ export declare type DefaultValueExpression = PrimitiveValue | AnyRawBuilder;
6
+ export declare function parseDefaultValueExpression(value: DefaultValueExpression): ValueNode | RawNode;
@@ -0,0 +1,7 @@
1
+ import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
2
+ import { ValueNode } from '../operation-node/value-node.js';
3
+ export function parseDefaultValueExpression(value) {
4
+ return isOperationNodeSource(value)
5
+ ? value.toOperationNode()
6
+ : ValueNode.createImmediate(value);
7
+ }
@@ -10,5 +10,5 @@ export declare function parseWhereFilter(ctx: ParseContext, args: any[]): Filter
10
10
  export declare function parseHavingFilter(ctx: ParseContext, args: any[]): FilterExpressionNode;
11
11
  export declare function parseOnFilter(ctx: ParseContext, args: any[]): FilterExpressionNode;
12
12
  export declare function parseReferenceFilter(ctx: ParseContext, lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
13
- export declare function parseExistExpression(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
14
- export declare function parseNotExistExpression(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
13
+ export declare function parseExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;
14
+ export declare function parseNotExistFilter(ctx: ParseContext, arg: ExistsExpression<any, any>): FilterNode;