kysely 0.19.12 → 0.21.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 (144) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
  3. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +5 -0
  4. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +16 -0
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +5 -12
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +16 -11
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +17 -9
  8. package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +1 -3
  9. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +3 -8
  10. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +10 -0
  13. package/dist/cjs/index.d.ts +3 -0
  14. package/dist/cjs/index.js +3 -0
  15. package/dist/cjs/operation-node/create-table-node.d.ts +6 -1
  16. package/dist/cjs/operation-node/create-table-node.js +16 -0
  17. package/dist/cjs/operation-node/create-type-node.d.ts +2 -2
  18. package/dist/cjs/operation-node/create-type-node.js +2 -2
  19. package/dist/cjs/operation-node/create-view-node.d.ts +2 -2
  20. package/dist/cjs/operation-node/create-view-node.js +2 -2
  21. package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
  22. package/dist/cjs/operation-node/delete-query-node.js +6 -0
  23. package/dist/cjs/operation-node/drop-index-node.d.ts +2 -2
  24. package/dist/cjs/operation-node/drop-index-node.js +2 -2
  25. package/dist/cjs/operation-node/drop-type-node.d.ts +2 -2
  26. package/dist/cjs/operation-node/drop-type-node.js +2 -2
  27. package/dist/cjs/operation-node/drop-view-node.d.ts +2 -2
  28. package/dist/cjs/operation-node/drop-view-node.js +2 -2
  29. package/dist/cjs/operation-node/explain-node.d.ts +16 -0
  30. package/dist/cjs/operation-node/explain-node.js +19 -0
  31. package/dist/cjs/operation-node/identifier-node.d.ts +2 -2
  32. package/dist/cjs/operation-node/identifier-node.js +2 -2
  33. package/dist/cjs/operation-node/insert-query-node.d.ts +2 -0
  34. package/dist/cjs/operation-node/operation-node-transformer.d.ts +7 -3
  35. package/dist/cjs/operation-node/operation-node-transformer.js +30 -6
  36. package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -4
  37. package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
  38. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/reference-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/reference-node.js +1 -2
  41. package/dist/cjs/operation-node/schemable-identifier-node.d.ts +15 -0
  42. package/dist/cjs/operation-node/schemable-identifier-node.js +26 -0
  43. package/dist/cjs/operation-node/select-query-node.d.ts +3 -0
  44. package/dist/cjs/operation-node/select-query-node.js +6 -0
  45. package/dist/cjs/operation-node/selection-node.d.ts +2 -1
  46. package/dist/cjs/operation-node/table-node.d.ts +2 -3
  47. package/dist/cjs/operation-node/table-node.js +3 -4
  48. package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
  49. package/dist/cjs/operation-node/update-query-node.js +6 -0
  50. package/dist/cjs/parser/select-parser.js +2 -1
  51. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +1 -1
  52. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -28
  53. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +72 -78
  54. package/dist/cjs/query-builder/delete-query-builder.d.ts +19 -1
  55. package/dist/cjs/query-builder/delete-query-builder.js +24 -0
  56. package/dist/cjs/query-builder/function-builder.d.ts +3 -3
  57. package/dist/cjs/query-builder/insert-query-builder.d.ts +20 -2
  58. package/dist/cjs/query-builder/insert-query-builder.js +26 -0
  59. package/dist/cjs/query-builder/select-query-builder.d.ts +38 -1
  60. package/dist/cjs/query-builder/select-query-builder.js +45 -2
  61. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -1
  62. package/dist/cjs/query-builder/update-query-builder.js +25 -0
  63. package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
  64. package/dist/cjs/query-compiler/default-query-compiler.js +63 -5
  65. package/dist/cjs/raw-builder/sql.d.ts +96 -96
  66. package/dist/cjs/raw-builder/sql.js +0 -96
  67. package/dist/cjs/schema/alter-table-builder.d.ts +6 -6
  68. package/dist/cjs/schema/column-definition-builder.d.ts +6 -6
  69. package/dist/cjs/schema/create-table-builder.d.ts +54 -0
  70. package/dist/cjs/schema/create-table-builder.js +64 -0
  71. package/dist/cjs/util/explainable.d.ts +5 -0
  72. package/dist/cjs/util/explainable.js +2 -0
  73. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
  74. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +5 -0
  75. package/dist/esm/dialect/mysql/mysql-query-compiler.js +16 -0
  76. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +5 -12
  77. package/dist/esm/dialect/postgres/postgres-driver.js +16 -11
  78. package/dist/esm/dialect/postgres/postgres-introspector.js +17 -9
  79. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +1 -3
  80. package/dist/esm/dialect/postgres/postgres-query-compiler.js +3 -8
  81. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -0
  82. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
  83. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +10 -0
  84. package/dist/esm/index.d.ts +3 -0
  85. package/dist/esm/index.js +3 -0
  86. package/dist/esm/operation-node/create-table-node.d.ts +6 -1
  87. package/dist/esm/operation-node/create-table-node.js +16 -0
  88. package/dist/esm/operation-node/create-type-node.d.ts +2 -2
  89. package/dist/esm/operation-node/create-type-node.js +2 -2
  90. package/dist/esm/operation-node/create-view-node.d.ts +2 -2
  91. package/dist/esm/operation-node/create-view-node.js +2 -2
  92. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  93. package/dist/esm/operation-node/delete-query-node.js +6 -0
  94. package/dist/esm/operation-node/drop-index-node.d.ts +2 -2
  95. package/dist/esm/operation-node/drop-index-node.js +2 -2
  96. package/dist/esm/operation-node/drop-type-node.d.ts +2 -2
  97. package/dist/esm/operation-node/drop-type-node.js +2 -2
  98. package/dist/esm/operation-node/drop-view-node.d.ts +2 -2
  99. package/dist/esm/operation-node/drop-view-node.js +2 -2
  100. package/dist/esm/operation-node/explain-node.d.ts +16 -0
  101. package/dist/esm/operation-node/explain-node.js +17 -0
  102. package/dist/esm/operation-node/identifier-node.d.ts +2 -2
  103. package/dist/esm/operation-node/identifier-node.js +2 -2
  104. package/dist/esm/operation-node/insert-query-node.d.ts +2 -0
  105. package/dist/esm/operation-node/operation-node-transformer.d.ts +7 -3
  106. package/dist/esm/operation-node/operation-node-transformer.js +30 -6
  107. package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -4
  108. package/dist/esm/operation-node/operation-node-visitor.js +2 -0
  109. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  110. package/dist/esm/operation-node/reference-node.d.ts +1 -1
  111. package/dist/esm/operation-node/reference-node.js +1 -2
  112. package/dist/esm/operation-node/schemable-identifier-node.d.ts +15 -0
  113. package/dist/esm/operation-node/schemable-identifier-node.js +24 -0
  114. package/dist/esm/operation-node/select-query-node.d.ts +3 -0
  115. package/dist/esm/operation-node/select-query-node.js +6 -0
  116. package/dist/esm/operation-node/selection-node.d.ts +2 -1
  117. package/dist/esm/operation-node/table-node.d.ts +2 -3
  118. package/dist/esm/operation-node/table-node.js +3 -4
  119. package/dist/esm/operation-node/update-query-node.d.ts +3 -0
  120. package/dist/esm/operation-node/update-query-node.js +6 -0
  121. package/dist/esm/parser/select-parser.js +2 -1
  122. package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -1
  123. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -28
  124. package/dist/esm/plugin/with-schema/with-schema-transformer.js +72 -78
  125. package/dist/esm/query-builder/delete-query-builder.d.ts +19 -1
  126. package/dist/esm/query-builder/delete-query-builder.js +24 -0
  127. package/dist/esm/query-builder/function-builder.d.ts +3 -3
  128. package/dist/esm/query-builder/insert-query-builder.d.ts +20 -2
  129. package/dist/esm/query-builder/insert-query-builder.js +26 -0
  130. package/dist/esm/query-builder/select-query-builder.d.ts +38 -1
  131. package/dist/esm/query-builder/select-query-builder.js +45 -2
  132. package/dist/esm/query-builder/update-query-builder.d.ts +20 -1
  133. package/dist/esm/query-builder/update-query-builder.js +25 -0
  134. package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
  135. package/dist/esm/query-compiler/default-query-compiler.js +63 -5
  136. package/dist/esm/raw-builder/sql.d.ts +96 -96
  137. package/dist/esm/raw-builder/sql.js +0 -96
  138. package/dist/esm/schema/alter-table-builder.d.ts +6 -6
  139. package/dist/esm/schema/column-definition-builder.d.ts +6 -6
  140. package/dist/esm/schema/create-table-builder.d.ts +54 -0
  141. package/dist/esm/schema/create-table-builder.js +64 -0
  142. package/dist/esm/util/explainable.d.ts +5 -0
  143. package/dist/esm/util/explainable.js +2 -0
  144. package/package.json +4 -1
