@zenstackhq/orm 3.5.0-beta.3 → 3.5.0-beta.5

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 _zenstackhq_schema from '@zenstackhq/schema';
2
- import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, GetModel, ProcedureDef, BuiltinType, FieldDef, ModelDef, DataSourceProviderType, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, GetTypeDefFieldType, TypeDefFieldIsArray, UpdatedAtInfo, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, IsDelegateModel, Expression as Expression$1, LiteralExpression, ArrayExpression, FieldExpression, MemberExpression, BinaryExpression, UnaryExpression, CallExpression, BindingExpression, ThisExpression, NullExpression } from '@zenstackhq/schema';
2
+ import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, GetModel, ProcedureDef, BuiltinType, FieldDef, ModelDef, DataSourceProviderType, IsDelegateModel, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, GetTypeDefFieldType, TypeDefFieldIsArray, UpdatedAtInfo, FieldIsDelegateDiscriminator, FieldType, RelationInfo, Expression as Expression$1, LiteralExpression, ArrayExpression, FieldExpression, MemberExpression, BinaryExpression, UnaryExpression, CallExpression, BindingExpression, ThisExpression, NullExpression } from '@zenstackhq/schema';
3
3
  import * as kysely from 'kysely';
4
4
  import { Kysely, OperationNodeVisitor, OperationNode, SelectQueryNode, SelectionNode, ColumnNode, AliasNode, TableNode, FromNode, ReferenceNode, AndNode, OrNode, ValueListNode, ParensNode, JoinNode, RawNode, WhereNode, InsertQueryNode, DeleteQueryNode, ReturningNode, CreateTableNode, AddColumnNode, ColumnDefinitionNode, DropTableNode, OrderByNode, OrderByItemNode, GroupByNode, GroupByItemNode, UpdateQueryNode, ColumnUpdateNode, LimitNode, OffsetNode, OnConflictNode, OnDuplicateKeyNode, CheckConstraintNode, DataTypeNode, SelectAllNode, IdentifierNode, SchemableIdentifierNode, ValueNode, PrimitiveValueListNode, OperatorNode, CreateIndexNode, DropIndexNode, ListNode, PrimaryKeyConstraintNode, UniqueConstraintNode, ReferencesNode, WithNode, CommonTableExpressionNode, CommonTableExpressionNameNode, HavingNode, CreateSchemaNode, DropSchemaNode, AlterTableNode, DropColumnNode, RenameColumnNode, AlterColumnNode, ModifyColumnNode, AddConstraintNode, DropConstraintNode, ForeignKeyConstraintNode, CreateViewNode, DropViewNode, GeneratedNode, DefaultValueNode, OnNode, ValuesNode, SelectModifierNode, CreateTypeNode, DropTypeNode, ExplainNode, DefaultInsertValueNode, AggregateFunctionNode, OverNode, PartitionByNode, PartitionByItemNode, SetOperationNode, BinaryOperationNode, UnaryOperationNode, UsingNode, FunctionNode, CaseNode, WhenNode, JSONReferenceNode, JSONPathNode, JSONPathLegNode, JSONOperatorChainNode, TupleNode, MergeQueryNode, MatchedNode, AddIndexNode, CastNode, FetchNode, TopNode, OutputNode, RenameConstraintNode, RefreshMaterializedViewNode, OrActionNode, CollateNode, Generated, QueryId, RootOperationNode, QueryResult, UnknownRow, Dialect, ExpressionBuilder, Expression, KyselyConfig, OperandExpression, SelectQueryBuilder, SqlBool, AliasableExpression, ExpressionWrapper } from 'kysely';
5
5
  import Decimal from 'decimal.js';
