kysely 0.19.8 → 0.19.9

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 (32) hide show
  1. package/README.md +11 -6
  2. package/dist/cjs/operation-node/operation-node-transformer.d.ts +5 -2
  3. package/dist/cjs/operation-node/operation-node-transformer.js +131 -122
  4. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  5. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  6. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  7. package/dist/cjs/operation-node/select-modifier-node.d.ts +16 -0
  8. package/dist/cjs/operation-node/select-modifier-node.js +24 -0
  9. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  10. package/dist/cjs/operation-node/select-query-node.js +11 -9
  11. package/dist/cjs/query-builder/select-query-builder.d.ts +50 -6
  12. package/dist/cjs/query-builder/select-query-builder.js +68 -13
  13. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  14. package/dist/cjs/query-compiler/default-query-compiler.js +14 -7
  15. package/dist/cjs/util/require-all-props.d.ts +43 -0
  16. package/dist/cjs/util/require-all-props.js +40 -0
  17. package/dist/esm/operation-node/operation-node-transformer.d.ts +5 -2
  18. package/dist/esm/operation-node/operation-node-transformer.js +131 -122
  19. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  20. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  21. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  22. package/dist/esm/operation-node/select-modifier-node.d.ts +16 -0
  23. package/dist/esm/operation-node/select-modifier-node.js +22 -0
  24. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  25. package/dist/esm/operation-node/select-query-node.js +11 -9
  26. package/dist/esm/query-builder/select-query-builder.d.ts +50 -6
  27. package/dist/esm/query-builder/select-query-builder.js +68 -13
  28. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  29. package/dist/esm/query-compiler/default-query-compiler.js +14 -7
  30. package/dist/esm/util/require-all-props.d.ts +43 -0
  31. package/dist/esm/util/require-all-props.js +37 -0
  32. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  /// <reference types="./operation-node-transformer.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