@@ -1,4 +1,5 @@
1
1
  import { ColumnNode } from './column-node.js';
2
+ import { ExplainNode } from './explain-node.js';
2
3
  import { OnConflictNode } from './on-conflict-node.js';
3
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
4
5
  import { OperationNode } from './operation-node.js';
@@ -20,6 +21,7 @@ export interface InsertQueryNode extends OperationNode {
20
21
  readonly with?: WithNode;
21
22
  readonly ignore?: boolean;
22
23
  readonly replace?: boolean;
24
+ readonly explain?: ExplainNode;
23
25
  }
24
26
  /**
25
27
  * @internal
@@ -68,6 +68,8 @@ import { ValuesNode } from './values-node.js';
68
68
  import { SelectModifierNode } from './select-modifier-node.js';
69
69
  import { CreateTypeNode } from './create-type-node.js';
70
70
  import { DropTypeNode } from './drop-type-node.js';
71
+ import { ExplainNode } from './explain-node.js';
72
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
71
73
  /**
72
74
  * Transforms an operation node tree into another one.
73
75
  *
@@ -100,9 +102,9 @@ import { DropTypeNode } from './drop-type-node.js';
100
102
  export declare class OperationNodeTransformer {
101
103
  #private;
102
104
  protected readonly nodeStack: OperationNode[];
103
- readonly transformNode: <T extends OperationNode | undefined, U extends T | undefined = T>(node: U) => T;
104
- protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[]): readonly T[];
105
- protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[] | undefined): readonly T[] | undefined;
105
+ transformNode<T extends OperationNode | undefined>(node: T): T;
106
+ protected transformNodeImpl<T extends OperationNode>(node: T): T;
107
+ protected transformNodeList<T extends ReadonlyArray<OperationNode> | undefined>(list: T): T;
106
108
  protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
107
109
  protected transformSelection(node: SelectionNode): SelectionNode;
108
110
  protected transformColumn(node: ColumnNode): ColumnNode;
@@ -166,6 +168,8 @@ export declare class OperationNodeTransformer {
166
168
  protected transformSelectModifier(node: SelectModifierNode): SelectModifierNode;
167
169
  protected transformCreateType(node: CreateTypeNode): CreateTypeNode;
168
170
  protected transformDropType(node: DropTypeNode): DropTypeNode;
171
+ protected transformExplain(node: ExplainNode): ExplainNode;
172
+ protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
169
173
  protected transformDataType(node: DataTypeNode): DataTypeNode;
170
174
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
171
175
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -38,6 +38,7 @@ class OperationNodeTransformer {
38
38
  AliasNode: this.transformAlias.bind(this),
39
39
  ColumnNode: this.transformColumn.bind(this),
40
40
  IdentifierNode: this.transformIdentifier.bind(this),
41
+ SchemableIdentifierNode: this.transformSchemableIdentifier.bind(this),
41
42
  RawNode: this.transformRaw.bind(this),
42
43
  ReferenceNode: this.transformReference.bind(this),
43
44
  SelectQueryNode: this.transformSelectQuery.bind(this),
@@ -104,21 +105,25 @@ class OperationNodeTransformer {
104
105
  SelectModifierNode: this.transformSelectModifier.bind(this),
105
106
  CreateTypeNode: this.transformCreateType.bind(this),
106
107
  DropTypeNode: this.transformDropType.bind(this),
108
+ ExplainNode: this.transformExplain.bind(this),
107
109
  });
108
- transformNode = (node) => {
110
+ transformNode(node) {
109
111
  if (!node) {
110
- return undefined;
112
+ return node;
111
113
  }
112
114
  this.nodeStack.push(node);
113
- const out = this.#transformers[node.kind](node);
115
+ const out = this.transformNodeImpl(node);
114
116
  this.nodeStack.pop();
115
117
  return (0, object_utils_js_1.freeze)(out);
116
- };
118
+ }
119
+ transformNodeImpl(node) {
120
+ return this.#transformers[node.kind](node);
121
+ }
117
122
  transformNodeList(list) {
118
123
  if (!list) {
119
124
  return list;
120
125
  }
121
- return (0, object_utils_js_1.freeze)(list.map(this.transformNode));
126
+ return (0, object_utils_js_1.freeze)(list.map((node) => this.transformNode(node)));
122
127
  }
123
128
  transformSelectQuery(node) {
124
129
  return (0, require_all_props_js_1.requireAllProps)({
@@ -137,6 +142,7 @@ class OperationNodeTransformer {
137
142
  with: this.transformNode(node.with),
138
143
  having: this.transformNode(node.having),
139
144
  union: this.transformNodeList(node.union),
145
+ explain: this.transformNode(node.explain),
140
146
  });
141
147
  }
142
148
  transformSelection(node) {
@@ -161,7 +167,6 @@ class OperationNodeTransformer {
161
167
  transformTable(node) {
162
168
  return (0, require_all_props_js_1.requireAllProps)({
163
169
  kind: 'TableNode',
164
- schema: this.transformNode(node.schema),
165
170
  table: this.transformNode(node.table),
166
171
  });
167
172
  }
@@ -245,6 +250,7 @@ class OperationNodeTransformer {
245
250
  with: this.transformNode(node.with),
246
251
  ignore: node.ignore,
247
252
  replace: node.replace,
253
+ explain: this.transformNode(node.explain),
248
254
  });
249
255
  }
250
256
  transformValues(node) {
@@ -263,6 +269,7 @@ class OperationNodeTransformer {
263
269
  with: this.transformNode(node.with),
264
270
  orderBy: this.transformNode(node.orderBy),
265
271
  limit: this.transformNode(node.limit),
272
+ explain: this.transformNode(node.explain),
266
273
  });
267
274
  }
268
275
  transformReturning(node) {
@@ -280,6 +287,8 @@ class OperationNodeTransformer {
280
287
  temporary: node.temporary,
281
288
  ifNotExists: node.ifNotExists,
282
289
  onCommit: node.onCommit,
290
+ frontModifiers: this.transformNodeList(node.frontModifiers),
291
+ endModifiers: this.transformNodeList(node.endModifiers),
283
292
  });
284
293
  }
285
294
  transformColumnDefinition(node) {
@@ -346,6 +355,7 @@ class OperationNodeTransformer {
346
355
  updates: this.transformNodeList(node.updates),
347
356
  returning: this.transformNode(node.returning),
348
357
  with: this.transformNode(node.with),
358
+ explain: this.transformNode(node.explain),
349
359
  });
350
360
  }
351
361
  transformColumnUpdate(node) {
@@ -620,6 +630,20 @@ class OperationNodeTransformer {
620
630
  ifExists: node.ifExists,
621
631
  });
622
632
  }
633
+ transformExplain(node) {
634
+ return (0, require_all_props_js_1.requireAllProps)({
635
+ kind: 'ExplainNode',
636
+ format: node.format,
637
+ options: this.transformNode(node.options),
638
+ });
639
+ }
640
+ transformSchemableIdentifier(node) {
641
+ return (0, require_all_props_js_1.requireAllProps)({
642
+ kind: 'SchemableIdentifierNode',
643
+ schema: this.transformNode(node.schema),
644
+ identifier: this.transformNode(node.identifier),
645
+ });
646
+ }
623
647
  transformDataType(node) {
624
648
  // An Object.freezed leaf node. No need to clone.
625
649
  return node;
@@ -68,6 +68,8 @@ import { ValuesNode } from './values-node.js';
68
68
  import { SelectModifierNode } from './select-modifier-node.js';
69
69
  import { CreateTypeNode } from './create-type-node.js';
70
70
  import { DropTypeNode } from './drop-type-node.js';
71
+ import { ExplainNode } from './explain-node.js';
72
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
71
73
  export declare abstract class OperationNodeVisitor {
72
74
  #private;
73
75
  protected readonly nodeStack: OperationNode[];
@@ -128,10 +130,11 @@ export declare abstract class OperationNodeVisitor {
128
130
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
129
131
  protected abstract visitUnion(node: UnionNode): void;
130
132
  protected abstract visitDataType(node: DataTypeNode): void;
131
- protected abstract visitSelectAll(_: SelectAllNode): void;
132
- protected abstract visitIdentifier(_: IdentifierNode): void;
133
- protected abstract visitValue(_: ValueNode): void;
134
- protected abstract visitPrimitiveValueList(_: PrimitiveValueListNode): void;
133
+ protected abstract visitSelectAll(node: SelectAllNode): void;
134
+ protected abstract visitIdentifier(node: IdentifierNode): void;
135
+ protected abstract visitSchemableIdentifier(node: SchemableIdentifierNode): void;
136
+ protected abstract visitValue(node: ValueNode): void;
137
+ protected abstract visitPrimitiveValueList(node: PrimitiveValueListNode): void;
135
138
  protected abstract visitOperator(node: OperatorNode): void;
136
139
  protected abstract visitCreateView(node: CreateViewNode): void;
137
140
  protected abstract visitDropView(node: DropViewNode): void;
@@ -142,4 +145,5 @@ export declare abstract class OperationNodeVisitor {
142
145
  protected abstract visitSelectModifier(node: SelectModifierNode): void;
143
146
  protected abstract visitCreateType(node: CreateTypeNode): void;
144
147
  protected abstract visitDropType(node: DropTypeNode): void;
148
+ protected abstract visitExplain(node: ExplainNode): void;
145
149
  }
@@ -11,6 +11,7 @@ class OperationNodeVisitor {
11
11
  AliasNode: this.visitAlias.bind(this),
12
12
  ColumnNode: this.visitColumn.bind(this),
13
13
  IdentifierNode: this.visitIdentifier.bind(this),
14
+ SchemableIdentifierNode: this.visitSchemableIdentifier.bind(this),
14
15
  RawNode: this.visitRaw.bind(this),
15
16
  ReferenceNode: this.visitReference.bind(this),
16
17
  SelectQueryNode: this.visitSelectQuery.bind(this),
@@ -77,6 +78,7 @@ class OperationNodeVisitor {
77
78
  SelectModifierNode: this.visitSelectModifier.bind(this),
78
79
  CreateTypeNode: this.visitCreateType.bind(this),
79
80
  DropTypeNode: this.visitDropType.bind(this),
81
+ ExplainNode: this.visitExplain.bind(this),
80
82
  });
81
83
  visitNode = (node) => {
82
84
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -13,5 +13,5 @@ export interface ReferenceNode extends OperationNode {
13
13
  export declare const ReferenceNode: Readonly<{
14
14
  is(node: OperationNode): node is ReferenceNode;
15
15
  create(table: TableNode, column: ColumnNode): ReferenceNode;
16
- createSelectAll(table: string): ReferenceNode;
16
+ createSelectAll(table: TableNode): ReferenceNode;
17
17
  }>;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReferenceNode = void 0;
4
- const table_node_js_1 = require("./table-node.js");
5
4
  const select_all_node_js_1 = require("./select-all-node.js");
6
5
  const object_utils_js_1 = require("../util/object-utils.js");
7
6
  /**
@@ -21,7 +20,7 @@ exports.ReferenceNode = (0, object_utils_js_1.freeze)({
21
20
  createSelectAll(table) {
22
21
  return (0, object_utils_js_1.freeze)({
23
22
  kind: 'ReferenceNode',
24
- table: table_node_js_1.TableNode.create(table),
23
+ table,
25
24
  column: select_all_node_js_1.SelectAllNode.create(),
26
25
  });
27
26
  },
@@ -0,0 +1,15 @@
1
+ import { IdentifierNode } from './identifier-node.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ export interface SchemableIdentifierNode extends OperationNode {
4
+ readonly kind: 'SchemableIdentifierNode';
5
+ readonly schema?: IdentifierNode;
6
+ readonly identifier: IdentifierNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const SchemableIdentifierNode: Readonly<{
12
+ is(node: OperationNode): node is SchemableIdentifierNode;
13
+ create(identifier: string): SchemableIdentifierNode;
14
+ createWithSchema(schema: string, identifier: string): SchemableIdentifierNode;
15
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemableIdentifierNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.SchemableIdentifierNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'SchemableIdentifierNode';
12
+ },
13
+ create(identifier) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'SchemableIdentifierNode',
16
+ identifier: identifier_node_js_1.IdentifierNode.create(identifier),
17
+ });
18
+ },
19
+ createWithSchema(schema, identifier) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ kind: 'SchemableIdentifierNode',
22
+ schema: identifier_node_js_1.IdentifierNode.create(schema),
23
+ identifier: identifier_node_js_1.IdentifierNode.create(identifier),
24
+ });
25
+ },
26
+ });
@@ -14,6 +14,7 @@ import { WhereNode } from './where-node.js';
14
14
  import { WithNode } from './with-node.js';
15
15
  import { UnionNode } from './union-node.js';
16
16
  import { SelectModifierNode } from './select-modifier-node.js';
17
+ import { ExplainNode } from './explain-node.js';
17
18
  export interface SelectQueryNode extends OperationNode {
18
19
  readonly kind: 'SelectQueryNode';
19
20
  readonly from: FromNode;
@@ -30,6 +31,7 @@ export interface SelectQueryNode extends OperationNode {
30
31
  readonly with?: WithNode;
31
32
  readonly having?: HavingNode;
32
33
  readonly union?: ReadonlyArray<UnionNode>;
34
+ readonly explain?: ExplainNode;
33
35
  }
34
36
  /**
35
37
  * @internal
@@ -48,4 +50,5 @@ export declare const SelectQueryNode: Readonly<{
48
50
  cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
49
51
  cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
50
52
  cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
53
+ cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
51
54
  }>;
@@ -104,4 +104,10 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
104
104
  : (0, object_utils_js_1.freeze)([union]),
105
105
  });
106
106
  },
107
+ cloneWithExplain(selectNode, explain) {
108
+ return (0, object_utils_js_1.freeze)({
109
+ ...selectNode,
110
+ explain,
111
+ });
112
+ },
107
113
  });
@@ -3,6 +3,7 @@ import { ColumnNode } from './column-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
4
  import { ReferenceNode } from './reference-node.js';
5
5
  import { SelectAllNode } from './select-all-node.js';
6
+ import { TableNode } from './table-node.js';
6
7
  declare type SelectionNodeChild = ColumnNode | ReferenceNode | AliasNode | SelectAllNode;
7
8
  export interface SelectionNode extends OperationNode {
8
9
  readonly kind: 'SelectionNode';
@@ -15,6 +16,6 @@ export declare const SelectionNode: Readonly<{
15
16
  is(node: OperationNode): node is SelectionNode;
16
17
  create(selection: SelectionNodeChild): SelectionNode;
17
18
  createSelectAll(): SelectionNode;
18
- createSelectAllFromTable(table: string): SelectionNode;
19
+ createSelectAllFromTable(table: TableNode): SelectionNode;
19
20
  }>;
20
21
  export {};
@@ -1,9 +1,8 @@
1
- import { IdentifierNode } from './identifier-node.js';
2
1
  import { OperationNode } from './operation-node.js';
2
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
3
  export interface TableNode extends OperationNode {
4
4
  readonly kind: 'TableNode';
5
- readonly schema?: IdentifierNode;
6
- readonly table: IdentifierNode;
5
+ readonly table: SchemableIdentifierNode;
7
6
  }
8
7
  /**
9
8
  * @internal
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TableNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
- const identifier_node_js_1 = require("./identifier-node.js");
5
+ const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
6
6
  /**
7
7
  * @internal
8
8
  */