@@ -258,10 +258,53 @@ type ExtQueryArgsBase = {
258
258
  * Member names should start with '$' to avoid model name conflicts.
259
259
  */
260
260
  type ExtClientMembersBase = Record<string, unknown>;
261
+ /**
262
+ * Base shape of plugin-extended result fields.
263
+ * Keyed by model name, each value maps field names to their definitions.
264
+ * `needs` keys are constrained to non-relation fields of the corresponding model.
265
+ */
266
+ type ExtResultBase<Schema extends SchemaDef = SchemaDef> = {
267
+ [M in GetModels<Schema> as Uncapitalize<M>]?: Record<string, {
268
+ needs: Partial<Record<NonRelationFields<Schema, M>, true>>;
269
+ compute: (...args: any[]) => any;
270
+ }>;
271
+ };
272
+ /**
273
+ * Mapped type that provides per-field contextual typing for `compute` callbacks
274
+ * based on the `needs` declaration. Uses a separate type parameter `R_` that captures
275
+ * the needs shape (model → field → { neededField: true }), then links each field's
276
+ * `compute` parameter to exactly the keys declared in its `needs`.
277
+ */
278
+ type ExtResultInferenceArgs<Schema extends SchemaDef, R_> = {
279
+ [K in keyof R_ & string]: {
280
+ [P in keyof R_[K]]?: {
281
+ needs?: {
282
+ [F in keyof R_[K][P]]: F extends NonRelationFields<Schema, ModelNameFromKey<Schema, K>> ? true : never;
283
+ } & Partial<Record<NonRelationFields<Schema, ModelNameFromKey<Schema, K>>, true>>;
284
+ compute: (data: ExtResultComputeData<Schema, ModelNameFromKey<Schema, K>, R_[K][P]>) => unknown;
285
+ };
286
+ };
287
+ };
288
+ /**
289
+ * Reverse-maps an uncapitalized key back to the original model name in the schema.
290
+ * E.g., for a schema with model `myModel`, the key `myModel` maps back to `myModel`
291
+ * (not `MyModel` as `Capitalize` would produce).
292
+ */
293
+ type ModelNameFromKey<Schema extends SchemaDef, K extends string> = {
294
+ [M in GetModels<Schema>]: Uncapitalize<M> extends K ? M : never;
295
+ }[GetModels<Schema>];
296
+ /**
297
+ * Maps the needs shape `S` to an object with actual schema field types.
298
+ * For each key in `S` that is a valid non-relation field of model `M`,
299
+ * resolves the TypeScript type from the schema field definition.
300
+ */
301
+ type ExtResultComputeData<Schema extends SchemaDef, M extends GetModels<Schema>, S> = {
302
+ [F in keyof S & GetModelFields<Schema, M>]: MapModelFieldType<Schema, M, F>;
303
+ };
261
304
  /**
262
305
  * ZenStack runtime plugin.
263
306
  */
264
- interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends Record<string, unknown>> {
307
+ interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends Record<string, unknown>, ExtResult extends ExtResultBase<Schema>> {
265
308
  /**
266
309
  * Plugin ID.
267
310
  */
@@ -305,12 +348,57 @@ interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryA
305
348
  * Extended client members (methods and properties).
306
349
  */
307
350
  client?: ExtClientMembers;
351
+ /**
352
+ * Extended result fields on query results.
353
+ * Keyed by model name, each value defines computed fields with `needs` and `compute`.
354
+ */
355
+ result?: ExtResult;
308
356
  }
309
- type AnyPlugin = RuntimePlugin<any, any, any>;
357
+ type AnyPlugin = RuntimePlugin<any, any, any, any>;
358
+ /**
359
+ * Defines a ZenStack runtime plugin based on type of the given schema.
360
+ *
361
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * definePlugin(schema, {
366
+ * id: 'my-plugin',
367
+ * result: {
368
+ * user: {
369
+ * fullName: {
370
+ * needs: { firstName: true, lastName: true },
371
+ * compute: (user) => `${user.firstName} ${user.lastName}`,
372
+ * },
373
+ * },
374
+ * },
375
+ * });
376
+ * ```
377
+ */
378
+ declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}, const ExtResult extends ExtResultBase<Schema> = {}, R_ = {}>(schema: Schema, plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult> & {
379
+ result?: ExtResultInferenceArgs<Schema, R_>;
380
+ }): RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>;
310
381
  /**
311
382
  * Defines a ZenStack runtime plugin.
312
- */
313
- declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}>(plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers>): RuntimePlugin<any, ExtQueryArgs, ExtClientMembers>;
383
+ *
384
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * definePlugin(schema, {
389
+ * id: 'my-plugin',
390
+ * result: {
391
+ * user: {
392
+ * fullName: {
393
+ * needs: { firstName: true, lastName: true },
394
+ * compute: (user) => `${user.firstName} ${user.lastName}`,
395
+ * },
396
+ * },
397
+ * },
398
+ * });
399
+ * ```
400
+ * */
401
+ declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}, const ExtResult extends ExtResultBase<Schema> = {}>(plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>): RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>;
314
402
  type OnProcedureCallback<Schema extends SchemaDef> = (ctx: OnProcedureHookContext<Schema>) => Promise<unknown>;
315
403
  type OnProcedureHookContext<Schema extends SchemaDef> = {
316
404
  /**
@@ -648,12 +736,12 @@ type ClientOptions<Schema extends SchemaDef> = QueryOptions<Schema> & {
648
736
  * Config for omitting fields in ORM query results.
649
737
  */
650
738
  type OmitConfig<Schema extends SchemaDef> = {
651
- [Model in GetModels<Schema>]?: {
739
+ [Model in GetModels<Schema> as Uncapitalize<Model>]?: {
652
740
  [Field in GetModelFields<Schema, Model> as Field extends ScalarFields<Schema, Model> ? Field : never]?: boolean;
653
741
  };
654
742
  };
655
743
  type ComputedFieldsOptions<Schema extends SchemaDef> = {
656
- [Model in GetModels<Schema> as 'computedFields' extends keyof GetModel<Schema, Model> ? Model : never]: {
744
+ [Model in GetModels<Schema> as 'computedFields' extends keyof GetModel<Schema, Model> ? Uncapitalize<Model> : never]: {
657
745
  [Field in keyof Schema['models'][Model]['computedFields']]: Schema['models'][Model]['computedFields'][Field] extends infer Func ? Func extends (...args: any[]) => infer R ? (p: ExpressionBuilder<ToKyselySchema<Schema>, Model>, ...args: Parameters<Func>) => OperandExpression<R> : never : never;
658
746
  };
659
747
  };
@@ -932,6 +1020,17 @@ declare const AllReadOperations: readonly ["findMany", "findUnique", "findFirst"
932
1020
  */
933
1021
  type AllReadOperations = (typeof AllReadOperations)[number];
934
1022
 
1023
+ /**
1024
+ * Checks if a model has any required Unsupported fields (non-optional, no default).
1025
+ * Uses raw field access since `GetModelFields` excludes Unsupported fields.
1026
+ */
1027
+ type ModelHasRequiredUnsupportedField<Schema extends SchemaDef, Model extends GetModels<Schema>> = true extends {
1028
+ [Key in Extract<keyof GetModel<Schema, Model>['fields'], string>]: GetModel<Schema, Model>['fields'][Key] extends infer F extends FieldDef ? F['type'] extends 'Unsupported' ? F['optional'] extends true ? false : 'default' extends keyof F ? false : true : false : false;
1029
+ }[Extract<keyof GetModel<Schema, Model>['fields'], string>] ? true : false;
1030
+ /**
1031
+ * Checks if a model allows create operations (not a delegate model and has no required Unsupported fields).
1032
+ */
1033
+ type ModelAllowsCreate<Schema extends SchemaDef, Model extends GetModels<Schema>> = IsDelegateModel<Schema, Model> extends true ? false : ModelHasRequiredUnsupportedField<Schema, Model> extends true ? false : true;
935
1034
  type IsNever<T> = [T] extends [never] ? true : false;
936
1035
  /**
937
1036
  * Filters models based on slicing configuration.
@@ -1005,10 +1104,10 @@ type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema
1005
1104
  }, Optional, Array>;
1006
1105
  type ShouldOmitField<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Field extends GetModelFields<Schema, Model>, Omit> = QueryLevelOmit<Schema, Model, Field, Omit> extends boolean ? QueryLevelOmit<Schema, Model, Field, Omit> : OptionsLevelOmit<Schema, Model, Field, Options> extends boolean ? OptionsLevelOmit<Schema, Model, Field, Options> : SchemaLevelOmit<Schema, Model, Field>;
1007
1106
  type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Omit> = Field extends keyof Omit ? (Omit[Field] extends boolean ? Omit[Field] : undefined) : undefined;
1008
- type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Model extends keyof Options['omit'] ? Field extends keyof Options['omit'][Model] ? Options['omit'][Model][Field] extends boolean ? Options['omit'][Model][Field] : undefined : undefined : undefined;
1107
+ type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Uncapitalize<Model> extends keyof Options['omit'] ? Field extends keyof Options['omit'][Uncapitalize<Model>] ? Options['omit'][Uncapitalize<Model>][Field] extends boolean ? Options['omit'][Uncapitalize<Model>][Field] : undefined : undefined : undefined;
1009
1108
  type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
1010
- type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>> = {
1011
- [Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model, Options> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
1109
+ type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>, ExtResult extends ExtResultBase<Schema> = {}> = {
1110
+ [Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends keyof ExtractExtResult<ExtResult, Model & string> ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model, Options> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, ExtResult> : never;
1012
1111
  };
1013
1112
  type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
1014
1113
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
@@ -1017,22 +1116,22 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
1017
1116
  } ? {
1018
1117
  [Key in keyof S]: number;
1019
1118
  } : never;
1020
- type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = WrapType<Args extends {
1119
+ type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false, ExtResult extends ExtResultBase<Schema> = {}> = WrapType<(Args extends {
1021
1120
  select: infer S extends object;
1022
1121
  omit?: infer O extends object;
1023
- } & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
1122
+ } & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options, ExtResult> : Args extends {
1024
1123
  include: infer I extends object;
1025
1124
  omit?: infer O extends object;
1026
1125
  } & Record<string, unknown> ? // select all non-omitted scalar fields
1027
1126
  DefaultModelResult<Schema, Model, O, Options, false, false> & {
1028
- [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
1127
+ [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, ExtResult>;
1029
1128
  } & ('_count' extends keyof I ? I['_count'] extends false | undefined ? {} : {
1030
1129
  _count: SelectCountResult<Schema, Model, I['_count']>;
1031
1130
  } : {}) : Args extends {
1032
1131
  omit: infer O;
1033
- } & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
1034
- type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array>>;
1035
- type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>> = Simplify<ModelResult<Schema, Model, Args, Options, false, false>>;
1132
+ } & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>) & SelectAwareExtResult<ExtResult, Model & string, Args>, Optional, Array>;
1133
+ type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false, ExtResult extends ExtResultBase<Schema> = {}> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array, ExtResult>>;
1134
+ type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtResult extends ExtResultBase<Schema> = {}> = Simplify<ModelResult<Schema, Model, Args, Options, false, false, ExtResult>>;
1036
1135
  type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Partial extends boolean = false> = PartialIf<Optional<{
1037
1136
  [Key in GetTypeDefFields<Schema, TypeDef>]: MapFieldDefType<Schema, GetTypeDefField<Schema, TypeDef, Key>, Partial>;
1038
1137
  }, Partial extends true ? never : keyof {
@@ -1379,24 +1478,21 @@ type WhereUniqueInput<Schema extends SchemaDef, Model extends GetModels<Schema>,
1379
1478
  type OmitInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
1380
1479
  [Key in NonRelationFields<Schema, Model>]?: boolean;
1381
1480
  };
1382
- type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowRelation extends boolean = true> = {
1481
+ type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowRelation extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1383
1482
  /**
1384
1483
  * Explicitly select fields and relations to be returned by the query.
1385
1484
  */
1386
- select?: SelectInput<Schema, Model, Options, AllowCount, AllowRelation> | null;
1485
+ select?: (SelectInput<Schema, Model, Options, AllowCount, AllowRelation, ExtResult> & ExtResultSelectOmitFields<ExtResult, Model & string>) | null;
1387
1486
  /**
1388
1487
  * Explicitly omit fields from the query result.
1389
1488
  */
1390
- omit?: OmitInput<Schema, Model> | null;
1391
- } & (AllowRelation extends true ? {
1392
- /**
1393
- * Specifies relations to be included in the query result. All scalar fields are included.
1394
- */
1395
- include?: IncludeInput<Schema, Model, Options, AllowCount> | null;
1396
- } : {});
1397
- type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
1489
+ omit?: (OmitInput<Schema, Model> & ExtResultSelectOmitFields<ExtResult, Model & string>) | null;
1490
+ } & {
1491
+ [K in AllowRelation extends true ? RelationFields<Schema, Model> extends never ? never : 'include' : never]?: IncludeInput<Schema, Model, Options, AllowCount, ExtResult> | null;
1492
+ };
1493
+ type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1398
1494
  [Key in NonRelationFields<Schema, Model>]?: boolean;
1399
- } & (AllowRelation extends true ? IncludeInput<Schema, Model, Options, AllowCount> : {});
1495
+ } & (AllowRelation extends true ? IncludeInput<Schema, Model, Options, AllowCount, ExtResult> : {});
1400
1496
  type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>> = boolean | {
1401
1497
  /**
1402
1498
  * Selects specific relations to count.
@@ -1407,8 +1503,8 @@ type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>, Opti
1407
1503
  };
1408
1504
  };
1409
1505
  };
1410
- type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true> = {
1411
- [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, Options, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true : ModelFieldIsOptional<Schema, Model, Key> extends true ? true : false>;
1506
+ type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1507
+ [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, Options, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true : ModelFieldIsOptional<Schema, Model, Key> extends true ? true : false, ExtResult>;
1412
1508
  } & (AllowCount extends true ? HasToManyRelations<Schema, Model> extends true ? {
1413
1509
  _count?: SelectCount<Schema, Model, Options>;
1414
1510
  } : {} : {});
@@ -1473,23 +1569,23 @@ type SortAndTakeArgs<Schema extends SchemaDef, Model extends GetModels<Schema>,
1473
1569
  */
1474
1570
  cursor?: WhereUniqueInput<Schema, Model, Options>;
1475
1571
  };
1476
- type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? SortAndTakeArgs<Schema, Model, Options> & (ProviderSupportsDistinct<Schema> extends true ? {
1572
+ type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Collection extends boolean, AllowFilter extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = (Collection extends true ? SortAndTakeArgs<Schema, Model, Options> & (ProviderSupportsDistinct<Schema> extends true ? {
1477
1573
  /**
1478
1574
  * Distinct fields. Only supported by providers that natively support SQL "DISTINCT ON".
1479
1575
  */
1480
1576
  distinct?: OrArray<NonRelationFields<Schema, Model>>;
1481
- } : {}) : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model, Options> : {}) & SelectIncludeOmit<Schema, Model, true, Options>;
1482
- type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FindArgs<Schema, Model, Options, true> & ExtractExtQueryArgs<ExtQueryArgs, 'findMany'>;
1483
- type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FindArgs<Schema, Model, Options, true> & ExtractExtQueryArgs<ExtQueryArgs, 'findFirst'>;
1577
+ } : {}) : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model, Options> : {}) & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult>;
1578
+ type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = FindArgs<Schema, Model, Options, true, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findMany'>;
1579
+ type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = FindArgs<Schema, Model, Options, true, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findFirst'>;
1484
1580
  type ExistsArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FilterArgs<Schema, Model, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'exists'>;
1485
- type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1581
+ type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1486
1582
  where: WhereUniqueInput<Schema, Model, Options>;
1487
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'findUnique'>;
1488
- type CreateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1583
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findUnique'>;
1584
+ type CreateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1489
1585
  data: CreateInput<Schema, Model, Options>;
1490
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'create'>;
1586
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'create'>;
1491
1587
  type CreateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, _Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = CreateManyInput<Schema, Model> & ExtractExtQueryArgs<ExtQueryArgs, 'createMany'>;
1492
- type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = CreateManyInput<Schema, Model> & SelectIncludeOmit<Schema, Model, false, Options, false> & ExtractExtQueryArgs<ExtQueryArgs, 'createManyAndReturn'>;
1588
+ type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = CreateManyInput<Schema, Model> & SelectIncludeOmit<Schema, Model, false, Options, false, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'createManyAndReturn'>;
1493
1589
  type OptionalWrap<Schema extends SchemaDef, Model extends GetModels<Schema>, T extends object> = Optional<T, keyof T & OptionalFieldsForCreate<Schema, Model>>;
1494
1590
  type CreateScalarPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
1495
1591
  [Key in ScalarFields<Schema, Model, false> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]: ScalarCreatePayload<Schema, Model, Key>;
@@ -1502,6 +1598,7 @@ type IsJsonField<Schema extends SchemaDef, Model extends GetModels<Schema>, Fiel
1502
1598
  type CreateFKPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
1503
1599
  [Key in ForeignKeyFields<Schema, Model>]: MapModelFieldType<Schema, Model, Key>;
1504
1600
  }>;
1601
+ type RelationModelAllowsCreate<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = GetModelFieldType<Schema, Model, Field> extends GetModels<Schema> ? ModelAllowsCreate<Schema, GetModelFieldType<Schema, Model, Field>> : false;
1505
1602
  type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = Omit<{
1506
1603
  /**
1507
1604
  * Connects or create a related record.
@@ -1519,7 +1616,7 @@ type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModel
1519
1616
  * Connects an existing record.
1520
1617
  */
1521
1618
  connect?: ConnectInput<Schema, Model, Field, Options>;
1522
- }, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' : never)>;
1619
+ }, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'createMany' | 'connectOrCreate')>;
1523
1620
  type CreateRelationPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>> = OptionalWrap<Schema, Model, {
1524
1621
  [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]: CreateRelationFieldPayload<Schema, Model, Key, Options>;
1525
1622
  }>;
@@ -1551,7 +1648,7 @@ type CreateManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>,
1551
1648
  type CreateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Without extends string = never> = XOR<Omit<CreateWithFKInput<Schema, Model, Options>, Without>, Omit<CreateWithRelationInput<Schema, Model, Options>, Without>>;
1552
1649
  type NestedCreateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = OrArray<CreateInput<Schema, RelationFieldType<Schema, Model, Field>, Options, OppositeRelationAndFK<Schema, Model, Field>>, FieldIsArray<Schema, Model, Field>>;
1553
1650
  type NestedCreateManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = CreateManyInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>;
1554
- type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1651
+ type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1555
1652
  /**
1556
1653
  * The data to update the record with.
1557
1654
  */
@@ -1560,9 +1657,9 @@ type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Optio
1560
1657
  * The unique filter to find the record to update.
1561
1658
  */
1562
1659
  where: WhereUniqueInput<Schema, Model, Options>;
1563
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'update'>;
1660
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'update'>;
1564
1661
  type UpdateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = UpdateManyPayload<Schema, Model, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'updateMany'>;
1565
- type UpdateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = UpdateManyPayload<Schema, Model, Options> & SelectIncludeOmit<Schema, Model, false, Options, false> & ExtractExtQueryArgs<ExtQueryArgs, 'updateManyAndReturn'>;
1662
+ type UpdateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = UpdateManyPayload<Schema, Model, Options> & SelectIncludeOmit<Schema, Model, false, Options, false, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'updateManyAndReturn'>;
1566
1663
  type UpdateManyPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Without extends string = never> = {
1567
1664
  /**
1568
1665
  * The data to update the records with.
@@ -1577,7 +1674,7 @@ type UpdateManyPayload<Schema extends SchemaDef, Model extends GetModels<Schema>
1577
1674
  */
1578
1675
  limit?: number;
1579
1676
  };
1580
- type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1677
+ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1581
1678
  /**
1582
1679
  * The data to create the record if it doesn't exist.
1583
1680
  */
@@ -1590,7 +1687,7 @@ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Optio
1590
1687
  * The unique filter to find the record to update.
1591
1688
  */
1592
1689
  where: WhereUniqueInput<Schema, Model, Options>;
1593
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'upsert'>;
1690
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'upsert'>;
1594
1691
  type UpdateScalarInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
1595
1692
  [Key in NonRelationFields<Schema, Model> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]?: ScalarUpdatePayload<Schema, Model, Key>;
1596
1693
  }, Without>;
@@ -1675,7 +1772,7 @@ type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels
1675
1772
  * Sets the related records to the specified ones.
1676
1773
  */
1677
1774
  set?: SetRelationInput<Schema, Model, Field, Options>;
1678
- }, FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' | 'upsert' : never>;
1775
+ }, RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'createMany' | 'connectOrCreate' | 'upsert'>;
1679
1776
  type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = Omit<{
1680
1777
  /**
1681
1778
  * Creates a related record.
@@ -1706,13 +1803,13 @@ type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<
1706
1803
  * Deletes the related record.
1707
1804
  */
1708
1805
  delete?: NestedDeleteInput<Schema, Model, Field, Options>;
1709
- } : {}), FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'connectOrCreate' | 'upsert' : never>;
1710
- type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1806
+ } : {}), RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'connectOrCreate' | 'upsert'>;
1807
+ type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1711
1808
  /**
1712
1809
  * The unique filter to find the record to delete.
1713
1810
  */
1714
1811
  where: WhereUniqueInput<Schema, Model, Options>;
1715
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'delete'>;
1812
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'delete'>;
1716
1813
  type DeleteManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1717
1814
  /**
1718
1815
  * Filter to select records to delete.
@@ -2023,6 +2120,37 @@ type ProviderSupportsDistinct<Schema extends SchemaDef> = Schema['provider']['ty
2023
2120
  * Extracts extended query args for a specific operation.
2024
2121
  */
2025
2122
  type ExtractExtQueryArgs<ExtQueryArgs, Operation extends CoreCrudOperations> = (Operation extends keyof ExtQueryArgs ? ExtQueryArgs[Operation] : {}) & ('$create' extends keyof ExtQueryArgs ? Operation extends CoreCreateOperations ? ExtQueryArgs['$create'] : {} : {}) & ('$read' extends keyof ExtQueryArgs ? (Operation extends CoreReadOperations ? ExtQueryArgs['$read'] : {}) : {}) & ('$update' extends keyof ExtQueryArgs ? Operation extends CoreUpdateOperations ? ExtQueryArgs['$update'] : {} : {}) & ('$delete' extends keyof ExtQueryArgs ? Operation extends CoreDeleteOperations ? ExtQueryArgs['$delete'] : {} : {}) & ('$all' extends keyof ExtQueryArgs ? ExtQueryArgs['$all'] : {});
2123
+ /**
2124
+ * Extracts extended result field types for a specific model from ExtResult.
2125
+ * Maps `{ needs, compute }` definitions to `{ fieldName: ReturnType<compute> }`.
2126
+ * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection).
2127
+ */
2128
+ type ExtractExtResult<ExtResult extends ExtResultBase, Model extends string> = Uncapitalize<Model> extends keyof ExtResult ? {
2129
+ [K in keyof ExtResult[Uncapitalize<Model>]]: ExtResult[Uncapitalize<Model>][K] extends {
2130
+ compute: (...args: any[]) => infer R;
2131
+ } ? R : never;
2132
+ } : {};
2133
+ /**
2134
+ * Extracts extended result field names as optional boolean keys for use in select/omit inputs.
2135
+ * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection).
2136
+ */
2137
+ type ExtResultSelectOmitFields<ExtResult extends ExtResultBase, Model extends string> = keyof ExtResult extends never ? {} : Uncapitalize<Model> extends keyof ExtResult ? {
2138
+ [K in keyof ExtResult[Uncapitalize<Model>]]?: boolean;
2139
+ } : {};
2140
+ type TruthyKeys<S, Keys extends string> = {
2141
+ [K in Keys]: K extends keyof S ? (S[K] extends false | undefined ? never : K) : never;
2142
+ }[Keys];
2143
+ /**
2144
+ * Select/omit-aware version of ExtractExtResult.
2145
+ * - If T has `select`, only includes ext result fields that are explicitly selected.
2146
+ * - If T has `omit`, excludes ext result fields that are explicitly omitted.
2147
+ * - Otherwise, includes all ext result fields.
2148
+ */
2149
+ type SelectAwareExtResult<ExtResult extends ExtResultBase, Model extends string, T> = keyof ExtResult extends never ? {} : T extends {
2150
+ select: infer S;
2151
+ } ? S extends null | undefined ? ExtractExtResult<ExtResult, Model> : Pick<ExtractExtResult<ExtResult, Model>, TruthyKeys<S, Extract<keyof S & string, keyof ExtractExtResult<ExtResult, Model>>>> : T extends {
2152
+ omit: infer O;
2153
+ } ? O extends null | undefined ? ExtractExtResult<ExtResult, Model> : Omit<ExtractExtResult<ExtResult, Model>, TruthyKeys<O, Extract<keyof O & string, keyof ExtractExtResult<ExtResult, Model>>>> : ExtractExtResult<ExtResult, Model>;
2026
2154
 
2027
2155
  /**
2028
2156
  * Zod schema cache statistics.
@@ -2093,7 +2221,7 @@ declare enum TransactionIsolationLevel {
2093
2221
  /**
2094
2222
  * ZenStack client interface.
2095
2223
  */
2096
- type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtClientMembers extends ExtClientMembersBase = {}> = {
2224
+ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtClientMembers extends ExtClientMembersBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
2097
2225
  /**
2098
2226
  * The schema definition.
2099
2227
  */
@@ -2141,25 +2269,36 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2141
2269
  */
2142
2270
  get $auth(): AuthType<Schema> | undefined;
2143
2271
  /**
2144
- * Sets the current user identity.
2272
+ * Returns a new client bound to the specified user identity. The original client remains unchanged.
2273
+ *
2274
+ * @example
2275
+ * ```
2276
+ * const userClient = db.$setAuth({ id: 'user-id' });
2277
+ * ```
2145
2278
  */
2146
- $setAuth(auth: AuthType<Schema> | undefined): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2279
+ $setAuth(auth: AuthType<Schema> | undefined): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2147
2280
  /**
2148
- * Returns a new client with new options applied.
2281
+ * Returns a new client with new options applied. The original client remains unchanged.
2282
+ *
2149
2283
  * @example
2150
2284
  * ```