+ import { requireAllProps } from '../util/require-all-props.js';
3
4
  /**
4
5
  * Transforms an operation node tree into another one.
5
6
  *
@@ -98,6 +99,7 @@ export class OperationNodeTransformer {
98
99
  DefaultValueNode: this.transformDefaultValue.bind(this),
99
100
  OnNode: this.transformOn.bind(this),
100
101
  ValuesNode: this.transformValues.bind(this),
102
+ SelectModifierNode: this.transformSelectModifier.bind(this),
101
103
  });
102
104
  transformNode = (node) => {
103
105
  if (!node) {
@@ -115,120 +117,120 @@ export class OperationNodeTransformer {
115
117
  return freeze(list.map(this.transformNode));
116
118
  }
117
119
  transformSelectQuery(node) {
118
- return {
120
+ return requireAllProps({
119
121
  kind: 'SelectQueryNode',
120
122
  from: this.transformNode(node.from),
121
123
  selections: this.transformNodeList(node.selections),
122
124
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
123
- distinct: node.distinct,
124
125
  joins: this.transformNodeList(node.joins),
125
126
  groupBy: this.transformNode(node.groupBy),
126
127
  orderBy: this.transformNode(node.orderBy),
127
128
  where: this.transformNode(node.where),
128
- modifiers: node.modifiers,
129
+ frontModifiers: this.transformNodeList(node.frontModifiers),
130
+ endModifiers: this.transformNodeList(node.endModifiers),
129
131
  limit: this.transformNode(node.limit),
130
132
  offset: this.transformNode(node.offset),
131
133
  with: this.transformNode(node.with),
132
134
  having: this.transformNode(node.having),
133
135
  union: this.transformNodeList(node.union),
134
- };
136
+ });
135
137
  }
136
138
  transformSelection(node) {
137
- return {
139
+ return requireAllProps({
138
140
  kind: 'SelectionNode',
139
141
  selection: this.transformNode(node.selection),
140
- };
142
+ });
141
143
  }
142
144
  transformColumn(node) {
143
- return {
145
+ return requireAllProps({
144
146
  kind: 'ColumnNode',
145
147
  column: this.transformNode(node.column),
146
- };
148
+ });
147
149
  }
148
150
  transformAlias(node) {
149
- return {
151
+ return requireAllProps({
150
152
  kind: 'AliasNode',
151
153
  node: this.transformNode(node.node),
152
154
  alias: this.transformNode(node.alias),
153
- };
155
+ });
154
156
  }
155
157
  transformTable(node) {
156
- return {
158
+ return requireAllProps({
157
159
  kind: 'TableNode',
158
160
  schema: this.transformNode(node.schema),
159
161
  table: this.transformNode(node.table),
160
- };
162
+ });
161
163
  }
162
164
  transformFrom(node) {
163
- return {
165
+ return requireAllProps({
164
166
  kind: 'FromNode',
165
167
  froms: this.transformNodeList(node.froms),
166
- };
168
+ });
167
169
  }
168
170
  transformReference(node) {
169
- return {
171
+ return requireAllProps({
170
172
  kind: 'ReferenceNode',
171
173
  table: this.transformNode(node.table),
172
174
  column: this.transformNode(node.column),
173
- };
175
+ });
174
176
  }
175
177
  transformFilter(node) {
176
- return {
178
+ return requireAllProps({
177
179
  kind: 'FilterNode',
178
180
  left: this.transformNode(node.left),
179
181
  op: this.transformNode(node.op),
180
182
  right: this.transformNode(node.right),
181
- };
183
+ });
182
184
  }
183
185
  transformAnd(node) {
184
- return {
186
+ return requireAllProps({
185
187
  kind: 'AndNode',
186
188
  left: this.transformNode(node.left),
187
189
  right: this.transformNode(node.right),
188
- };
190
+ });
189
191
  }
190
192
  transformOr(node) {
191
- return {
193
+ return requireAllProps({
192
194
  kind: 'OrNode',
193
195
  left: this.transformNode(node.left),
194
196
  right: this.transformNode(node.right),
195
- };
197
+ });
196
198
  }
197
199
  transformValueList(node) {
198
- return {
200
+ return requireAllProps({
199
201
  kind: 'ValueListNode',
200
202
  values: this.transformNodeList(node.values),
201
- };
203
+ });
202
204
  }
203
205
  transformParens(node) {
204
- return {
206
+ return requireAllProps({
205
207
  kind: 'ParensNode',
206
208
  node: this.transformNode(node.node),
207
- };
209
+ });
208
210
  }
209
211
  transformJoin(node) {
210
- return {
212
+ return requireAllProps({
211
213
  kind: 'JoinNode',
212
214
  joinType: node.joinType,
213
215
  table: this.transformNode(node.table),
214
216
  on: this.transformNode(node.on),
215
- };
217
+ });
216
218
  }
217
219
  transformRaw(node) {
218
- return {
220
+ return requireAllProps({
219
221
  kind: 'RawNode',
220
222
  sqlFragments: freeze([...node.sqlFragments]),
221
223
  parameters: this.transformNodeList(node.parameters),
222
- };
224
+ });
223
225
  }
224
226
  transformWhere(node) {
225
- return {
227
+ return requireAllProps({
226
228
  kind: 'WhereNode',
227
229
  where: this.transformNode(node.where),
228
- };
230
+ });
229
231
  }
230
232
  transformInsertQuery(node) {
231
- return {
233
+ return requireAllProps({
232
234
  kind: 'InsertQueryNode',
233
235
  into: this.transformNode(node.into),
234
236
  columns: this.transformNodeList(node.columns),
@@ -238,16 +240,16 @@ export class OperationNodeTransformer {
238
240
  onDuplicateKey: this.transformNode(node.onDuplicateKey),
239
241
  with: this.transformNode(node.with),
240
242
  ignore: node.ignore,
241
- };
243
+ });
242
244
  }
243
245
  transformValues(node) {
244
- return {
246
+ return requireAllProps({
245
247
  kind: 'ValuesNode',
246
248
  values: this.transformNodeList(node.values),
247
- };
249
+ });
248
250
  }
249
251
  transformDeleteQuery(node) {
250
- return {
252
+ return requireAllProps({
251
253
  kind: 'DeleteQueryNode',
252
254
  from: this.transformNode(node.from),
253
255
  joins: this.transformNodeList(node.joins),
@@ -256,16 +258,16 @@ export class OperationNodeTransformer {
256
258
  with: this.transformNode(node.with),
257
259
  orderBy: this.transformNode(node.orderBy),
258
260
  limit: this.transformNode(node.limit),
259
- };
261
+ });
260
262
  }
261
263
  transformReturning(node) {
262
- return {
264
+ return requireAllProps({
263
265
  kind: 'ReturningNode',
264
266
  selections: this.transformNodeList(node.selections),
265
- };
267
+ });
266
268
  }
267
269
  transformCreateTable(node) {
268
- return {
270
+ return requireAllProps({
269
271
  kind: 'CreateTableNode',
270
272
  table: this.transformNode(node.table),
271
273
  columns: this.transformNodeList(node.columns),
@@ -273,10 +275,10 @@ export class OperationNodeTransformer {
273
275
  temporary: node.temporary,
274
276
  ifNotExists: node.ifNotExists,
275
277
  onCommit: node.onCommit,
276
- };
278
+ });
277
279
  }
278
280
  transformColumnDefinition(node) {
279
- return {
281
+ return requireAllProps({
280
282
  kind: 'ColumnDefinitionNode',
281
283
  column: this.transformNode(node.column),
282
284
  dataType: this.transformNode(node.dataType),
@@ -289,48 +291,48 @@ export class OperationNodeTransformer {
289
291
  defaultTo: this.transformNode(node.defaultTo),
290
292
  check: this.transformNode(node.check),
291
293
  generated: this.transformNode(node.generated),
292
- };
294
+ });
293
295
  }
294
296
  transformAddColumn(node) {
295
- return {
297
+ return requireAllProps({
296
298
  kind: 'AddColumnNode',
297
299
  column: this.transformNode(node.column),
298
- };
300
+ });
299
301
  }
300
302
  transformDropTable(node) {
301
- return {
303
+ return requireAllProps({
302
304
  kind: 'DropTableNode',
303
305
  table: this.transformNode(node.table),
304
306
  ifExists: node.ifExists,
305
- };
307
+ });
306
308
  }
307
309
  transformOrderBy(node) {
308
- return {
310
+ return requireAllProps({
309
311
  kind: 'OrderByNode',
310
312
  items: this.transformNodeList(node.items),
311
- };
313
+ });
312
314
  }
313
315
  transformOrderByItem(node) {
314
- return {
316
+ return requireAllProps({
315
317
  kind: 'OrderByItemNode',
316
318
  orderBy: this.transformNode(node.orderBy),
317
319
  direction: this.transformNode(node.direction),
318
- };
320
+ });
319
321
  }
320
322
  transformGroupBy(node) {
321
- return {
323
+ return requireAllProps({
322
324
  kind: 'GroupByNode',
323
325
  items: this.transformNodeList(node.items),
324
- };
326
+ });
325
327
  }
326
328
  transformGroupByItem(node) {
327
- return {
329
+ return requireAllProps({
328
330
  kind: 'GroupByItemNode',
329
331
  groupBy: this.transformNode(node.groupBy),
330
- };
332
+ });
331
333
  }
332
334
  transformUpdateQuery(node) {
333
- return {
335
+ return requireAllProps({
334
336
  kind: 'UpdateQueryNode',
335
337
  table: this.transformNode(node.table),
336
338
  from: this.transformNode(node.from),
@@ -339,29 +341,29 @@ export class OperationNodeTransformer {
339
341
  updates: this.transformNodeList(node.updates),
340
342
  returning: this.transformNode(node.returning),
341
343
  with: this.transformNode(node.with),
342
- };
344
+ });
343
345
  }
344
346
  transformColumnUpdate(node) {
345
- return {
347
+ return requireAllProps({
346
348
  kind: 'ColumnUpdateNode',
347
349
  column: this.transformNode(node.column),
348
350
  value: this.transformNode(node.value),
349
- };
351
+ });
350
352
  }
351
353
  transformLimit(node) {
352
- return {
354
+ return requireAllProps({
353
355
  kind: 'LimitNode',
354
356
  limit: this.transformNode(node.limit),
355
- };
357
+ });
356
358
  }
357
359
  transformOffset(node) {
358
- return {
360
+ return requireAllProps({
359
361
  kind: 'OffsetNode',
360
362
  offset: this.transformNode(node.offset),
361
- };
363
+ });
362
364
  }
363
365
  transformOnConflict(node) {
364
- return {
366
+ return requireAllProps({
365
367
  kind: 'OnConflictNode',
366
368
  columns: this.transformNodeList(node.columns),
367
369
  constraint: this.transformNode(node.constraint),
@@ -370,128 +372,128 @@ export class OperationNodeTransformer {
370
372
  updates: this.transformNodeList(node.updates),
371
373
  updateWhere: this.transformNode(node.updateWhere),
372
374
  doNothing: node.doNothing,
373
- };
375
+ });
374
376
  }
375
377
  transformOnDuplicateKey(node) {
376
- return {
378
+ return requireAllProps({
377
379
  kind: 'OnDuplicateKeyNode',
378
380
  updates: this.transformNodeList(node.updates),
379
- };
381
+ });
380
382
  }
381
383
  transformCreateIndex(node) {
382
- return {
384
+ return requireAllProps({
383
385
  kind: 'CreateIndexNode',
384
386
  name: this.transformNode(node.name),
385
387
  table: this.transformNode(node.table),
386
388
  expression: this.transformNode(node.expression),
387
389
  unique: node.unique,
388
390
  using: this.transformNode(node.using),
389
- };
391
+ });
390
392
  }
391
393
  transformList(node) {
392
- return {
394
+ return requireAllProps({
393
395
  kind: 'ListNode',
394
396
  items: this.transformNodeList(node.items),
395
- };
397
+ });
396
398
  }
397
399
  transformDropIndex(node) {
398
- return {
400
+ return requireAllProps({
399
401
  kind: 'DropIndexNode',
400
402
  name: this.transformNode(node.name),
401
403
  table: this.transformNode(node.table),
402
404
  ifExists: node.ifExists,
403
- };
405
+ });
404
406
  }
405
407
  transformPrimaryKeyConstraint(node) {
406
- return {
408
+ return requireAllProps({
407
409
  kind: 'PrimaryKeyConstraintNode',
408
410
  columns: this.transformNodeList(node.columns),
409
411
  name: this.transformNode(node.name),
410
- };
412
+ });
411
413
  }
412
414
  transformUniqueConstraint(node) {
413
- return {
415
+ return requireAllProps({
414
416
  kind: 'UniqueConstraintNode',
415
417
  columns: this.transformNodeList(node.columns),
416
418
  name: this.transformNode(node.name),
417
- };
419
+ });
418
420
  }
419
421
  transformForeignKeyConstraint(node) {
420
- return {
422
+ return requireAllProps({
421
423
  kind: 'ForeignKeyConstraintNode',
422
424
  columns: this.transformNodeList(node.columns),
423
425
  references: this.transformNode(node.references),
424
426
  name: this.transformNode(node.name),
425
427
  onDelete: node.onDelete,
426
428
  onUpdate: node.onUpdate,
427
- };
429
+ });
428
430
  }
429
431
  transformUnion(node) {
430
- return {
432
+ return requireAllProps({
431
433
  kind: 'UnionNode',
432
434
  union: this.transformNode(node.union),
433
435
  all: node.all,
434
- };
436
+ });
435
437
  }
436
438
  transformReferences(node) {
437
- return {
439
+ return requireAllProps({
438
440
  kind: 'ReferencesNode',
439
441
  table: this.transformNode(node.table),
440
442
  columns: this.transformNodeList(node.columns),
441
443
  onDelete: node.onDelete,
442
444
  onUpdate: node.onUpdate,
443
- };
445
+ });
444
446
  }
445
447
  transformCheckConstraint(node) {
446
- return {
448
+ return requireAllProps({
447
449
  kind: 'CheckConstraintNode',
448
450
  expression: this.transformNode(node.expression),
449
451
  name: this.transformNode(node.name),
450
- };
452
+ });
451
453
  }
452
454
  transformWith(node) {
453
- return {
455
+ return requireAllProps({
454
456
  kind: 'WithNode',
455
457
  expressions: this.transformNodeList(node.expressions),
456
458
  recursive: node.recursive,
457
- };
459
+ });
458
460
  }
459
461
  transformCommonTableExpression(node) {
460
- return {
462
+ return requireAllProps({
461
463
  kind: 'CommonTableExpressionNode',
462
464
  name: this.transformNode(node.name),
463
465
  expression: this.transformNode(node.expression),
464
- };
466
+ });
465
467
  }
466
468
  transformCommonTableExpressionName(node) {
467
- return {
469
+ return requireAllProps({
468
470
  kind: 'CommonTableExpressionNameNode',
469
471
  table: this.transformNode(node.table),
470
472
  columns: this.transformNodeList(node.columns),
471
- };
473
+ });
472
474
  }
473
475
  transformHaving(node) {
474
- return {
476
+ return requireAllProps({
475
477
  kind: 'HavingNode',
476
478
  having: this.transformNode(node.having),
477
- };
479
+ });
478
480
  }
479
481
  transformCreateSchema(node) {
480
- return {
482
+ return requireAllProps({
481
483
  kind: 'CreateSchemaNode',
482
484
  schema: this.transformNode(node.schema),
483
485
  ifNotExists: node.ifNotExists,
484
- };
486
+ });
485
487
  }
486
488
  transformDropSchema(node) {
487
- return {
489
+ return requireAllProps({
488
490
  kind: 'DropSchemaNode',
489
491
  schema: this.transformNode(node.schema),
490
492
  ifExists: node.ifExists,
491
- };
493
+ });
492
494
  }
493
495
  transformAlterTable(node) {
494
- return {
496
+ return requireAllProps({
495
497
  kind: 'AlterTableNode',
496
498
  table: this.transformNode(node.table),
497
499
  renameTo: this.transformNode(node.renameTo),
@@ -503,23 +505,23 @@ export class OperationNodeTransformer {
503
505
  modifyColumn: this.transformNode(node.modifyColumn),
504
506
  addConstraint: this.transformNode(node.addConstraint),
505
507
  dropConstraint: this.transformNode(node.dropConstraint),
506
- };
508
+ });
507
509
  }
508
510
  transformDropColumn(node) {
509
- return {
511
+ return requireAllProps({
510
512
  kind: 'DropColumnNode',
511
513
  column: this.transformNode(node.column),
512
- };
514
+ });
513
515
  }
514
516
  transformRenameColumn(node) {
515
- return {
517
+ return requireAllProps({
516
518
  kind: 'RenameColumnNode',
517
519
  column: this.transformNode(node.column),
518
520
  renameTo: this.transformNode(node.renameTo),
519
- };
521
+ });
520
522
  }
521
523
  transformAlterColumn(node) {
522
- return {
524
+ return requireAllProps({
523
525
  kind: 'AlterColumnNode',
524
526
  column: this.transformNode(node.column),
525
527
  dataType: this.transformNode(node.dataType),
@@ -528,30 +530,30 @@ export class OperationNodeTransformer {
528
530
  dropDefault: node.dropDefault,
529
531
  setNotNull: node.setNotNull,
530
532
  dropNotNull: node.dropNotNull,
531
- };
533
+ });
532
534
  }
533
535
  transformModifyColumn(node) {
534
- return {
536
+ return requireAllProps({
535
537
  kind: 'ModifyColumnNode',
536
538
  column: this.transformNode(node.column),
537
- };
539
+ });
538
540
  }
539
541
  transformAddConstraint(node) {
540
- return {
542
+ return requireAllProps({
541
543
  kind: 'AddConstraintNode',
542
544
  constraint: this.transformNode(node.constraint),
543
- };
545
+ });
544
546
  }
545
547
  transformDropConstraint(node) {
546
- return {
548
+ return requireAllProps({
547
549
  kind: 'DropConstraintNode',
548
550
  constraintName: this.transformNode(node.constraintName),
549
551
  ifExists: node.ifExists,
550
552
  modifier: node.modifier,
551
- };
553
+ });
552
554
  }
553
555
  transformCreateView(node) {
554
- return {
556
+ return requireAllProps({
555
557
  kind: 'CreateViewNode',
556
558
  name: this.transformNode(node.name),
557
559
  temporary: node.temporary,
@@ -560,37 +562,44 @@ export class OperationNodeTransformer {
560
562
  materialized: node.materialized,
561
563
  columns: this.transformNodeList(node.columns),
562
564
  as: this.transformNode(node.as),
563
- };
565
+ });
564
566
  }
565
567
  transformDropView(node) {
566
- return {
568
+ return requireAllProps({
567
569
  kind: 'DropViewNode',
568
570
  name: this.transformNode(node.name),
569
571
  ifExists: node.ifExists,
570
572
  materialized: node.materialized,
571
- };
573
+ });
572
574
  }
573
575
  transformGenerated(node) {
574
- return {
576
+ return requireAllProps({
575
577
  kind: 'GeneratedNode',
576
578
  byDefault: node.byDefault,
577
579
  always: node.always,
578
580
  identity: node.identity,
579
581
  stored: node.stored,
580
582
  expression: this.transformNode(node.expression),
581
- };
583
+ });
582
584
  }
583
585
  transformDefaultValue(node) {
584
- return {
586
+ return requireAllProps({
585
587
  kind: 'DefaultValueNode',
586
588
  defaultValue: this.transformNode(node.defaultValue),
587
- };
589
+ });
588
590
  }
589
591
  transformOn(node) {
590
- return {
592
+ return requireAllProps({
591
593
  kind: 'OnNode',
592
594
  on: this.transformNode(node.on),
593
- };
595
+ });
596
+ }
597
+ transformSelectModifier(node) {
598
+ return requireAllProps({
599
+ kind: 'SelectModifierNode',
600
+ modifier: node.modifier,
601
+ rawModifier: this.transformNode(node.rawModifier),
602
+ });
594
603
  }
595
604
  transformDataType(node) {
596
605
  // An Object.freezed leaf node. No need to clone.
@@ -65,6 +65,7 @@ import { GeneratedNode } from './generated-node.js';
65
65
  import { DefaultValueNode } from './default-value-node.js';
66
66
  import { OnNode } from './on-node.js';
67
67
  import { ValuesNode } from './values-node.js';
68
+ import { SelectModifierNode } from './select-modifier-node.js';
68
69
  export declare abstract class OperationNodeVisitor {
69
70
  #private;
70
71
  protected readonly nodeStack: OperationNode[];
@@ -136,4 +137,5 @@ export declare abstract class OperationNodeVisitor {
136
137
  protected abstract visitDefaultValue(node: DefaultValueNode): void;
137
138
  protected abstract visitOn(node: OnNode): void;
138
139
  protected abstract visitValues(node: ValuesNode): void;
140
+ protected abstract visitSelectModifier(node: SelectModifierNode): void;
139
141
  }
@@ -72,6 +72,7 @@ export class OperationNodeVisitor {
72
72
  DefaultValueNode: this.visitDefaultValue.bind(this),
73
73
  OnNode: this.visitOn.bind(this),
74
74
  ValuesNode: this.visitValues.bind(this),
75
+ SelectModifierNode: this.visitSelectModifier.bind(this),
75
76
  });
76
77
  visitNode = (node) => {
77
78
  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';
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';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -0,0 +1,16 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
4
+ export interface SelectModifierNode extends OperationNode {
5
+ readonly kind: 'SelectModifierNode';
6
+ readonly modifier?: SelectModifier;
7
+ readonly rawModifier?: RawNode;
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const SelectModifierNode: Readonly<{
13
+ is(node: OperationNode): node is SelectModifierNode;
14
+ create(modifier: SelectModifier): SelectModifierNode;
15
+ createWithRaw(modifier: RawNode): SelectModifierNode;
16
+ }>;
@@ -0,0 +1,22 @@
1
+ /// <reference types="./select-modifier-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const SelectModifierNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'SelectModifierNode';
9
+ },
10
+ create(modifier) {
11
+ return freeze({
12
+ kind: 'SelectModifierNode',
13
+ modifier,
14
+ });
15
+ },
16
+ createWithRaw(modifier) {
17
+ return freeze({
18
+ kind: 'SelectModifierNode',
19
+ rawModifier: modifier,
20
+ });
21
+ },
22
+ });