@@ -13,14 +13,13 @@ exports.TableNode = (0, object_utils_js_1.freeze)({
13
13
  create(table) {
14
14
  return (0, object_utils_js_1.freeze)({
15
15
  kind: 'TableNode',
16
- table: identifier_node_js_1.IdentifierNode.create(table),
16
+ table: schemable_identifier_node_js_1.SchemableIdentifierNode.create(table),
17
17
  });
18
18
  },
19
19
  createWithSchema(schema, table) {
20
20
  return (0, object_utils_js_1.freeze)({
21
21
  kind: 'TableNode',
22
- schema: identifier_node_js_1.IdentifierNode.create(schema),
23
- table: identifier_node_js_1.IdentifierNode.create(table),
22
+ table: schemable_identifier_node_js_1.SchemableIdentifierNode.createWithSchema(schema, table),
24
23
  });
25
24
  },
26
25
  });
@@ -8,6 +8,7 @@ import { ValueListNode } from './value-list-node.js';
8
8
  import { WhereNode } from './where-node.js';
9
9
  import { WithNode } from './with-node.js';
10
10
  import { FromNode } from './from-node.js';
11
+ import { ExplainNode } from './explain-node.js';
11
12
  export declare type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
12
13
  export interface UpdateQueryNode extends OperationNode {
13
14
  readonly kind: 'UpdateQueryNode';
@@ -18,6 +19,7 @@ export interface UpdateQueryNode extends OperationNode {
18
19
  readonly updates?: ReadonlyArray<ColumnUpdateNode>;
19
20
  readonly returning?: ReturningNode;
20
21
  readonly with?: WithNode;
22
+ readonly explain?: ExplainNode;
21
23
  }
22
24
  /**
23
25
  * @internal
@@ -27,4 +29,5 @@ export declare const UpdateQueryNode: Readonly<{
27
29
  create(table: TableExpressionNode, withNode?: WithNode): UpdateQueryNode;
28
30
  cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
29
31
  cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
32
+ cloneWithExplain(updateQuery: UpdateQueryNode, explain: ExplainNode): UpdateQueryNode;
30
33
  }>;
@@ -33,4 +33,10 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
33
33
  : updates,
34
34
  });
35
35
  },
36
+ cloneWithExplain(updateQuery, explain) {
37
+ return (0, object_utils_js_1.freeze)({
38
+ ...updateQuery,
39
+ explain,
40
+ });
41
+ },
36
42
  });
@@ -6,6 +6,7 @@ const selection_node_js_1 = require("../operation-node/selection-node.js");
6
6
  const reference_parser_js_1 = require("./reference-parser.js");
7
7
  const dynamic_reference_builder_js_1 = require("../dynamic/dynamic-reference-builder.js");
8
8
  const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
9
+ const table_parser_js_1 = require("./table-parser.js");
9
10
  function parseSelectExpressionOrList(selection) {
10
11
  if ((0, object_utils_js_1.isReadonlyArray)(selection)) {
11
12
  return selection.map((it) => parseSelectExpression(it));
@@ -40,7 +41,7 @@ function parseSelectAll(table) {
40
41
  exports.parseSelectAll = parseSelectAll;
41
42
  function parseSelectAllArg(table) {
42
43
  if ((0, object_utils_js_1.isString)(table)) {
43
- return selection_node_js_1.SelectionNode.createSelectAllFromTable(table);
44
+ return selection_node_js_1.SelectionNode.createSelectAllFromTable((0, table_parser_js_1.parseTable)(table));
44
45
  }
45
46
  throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);
46
47
  }
@@ -12,7 +12,7 @@ class SnakeCaseTransformer extends operation_node_transformer_js_1.OperationNode
12
12
  node = super.transformIdentifier(node);
13
13
  return {
14
14
  ...node,
15
- identifier: this.#snakeCase(node.identifier),
15
+ name: this.#snakeCase(node.name),
16
16
  };
17
17
  }
18
18
  }
@@ -1,33 +1,9 @@
1
- import { AlterTableNode } from '../../operation-node/alter-table-node.js';
2
- import { CreateIndexNode } from '../../operation-node/create-index-node.js';
3
- import { CreateTableNode } from '../../operation-node/create-table-node.js';
4
- import { CreateTypeNode } from '../../operation-node/create-type-node.js';
5
- import { CreateViewNode } from '../../operation-node/create-view-node.js';
6
- import { DeleteQueryNode } from '../../operation-node/delete-query-node.js';
7
- import { DropIndexNode } from '../../operation-node/drop-index-node.js';
8
- import { DropTableNode } from '../../operation-node/drop-table-node.js';
9
- import { DropTypeNode } from '../../operation-node/drop-type-node.js';
10
- import { DropViewNode } from '../../operation-node/drop-view-node.js';
11
- import { InsertQueryNode } from '../../operation-node/insert-query-node.js';
12
1
  import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
13
- import { SelectQueryNode } from '../../operation-node/select-query-node.js';
14
- import { TableNode } from '../../operation-node/table-node.js';
15
- import { UpdateQueryNode } from '../../operation-node/update-query-node.js';
2
+ import { OperationNode } from '../../operation-node/operation-node.js';
3
+ import { SchemableIdentifierNode } from '../../operation-node/schemable-identifier-node.js';
16
4
  export declare class WithSchemaTransformer extends OperationNodeTransformer {
17
5
  #private;
18
6
  constructor(schema: string);
19
- protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
20
- protected transformInsertQuery(node: InsertQueryNode): InsertQueryNode;
21
- protected transformUpdateQuery(node: UpdateQueryNode): UpdateQueryNode;
22
- protected transformDeleteQuery(node: DeleteQueryNode): DeleteQueryNode;
23
- protected transformCreateTable(node: CreateTableNode): CreateTableNode;
24
- protected transformDropTable(node: DropTableNode): DropTableNode;
25
- protected transformCreateIndex(node: CreateIndexNode): CreateIndexNode;
26
- protected transformDropIndex(node: DropIndexNode): DropIndexNode;
27
- protected transformCreateView(node: CreateViewNode): CreateViewNode;
28
- protected transformDropView(node: DropViewNode): DropViewNode;
29
- protected transformCreateType(node: CreateTypeNode): CreateTypeNode;
30
- protected transformDropType(node: DropTypeNode): DropTypeNode;
31
- protected transformAlterTable(node: AlterTableNode): AlterTableNode;
32
- protected transformTable(node: TableNode): TableNode;
7
+ protected transformNodeImpl<T extends OperationNode>(node: T): T;
8
+ protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
33
9
  }