2151
2285
  * const dbNoValidation = db.$setOptions({ ...db.$options, validateInput: false });
2152
2286
  * ```
2153
2287
  */
2154
- $setOptions<NewOptions extends ClientOptions<Schema>>(options: NewOptions): ClientContract<Schema, NewOptions, ExtQueryArgs, ExtClientMembers>;
2288
+ $setOptions<NewOptions extends ClientOptions<Schema>>(options: NewOptions): ClientContract<Schema, NewOptions, ExtQueryArgs, ExtClientMembers, ExtResult>;
2155
2289
  /**
2156
- * Returns a new client enabling/disabling query args validation.
2290
+ * Returns a new client enabling/disabling query args validation. The original client remains unchanged.
2157
2291
  *
2158
2292
  * @deprecated Use {@link $setOptions} instead.
2159
2293
  */
2160
- $setInputValidation(enable: boolean): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2294
+ $setInputValidation(enable: boolean): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2161
2295
  /**
2162
2296
  * The Kysely query builder instance.
2297
+ *
2298
+ * @example
2299
+ * ```
2300
+ * db.$qb.selectFrom('User').selectAll().where('id', '=', 1).execute();
2301
+ * ```
2163
2302
  */
2164
2303
  readonly $qb: ToKysely<Schema>;
2165
2304
  /**
@@ -2168,26 +2307,45 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2168
2307
  readonly $qbRaw: AnyKysely;
2169
2308
  /**
2170
2309
  * Starts an interactive transaction.
2310
+ *
2311
+ * @example
2312
+ * ```
2313
+ * await db.$transaction(async (tx) => {
2314
+ * const user = await tx.user.update({ where: { id: 1 }, data: { name: 'Alice' } });
2315
+ * const post = await tx.post.create({ data: { title: 'Hello World', authorId: user.id } });
2316
+ * return { user, posts: [post] };
2317
+ * ```
2171
2318
  */
2172
- $transaction<T>(callback: (tx: TransactionClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>) => Promise<T>, options?: {
2319
+ $transaction<T>(callback: (tx: TransactionClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>) => Promise<T>, options?: {
2173
2320
  isolationLevel?: TransactionIsolationLevel;
2174
2321
  }): Promise<T>;
2175
2322
  /**
2176
- * Starts a sequential transaction.
2323
+ * Starts a sequential transaction that runs the provided operations in order.
2324
+ *
2325
+ * @example
2326
+ * ```
2327
+ * await db.$transaction([
2328
+ * db.user.update({ where: { id: 1 }, data: { name: 'Alice' } }),
2329
+ * db.post.create({ data: { title: 'Hello World', authorId: 1 } }),
2330
+ * ]);
2177
2331
  */
2178
2332
  $transaction<P extends ZenStackPromise<Schema, any>[]>(arg: [...P], options?: {
2179
2333
  isolationLevel?: TransactionIsolationLevel;
2180
2334
  }): Promise<UnwrapTuplePromises<P>>;
2181
2335
  /**
2182
- * Returns a new client with the specified plugin installed.
2336
+ * Returns a new client with the specified plugin installed. The original client remains unchanged.
2337
+ *
2338
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
2183
2339
  */
2184
- $use<PluginSchema extends SchemaDef = Schema, PluginExtQueryArgs extends ExtQueryArgsBase = {}, PluginExtClientMembers extends ExtClientMembersBase = {}>(plugin: RuntimePlugin<PluginSchema, PluginExtQueryArgs, PluginExtClientMembers>): ClientContract<Schema, Options, ExtQueryArgs & PluginExtQueryArgs, ExtClientMembers & PluginExtClientMembers>;
2340
+ $use<PluginSchema extends SchemaDef = Schema, PluginExtQueryArgs extends ExtQueryArgsBase = {}, PluginExtClientMembers extends ExtClientMembersBase = {}, PluginExtResult extends ExtResultBase<PluginSchema> = {}, _R = {}>(plugin: RuntimePlugin<PluginSchema, PluginExtQueryArgs, PluginExtClientMembers, PluginExtResult> & {
2341
+ result?: ExtResultInferenceArgs<Schema, _R>;
2342
+ }): ClientContract<Schema, Options, ExtQueryArgs & PluginExtQueryArgs, ExtClientMembers & PluginExtClientMembers, ExtResult & PluginExtResult>;
2185
2343
  /**
2186
- * Returns a new client with the specified plugin removed.
2344
+ * Returns a new client with the specified plugin removed. The original client remains unchanged.
2187
2345
  */
2188
- $unuse(pluginId: string): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2346
+ $unuse(pluginId: string): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2189
2347
  /**
2190
- * Returns a new client with all plugins removed.
2348
+ * Returns a new client with all plugins removed. The original client remains unchanged.
2191
2349
  */
2192
2350
  $unuseAll(): ClientContract<Schema, Options>;
2193
2351
  /**
@@ -2212,12 +2370,12 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2212
2370
  */
2213
2371
  get $diagnostics(): Promise<Diagnostics>;
2214
2372
  } & {
2215
- [Key in GetSlicedModels<Schema, Options> as Uncapitalize<Key>]: ModelOperations<Schema, Key, Options, ExtQueryArgs>;
2373
+ [Key in GetSlicedModels<Schema, Options> as Uncapitalize<Key>]: ModelOperations<Schema, Key, Options, ExtQueryArgs, ExtResult>;
2216
2374
  } & ProcedureOperations<Schema, Options> & ExtClientMembers;
2217
2375
  /**
2218
2376
  * The contract for a client in a transaction.
2219
2377
  */
2220
- type TransactionClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends ExtClientMembersBase> = Omit<ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>, TransactionUnsupportedMethods>;
2378
+ type TransactionClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends ExtClientMembersBase, ExtResult extends ExtResultBase<Schema> = {}> = Omit<ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>, TransactionUnsupportedMethods>;
2221
2379
  type ProcedureOperations<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>> = Schema['procedures'] extends Record<string, ProcedureDef> ? {
2222
2380
  /**
2223
2381
  * Custom procedures.
@@ -2250,8 +2408,8 @@ type CRUD_EXT = CRUD | 'post-update';
2250
2408
  declare const CRUD_EXT: readonly ["create", "read", "update", "delete", "post-update"];
2251
2409
  type SliceOperations<T extends Record<string, unknown>, Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema>> = Omit<{
2252
2410
  [Key in keyof T as Key extends GetSlicedOperations<Schema, Model, Options> ? Key : never]: T[Key];
2253
- }, IsDelegateModel<Schema, Model> extends true ? OperationsIneligibleForDelegateModels : never>;
2254
- type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase> = CommonModelOperations<Schema, Model, Options, ExtQueryArgs> & (Schema['provider']['type'] extends 'mysql' ? {} : {
2411
+ }, ModelAllowsCreate<Schema, Model> extends true ? never : OperationsRequiringCreate>;
2412
+ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtResult extends ExtResultBase<Schema> = {}> = CommonModelOperations<Schema, Model, Options, ExtQueryArgs, ExtResult> & (Schema['provider']['type'] extends 'mysql' ? {} : {
2255
2413
  /**
2256
2414
  * Creates multiple entities and returns them.
2257
2415
  * @param args - create args. See {@link createMany} for input. Use
@@ -2270,7 +2428,7 @@ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema
2270
2428
  * });
2271
2429
  * ```
2272
2430
  */
2273
- createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2431
+ createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2274
2432
  /**
2275
2433
  * Updates multiple entities and returns them.
2276
2434
  * @param args - update args. Only scalar fields are allowed for data.
@@ -2293,9 +2451,9 @@ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema
2293
2451
  * });
2294
2452
  * ```
2295
2453
  */
2296
- updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2454
+ updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2297
2455
  });
