pqb 0.30.5 → 0.30.7

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as orchid_core from 'orchid-core';
2
- import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, QueryColumn, MaybeArray, SelectableBase, TemplateLiteralArgs, PickOutputTypeAndOperators, PickQueryResult, OperatorToSQL, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, FnUnknownToUnknown, ExpressionChain, getValueKey, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, QueryColumnBooleanOrNull, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, PickQueryMetaResult, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryMetaShapeResultReturnType, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
2
+ import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, QueryColumn, MaybeArray, SelectableBase, TemplateLiteralArgs, PickOutputTypeAndOperators, PickQueryResult, OperatorToSQL, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, FnUnknownToUnknown, ExpressionChain, getValueKey, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, QueryColumnBooleanOrNull, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, PickQueryMetaResult, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryMetaShapeResultReturnType, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, OperatorsNullable, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
3
3
  import { PoolConfig, Pool, PoolClient } from 'pg';
4
4
  import { inspect } from 'node:util';
5
5
  import { AsyncLocalStorage } from 'node:async_hooks';
@@ -615,7 +615,7 @@ type JoinFirstArg<T extends PickQueryRelationsWithData> = PickQueryTableMetaResu
615
615
  * Arguments of `join` methods (not `joinLateral`).
616
616
  * See {@link join}
617
617
  */
618
- type JoinArgs<T extends PickQueryMetaShapeRelationsWithData, Arg extends JoinFirstArg<T>> = [JoinCallback<T, Arg>] | (Arg extends PickQueryTableMetaResult ? JoinQueryArgs<T, Arg> : Arg extends keyof T['relations'] ? EmptyTuple : Arg extends keyof T['withData'] ? JoinWithArgs<T, Arg> : never);
618
+ type JoinArgs<T extends PickQueryMetaShapeRelationsWithData, Arg extends JoinFirstArg<T>> = [on?: JoinCallback<T, Arg>] | (Arg extends PickQueryTableMetaResult ? JoinQueryArgs<T, Arg> : Arg extends keyof T['relations'] ? EmptyTuple : Arg extends keyof T['withData'] ? JoinWithArgs<T, Arg> : never);
619
619
  /**
620
620
  * Column names of the joined table that can be used to join.
621
621
  * Derived from 'result', not from 'shape',
@@ -1382,7 +1382,7 @@ declare const _queryJoinOnJsonPathEquals: <T extends PickQueryMeta>(q: T, args:
1382
1382
  */
1383
1383
  type JoinQueryBuilder<T extends PickQueryMetaShape = PickQueryMetaShape, J extends PickQueryTableMetaResult = PickQueryTableMetaResult> = {
1384
1384
  [K in keyof J]: K extends 'meta' ? {
1385
- [K in keyof J['meta']]: K extends 'selectable' ? J['meta']['selectable'] & Omit<T['meta']['selectable'], keyof T['shape']> : J['meta'][K];
1385
+ [K in keyof J['meta']]: K extends 'selectable' ? SelectableFromShape<J['result'], AliasOrTable<J>> & Omit<T['meta']['selectable'], keyof T['shape']> : J['meta'][K];
1386
1386
  } : J[K];
1387
1387
  } & OnMethods;
