@zenstackhq/runtime 3.0.0-alpha.25 → 3.0.0-alpha.27

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.
@@ -1,5 +1,5 @@
1
1
  import Decimal, { Decimal as Decimal$1 } from 'decimal.js';
2
- import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, BuiltinType, GetModel, FieldDef, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsRelationArray, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, DataSourceProviderType, ProcedureDef } from '@zenstackhq/sdk/schema';
2
+ import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetModel, FieldDef, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, BuiltinType, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsRelationArray, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, DataSourceProviderType, ProcedureDef } from '@zenstackhq/sdk/schema';
3
3
  import { Generated, Kysely, ExpressionBuilder, OperandExpression, SqlBool, SelectQueryBuilder, Expression, ExpressionWrapper, OperationNode, RootOperationNode, QueryResult, UnknownRow, Dialect, KyselyConfig } from 'kysely';
4
4
 
5
5
  type Optional<T extends object, K extends keyof T = keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
@@ -201,12 +201,6 @@ type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>
201
201
  include?: IncludeInput<Schema, Model>;
202
202
  omit?: OmitInput<Schema, Model>;
203
203
  };
204
- type Distinct<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
205
- distinct?: OrArray<NonRelationFields<Schema, Model>>;
206
- };
207
- type Cursor<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
208
- cursor?: WhereUniqueInput<Schema, Model>;
209
- };
210
204
  type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
211
205
  [Key in NonRelationFields<Schema, Model>]?: true;
212
206
  } & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
@@ -255,13 +249,18 @@ type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Fiel
255
249
  type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>> = FT extends GetModels<Schema> ? GetRelation<Schema, Model, Field> extends RelationInfo ? GetRelation<Schema, Model, Field>['opposite'] extends GetModelFields<Schema, FT> ? Schema['models'][FT]['fields'][GetRelation<Schema, Model, Field>['opposite']]['relation'] : never : never : never;
256
250
  type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Opposite = OppositeRelation<Schema, Model, Field>> = Opposite extends RelationInfo ? (Opposite['fields'] extends string[] ? Opposite['fields'] : []) : [];
257
251
  type OppositeRelationAndFK<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>, Relation = GetModelField<Schema, Model, Field>['relation'], Opposite = Relation extends RelationInfo ? Relation['opposite'] : never> = FT extends GetModels<Schema> ? Opposite extends GetModelFields<Schema, FT> ? Opposite | OppositeRelationFields<Schema, Model, Field>[number] : never : never;
258
- type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? {
252
+ type FilterArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
253
+ where?: WhereInput<Schema, Model>;
254
+ };
255
+ type SortAndTakeArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
259
256
  skip?: number;
260
257
  take?: number;
261
258
  orderBy?: OrArray<OrderBy<Schema, Model, true, false>>;
262
- } : {}) & (AllowFilter extends true ? {
263
- where?: WhereInput<Schema, Model>;
264
- } : {}) & SelectIncludeOmit<Schema, Model, Collection> & Distinct<Schema, Model> & Cursor<Schema, Model>;
259
+ cursor?: WhereUniqueInput<Schema, Model>;
260
+ };
261
+ type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = ProviderSupportsDistinct<Schema> extends true ? (Collection extends true ? SortAndTakeArgs<Schema, Model> & {
262
+ distinct?: OrArray<NonRelationFields<Schema, Model>>;
263
+ } : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection> : (Collection extends true ? SortAndTakeArgs<Schema, Model> : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection>;
265
264
  type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, true>;
266
265
  type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, false>;
267
266
  type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
@@ -513,7 +512,8 @@ type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Sc
513
512
  type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
514
513
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
515
514
  } extends never ? false : true;
516
- type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider'] extends 'postgresql' ? true : false;
515
+ type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
516
+ type ProviderSupportsDistinct<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
517
517
 
518
518
  type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
519
519
 
@@ -532,7 +532,9 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
532
532
  constructor(schema: Schema, options: ClientOptions<Schema>);
533
533
  transformPrimitive(value: unknown, _type: BuiltinType, _forArrayField: boolean): unknown;
534
534
  buildSelectModel(eb: ExpressionBuilder<any, any>, model: string): SelectQueryBuilder<any, any, {}>;
535
+ buildFilterSortTake(model: GetModels<Schema>, args: FindArgs<Schema, GetModels<Schema>, true>, query: SelectQueryBuilder<any, any, {}>): SelectQueryBuilder<any, any, {}>;
535
536
  buildFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, where: boolean | object | undefined): Expression<SqlBool>;
537
+ private buildCursorFilter;
536
538
  private isLogicalCombinator;
537
539
  protected buildCompositeFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, key: (typeof LOGICAL_COMBINATORS)[number], payload: any): Expression<SqlBool>;
538
540
  private buildRelationFilter;
@@ -602,7 +604,8 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
602
604
  abstract get supportInsertWithDefault(): boolean;
603
605
  }
604
606
 
605
- type CrudOperation = 'findMany' | 'findUnique' | 'findFirst' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'count' | 'aggregate' | 'groupBy';
607
+ type CoreCrudOperation = 'findMany' | 'findUnique' | 'findFirst' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'count' | 'aggregate' | 'groupBy';
608
+ type AllCrudOperation = CoreCrudOperation | 'findUniqueOrThrow' | 'findFirstOrThrow';
606
609
 
607
610
  /**
608
611
  * ZenStack runtime plugin.
@@ -647,7 +650,7 @@ type OnQueryHookContext<Schema extends SchemaDef> = {
647
650
  /**
648
651
  * The operation that is being performed.
649
652
  */
650
- operation: CrudOperation;
653
+ operation: AllCrudOperation;
651
654
  /**
652
655
  * The query arguments.
653
656
  */