2298
- type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase> = {
2456
+ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtResult extends ExtResultBase<Schema> = {}> = {
2299
2457
  /**
2300
2458
  * Returns a list of entities.
2301
2459
  * @param args - query args
@@ -2377,35 +2535,35 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2377
2535
  * }); // result: `{ _count: { posts: number } }`
2378
2536
  * ```
2379
2537
  */
2380
- findMany<T extends FindManyArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2538
+ findMany<T extends FindManyArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2381
2539
  /**
2382
2540
  * Returns a uniquely identified entity.
2383
2541
  * @param args - query args
2384
2542
  * @returns a single entity or null if not found
2385
2543
  * @see {@link findMany}
2386
2544
  */
2387
- findUnique<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options> | null>;
2545
+ findUnique<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
2388
2546
  /**
2389
2547
  * Returns a uniquely identified entity or throws `NotFoundError` if not found.
2390
2548
  * @param args - query args
2391
2549
  * @returns a single entity
2392
2550
  * @see {@link findMany}
2393
2551
  */
2394
- findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2552
+ findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2395
2553
  /**
2396
2554
  * Returns the first entity.
2397
2555
  * @param args - query args
2398
2556
  * @returns a single entity or null if not found
2399
2557
  * @see {@link findMany}
2400
2558
  */
2401
- findFirst<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options> | null>;
2559
+ findFirst<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
2402
2560
  /**
2403
2561
  * Returns the first entity or throws `NotFoundError` if not found.
2404
2562
  * @param args - query args
2405
2563
  * @returns a single entity
2406
2564
  * @see {@link findMany}
2407
2565
  */
2408
- findFirstOrThrow<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2566
+ findFirstOrThrow<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2409
2567
  /**
2410
2568
  * Creates a new entity.
2411
2569
  * @param args - create args
@@ -2458,7 +2616,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2458
2616
  * });
2459
2617
  * ```
2460
2618
  */
2461
- create<T extends CreateArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, CreateArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2619
+ create<T extends CreateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, CreateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2462
2620
  /**
2463
2621
  * Creates multiple entities. Only scalar fields are allowed.
2464
2622
  * @param args - create args
@@ -2602,7 +2760,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2602
2760
  * });
2603
2761
  * ```
2604
2762
  */
2605
- update<T extends UpdateArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, UpdateArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2763
+ update<T extends UpdateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, UpdateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2606
2764
  /**
2607
2765
  * Updates multiple entities.
2608
2766
  * @param args - update args. Only scalar fields are allowed for data.
@@ -2644,7 +2802,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2644
2802
  * });
2645
2803
  * ```
2646
2804
  */
2647
- upsert<T extends UpsertArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, UpsertArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2805
+ upsert<T extends UpsertArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, UpsertArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2648
2806
  /**
2649
2807
  * Deletes a uniquely identifiable entity.
2650
2808
  * @param args - delete args
@@ -2664,7 +2822,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2664
2822
  * }); // result: `{ id: string; email: string }`
2665
2823
  * ```
2666
2824
  */
2667
- delete<T extends DeleteArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, DeleteArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2825
+ delete<T extends DeleteArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, DeleteArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2668
2826
  /**
2669
2827
  * Deletes multiple entities.
2670
2828
  * @param args - delete args
@@ -2775,8 +2933,8 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2775
2933
  */
2776
2934
  exists<T extends ExistsArgs<Schema, Model, Options, ExtQueryArgs>>(args?: Subset<T, ExistsArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, boolean>;
2777
2935
  };
2778
- type OperationsIneligibleForDelegateModels = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert';
2779
- type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = SliceOperations<AllModelOperations<Schema, Model, Options, ExtQueryArgs>, Schema, Model, Options>;
2936
+ type OperationsRequiringCreate = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert';
2937
+ type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = SliceOperations<AllModelOperations<Schema, Model, Options, ExtQueryArgs, ExtResult>, Schema, Model, Options>;
2780
2938
  /**
2781
2939
  * Type for auth context that includes both scalar and relation fields.
2782
2940
  * Relations are recursively included to allow nested auth data like { user: { profile: { ... } } }
@@ -2815,6 +2973,10 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2815
2973
  constructor(client: ClientContract<Schema, Options, ExtQueryArgs, any>);
2816
2974
  constructor(schema: Schema, options?: Options);
2817
2975
  private get plugins();
2976
+ /**
2977
+ * Returns model field entries, excluding Unsupported fields.
2978
+ */
2979
+ private getModelFields;
2818
2980
  private shouldIncludeRelations;
2819
2981
  private nextOptions;
2820
2982
  private getCache;
@@ -2852,6 +3014,7 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2852
3014
  private makeCountSelectionSchema;
2853
3015
  private makeRelationSelectIncludeSchema;
2854
3016
  private makeOmitSchema;
3017
+ private addExtResultFields;
2855
3018
  private makeIncludeSchema;
2856
3019
  private makeOrderBySchema;
2857
3020
  private makeDistinctSchema;
@@ -2912,10 +3075,7 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2912
3075
  */
2913
3076
  private trimFilterOperators;
2914
3077
  private createUnionFilterSchema;
2915
- /**
2916
- * Checks if a model is included in the slicing configuration.
2917
- * Returns true if the model is allowed, false if it's excluded.
2918
- */
3078
+ private canCreateModel;
2919
3079
  private isModelAllowed;
2920
3080
  }
2921
3081
 
@@ -3016,13 +3176,18 @@ declare function requireTypeDef(schema: SchemaDef, type: string): _zenstackhq_sc
3016
3176
  declare function getField(schema: SchemaDef, model: string, field: string): FieldDef | undefined;
3017
3177
  declare function requireField(schema: SchemaDef, modelOrType: string, field: string): FieldDef;
3018
3178
  /**
3019
- * Gets all model fields, by default non-relation, non-computed, non-inherited fields only.
3179
+ * Gets all model fields, by default non-relation, non-computed, non-inherited, non-unsupported fields only.
3020
3180
  */
3021
3181
  declare function getModelFields(schema: SchemaDef, model: string, options?: {
3022
3182
  relations?: boolean;
3023
3183
  computed?: boolean;
3024
3184
  inherited?: boolean;
3185
+ unsupported?: boolean;
3025
3186
  }): FieldDef[];
3187
+ /**
3188
+ * Checks if a field is of `Unsupported` type.
3189
+ */
3190
+ declare function isUnsupportedField(fieldDef: FieldDef): boolean;
3026
3191
  declare function getIdFields<Schema extends SchemaDef>(schema: SchemaDef, model: GetModels<Schema>): readonly string[] | undefined;
3027
3192
  declare function requireIdFields(schema: SchemaDef, model: string): readonly string[];
3028
3193
  declare function getRelationForeignKeyFieldPairs(schema: SchemaDef, model: string, relationField: string): {
@@ -3124,6 +3289,7 @@ declare const queryUtils_isInheritedField: typeof isInheritedField;
3124
3289
  declare const queryUtils_isRelationField: typeof isRelationField;
3125
3290
  declare const queryUtils_isScalarField: typeof isScalarField;
3126
3291
  declare const queryUtils_isTypeDef: typeof isTypeDef;
3292
+ declare const queryUtils_isUnsupportedField: typeof isUnsupportedField;
3127
3293
  declare const queryUtils_makeDefaultOrderBy: typeof makeDefaultOrderBy;
3128
3294
  declare const queryUtils_requireField: typeof requireField;
3129
3295
  declare const queryUtils_requireIdFields: typeof requireIdFields;
@@ -3132,7 +3298,7 @@ declare const queryUtils_requireTypeDef: typeof requireTypeDef;
3132
3298
  declare const queryUtils_stripAlias: typeof stripAlias;
3133
3299
  declare const queryUtils_tmpAlias: typeof tmpAlias;
3134
3300
  declare namespace queryUtils {
3135
- export { queryUtils_TEMP_ALIAS_PREFIX as TEMP_ALIAS_PREFIX, queryUtils_aggregate as aggregate, queryUtils_buildJoinPairs as buildJoinPairs, queryUtils_ensureArray as ensureArray, queryUtils_extractFieldName as extractFieldName, queryUtils_extractIdFields as extractIdFields, queryUtils_extractModelName as extractModelName, queryUtils_fieldHasDefaultValue as fieldHasDefaultValue, queryUtils_flattenCompoundUniqueFilters as flattenCompoundUniqueFilters, queryUtils_getDelegateDescendantModels as getDelegateDescendantModels, queryUtils_getDiscriminatorField as getDiscriminatorField, queryUtils_getEnum as getEnum, queryUtils_getField as getField, queryUtils_getIdFields as getIdFields, queryUtils_getIdValues as getIdValues, queryUtils_getManyToManyRelation as getManyToManyRelation, queryUtils_getModel as getModel, queryUtils_getModelFields as getModelFields, queryUtils_getRelationForeignKeyFieldPairs as getRelationForeignKeyFieldPairs, queryUtils_getTypeDef as getTypeDef, queryUtils_getUniqueFields as getUniqueFields, queryUtils_hasModel as hasModel, queryUtils_isEnum as isEnum, queryUtils_isForeignKeyField as isForeignKeyField, queryUtils_isInheritedField as isInheritedField, queryUtils_isRelationField as isRelationField, queryUtils_isScalarField as isScalarField, queryUtils_isTypeDef as isTypeDef, queryUtils_makeDefaultOrderBy as makeDefaultOrderBy, queryUtils_requireField as requireField, queryUtils_requireIdFields as requireIdFields, queryUtils_requireModel as requireModel, queryUtils_requireTypeDef as requireTypeDef, queryUtils_stripAlias as stripAlias, queryUtils_tmpAlias as tmpAlias };
3301
+ export { queryUtils_TEMP_ALIAS_PREFIX as TEMP_ALIAS_PREFIX, queryUtils_aggregate as aggregate, queryUtils_buildJoinPairs as buildJoinPairs, queryUtils_ensureArray as ensureArray, queryUtils_extractFieldName as extractFieldName, queryUtils_extractIdFields as extractIdFields, queryUtils_extractModelName as extractModelName, queryUtils_fieldHasDefaultValue as fieldHasDefaultValue, queryUtils_flattenCompoundUniqueFilters as flattenCompoundUniqueFilters, queryUtils_getDelegateDescendantModels as getDelegateDescendantModels, queryUtils_getDiscriminatorField as getDiscriminatorField, queryUtils_getEnum as getEnum, queryUtils_getField as getField, queryUtils_getIdFields as getIdFields, queryUtils_getIdValues as getIdValues, queryUtils_getManyToManyRelation as getManyToManyRelation, queryUtils_getModel as getModel, queryUtils_getModelFields as getModelFields, queryUtils_getRelationForeignKeyFieldPairs as getRelationForeignKeyFieldPairs, queryUtils_getTypeDef as getTypeDef, queryUtils_getUniqueFields as getUniqueFields, queryUtils_hasModel as hasModel, queryUtils_isEnum as isEnum, queryUtils_isForeignKeyField as isForeignKeyField, queryUtils_isInheritedField as isInheritedField, queryUtils_isRelationField as isRelationField, queryUtils_isScalarField as isScalarField, queryUtils_isTypeDef as isTypeDef, queryUtils_isUnsupportedField as isUnsupportedField, queryUtils_makeDefaultOrderBy as makeDefaultOrderBy, queryUtils_requireField as requireField, queryUtils_requireIdFields as requireIdFields, queryUtils_requireModel as requireModel, queryUtils_requireTypeDef as requireTypeDef, queryUtils_stripAlias as stripAlias, queryUtils_tmpAlias as tmpAlias };
3136
3302
  }
3137
3303
 
3138
3304
  type VisitResult = void | {
@@ -3170,4 +3336,4 @@ declare namespace schemaUtils {
3170
3336
  export { schemaUtils_ExpressionVisitor as ExpressionVisitor, schemaUtils_MatchingExpressionVisitor as MatchingExpressionVisitor, type schemaUtils_VisitResult as VisitResult };
3171
3337
  }
3172
3338
 
3173
- export { type AfterEntityMutationCallback, type AggregateArgs, type AggregateResult, AllCrudOperations, type AllModelOperations, AllReadOperations, AnyNull, AnyNullClass, type AnyPlugin, type AuthType, BaseCrudDialect, type BatchResult, type BeforeEntityMutationCallback, type BooleanFilter, type BytesFilter, CRUD, CRUD_EXT, type ClientConstructor, type ClientContract, type ClientOptions, type ComputedFieldsOptions, CoreCreateOperations, CoreCrudOperations, CoreDeleteOperations, CoreReadOperations, CoreUpdateOperations, CoreWriteOperations, type CountArgs, type CountResult, type CreateArgs, type CreateInput, type CreateManyAndReturnArgs, type CreateManyArgs, type CreateManyInput, type DateTimeFilter, DbNull, DbNullClass, type DefaultModelResult, type DeleteArgs, type DeleteManyArgs, type EntityMutationHooksDef, type ExistsArgs, type ExtClientMembersBase, type ExtQueryArgsBase, type FilterKind, type FindArgs, type FindFirstArgs, type FindManyArgs, type FindUniqueArgs, type GetAllIncludedOperations, type GetIncludedOperations, type GetProcedure, type GetProcedureNames, type GetProcedureParams, type GetQueryOptions, type GetSlicedFilterKindsForField, type GetSlicedModels, type GetSlicedOperations, type GetSlicedProcedures, type GroupByArgs, type GroupByResult, type HasComputedFields, type HasProcedures, type IncludeInput, InputValidator, type JsonArray, type JsonFilter, JsonNull, JsonNullClass, type JsonNullValues, type JsonObject, type JsonValue, kyselyUtils as KyselyUtils, type ModelOperations, type ModelResult, type ModelSlicingOptions, type NullsOrder, type NumberFilter, ORMError, ORMErrorReason, type OmitConfig, type OmitInput, type OnKyselyQueryArgs, type OnKyselyQueryCallback, type OnProcedureHookContext, type OperationsIneligibleForDelegateModels, type OrderBy, type PluginAfterEntityMutationArgs, type PluginBeforeEntityMutationArgs, type ProcedureEnvelope, type ProcedureFunc, type ProcedureHandlerFunc, type ProcedureOperations, type ProceduresOptions, type ProceedKyselyQueryFunction, type QueryOptions, queryUtils as QueryUtils, RejectedByPolicyReason, type RuntimePlugin, schemaUtils as SchemaUtils, type SelectIncludeOmit, type SelectInput, type SelectSubset, type SimplifiedPlainResult, type SimplifiedResult, type SlicingOptions, type SortOrder, type StringFilter, type Subset, type ToKysely, type TransactionClientContract, TransactionIsolationLevel, type TypeDefResult, type TypedJsonFilter, type UpdateArgs, type UpdateInput, type UpdateManyAndReturnArgs, type UpdateManyArgs, type UpsertArgs, type WhereInput, type WhereUniqueInput, type ZModelFunction, type ZModelFunctionContext, ZenStackClient, type ZenStackPromise, createQuerySchemaFactory, definePlugin, getCrudDialect };
3339
+ export { type AfterEntityMutationCallback, type AggregateArgs, type AggregateResult, AllCrudOperations, type AllModelOperations, AllReadOperations, AnyNull, AnyNullClass, type AnyPlugin, type AuthType, BaseCrudDialect, type BatchResult, type BeforeEntityMutationCallback, type BooleanFilter, type BytesFilter, CRUD, CRUD_EXT, type ClientConstructor, type ClientContract, type ClientOptions, type ComputedFieldsOptions, CoreCreateOperations, CoreCrudOperations, CoreDeleteOperations, CoreReadOperations, CoreUpdateOperations, CoreWriteOperations, type CountArgs, type CountResult, type CreateArgs, type CreateInput, type CreateManyAndReturnArgs, type CreateManyArgs, type CreateManyInput, type DateTimeFilter, DbNull, DbNullClass, type DefaultModelResult, type DeleteArgs, type DeleteManyArgs, type EntityMutationHooksDef, type ExistsArgs, type ExtClientMembersBase, type ExtQueryArgsBase, type ExtResultBase, type ExtResultInferenceArgs, type ExtResultSelectOmitFields, type ExtractExtResult, type FilterKind, type FindArgs, type FindFirstArgs, type FindManyArgs, type FindUniqueArgs, type GetAllIncludedOperations, type GetIncludedOperations, type GetProcedure, type GetProcedureNames, type GetProcedureParams, type GetQueryOptions, type GetSlicedFilterKindsForField, type GetSlicedModels, type GetSlicedOperations, type GetSlicedProcedures, type GroupByArgs, type GroupByResult, type HasComputedFields, type HasProcedures, type IncludeInput, InputValidator, type JsonArray, type JsonFilter, JsonNull, JsonNullClass, type JsonNullValues, type JsonObject, type JsonValue, kyselyUtils as KyselyUtils, type MapModelFieldType, type ModelAllowsCreate, type ModelHasRequiredUnsupportedField, type ModelOperations, type ModelResult, type ModelSlicingOptions, type NullsOrder, type NumberFilter, ORMError, ORMErrorReason, type OmitConfig, type OmitInput, type OnKyselyQueryArgs, type OnKyselyQueryCallback, type OnProcedureHookContext, type OperationsRequiringCreate, type OrderBy, type PluginAfterEntityMutationArgs, type PluginBeforeEntityMutationArgs, type ProcedureEnvelope, type ProcedureFunc, type ProcedureHandlerFunc, type ProcedureOperations, type ProceduresOptions, type ProceedKyselyQueryFunction, type QueryOptions, queryUtils as QueryUtils, RejectedByPolicyReason, type RuntimePlugin, schemaUtils as SchemaUtils, type SelectAwareExtResult, type SelectIncludeOmit, type SelectInput, type SelectSubset, type SimplifiedPlainResult, type SimplifiedResult, type SlicingOptions, type SortOrder, type StringFilter, type Subset, type ToKysely, type TransactionClientContract, TransactionIsolationLevel, type TypeDefResult, type TypedJsonFilter, type UpdateArgs, type UpdateInput, type UpdateManyAndReturnArgs, type UpdateManyArgs, type UpsertArgs, type WhereInput, type WhereUniqueInput, type ZModelFunction, type ZModelFunctionContext, ZenStackClient, type ZenStackPromise, createQuerySchemaFactory, definePlugin, getCrudDialect };