kysely 0.20.0 → 0.21.1

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 (80) hide show
  1. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +5 -12
  2. package/dist/cjs/dialect/postgres/postgres-driver.js +16 -11
  3. package/dist/cjs/dialect/postgres/postgres-introspector.js +15 -13
  4. package/dist/cjs/index.d.ts +1 -0
  5. package/dist/cjs/index.js +1 -0
  6. package/dist/cjs/operation-node/create-type-node.d.ts +2 -2
  7. package/dist/cjs/operation-node/create-type-node.js +2 -2
  8. package/dist/cjs/operation-node/create-view-node.d.ts +2 -2
  9. package/dist/cjs/operation-node/create-view-node.js +2 -2
  10. package/dist/cjs/operation-node/drop-index-node.d.ts +2 -2
  11. package/dist/cjs/operation-node/drop-index-node.js +2 -2
  12. package/dist/cjs/operation-node/drop-type-node.d.ts +2 -2
  13. package/dist/cjs/operation-node/drop-type-node.js +2 -2
  14. package/dist/cjs/operation-node/drop-view-node.d.ts +2 -2
  15. package/dist/cjs/operation-node/drop-view-node.js +2 -2
  16. package/dist/cjs/operation-node/identifier-node.d.ts +2 -2
  17. package/dist/cjs/operation-node/identifier-node.js +2 -2
  18. package/dist/cjs/operation-node/operation-node-transformer.d.ts +7 -5
  19. package/dist/cjs/operation-node/operation-node-transformer.js +24 -14
  20. package/dist/cjs/operation-node/operation-node-visitor.d.ts +6 -4
  21. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  22. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/reference-node.d.ts +1 -1
  24. package/dist/cjs/operation-node/reference-node.js +1 -2
  25. package/dist/cjs/operation-node/schemable-identifier-node.d.ts +15 -0
  26. package/dist/cjs/operation-node/schemable-identifier-node.js +26 -0
  27. package/dist/cjs/operation-node/selection-node.d.ts +2 -1
  28. package/dist/cjs/operation-node/table-node.d.ts +2 -3
  29. package/dist/cjs/operation-node/table-node.js +3 -4
  30. package/dist/cjs/parser/group-by-parser.d.ts +4 -2
  31. package/dist/cjs/parser/select-parser.js +2 -1
  32. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +1 -1
  33. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -28
  34. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +71 -79
  35. package/dist/cjs/query-builder/select-query-builder.d.ts +3 -2
  36. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  37. package/dist/cjs/query-compiler/default-query-compiler.js +6 -3
  38. package/dist/cjs/schema/alter-table-builder.d.ts +6 -6
  39. package/dist/cjs/schema/column-definition-builder.d.ts +6 -6
  40. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +5 -12
  41. package/dist/esm/dialect/postgres/postgres-driver.js +16 -11
  42. package/dist/esm/dialect/postgres/postgres-introspector.js +15 -13
  43. package/dist/esm/index.d.ts +1 -0
  44. package/dist/esm/index.js +1 -0
  45. package/dist/esm/operation-node/create-type-node.d.ts +2 -2
  46. package/dist/esm/operation-node/create-type-node.js +2 -2
  47. package/dist/esm/operation-node/create-view-node.d.ts +2 -2
  48. package/dist/esm/operation-node/create-view-node.js +2 -2
  49. package/dist/esm/operation-node/drop-index-node.d.ts +2 -2
  50. package/dist/esm/operation-node/drop-index-node.js +2 -2
  51. package/dist/esm/operation-node/drop-type-node.d.ts +2 -2
  52. package/dist/esm/operation-node/drop-type-node.js +2 -2
  53. package/dist/esm/operation-node/drop-view-node.d.ts +2 -2
  54. package/dist/esm/operation-node/drop-view-node.js +2 -2
  55. package/dist/esm/operation-node/identifier-node.d.ts +2 -2
  56. package/dist/esm/operation-node/identifier-node.js +2 -2
  57. package/dist/esm/operation-node/operation-node-transformer.d.ts +7 -5
  58. package/dist/esm/operation-node/operation-node-transformer.js +24 -14
  59. package/dist/esm/operation-node/operation-node-visitor.d.ts +6 -4
  60. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  61. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  62. package/dist/esm/operation-node/reference-node.d.ts +1 -1
  63. package/dist/esm/operation-node/reference-node.js +1 -2
  64. package/dist/esm/operation-node/schemable-identifier-node.d.ts +15 -0
  65. package/dist/esm/operation-node/schemable-identifier-node.js +24 -0
  66. package/dist/esm/operation-node/selection-node.d.ts +2 -1
  67. package/dist/esm/operation-node/table-node.d.ts +2 -3
  68. package/dist/esm/operation-node/table-node.js +3 -4
  69. package/dist/esm/parser/group-by-parser.d.ts +4 -2
  70. package/dist/esm/parser/select-parser.js +2 -1
  71. package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -1
  72. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -28
  73. package/dist/esm/plugin/with-schema/with-schema-transformer.js +71 -79
  74. package/dist/esm/query-builder/select-query-builder.d.ts +3 -2
  75. package/dist/esm/query-builder/select-query-builder.js +1 -1
  76. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  77. package/dist/esm/query-compiler/default-query-compiler.js +6 -3
  78. package/dist/esm/schema/alter-table-builder.d.ts +6 -6
  79. package/dist/esm/schema/column-definition-builder.d.ts +6 -6
  80. package/package.json +2 -1
