@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.
- package/dist/{contract-BOWN0dwS.d.cts → contract-c8GpEAl3.d.cts} +17 -14
- package/dist/{contract-BOWN0dwS.d.ts → contract-c8GpEAl3.d.ts} +17 -14
- package/dist/index.cjs +120 -152
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +120 -152
- package/dist/index.js.map +1 -1
- package/dist/plugins/policy/index.cjs +59 -24
- package/dist/plugins/policy/index.cjs.map +1 -1
- package/dist/plugins/policy/index.d.cts +1 -1
- package/dist/plugins/policy/index.d.ts +1 -1
- package/dist/plugins/policy/index.js +59 -24
- package/dist/plugins/policy/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -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,
|
|
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
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
|
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:
|
|
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,
|
|
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
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
|
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:
|
|
653
|
+
operation: AllCrudOperation;
|
|
651
654
|
/**
|
|
652
655
|
* The query arguments.
|
|
653
656
|
*/
|