@@ -1,5 +1,5 @@
1
1
  import Decimal, { Decimal as Decimal$1 } from 'decimal.js';
2
- import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, BuiltinType, GetModel, FieldDef, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsRelationArray, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, DataSourceProviderType, ProcedureDef } from '@zenstackhq/sdk/schema';
2
+ import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetModel, FieldDef, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, BuiltinType, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsRelationArray, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, DataSourceProviderType, ProcedureDef } from '@zenstackhq/sdk/schema';
3
3
  import { Generated, Kysely, ExpressionBuilder, OperandExpression, SqlBool, SelectQueryBuilder, Expression, ExpressionWrapper, OperationNode, RootOperationNode, QueryResult, UnknownRow, Dialect, KyselyConfig } from 'kysely';
4
4
 
5
5
  type Optional<T extends object, K extends keyof T = keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
@@ -201,12 +201,6 @@ type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>
201
201
  include?: IncludeInput<Schema, Model>;
202
202
  omit?: OmitInput<Schema, Model>;
203
203
  };
204
- type Distinct<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
205
- distinct?: OrArray<NonRelationFields<Schema, Model>>;
206
- };
207
- type Cursor<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
208
- cursor?: WhereUniqueInput<Schema, Model>;
209
- };
210
204
  type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
211
205
  [Key in NonRelationFields<Schema, Model>]?: true;
212
206
  } & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
@@ -255,13 +249,18 @@ type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Fiel
255
249
  type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>> = FT extends GetModels<Schema> ? GetRelation<Schema, Model, Field> extends RelationInfo ? GetRelation<Schema, Model, Field>['opposite'] extends GetModelFields<Schema, FT> ? Schema['models'][FT]['fields'][GetRelation<Schema, Model, Field>['opposite']]['relation'] : never : never : never;
256
250
  type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Opposite = OppositeRelation<Schema, Model, Field>> = Opposite extends RelationInfo ? (Opposite['fields'] extends string[] ? Opposite['fields'] : []) : [];
257
251
  type OppositeRelationAndFK<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>, Relation = GetModelField<Schema, Model, Field>['relation'], Opposite = Relation extends RelationInfo ? Relation['opposite'] : never> = FT extends GetModels<Schema> ? Opposite extends GetModelFields<Schema, FT> ? Opposite | OppositeRelationFields<Schema, Model, Field>[number] : never : never;
258
- type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? {
252
+ type FilterArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
253
+ where?: WhereInput<Schema, Model>;
254
+ };
255
+ type SortAndTakeArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
259
256
  skip?: number;
260
257
  take?: number;
261
258
  orderBy?: OrArray<OrderBy<Schema, Model, true, false>>;
262
- } : {}) & (AllowFilter extends true ? {
263
- where?: WhereInput<Schema, Model>;
264
- } : {}) & SelectIncludeOmit<Schema, Model, Collection> & Distinct<Schema, Model> & Cursor<Schema, Model>;
259
+ cursor?: WhereUniqueInput<Schema, Model>;
260
+ };
261
+ type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = ProviderSupportsDistinct<Schema> extends true ? (Collection extends true ? SortAndTakeArgs<Schema, Model> & {
262
+ distinct?: OrArray<NonRelationFields<Schema, Model>>;
263
+ } : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection> : (Collection extends true ? SortAndTakeArgs<Schema, Model> : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection>;
265
264
  type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, true>;
266
265
  type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, false>;
267
266
  type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
@@ -513,7 +512,8 @@ type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Sc
513
512
  type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
514
513
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
515
514
  } extends never ? false : true;
516
- type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider'] extends 'postgresql' ? true : false;
515
+ type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
516
+ type ProviderSupportsDistinct<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
517
517
 
518
518
  type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
519
519
 
@@ -532,7 +532,9 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
532
532
  constructor(schema: Schema, options: ClientOptions<Schema>);
533
533
  transformPrimitive(value: unknown, _type: BuiltinType, _forArrayField: boolean): unknown;
534
534
  buildSelectModel(eb: ExpressionBuilder<any, any>, model: string): SelectQueryBuilder<any, any, {}>;
535
+ buildFilterSortTake(model: GetModels<Schema>, args: FindArgs<Schema, GetModels<Schema>, true>, query: SelectQueryBuilder<any, any, {}>): SelectQueryBuilder<any, any, {}>;
535
536
  buildFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, where: boolean | object | undefined): Expression<SqlBool>;
537
+ private buildCursorFilter;
536
538
  private isLogicalCombinator;
537
539
  protected buildCompositeFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, key: (typeof LOGICAL_COMBINATORS)[number], payload: any): Expression<SqlBool>;
538
540
  private buildRelationFilter;
@@ -602,7 +604,8 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
602
604
  abstract get supportInsertWithDefault(): boolean;
603
605
  }
604
606
 
605
- type CrudOperation = 'findMany' | 'findUnique' | 'findFirst' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'count' | 'aggregate' | 'groupBy';
607
+ type CoreCrudOperation = 'findMany' | 'findUnique' | 'findFirst' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'count' | 'aggregate' | 'groupBy';
608
+ type AllCrudOperation = CoreCrudOperation | 'findUniqueOrThrow' | 'findFirstOrThrow';
606
609
 
607
610
  /**
608
611
  * ZenStack runtime plugin.
@@ -647,7 +650,7 @@ type OnQueryHookContext<Schema extends SchemaDef> = {
647
650
  /**
648
651
  * The operation that is being performed.
649
652
  */
650
- operation: CrudOperation;
653
+ operation: AllCrudOperation;
651
654
  /**
652
655
  * The query arguments.
653
656
  */