1388
1388
  declare class OnMethods {
@@ -2155,6 +2155,15 @@ declare class Where {
2155
2155
  * ```ts
2156
2156
  * db.table.whereIn(['id', 'name'], sql`((1, 'one'), (2, 'two'))`);
2157
2157
  * ```
2158
+ *
2159
+ * When empty set of values is given, `whereIn` will resolve into a {@link QueryMethods.none} query that has a special behavior.
2160
+ *
2161
+ * ```ts
2162
+ * // following queries resolves into `none`:
2163
+ * db.table.where('id', [])
2164
+ * db.table.where(['id', 'name'], [])
2165
+ * db.table.where({ id: [] })
2166
+ * ```
2158
2167
  */
2159
2168
  whereIn<T extends PickQueryMetaRelations, Column extends WhereInColumn<T>>(this: T, ...args: [column: Column, values: WhereInValues<T, Column>] | [arg: WhereInArg<T>]): WhereResult<T>;
2160
2169
  /**
@@ -3789,19 +3798,16 @@ interface CreateSelf extends QueryBase {
3789
3798
  }
3790
3799
  type CreateData<T extends CreateSelf, BelongsToData = CreateBelongsToData<T>> = RelationsBase extends T['relations'] ? CreateDataWithDefaults<T, keyof T['meta']['defaults']> : CreateRelationsData<T, BelongsToData>;
3791
3800
  type CreateDataWithDefaults<T extends CreateSelf, Defaults extends PropertyKey> = {
3792
- [K in keyof T['inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T['inputType'], K>;
3801
+ [K in keyof T['inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T, K>;
3793
3802
  } & {
3794
- [K in Defaults]?: K extends keyof T['inputType'] ? CreateColumn<T['inputType'], K> : never;
3803
+ [K in Defaults]?: K extends keyof T['inputType'] ? CreateColumn<T, K> : never;
3795
3804
  };
3796
3805
  type CreateDataWithDefaultsForRelations<T extends CreateSelf, Defaults extends keyof T['inputType'], OmitFKeys extends PropertyKey> = {
3797
- [K in keyof T['inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T['inputType'], K>;
3806
+ [K in keyof T['inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T, K>;
3798
3807
  } & {
3799
- [K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T['inputType'], K>;
3800
- };
3801
- type CreateColumn<InputType, Key extends keyof InputType> = Expression | InputType[Key] | {
3802
- __isQuery: true;
3803
- then: QueryThen<InputType[Key]>;
3808
+ [K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T, K>;
3804
3809
  };
3810
+ type CreateColumn<T extends CreateSelf, K extends keyof T['inputType']> = T['inputType'][K] | QueryOrExpression<T['inputType'][K]> | ((q: T) => QueryOrExpression<T['inputType'][K]>);
3805
3811
  type CreateRelationsData<T extends CreateSelf, BelongsToData> = CreateDataWithDefaultsForRelations<T, keyof T['meta']['defaults'], T['relations'][keyof T['relations']]['relationConfig']['omitForeignKeyInCreate']> & BelongsToData & T['relations'][keyof T['relations']]['relationConfig']['optionalDataForCreate'];
3806
3812
  type CreateBelongsToData<T extends CreateSelf> = CreateRelationsDataOmittingFKeys<T, T['relations'][keyof T['relations']]['relationConfig']['dataForCreate']>;
3807
3813
  type CreateRelationsDataOmittingFKeys<T extends CreateSelf, Union> = (Union extends RelationConfigDataForCreate ? (u: keyof Union['columns'] extends keyof T['meta']['defaults'] ? Omit<Union['columns'], keyof T['meta']['defaults']> & {
@@ -3909,7 +3915,7 @@ declare class Create {
3909
3915
  *
3910
3916
  * await db.table.create({
3911
3917
  * // raw SQL
3912
- * column1: sql`'John' || ' ' || 'Doe'`,
3918
+ * column1: (q) => q.sql`'John' || ' ' || 'Doe'`,
3913
3919
  *
3914
3920
  * // query that returns a single value
3915
3921
  * // returning multiple values will result in Postgres error
@@ -4124,6 +4130,7 @@ declare class Create {
4124
4130
  * db.table.create(data).onConflictDoNothing();
4125
4131
  *
4126
4132
  * // single column:
4133
+ * // (this requires a composite primary key or unique index, see below)
4127
4134
  * db.table.create(data).onConfict('email').merge();
4128
4135
  *
4129
4136
  * // array of columns:
@@ -4139,6 +4146,34 @@ declare class Create {
4139
4146
  * .merge();
4140
4147
  * ```
4141
4148
  *
4149
+ * :::info
4150
+ * A primary key or a unique index for a **single** column can be fined on a column:
4151
+ *
4152
+ * ```ts
4153
+ * export class MyTable extends BaseTable {
4154
+ * columns = this.setColumns((t) => ({
4155
+ * pkey: t.uuid().primaryKey(),
4156
+ * unique: t.string().unique(),
4157
+ * }));
4158
+ * }
4159
+ * ```
4160
+ *
4161
+ * But for composite primary keys or indexes (having multiple columns), define it in a separate function:
4162
+ *
4163
+ * ```ts
4164
+ * export class MyTable extends BaseTable {
4165
+ * columns = this.setColumns(
4166
+ * (t) => ({
4167
+ * one: t.integer(),
4168
+ * two: t.string(),
4169
+ * three: t.boolean(),
4170
+ * }),
4171
+ * (t) => [t.primaryKey(['one', 'two']), t.unique(['two', 'three'])],
4172
+ * );
4173
+ * }
4174
+ * ```
4175
+ * :::
4176
+ *
4142
4177
  * You can use the `sql` function exported from your `BaseTable` file in onConflict.
4143
4178
  * It can be useful to specify a condition when you have a partial index:
4144
4179
  *
@@ -4963,10 +4998,10 @@ type SelectAsSelectable<Arg> = {
4963
4998
  } : never;
4964
4999
  }[keyof Arg];
4965
5000
  type SelectAsValueResult<T extends SelectSelf, Arg> = Arg extends keyof T['meta']['selectable'] ? T['meta']['selectable'][Arg]['column'] : Arg extends Expression ? Arg['result']['value'] : Arg extends (q: never) => QueryBase ? SelectSubQueryResult<ReturnType<Arg>> : Arg extends (q: never) => Expression ? ReturnType<Arg>['result']['value'] : Arg extends (q: never) => QueryBase | Expression ? SelectSubQueryResult<Exclude<ReturnType<Arg>, Expression>> | Exclude<ReturnType<Arg>, QueryBase>['result']['value'] : never;
4966
- type SelectSubQueryResult<Arg extends SelectSelf> = QueryReturnsAll<Arg['returnType']> extends true ? ColumnsShapeToObjectArray<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? ColumnsShapeToPluck<Arg['result']> : Arg['returnType'] extends 'one' ? ColumnsShapeToNullableObject<Arg['result']> : ColumnsShapeToObject<Arg['result']>;
5001
+ type SelectSubQueryResult<Arg extends SelectSelf> = QueryReturnsAll<Arg['returnType']> extends true ? ColumnsShapeToObjectArray<Arg['result']> : Arg['returnType'] extends 'value' | 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? ColumnsShapeToPluck<Arg['result']> : Arg['returnType'] extends 'one' ? ColumnsShapeToNullableObject<Arg['result']> : ColumnsShapeToObject<Arg['result']>;
4967
5002
  declare const addParserForRawExpression: (q: PickQueryQ, key: string | getValueKey, raw: Expression) => void;
4968
5003
  declare const addParserForSelectItem: <T extends PickQueryMeta>(q: T, as: string | getValueKey | undefined, key: string, arg: SelectableOrExpression<T> | Query) => string | Expression | Query;
4969
- declare const processSelectArg: <T extends SelectSelf>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem;
5004
+ declare const processSelectArg: <T extends SelectSelf>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem | undefined;
4970
5005
  declare const setParserForSelectedString: (q: PickQueryQ, arg: string, as: string | getValueKey | undefined, columnAs?: string | getValueKey) => string;
4971
5006
  declare const getShapeFromSelect: (q: QueryBase, isSubQuery?: boolean) => QueryColumns;
4972
5007
  declare function _querySelect<T extends SelectSelf, Columns extends SelectArg<T>[]>(q: T, columns: Columns): SelectResult<T, Columns>;
@@ -5199,26 +5234,24 @@ declare class Union {
5199
5234
  }
5200
5235
 
5201
5236
  type UpdateSelf = {
5202
- [K in 'meta' | 'inputType' | 'relations' | 'shape' | 'result' | 'returnType' | keyof JsonModifiers]: Query[K];
5237
+ [K in 'inputType' | 'relations' | UpdateColumnArgKeys]: Query[K];
5203
5238
  };
5204
5239
  type UpdateData<T extends UpdateSelf> = {
5205
5240
  [K in keyof T['inputType']]?: UpdateColumn<T, K>;
5206
5241
  } & {
5207
5242
  [K in keyof T['relations']]?: UpdateRelationData<T, T['relations'][K]['relationConfig']>;
5208
5243
  };
5209
- type UpdateColumnArgKeys = keyof JsonModifiers | 'meta' | 'shape' | 'result' | 'returnType';
5210
- type UpdateColumnCallbackResult = JsonItem | ResultRelationQueryBase;
5211
- interface ResultRelationQueryBaseMeta extends QueryMetaBase {
5212
- kind: 'select';
5213
- }
5214
- interface ResultRelationQueryBase extends RelationQueryBase {
5215
- meta: ResultRelationQueryBaseMeta;
5244
+ type UpdateColumnArgKeys = keyof JsonModifiers | keyof ExpressionMethods | 'sql' | 'meta' | 'shape' | 'result' | 'returnType' | 'columnTypes';
5245
+ interface UpdateQueryOrExpression<T> extends QueryOrExpression<T> {
5246
+ meta: {
5247
+ kind: 'select';
5248
+ };
5216
5249
  }
5217
- type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] | Expression | {
5250
+ type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] | QueryOrExpression<T['inputType'][Key]> | {
5218
5251
  [K in keyof Query]: K extends 'then' ? QueryThen<T['inputType'][Key]> : Query[K];
5219
5252
  } | ((q: {
5220
5253
  [K in keyof T['relations'] | UpdateColumnArgKeys]: K extends keyof T['relations'] ? T['relations'][K] : K extends UpdateColumnArgKeys ? T[K] : never;
5221
- }) => UpdateColumnCallbackResult);
5254
+ }) => JsonItem | UpdateQueryOrExpression<T['inputType'][Key]>);
5222
5255
  type UpdateRelationData<T extends UpdateSelf, Rel extends RelationConfigBase> = QueryReturnsAll<T['returnType']> extends true ? Rel['dataForUpdate'] : Rel['one'] extends true ? Rel['dataForUpdate'] | Rel['dataForUpdateOne'] : Rel['dataForUpdate'] & Rel['dataForUpdateOne'];
5223
5256
  type UpdateArg<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? UpdateData<T> : never;
5224
5257
  type UpdateRawArgs<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? SQLQueryArgs : never;
@@ -5292,7 +5325,7 @@ declare class Update {
5292
5325
  * column1: 123,
5293
5326
  *
5294
5327
  * // use raw SQL to update the column
5295
- * column2: sql`2 + 2`,
5328
+ * column2: (q) => q.sql`2 + 2`,
5296
5329
  *
5297
5330
  * // use query that returns a single value
5298
5331
  * // returning multiple values will result in Postgres error
@@ -5401,7 +5434,7 @@ declare class Update {
5401
5434
  */
5402
5435
  update<T extends UpdateSelf>(this: T, arg: UpdateArg<T>): UpdateResult<T>;
5403
5436
  /**
5404
- * `updateRaw` is for updating records with raw expression.
5437
+ * `updateSql` is for updating records with raw expression.
5405
5438
  *
5406
5439
  * The behavior is the same as a regular `update` method has:
5407
5440
  * `find` or `where` must precede calling this method,
@@ -5412,14 +5445,14 @@ declare class Update {
5412
5445
  * const value = 'new name';
5413
5446
  *
5414
5447
  * // update with SQL template string
5415
- * const updatedCount = await db.table.find(1).updateRaw`name = ${value}`;
5448
+ * const updatedCount = await db.table.find(1).updateSql`name = ${value}`;
5416
5449
  *
5417
5450
  * // or update with `sql` function:
5418
- * await db.table.find(1).updateRaw(sql`name = ${value}`);
5451
+ * await db.table.find(1).updateSql(sql`name = ${value}`);
5419
5452
  * ```
5420
5453
  * @param args - raw SQL via a template string or by using a `sql` method
5421
5454
  */
5422
- updateRaw<T extends UpdateSelf>(this: T, ...args: UpdateRawArgs<T>): UpdateResult<T>;
5455
+ updateSql<T extends UpdateSelf>(this: T, ...args: UpdateRawArgs<T>): UpdateResult<T>;
5423
5456
  /**
5424
5457
  * To make sure that at least one row was updated use `updateOrThrow`:
5425
5458
  *
@@ -6620,6 +6653,52 @@ declare class QueryMethods<ColumnTypes> {
6620
6653
  * await db.table.all().update(data); // -> 0
6621
6654
  * await db.table.all().delete(); // -> 0
6622
6655
  * ```
6656
+ *
6657
+ * When it's being used in sub-selects, it will return empty arrays, `undefined`'s, or `0` for count,
6658
+ * or it will throw if the sub-query require a result:
6659
+ *
6660
+ * ```ts
6661
+ * await db.user.select({
6662
+ * // returns empty array
6663
+ * pets: (q) => q.pets.none(),
6664
+ * // returns `undefined`
6665
+ * firstPet: (q) => q.pets.none().takeOptional(),
6666
+ * // throws NotFound error
6667
+ * requriedFirstPet: (q) => q.pets.none().take(),
6668
+ * // returns `undefined`
6669
+ * firstPetName: (q) => q.pets.none().getOptional('name'),
6670
+ * // throws NotFound error
6671
+ * requiredFirstPetName: (q) => q.pets.none().get('name'),
6672
+ * // returns empty array
6673
+ * petsNames: (q) => q.pets.none().pluck('name'),
6674
+ * // returns 0
6675
+ * petsCount: (q) => q.pets.none().count(),
6676
+ * });
6677
+ * ```
6678
+ *
6679
+ * When the `none` query is being used for joins that require match, the host query will return an empty result:
6680
+ *
6681
+ * ```ts
6682
+ * // all the following queries will resolve into empty arrays
6683
+ *
6684
+ * await db.user.select({
6685
+ * pets: (q) => q.pets.join().none(),
6686
+ * });
6687
+ *
6688
+ * await db.user.join((q) => q.pets.none());
6689
+ *
6690
+ * await db.user.join('pets', (q) => q.none());
6691
+ * ```
6692
+ *
6693
+ * When it's being used in `leftJoin` or `fullJoin`, it implicitly adds `ON false` into the join's SQL.
6694
+ *
6695
+ * ```ts
6696
+ * // this query can return user records
6697
+ * await db.user.leftJoin('pets', (q) => q.none());
6698
+ *
6699
+ * // this query won't return user records, because of the added where condition
6700
+ * await db.user.leftJoin('pets', (q) => q.none()).where({ 'pets.name': 'Kitty' });
6701
+ * ```
6623
6702
  */
6624
6703
  none<T>(this: T): T;
6625
6704
  /**
@@ -6967,7 +7046,9 @@ type SetQueryReturnsPluckColumnKindResult<T extends PickQueryMetaResult, Kind ex
6967
7046
  } : K extends 'returnType' ? 'pluck' : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['result']['value']['outputType'][]> : T[K];
6968
7047
  } & QueryMetaHasSelect;
6969
7048
  type SetQueryReturnsValueOrThrow<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOrThrow<T, T['meta']['selectable'][Arg]['column']> & T['meta']['selectable'][Arg]['column']['operators'];
6970
- type SetQueryReturnsValueOptional<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOptional<T, T['meta']['selectable'][Arg]['column']> & T['meta']['selectable'][Arg]['column']['operators'];
7049
+ type SetQueryReturnsValueOptional<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOptional<T, {
7050
+ [K in keyof T['meta']['selectable'][Arg]['column']]: K extends 'outputType' ? T['meta']['selectable'][Arg]['column'][K] | undefined : T['meta']['selectable'][Arg]['column'][K];
7051
+ }> & Omit<T['meta']['selectable'][Arg]['column']['operators'], 'equals' | 'not'> & OperatorsNullable<T['meta']['selectable'][Arg]['column']>;
6971
7052
  type SetQueryReturnsColumnOrThrow<T, Column extends PickOutputType> = {
6972
7053
  [K in keyof T]: K extends 'result' ? {
6973
7054
  value: Column;
@@ -7444,7 +7525,7 @@ interface ColumnsShapeToObject<Shape extends QueryColumns> {
7444
7525
  interface ColumnsShapeToNullableObject<Shape extends QueryColumns> {
7445
7526
  dataType: 'object';
7446
7527
  type: ObjectType<Shape>;
7447
- outputType: ObjectOutput<Shape> | null;
7528
+ outputType: ObjectOutput<Shape> | undefined;
7448
7529
  queryType: ObjectQuery<Shape> | null;
7449
7530
  operators: OperatorsAny;
7450
7531
  }