@zenstackhq/runtime 0.6.0-pre.19 → 1.0.0-alpha.100
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/enhancements/nested-write-vistor.d.ts +9 -4
- package/enhancements/nested-write-vistor.js +28 -10
- package/enhancements/nested-write-vistor.js.map +1 -1
- package/enhancements/policy/handler.js +17 -14
- package/enhancements/policy/handler.js.map +1 -1
- package/enhancements/policy/policy-utils.d.ts +19 -3
- package/enhancements/policy/policy-utils.js +239 -59
- package/enhancements/policy/policy-utils.js.map +1 -1
- package/enhancements/preset.d.ts +11 -2
- package/enhancements/preset.js +11 -2
- package/enhancements/preset.js.map +1 -1
- package/enhancements/proxy.js +3 -3
- package/enhancements/proxy.js.map +1 -1
- package/enhancements/types.d.ts +9 -0
- package/enhancements/utils.d.ts +1 -0
- package/enhancements/utils.js +30 -2
- package/enhancements/utils.js.map +1 -1
- package/error.d.ts +1 -0
- package/error.js.map +1 -1
- package/package.json +6 -7
- package/types.d.ts +30 -9
- package/types.js +2 -0
- package/types.js.map +1 -1
- package/validation.d.ts +7 -0
- package/validation.js +15 -1
- package/validation.js.map +1 -1
- package/version.js +6 -1
- package/version.js.map +1 -1
- package/zod.d.ts +10 -0
- package/zod.js +17 -0
- package/zod.js.map +1 -0
- package/client.d.ts +0 -2
- package/client.js +0 -28
- package/client.js.map +0 -1
- package/request.d.ts +0 -37
- package/request.js +0 -161
- package/request.js.map +0 -1
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { FieldInfo, PrismaWriteActionType } from '../types';
|
|
2
2
|
import { ModelMeta } from './types';
|
|
3
3
|
import { Enumerable } from './utils';
|
|
4
|
+
type NestingPathItem = {
|
|
5
|
+
field?: FieldInfo;
|
|
6
|
+
where: any;
|
|
7
|
+
unique: boolean;
|
|
8
|
+
};
|
|
4
9
|
/**
|
|
5
10
|
* Context for visiting
|
|
6
11
|
*/
|
|
@@ -16,10 +21,7 @@ export type VisitorContext = {
|
|
|
16
21
|
/**
|
|
17
22
|
* A top-down path of all nested update conditions and corresponding field till now
|
|
18
23
|
*/
|
|
19
|
-
nestingPath:
|
|
20
|
-
field?: FieldInfo;
|
|
21
|
-
where: any;
|
|
22
|
-
}[];
|
|
24
|
+
nestingPath: NestingPathItem[];
|
|
23
25
|
};
|
|
24
26
|
/**
|
|
25
27
|
* NestedWriteVisitor's callback actions
|
|
@@ -30,6 +32,8 @@ export type NestedWriterVisitorCallback = {
|
|
|
30
32
|
where: object;
|
|
31
33
|
create: any;
|
|
32
34
|
}>, context: VisitorContext) => Promise<void>;
|
|
35
|
+
connect?: (model: string, args: Enumerable<object>, context: VisitorContext) => Promise<void>;
|
|
36
|
+
disconnect?: (model: string, args: Enumerable<object>, context: VisitorContext) => Promise<void>;
|
|
33
37
|
update?: (model: string, args: Enumerable<{
|
|
34
38
|
where: object;
|
|
35
39
|
data: any;
|
|
@@ -63,3 +67,4 @@ export declare class NestedWriteVisitor {
|
|
|
63
67
|
visit(model: string, action: PrismaWriteActionType, args: any): Promise<void>;
|
|
64
68
|
private doVisit;
|
|
65
69
|
}
|
|
70
|
+
export {};
|
|
@@ -37,6 +37,7 @@ class NestedWriteVisitor {
|
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
let topData = args;
|
|
40
|
+
// const topWhere = { ...topData.where };
|
|
40
41
|
switch (action) {
|
|
41
42
|
// create has its data wrapped in 'data' field
|
|
42
43
|
case 'create':
|
|
@@ -61,7 +62,7 @@ class NestedWriteVisitor {
|
|
|
61
62
|
// visit payload
|
|
62
63
|
switch (action) {
|
|
63
64
|
case 'create':
|
|
64
|
-
context.nestingPath.push({ field, where: {} });
|
|
65
|
+
context.nestingPath.push({ field, where: {}, unique: false });
|
|
65
66
|
if (this.callback.create) {
|
|
66
67
|
yield this.callback.create(model, data, context);
|
|
67
68
|
}
|
|
@@ -70,7 +71,7 @@ class NestedWriteVisitor {
|
|
|
70
71
|
case 'createMany':
|
|
71
72
|
// skip the 'data' layer so as to keep consistency with 'create'
|
|
72
73
|
if (data.data) {
|
|
73
|
-
context.nestingPath.push({ field, where: {} });
|
|
74
|
+
context.nestingPath.push({ field, where: {}, unique: false });
|
|
74
75
|
if (this.callback.create) {
|
|
75
76
|
yield this.callback.create(model, data.data, context);
|
|
76
77
|
}
|
|
@@ -78,28 +79,43 @@ class NestedWriteVisitor {
|
|
|
78
79
|
}
|
|
79
80
|
break;
|
|
80
81
|
case 'connectOrCreate':
|
|
81
|
-
context.nestingPath.push({ field, where: data.where });
|
|
82
|
+
context.nestingPath.push({ field, where: data.where, unique: true });
|
|
82
83
|
if (this.callback.connectOrCreate) {
|
|
83
84
|
yield this.callback.connectOrCreate(model, data, context);
|
|
84
85
|
}
|
|
85
86
|
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.create));
|
|
86
87
|
break;
|
|
88
|
+
case 'connect':
|
|
89
|
+
context.nestingPath.push({ field, where: data, unique: true });
|
|
90
|
+
if (this.callback.connect) {
|
|
91
|
+
yield this.callback.connect(model, data, context);
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case 'disconnect':
|
|
95
|
+
// disconnect has two forms:
|
|
96
|
+
// if relation is to-many, the payload is a unique filter object
|
|
97
|
+
// if relation is to-one, the payload can only be boolean `true`
|
|
98
|
+
context.nestingPath.push({ field, where: data, unique: typeof data === 'object' });
|
|
99
|
+
if (this.callback.disconnect) {
|
|
100
|
+
yield this.callback.disconnect(model, data, context);
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
87
103
|
case 'update':
|
|
88
|
-
context.nestingPath.push({ field, where: data.where });
|
|
104
|
+
context.nestingPath.push({ field, where: data.where, unique: false });
|
|
89
105
|
if (this.callback.update) {
|
|
90
106
|
yield this.callback.update(model, data, context);
|
|
91
107
|
}
|
|
92
108
|
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => (isToOneUpdate ? d : d.data)));
|
|
93
109
|
break;
|
|
94
110
|
case 'updateMany':
|
|
95
|
-
context.nestingPath.push({ field, where: data.where });
|
|
111
|
+
context.nestingPath.push({ field, where: data.where, unique: false });
|
|
96
112
|
if (this.callback.updateMany) {
|
|
97
113
|
yield this.callback.updateMany(model, data, context);
|
|
98
114
|
}
|
|
99
115
|
fieldContainers.push(...(0, utils_1.ensureArray)(data));
|
|
100
116
|
break;
|
|
101
117
|
case 'upsert':
|
|
102
|
-
context.nestingPath.push({ field, where: data.where });
|
|
118
|
+
context.nestingPath.push({ field, where: data.where, unique: true });
|
|
103
119
|
if (this.callback.upsert) {
|
|
104
120
|
yield this.callback.upsert(model, data, context);
|
|
105
121
|
}
|
|
@@ -107,13 +123,13 @@ class NestedWriteVisitor {
|
|
|
107
123
|
fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.update));
|
|
108
124
|
break;
|
|
109
125
|
case 'delete':
|
|
110
|
-
context.nestingPath.push({ field, where: data.where });
|
|
126
|
+
context.nestingPath.push({ field, where: data.where, unique: false });
|
|
111
127
|
if (this.callback.delete) {
|
|
112
128
|
yield this.callback.delete(model, data, context);
|
|
113
129
|
}
|
|
114
130
|
break;
|
|
115
131
|
case 'deleteMany':
|
|
116
|
-
context.nestingPath.push({ field, where: data.where });
|
|
132
|
+
context.nestingPath.push({ field, where: data.where, unique: false });
|
|
117
133
|
if (this.callback.deleteMany) {
|
|
118
134
|
yield this.callback.deleteMany(model, data, context);
|
|
119
135
|
}
|
|
@@ -132,7 +148,9 @@ class NestedWriteVisitor {
|
|
|
132
148
|
// recurse into nested payloads
|
|
133
149
|
for (const [subAction, subData] of Object.entries(fieldContainer[field])) {
|
|
134
150
|
if (this.isPrismaWriteAction(subAction) && subData) {
|
|
135
|
-
yield this.doVisit(fieldInfo.type, subAction, subData, fieldContainer[field], fieldInfo,
|
|
151
|
+
yield this.doVisit(fieldInfo.type, subAction, subData, fieldContainer[field], fieldInfo, [
|
|
152
|
+
...context.nestingPath,
|
|
153
|
+
]);
|
|
136
154
|
}
|
|
137
155
|
}
|
|
138
156
|
}
|
|
@@ -141,7 +159,7 @@ class NestedWriteVisitor {
|
|
|
141
159
|
if (this.callback.field) {
|
|
142
160
|
yield this.callback.field(fieldInfo, action, fieldContainer[field], {
|
|
143
161
|
parent: fieldContainer,
|
|
144
|
-
nestingPath: nestingPath,
|
|
162
|
+
nestingPath: [...context.nestingPath],
|
|
145
163
|
field: fieldInfo,
|
|
146
164
|
});
|
|
147
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,uDAAuD;;;;;;;;;;;;AAEvD,oCAAgF;AAChF,6CAA4C;AAE5C,mCAAkE;
|
|
1
|
+
{"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.PolicyProxyHandler = void 0;
|
|
14
14
|
const runtime_1 = require("@prisma/client/runtime");
|
|
15
|
-
const
|
|
15
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
16
|
+
const utils_1 = require("../utils");
|
|
16
17
|
const logger_1 = require("./logger");
|
|
17
18
|
const policy_utils_1 = require("./policy-utils");
|
|
18
19
|
/**
|
|
@@ -88,10 +89,11 @@ class PolicyProxyHandler {
|
|
|
88
89
|
// use a transaction to wrap the write so it can be reverted if the created
|
|
89
90
|
// entity fails access policies
|
|
90
91
|
const result = yield this.utils.processWrite(this.model, 'create', args, (dbOps, writeArgs) => dbOps.create(writeArgs));
|
|
91
|
-
|
|
92
|
+
const ids = this.utils.getEntityIds(this.model, result);
|
|
93
|
+
if (Object.keys(ids).length === 0) {
|
|
92
94
|
throw this.utils.unknownError(`unexpected error: create didn't return an id`);
|
|
93
95
|
}
|
|
94
|
-
return this.checkReadback(origArgs,
|
|
96
|
+
return this.checkReadback(origArgs, ids, 'create', 'create');
|
|
95
97
|
});
|
|
96
98
|
}
|
|
97
99
|
createMany(args, skipDuplicates) {
|
|
@@ -127,10 +129,11 @@ class PolicyProxyHandler {
|
|
|
127
129
|
// use a transaction to wrap the write so it can be reverted if any nested
|
|
128
130
|
// create fails access policies
|
|
129
131
|
const result = yield this.utils.processWrite(this.model, 'update', args, (dbOps, writeArgs) => dbOps.update(writeArgs));
|
|
130
|
-
|
|
132
|
+
const ids = this.utils.getEntityIds(this.model, result);
|
|
133
|
+
if (Object.keys(ids).length === 0) {
|
|
131
134
|
throw this.utils.unknownError(`unexpected error: update didn't return an id`);
|
|
132
135
|
}
|
|
133
|
-
return this.checkReadback(origArgs,
|
|
136
|
+
return this.checkReadback(origArgs, ids, 'update', 'update');
|
|
134
137
|
});
|
|
135
138
|
}
|
|
136
139
|
updateMany(args) {
|
|
@@ -170,10 +173,11 @@ class PolicyProxyHandler {
|
|
|
170
173
|
// use a transaction to wrap the write so it can be reverted if any nested
|
|
171
174
|
// create fails access policies
|
|
172
175
|
const result = yield this.utils.processWrite(this.model, 'upsert', args, (dbOps, writeArgs) => dbOps.upsert(writeArgs));
|
|
173
|
-
|
|
176
|
+
const ids = this.utils.getEntityIds(this.model, result);
|
|
177
|
+
if (Object.keys(ids).length === 0) {
|
|
174
178
|
throw this.utils.unknownError(`unexpected error: upsert didn't return an id`);
|
|
175
179
|
}
|
|
176
|
-
return this.checkReadback(origArgs,
|
|
180
|
+
return this.checkReadback(origArgs, ids, 'upsert', 'update');
|
|
177
181
|
});
|
|
178
182
|
}
|
|
179
183
|
delete(args) {
|
|
@@ -198,10 +202,10 @@ class PolicyProxyHandler {
|
|
|
198
202
|
readResult = undefined;
|
|
199
203
|
}
|
|
200
204
|
// conduct the deletion
|
|
201
|
-
this.logger.info(`Conducting delete ${this.model}:\n${(0,
|
|
205
|
+
this.logger.info(`Conducting delete ${this.model}:\n${(0, utils_1.formatObject)(args)}`);
|
|
202
206
|
yield this.modelClient.delete(args);
|
|
203
207
|
if (!readResult) {
|
|
204
|
-
throw this.utils.deniedByPolicy(this.model, 'delete', 'result not
|
|
208
|
+
throw this.utils.deniedByPolicy(this.model, 'delete', 'result is not allowed to be read back', sdk_1.CrudFailureReason.RESULT_NOT_READABLE);
|
|
205
209
|
}
|
|
206
210
|
else {
|
|
207
211
|
return readResult;
|
|
@@ -215,7 +219,7 @@ class PolicyProxyHandler {
|
|
|
215
219
|
args = args !== null && args !== void 0 ? args : {};
|
|
216
220
|
yield this.utils.injectAuthGuard(args, this.model, 'delete');
|
|
217
221
|
// conduct the deletion
|
|
218
|
-
this.logger.info(`Conducting deleteMany ${this.model}:\n${(0,
|
|
222
|
+
this.logger.info(`Conducting deleteMany ${this.model}:\n${(0, utils_1.formatObject)(args)}`);
|
|
219
223
|
return this.modelClient.deleteMany(args);
|
|
220
224
|
});
|
|
221
225
|
}
|
|
@@ -258,14 +262,13 @@ class PolicyProxyHandler {
|
|
|
258
262
|
}
|
|
259
263
|
});
|
|
260
264
|
}
|
|
261
|
-
checkReadback(origArgs,
|
|
265
|
+
checkReadback(origArgs, ids, action, operation) {
|
|
262
266
|
return __awaiter(this, void 0, void 0, function* () {
|
|
263
|
-
const
|
|
264
|
-
const readArgs = { select: origArgs.select, include: origArgs.include, where: { [idField.name]: id } };
|
|
267
|
+
const readArgs = { select: origArgs.select, include: origArgs.include, where: ids };
|
|
265
268
|
const result = yield this.utils.readWithCheck(this.model, readArgs);
|
|
266
269
|
if (result.length === 0) {
|
|
267
270
|
this.logger.warn(`${action} result cannot be read back`);
|
|
268
|
-
throw this.utils.deniedByPolicy(this.model, operation, 'result not
|
|
271
|
+
throw this.utils.deniedByPolicy(this.model, operation, 'result is not allowed to be read back', sdk_1.CrudFailureReason.RESULT_NOT_READABLE);
|
|
269
272
|
}
|
|
270
273
|
else if (result.length > 1) {
|
|
271
274
|
throw this.utils.unknownError('write unexpected resulted in multiple readback entities');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;AAEvD,oDAAqE;AACrE
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PrismaClientKnownRequestError, PrismaClientUnknownRequestError } from '@prisma/client/runtime';
|
|
2
|
+
import { CrudFailureReason } from '@zenstackhq/sdk';
|
|
2
3
|
import { AuthUser, DbClientContract, DbOperations, FieldInfo, PolicyOperationKind, PrismaWriteActionType } from '../../types';
|
|
3
4
|
import { ModelMeta, PolicyDef } from '../types';
|
|
4
5
|
/**
|
|
@@ -19,6 +20,10 @@ export declare class PolicyUtil {
|
|
|
19
20
|
* Creates a disjunction of a list of query conditions.
|
|
20
21
|
*/
|
|
21
22
|
or(...conditions: (boolean | object)[]): any;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a negation of a query condition.
|
|
25
|
+
*/
|
|
26
|
+
not(condition: object | boolean): any;
|
|
22
27
|
/**
|
|
23
28
|
* Gets pregenerated authorization guard object for a given model and operation.
|
|
24
29
|
*
|
|
@@ -32,6 +37,16 @@ export declare class PolicyUtil {
|
|
|
32
37
|
* Injects model auth guard as where clause.
|
|
33
38
|
*/
|
|
34
39
|
injectAuthGuard(args: any, model: string, operation: PolicyOperationKind): Promise<void>;
|
|
40
|
+
injectGuardForFields(model: string, payload: any, operation: PolicyOperationKind): Promise<void>;
|
|
41
|
+
injectGuardForToManyField(fieldInfo: FieldInfo, payload: {
|
|
42
|
+
some?: any;
|
|
43
|
+
every?: any;
|
|
44
|
+
none?: any;
|
|
45
|
+
}, operation: PolicyOperationKind): Promise<void>;
|
|
46
|
+
injectGuardForToOneField(fieldInfo: FieldInfo, payload: {
|
|
47
|
+
is?: any;
|
|
48
|
+
isNot?: any;
|
|
49
|
+
} & Record<string, any>, operation: PolicyOperationKind): Promise<void>;
|
|
35
50
|
/**
|
|
36
51
|
* Read model entities w.r.t the given query args. The result list
|
|
37
52
|
* are guaranteed to fully satisfy 'read' policy rules recursively.
|
|
@@ -41,6 +56,7 @@ export declare class PolicyUtil {
|
|
|
41
56
|
* an error is thrown.
|
|
42
57
|
*/
|
|
43
58
|
readWithCheck(model: string, args: any): Promise<unknown[]>;
|
|
59
|
+
flattenGeneratedUniqueField(model: string, args: any): Promise<void>;
|
|
44
60
|
private injectNestedReadConditions;
|
|
45
61
|
/**
|
|
46
62
|
* Post processing checks for read model entities. Validates to-one relations
|
|
@@ -53,7 +69,7 @@ export declare class PolicyUtil {
|
|
|
53
69
|
*/
|
|
54
70
|
processWrite(model: string, action: PrismaWriteActionType, args: any, writeAction: (dbOps: DbOperations, writeArgs: any) => Promise<unknown>): Promise<any>;
|
|
55
71
|
private transaction;
|
|
56
|
-
deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string): PrismaClientKnownRequestError;
|
|
72
|
+
deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string, reason?: CrudFailureReason): PrismaClientKnownRequestError;
|
|
57
73
|
notFound(model: string): PrismaClientKnownRequestError;
|
|
58
74
|
unknownError(message: string): PrismaClientUnknownRequestError;
|
|
59
75
|
/**
|
|
@@ -70,9 +86,9 @@ export declare class PolicyUtil {
|
|
|
70
86
|
/**
|
|
71
87
|
* Gets "id" field for a given model.
|
|
72
88
|
*/
|
|
73
|
-
|
|
89
|
+
getIdFields(model: string): FieldInfo[];
|
|
74
90
|
/**
|
|
75
91
|
* Gets id field value from an entity.
|
|
76
92
|
*/
|
|
77
|
-
|
|
93
|
+
getEntityIds(model: string, entityData: any): Record<string, unknown>;
|
|
78
94
|
}
|