@@ -1,12 +1,12 @@
1
1
  import { ColumnNode } from './column-node.js';
2
- import { IdentifierNode } from './identifier-node.js';
3
2
  import { OperationNode } from './operation-node.js';
4
3
  import { RawNode } from './raw-node.js';
4
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
5
5
  import { SelectQueryNode } from './select-query-node.js';
6
6
  export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
7
7
  export interface CreateViewNode extends OperationNode {
8
8
  readonly kind: 'CreateViewNode';
9
- readonly name: IdentifierNode;
9
+ readonly name: SchemableIdentifierNode;
10
10
  readonly temporary?: boolean;
11
11
  readonly materialized?: boolean;
12
12
  readonly orReplace?: boolean;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./create-view-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { IdentifierNode } from './identifier-node.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -11,7 +11,7 @@ export const CreateViewNode = freeze({
11
11
  create(name) {
12
12
  return freeze({
13
13
  kind: 'CreateViewNode',
14
- name: IdentifierNode.create(name),
14
+ name: SchemableIdentifierNode.create(name),
15
15
  });
16
16
  },
17
17
  cloneWith(createView, params) {
@@ -1,10 +1,10 @@
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
  import { TableNode } from './table-node.js';
4
4
  export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
5
5
  export interface DropIndexNode extends OperationNode {
6
6
  readonly kind: 'DropIndexNode';
7
- readonly name: IdentifierNode;
7
+ readonly name: SchemableIdentifierNode;
8
8
  readonly table?: TableNode;
9
9
  readonly ifExists?: boolean;
10
10
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./drop-index-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { IdentifierNode } from './identifier-node.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -11,7 +11,7 @@ export const DropIndexNode = freeze({
11
11
  create(name, params) {
12
12
  return freeze({
13
13
  kind: 'DropIndexNode',
14
- name: IdentifierNode.create(name),
14
+ name: SchemableIdentifierNode.create(name),
15
15
  ...params,
16
16
  });
17
17
  },
@@ -1,9 +1,9 @@
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 declare type DropTypeNodeParams = Omit<Partial<DropTypeNode>, 'kind' | 'name'>;
4
4
  export interface DropTypeNode extends OperationNode {
5
5
  readonly kind: 'DropTypeNode';
6
- readonly name: IdentifierNode;
6
+ readonly name: SchemableIdentifierNode;
7
7
  readonly ifExists?: boolean;
8
8
  }
9
9
  /**
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./drop-type-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { IdentifierNode } from './identifier-node.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -11,7 +11,7 @@ export const DropTypeNode = freeze({
11
11
  create(name) {
12
12
  return freeze({
13
13
  kind: 'DropTypeNode',
14
- name: IdentifierNode.create(name),
14
+ name: SchemableIdentifierNode.create(name),
15
15
  });
16
16
  },
17
17
  cloneWith(dropType, params) {
@@ -1,9 +1,9 @@
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 declare type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
4
4
  export interface DropViewNode extends OperationNode {
5
5
  readonly kind: 'DropViewNode';
6
- readonly name: IdentifierNode;
6
+ readonly name: SchemableIdentifierNode;
7
7
  readonly ifExists?: boolean;
8
8
  readonly materialized?: boolean;
9
9
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./drop-view-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { IdentifierNode } from './identifier-node.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -11,7 +11,7 @@ export const DropViewNode = freeze({
11
11
  create(name) {
12
12
  return freeze({
13
13
  kind: 'DropViewNode',
14
- name: IdentifierNode.create(name),
14
+ name: SchemableIdentifierNode.create(name),
15
15
  });
16
16
  },
17
17
  cloneWith(dropView, params) {
@@ -1,12 +1,12 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  export interface IdentifierNode extends OperationNode {
3
3
  readonly kind: 'IdentifierNode';
4
- readonly identifier: string;
4
+ readonly name: string;
5
5
  }
6
6
  /**
7
7
  * @internal
8
8
  */
9
9
  export declare const IdentifierNode: Readonly<{
10
10
  is(node: OperationNode): node is IdentifierNode;
11
- create(identifier: string): IdentifierNode;
11
+ create(name: string): IdentifierNode;
12
12
  }>;
@@ -7,10 +7,10 @@ export const IdentifierNode = freeze({
7
7
  is(node) {
8
8
  return node.kind === 'IdentifierNode';
9
9
  },
10
- create(identifier) {
10
+ create(name) {
11
11
  return freeze({
12
12
  kind: 'IdentifierNode',
13
- identifier,
13
+ name,
14
14
  });
15
15
  },
16
16
  });
@@ -69,6 +69,7 @@ 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
71
  import { ExplainNode } from './explain-node.js';
72
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
72
73
  /**
73
74
  * Transforms an operation node tree into another one.
74
75
  *
@@ -89,7 +90,7 @@ import { ExplainNode } from './explain-node.js';
89
90
  *
90
91
  * return {
91
92
  * ...node,
92
- * identifier: snakeCase(node.identifier),
93
+ * name: snakeCase(node.name),
93
94
  * }
94
95
  * }
95
96
  * }
@@ -101,9 +102,9 @@ import { ExplainNode } from './explain-node.js';
101
102
  export declare class OperationNodeTransformer {
102
103
  #private;
103
104
  protected readonly nodeStack: OperationNode[];
104
- readonly transformNode: <T extends OperationNode | undefined, U extends T | undefined = T>(node: U) => T;
105
- protected transformNodeList<T extends OperationNode, U extends T = T>(list: readonly U[]): readonly T[];
106
- 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;
107
108
  protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
108
109
  protected transformSelection(node: SelectionNode): SelectionNode;
109
110
  protected transformColumn(node: ColumnNode): ColumnNode;
@@ -167,11 +168,12 @@ export declare class OperationNodeTransformer {
167
168
  protected transformSelectModifier(node: SelectModifierNode): SelectModifierNode;
168
169
  protected transformCreateType(node: CreateTypeNode): CreateTypeNode;
169
170
  protected transformDropType(node: DropTypeNode): DropTypeNode;
171
+ protected transformExplain(node: ExplainNode): ExplainNode;
172
+ protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
170
173
  protected transformDataType(node: DataTypeNode): DataTypeNode;
171
174
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
172
175
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
173
176
  protected transformValue(node: ValueNode): ValueNode;
174
177
  protected transformPrimitiveValueList(node: PrimitiveValueListNode): PrimitiveValueListNode;
175
178
  protected transformOperator(node: OperatorNode): OperatorNode;
176
- protected transformExplain(node: ExplainNode): ExplainNode;
177
179
  }
@@ -21,7 +21,7 @@ import { requireAllProps } from '../util/require-all-props.js';
21
21
  *
22
22
  * return {
23
23
  * ...node,
24
- * identifier: snakeCase(node.identifier),
24
+ * name: snakeCase(node.name),
25
25
  * }
26
26
  * }
27
27
  * }
@@ -36,6 +36,7 @@ export class OperationNodeTransformer {
36
36
  AliasNode: this.transformAlias.bind(this),
37
37
  ColumnNode: this.transformColumn.bind(this),
38
38
  IdentifierNode: this.transformIdentifier.bind(this),
39
+ SchemableIdentifierNode: this.transformSchemableIdentifier.bind(this),
39
40
  RawNode: this.transformRaw.bind(this),
40
41
  ReferenceNode: this.transformReference.bind(this),
41
42
  SelectQueryNode: this.transformSelectQuery.bind(this),
@@ -104,20 +105,23 @@ export class OperationNodeTransformer {
104
105
  DropTypeNode: this.transformDropType.bind(this),
105
106
  ExplainNode: this.transformExplain.bind(this),
106
107
  });
107
- transformNode = (node) => {
108
+ transformNode(node) {
108
109
  if (!node) {
109
- return undefined;
110
+ return node;
110
111
  }
111
112
  this.nodeStack.push(node);
112
- const out = this.#transformers[node.kind](node);
113
+ const out = this.transformNodeImpl(node);
113
114
  this.nodeStack.pop();
114
115
  return freeze(out);
115
- };
116
+ }
117
+ transformNodeImpl(node) {
118
+ return this.#transformers[node.kind](node);
119
+ }
116
120
  transformNodeList(list) {
117
121
  if (!list) {
118
122
  return list;
119
123
  }
120
- return freeze(list.map(this.transformNode));
124
+ return freeze(list.map((node) => this.transformNode(node)));
121
125
  }
122
126
  transformSelectQuery(node) {
123
127
  return requireAllProps({
@@ -161,7 +165,6 @@ export class OperationNodeTransformer {
161
165
  transformTable(node) {
162
166
  return requireAllProps({
163
167
  kind: 'TableNode',
164
- schema: this.transformNode(node.schema),
165
168
  table: this.transformNode(node.table),
166
169
  });
167
170
  }
@@ -625,6 +628,20 @@ export class OperationNodeTransformer {
625
628
  ifExists: node.ifExists,
626
629
  });
627
630
  }
631
+ transformExplain(node) {
632
+ return requireAllProps({
633
+ kind: 'ExplainNode',
634
+ format: node.format,
635
+ options: this.transformNode(node.options),
636
+ });
637
+ }
638
+ transformSchemableIdentifier(node) {
639
+ return requireAllProps({
640
+ kind: 'SchemableIdentifierNode',
641
+ schema: this.transformNode(node.schema),
642
+ identifier: this.transformNode(node.identifier),
643
+ });
644
+ }
628
645
  transformDataType(node) {
629
646
  // An Object.freezed leaf node. No need to clone.
630
647
  return node;
@@ -649,11 +666,4 @@ export class OperationNodeTransformer {
649
666
  // An Object.freezed leaf node. No need to clone.
650
667
  return node;
651
668
  }
652
- transformExplain(node) {
653
- return requireAllProps({
654
- kind: 'ExplainNode',
655
- format: node.format,
656
- options: this.transformNode(node.options),
657
- });
658
- }
659
669
  }
@@ -69,6 +69,7 @@ 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
71
  import { ExplainNode } from './explain-node.js';
72
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
72
73
  export declare abstract class OperationNodeVisitor {
73
74
  #private;
74
75
  protected readonly nodeStack: OperationNode[];
@@ -129,10 +130,11 @@ export declare abstract class OperationNodeVisitor {
129
130
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
130
131
  protected abstract visitUnion(node: UnionNode): void;
131
132
  protected abstract visitDataType(node: DataTypeNode): void;
132
- protected abstract visitSelectAll(_: SelectAllNode): void;
133
- protected abstract visitIdentifier(_: IdentifierNode): void;
134
- protected abstract visitValue(_: ValueNode): void;
135
- 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;
136
138
  protected abstract visitOperator(node: OperatorNode): void;
137
139
  protected abstract visitCreateView(node: CreateViewNode): void;
138
140
  protected abstract visitDropView(node: DropViewNode): void;
@@ -9,6 +9,7 @@ export class OperationNodeVisitor {
9
9
  AliasNode: this.visitAlias.bind(this),
10
10
  ColumnNode: this.visitColumn.bind(this),
11
11
  IdentifierNode: this.visitIdentifier.bind(this),
12
+ SchemableIdentifierNode: this.visitSchemableIdentifier.bind(this),
12
13
  RawNode: this.visitRaw.bind(this),
13
14
  ReferenceNode: this.visitReference.bind(this),
14
15
  SelectQueryNode: this.visitSelectQuery.bind(this),
@@ -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' | 'ExplainNode';
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,5 +1,4 @@
1
1
  /// <reference types="./reference-node.d.ts" />
2
- import { TableNode } from './table-node.js';
3
2
  import { SelectAllNode } from './select-all-node.js';
4
3
  import { freeze } from '../util/object-utils.js';
5
4
  /**
@@ -19,7 +18,7 @@ export const ReferenceNode = freeze({
19
18
  createSelectAll(table) {
20
19
  return freeze({
21
20
  kind: 'ReferenceNode',
22
- table: TableNode.create(table),
21
+ table,
23
22
  column: SelectAllNode.create(),
24
23
  });
25
24
  },
@@ -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,24 @@
1
+ /// <reference types="./schemable-identifier-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { IdentifierNode } from './identifier-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const SchemableIdentifierNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'SchemableIdentifierNode';
10
+ },
11
+ create(identifier) {
12
+ return freeze({
13
+ kind: 'SchemableIdentifierNode',
14
+ identifier: IdentifierNode.create(identifier),
15
+ });
16
+ },
17
+ createWithSchema(schema, identifier) {
18
+ return freeze({
19
+ kind: 'SchemableIdentifierNode',
20
+ schema: IdentifierNode.create(schema),
21
+ identifier: IdentifierNode.create(identifier),
22
+ });
23
+ },
24
+ });
@@ -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
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./table-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { IdentifierNode } from './identifier-node.js';
3
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -11,14 +11,13 @@ export const TableNode = freeze({
11
11
  create(table) {
12
12
  return freeze({
13
13
  kind: 'TableNode',
14
- table: IdentifierNode.create(table),
14
+ table: SchemableIdentifierNode.create(table),
15
15
  });
16
16
  },
17
17
  createWithSchema(schema, table) {
18
18
  return freeze({
19
19
  kind: 'TableNode',
20
- schema: IdentifierNode.create(schema),
21
- table: IdentifierNode.create(table),
20
+ table: SchemableIdentifierNode.createWithSchema(schema, table),
22
21
  });
23
22
  },
24
23
  });
@@ -1,3 +1,5 @@
1
1
  import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
2
- import { ReferenceExpressionOrList } from './reference-parser.js';
3
- export declare function parseGroupBy(orderBy: ReferenceExpressionOrList<any, any>): GroupByItemNode[];
2
+ import { ReferenceExpression } from './reference-parser.js';
3
+ export declare type GroupByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
4
+ export declare type GroupByExpressionOrList<DB, TB extends keyof DB, O> = ReadonlyArray<GroupByExpression<DB, TB, O>> | GroupByExpression<DB, TB, O>;
5
+ export declare function parseGroupBy(orderBy: GroupByExpressionOrList<any, any, any>): GroupByItemNode[];
@@ -4,6 +4,7 @@ import { SelectionNode } from '../operation-node/selection-node.js';
4
4
  import { parseAliasedStringReference } from './reference-parser.js';
5
5
  import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
6
6
  import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
7
+ import { parseTable } from './table-parser.js';
7
8
  export function parseSelectExpressionOrList(selection) {
8
9
  if (isReadonlyArray(selection)) {
9
10
  return selection.map((it) => parseSelectExpression(it));
@@ -36,7 +37,7 @@ export function parseSelectAll(table) {
36
37
  }
37
38
  function parseSelectAllArg(table) {
38
39
  if (isString(table)) {
39
- return SelectionNode.createSelectAllFromTable(table);
40
+ return SelectionNode.createSelectAllFromTable(parseTable(table));
40
41
  }
41
42
  throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);
42
43
  }
@@ -10,7 +10,7 @@ export class SnakeCaseTransformer extends OperationNodeTransformer {
10
10
  node = super.transformIdentifier(node);
11
11
  return {
12
12
  ...node,
13
- identifier: this.#snakeCase(node.identifier),
13
+ name: this.#snakeCase(node.name),
14
14
  };
15
15
  }
16
16
  }
@@ -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
  }