@zenstackhq/runtime 1.0.0-alpha.99 → 1.0.0-beta.2

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.
Files changed (40) hide show
  1. package/constants.d.ts +21 -0
  2. package/constants.js +23 -1
  3. package/constants.js.map +1 -1
  4. package/enhancements/index.d.ts +1 -0
  5. package/enhancements/index.js +1 -0
  6. package/enhancements/index.js.map +1 -1
  7. package/enhancements/model-meta.js +3 -3
  8. package/enhancements/model-meta.js.map +1 -1
  9. package/enhancements/nested-write-vistor.d.ts +13 -13
  10. package/enhancements/nested-write-vistor.js +80 -53
  11. package/enhancements/nested-write-vistor.js.map +1 -1
  12. package/enhancements/omit.d.ts +10 -1
  13. package/enhancements/omit.js +4 -3
  14. package/enhancements/omit.js.map +1 -1
  15. package/enhancements/password.d.ts +10 -1
  16. package/enhancements/password.js +3 -2
  17. package/enhancements/password.js.map +1 -1
  18. package/enhancements/policy/handler.d.ts +3 -1
  19. package/enhancements/policy/handler.js +94 -33
  20. package/enhancements/policy/handler.js.map +1 -1
  21. package/enhancements/policy/index.d.ts +18 -1
  22. package/enhancements/policy/index.js +6 -5
  23. package/enhancements/policy/index.js.map +1 -1
  24. package/enhancements/policy/logger.d.ts +9 -1
  25. package/enhancements/policy/logger.js +14 -3
  26. package/enhancements/policy/logger.js.map +1 -1
  27. package/enhancements/policy/policy-utils.d.ts +8 -7
  28. package/enhancements/policy/policy-utils.js +145 -106
  29. package/enhancements/policy/policy-utils.js.map +1 -1
  30. package/enhancements/preset.d.ts +9 -7
  31. package/enhancements/preset.js +3 -6
  32. package/enhancements/preset.js.map +1 -1
  33. package/enhancements/proxy.js +62 -1
  34. package/enhancements/proxy.js.map +1 -1
  35. package/enhancements/utils.d.ts +12 -4
  36. package/enhancements/utils.js +75 -11
  37. package/enhancements/utils.js.map +1 -1
  38. package/package.json +7 -6
  39. package/version.js +1 -0
  40. package/version.js.map +1 -1
@@ -11,8 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.PolicyProxyHandler = void 0;
14
- const runtime_1 = require("@prisma/client/runtime");
15
- const sdk_1 = require("@zenstackhq/sdk");
14
+ const constants_1 = require("../../constants");
16
15
  const utils_1 = require("../utils");
17
16
  const logger_1 = require("./logger");
18
17
  const policy_utils_1 = require("./policy-utils");
@@ -20,14 +19,15 @@ const policy_utils_1 = require("./policy-utils");
20
19
  * Prisma proxy handler for injecting access policy check.
21
20
  */
22
21
  class PolicyProxyHandler {
23
- constructor(prisma, policy, modelMeta, model, user) {
22
+ constructor(prisma, policy, modelMeta, model, user, logPrismaQuery) {
24
23
  this.prisma = prisma;
25
24
  this.policy = policy;
26
25
  this.modelMeta = modelMeta;
27
26
  this.model = model;
28
27
  this.user = user;
28
+ this.logPrismaQuery = logPrismaQuery;
29
29
  this.logger = new logger_1.Logger(prisma);
30
- this.utils = new policy_utils_1.PolicyUtil(this.prisma, this.modelMeta, this.policy, this.user);
30
+ this.utils = new policy_utils_1.PolicyUtil(this.prisma, this.modelMeta, this.policy, this.user, this.logPrismaQuery);
31
31
  }
32
32
  get modelClient() {
33
33
  return this.prisma[this.model];
@@ -36,10 +36,14 @@ class PolicyProxyHandler {
36
36
  var _a;
37
37
  return __awaiter(this, void 0, void 0, function* () {
38
38
  if (!args) {
39
- throw new runtime_1.PrismaClientValidationError('query argument is required');
39
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
40
40
  }
41
41
  if (!args.where) {
42
- throw new runtime_1.PrismaClientValidationError('where field is required in query argument');
42
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'where field is required in query argument');
43
+ }
44
+ const guard = yield this.utils.getAuthGuard(this.model, 'read');
45
+ if (guard === false) {
46
+ return null;
43
47
  }
44
48
  const entities = yield this.utils.readWithCheck(this.model, args);
45
49
  return (_a = entities[0]) !== null && _a !== void 0 ? _a : null;
@@ -47,6 +51,10 @@ class PolicyProxyHandler {
47
51
  }
48
52
  findUniqueOrThrow(args) {
49
53
  return __awaiter(this, void 0, void 0, function* () {
54
+ const guard = yield this.utils.getAuthGuard(this.model, 'read');
55
+ if (guard === false) {
56
+ throw this.utils.notFound(this.model);
57
+ }
50
58
  const entity = yield this.findUnique(args);
51
59
  if (!entity) {
52
60
  throw this.utils.notFound(this.model);
@@ -57,12 +65,20 @@ class PolicyProxyHandler {
57
65
  findFirst(args) {
58
66
  var _a;
59
67
  return __awaiter(this, void 0, void 0, function* () {
68
+ const guard = yield this.utils.getAuthGuard(this.model, 'read');
69
+ if (guard === false) {
70
+ return null;
71
+ }
60
72
  const entities = yield this.utils.readWithCheck(this.model, args);
61
73
  return (_a = entities[0]) !== null && _a !== void 0 ? _a : null;
62
74
  });
63
75
  }
64
76
  findFirstOrThrow(args) {
65
77
  return __awaiter(this, void 0, void 0, function* () {
78
+ const guard = yield this.utils.getAuthGuard(this.model, 'read');
79
+ if (guard === false) {
80
+ throw this.utils.notFound(this.model);
81
+ }
66
82
  const entity = yield this.findFirst(args);
67
83
  if (!entity) {
68
84
  throw this.utils.notFound(this.model);
@@ -72,23 +88,32 @@ class PolicyProxyHandler {
72
88
  }
73
89
  findMany(args) {
74
90
  return __awaiter(this, void 0, void 0, function* () {
91
+ const guard = yield this.utils.getAuthGuard(this.model, 'read');
92
+ if (guard === false) {
93
+ return [];
94
+ }
75
95
  return this.utils.readWithCheck(this.model, args);
76
96
  });
77
97
  }
78
98
  create(args) {
79
99
  return __awaiter(this, void 0, void 0, function* () {
80
100
  if (!args) {
81
- throw new runtime_1.PrismaClientValidationError('query argument is required');
101
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
82
102
  }
83
103
  if (!args.data) {
84
- throw new runtime_1.PrismaClientValidationError('data field is required in query argument');
104
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'data field is required in query argument');
85
105
  }
86
106
  yield this.tryReject('create');
87
107
  const origArgs = args;
88
108
  args = this.utils.clone(args);
89
109
  // use a transaction to wrap the write so it can be reverted if the created
90
110
  // entity fails access policies
91
- const result = yield this.utils.processWrite(this.model, 'create', args, (dbOps, writeArgs) => dbOps.create(writeArgs));
111
+ const result = yield this.utils.processWrite(this.model, 'create', args, (dbOps, writeArgs) => {
112
+ if (this.shouldLogQuery) {
113
+ this.logger.info(`[withPolicy] \`create\`: ${(0, utils_1.formatObject)(writeArgs)}`);
114
+ }
115
+ return dbOps.create(writeArgs);
116
+ });
92
117
  const ids = this.utils.getEntityIds(this.model, result);
93
118
  if (Object.keys(ids).length === 0) {
94
119
  throw this.utils.unknownError(`unexpected error: create didn't return an id`);
@@ -99,36 +124,46 @@ class PolicyProxyHandler {
99
124
  createMany(args, skipDuplicates) {
100
125
  return __awaiter(this, void 0, void 0, function* () {
101
126
  if (!args) {
102
- throw new runtime_1.PrismaClientValidationError('query argument is required');
127
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
103
128
  }
104
129
  if (!args.data) {
105
- throw new runtime_1.PrismaClientValidationError('data field is required and must be an array');
130
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'data field is required and must be an array');
106
131
  }
107
132
  yield this.tryReject('create');
108
133
  args = this.utils.clone(args);
109
134
  // use a transaction to wrap the write so it can be reverted if any created
110
135
  // entity fails access policies
111
- const result = yield this.utils.processWrite(this.model, 'create', args, (dbOps, writeArgs) => dbOps.createMany(writeArgs, skipDuplicates));
136
+ const result = yield this.utils.processWrite(this.model, 'create', args, (dbOps, writeArgs) => {
137
+ if (this.shouldLogQuery) {
138
+ this.logger.info(`[withPolicy] \`createMany\`: ${(0, utils_1.formatObject)(writeArgs)}`);
139
+ }
140
+ return dbOps.createMany(writeArgs, skipDuplicates);
141
+ });
112
142
  return result;
113
143
  });
114
144
  }
115
145
  update(args) {
116
146
  return __awaiter(this, void 0, void 0, function* () {
117
147
  if (!args) {
118
- throw new runtime_1.PrismaClientValidationError('query argument is required');
148
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
119
149
  }
120
150
  if (!args.where) {
121
- throw new runtime_1.PrismaClientValidationError('where field is required in query argument');
151
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'where field is required in query argument');
122
152
  }
123
153
  if (!args.data) {
124
- throw new runtime_1.PrismaClientValidationError('data field is required in query argument');
154
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'data field is required in query argument');
125
155
  }
126
156
  yield this.tryReject('update');
127
157
  const origArgs = args;
128
158
  args = this.utils.clone(args);
129
159
  // use a transaction to wrap the write so it can be reverted if any nested
130
160
  // create fails access policies
131
- const result = yield this.utils.processWrite(this.model, 'update', args, (dbOps, writeArgs) => dbOps.update(writeArgs));
161
+ const result = yield this.utils.processWrite(this.model, 'update', args, (dbOps, writeArgs) => {
162
+ if (this.shouldLogQuery) {
163
+ this.logger.info(`[withPolicy] \`update\`: ${(0, utils_1.formatObject)(writeArgs)}`);
164
+ }
165
+ return dbOps.update(writeArgs);
166
+ });
132
167
  const ids = this.utils.getEntityIds(this.model, result);
133
168
  if (Object.keys(ids).length === 0) {
134
169
  throw this.utils.unknownError(`unexpected error: update didn't return an id`);
@@ -139,32 +174,37 @@ class PolicyProxyHandler {
139
174
  updateMany(args) {
140
175
  return __awaiter(this, void 0, void 0, function* () {
141
176
  if (!args) {
142
- throw new runtime_1.PrismaClientValidationError('query argument is required');
177
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
143
178
  }
144
179
  if (!args.data) {
145
- throw new runtime_1.PrismaClientValidationError('data field is required in query argument');
180
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'data field is required in query argument');
146
181
  }
147
182
  yield this.tryReject('update');
148
183
  args = this.utils.clone(args);
149
184
  // use a transaction to wrap the write so it can be reverted if any nested
150
185
  // create fails access policies
151
- const result = yield this.utils.processWrite(this.model, 'updateMany', args, (dbOps, writeArgs) => dbOps.updateMany(writeArgs));
186
+ const result = yield this.utils.processWrite(this.model, 'updateMany', args, (dbOps, writeArgs) => {
187
+ if (this.shouldLogQuery) {
188
+ this.logger.info(`[withPolicy] \`updateMany\`: ${(0, utils_1.formatObject)(writeArgs)}`);
189
+ }
190
+ return dbOps.updateMany(writeArgs);
191
+ });
152
192
  return result;
153
193
  });
154
194
  }
155
195
  upsert(args) {
156
196
  return __awaiter(this, void 0, void 0, function* () {
157
197
  if (!args) {
158
- throw new runtime_1.PrismaClientValidationError('query argument is required');
198
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
159
199
  }
160
200
  if (!args.where) {
161
- throw new runtime_1.PrismaClientValidationError('where field is required in query argument');
201
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'where field is required in query argument');
162
202
  }
163
203
  if (!args.create) {
164
- throw new runtime_1.PrismaClientValidationError('create field is required in query argument');
204
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'create field is required in query argument');
165
205
  }
166
206
  if (!args.update) {
167
- throw new runtime_1.PrismaClientValidationError('update field is required in query argument');
207
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'update field is required in query argument');
168
208
  }
169
209
  const origArgs = args;
170
210
  args = this.utils.clone(args);
@@ -172,7 +212,12 @@ class PolicyProxyHandler {
172
212
  yield this.tryReject('update');
173
213
  // use a transaction to wrap the write so it can be reverted if any nested
174
214
  // create fails access policies
175
- const result = yield this.utils.processWrite(this.model, 'upsert', args, (dbOps, writeArgs) => dbOps.upsert(writeArgs));
215
+ const result = yield this.utils.processWrite(this.model, 'upsert', args, (dbOps, writeArgs) => {
216
+ if (this.shouldLogQuery) {
217
+ this.logger.info(`[withPolicy] \`upsert\`: ${(0, utils_1.formatObject)(writeArgs)}`);
218
+ }
219
+ return dbOps.upsert(writeArgs);
220
+ });
176
221
  const ids = this.utils.getEntityIds(this.model, result);
177
222
  if (Object.keys(ids).length === 0) {
178
223
  throw this.utils.unknownError(`unexpected error: upsert didn't return an id`);
@@ -183,10 +228,10 @@ class PolicyProxyHandler {
183
228
  delete(args) {
184
229
  return __awaiter(this, void 0, void 0, function* () {
185
230
  if (!args) {
186
- throw new runtime_1.PrismaClientValidationError('query argument is required');
231
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
187
232
  }
188
233
  if (!args.where) {
189
- throw new runtime_1.PrismaClientValidationError('where field is required in query argument');
234
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'where field is required in query argument');
190
235
  }
191
236
  yield this.tryReject('delete');
192
237
  // ensures the item under deletion passes policy check
@@ -202,10 +247,12 @@ class PolicyProxyHandler {
202
247
  readResult = undefined;
203
248
  }
204
249
  // conduct the deletion
205
- this.logger.info(`Conducting delete ${this.model}:\n${(0, utils_1.formatObject)(args)}`);
250
+ if (this.shouldLogQuery) {
251
+ this.logger.info(`[withPolicy] \`delete\`:\n${(0, utils_1.formatObject)(args)}`);
252
+ }
206
253
  yield this.modelClient.delete(args);
207
254
  if (!readResult) {
208
- throw this.utils.deniedByPolicy(this.model, 'delete', 'result is not allowed to be read back', sdk_1.CrudFailureReason.RESULT_NOT_READABLE);
255
+ throw this.utils.deniedByPolicy(this.model, 'delete', 'result is not allowed to be read back', constants_1.CrudFailureReason.RESULT_NOT_READABLE);
209
256
  }
210
257
  else {
211
258
  return readResult;
@@ -219,29 +266,37 @@ class PolicyProxyHandler {
219
266
  args = args !== null && args !== void 0 ? args : {};
220
267
  yield this.utils.injectAuthGuard(args, this.model, 'delete');
221
268
  // conduct the deletion
222
- this.logger.info(`Conducting deleteMany ${this.model}:\n${(0, utils_1.formatObject)(args)}`);
269
+ if (this.shouldLogQuery) {
270
+ this.logger.info(`[withPolicy] \`deleteMany\`:\n${(0, utils_1.formatObject)(args)}`);
271
+ }
223
272
  return this.modelClient.deleteMany(args);
224
273
  });
225
274
  }
226
275
  aggregate(args) {
227
276
  return __awaiter(this, void 0, void 0, function* () {
228
277
  if (!args) {
229
- throw new runtime_1.PrismaClientValidationError('query argument is required');
278
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
230
279
  }
231
280
  yield this.tryReject('read');
232
281
  // inject policy conditions
233
282
  yield this.utils.injectAuthGuard(args, this.model, 'read');
283
+ if (this.shouldLogQuery) {
284
+ this.logger.info(`[withPolicy] \`aggregate\`:\n${(0, utils_1.formatObject)(args)}`);
285
+ }
234
286
  return this.modelClient.aggregate(args);
235
287
  });
236
288
  }
237
289
  groupBy(args) {
238
290
  return __awaiter(this, void 0, void 0, function* () {
239
291
  if (!args) {
240
- throw new runtime_1.PrismaClientValidationError('query argument is required');
292
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, 'query argument is required');
241
293
  }
242
294
  yield this.tryReject('read');
243
295
  // inject policy conditions
244
296
  yield this.utils.injectAuthGuard(args, this.model, 'read');
297
+ if (this.shouldLogQuery) {
298
+ this.logger.info(`[withPolicy] \`groupBy\`:\n${(0, utils_1.formatObject)(args)}`);
299
+ }
245
300
  return this.modelClient.groupBy(args);
246
301
  });
247
302
  }
@@ -251,6 +306,9 @@ class PolicyProxyHandler {
251
306
  // inject policy conditions
252
307
  args = args !== null && args !== void 0 ? args : {};
253
308
  yield this.utils.injectAuthGuard(args, this.model, 'read');
309
+ if (this.shouldLogQuery) {
310
+ this.logger.info(`[withPolicy] \`count\`:\n${(0, utils_1.formatObject)(args)}`);
311
+ }
254
312
  return this.modelClient.count(args);
255
313
  });
256
314
  }
@@ -267,8 +325,8 @@ class PolicyProxyHandler {
267
325
  const readArgs = { select: origArgs.select, include: origArgs.include, where: ids };
268
326
  const result = yield this.utils.readWithCheck(this.model, readArgs);
269
327
  if (result.length === 0) {
270
- this.logger.warn(`${action} result cannot be read back`);
271
- throw this.utils.deniedByPolicy(this.model, operation, 'result is not allowed to be read back', sdk_1.CrudFailureReason.RESULT_NOT_READABLE);
328
+ this.logger.info(`${action} result cannot be read back`);
329
+ throw this.utils.deniedByPolicy(this.model, operation, 'result is not allowed to be read back', constants_1.CrudFailureReason.RESULT_NOT_READABLE);
272
330
  }
273
331
  else if (result.length > 1) {
274
332
  throw this.utils.unknownError('write unexpected resulted in multiple readback entities');
@@ -276,6 +334,9 @@ class PolicyProxyHandler {
276
334
  return result[0];
277
335
  });
278
336
  }
337
+ get shouldLogQuery() {
338
+ return this.logPrismaQuery && this.logger.enabled('info');
339
+ }
279
340
  }
280
341
  exports.PolicyProxyHandler = PolicyProxyHandler;
281
342
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,23 @@ import { ModelMeta, PolicyDef } from '../types';
6
6
  export type WithPolicyContext = {
7
7
  user?: AuthUser;
8
8
  };
9
+ /**
10
+ * Options for @see withPolicy
11
+ */
12
+ export type WithPolicyOptions = {
13
+ /**
14
+ * Policy definition
15
+ */
16
+ policy?: PolicyDef;
17
+ /**
18
+ * Model metatadata
19
+ */
20
+ modelMeta?: ModelMeta;
21
+ /**
22
+ * Whether to log Prisma query
23
+ */
24
+ logPrismaQuery?: boolean;
25
+ };
9
26
  /**
10
27
  * Gets an enhanced Prisma client with access policy check.
11
28
  *
@@ -14,4 +31,4 @@ export type WithPolicyContext = {
14
31
  * @param policy The policy definition, will be loaded from default location if not provided
15
32
  * @param modelMeta The model metadata, will be loaded from default location if not provided
16
33
  */
17
- export declare function withPolicy<DbClient extends object>(prisma: DbClient, context?: WithPolicyContext, policy?: PolicyDef, modelMeta?: ModelMeta): DbClient;
34
+ export declare function withPolicy<DbClient extends object>(prisma: DbClient, context?: WithPolicyContext, options?: WithPolicyOptions): DbClient;
@@ -13,10 +13,11 @@ const handler_1 = require("./handler");
13
13
  * @param policy The policy definition, will be loaded from default location if not provided
14
14
  * @param modelMeta The model metadata, will be loaded from default location if not provided
15
15
  */
16
- function withPolicy(prisma, context, policy, modelMeta) {
17
- const _policy = policy !== null && policy !== void 0 ? policy : getDefaultPolicy();
18
- const _modelMeta = modelMeta !== null && modelMeta !== void 0 ? modelMeta : (0, model_meta_1.getDefaultModelMeta)();
19
- return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new handler_1.PolicyProxyHandler(_prisma, _policy, _modelMeta, model, context === null || context === void 0 ? void 0 : context.user), 'policy');
16
+ function withPolicy(prisma, context, options) {
17
+ var _a, _b;
18
+ const _policy = (_a = options === null || options === void 0 ? void 0 : options.policy) !== null && _a !== void 0 ? _a : getDefaultPolicy();
19
+ const _modelMeta = (_b = options === null || options === void 0 ? void 0 : options.modelMeta) !== null && _b !== void 0 ? _b : (0, model_meta_1.getDefaultModelMeta)();
20
+ return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new handler_1.PolicyProxyHandler(_prisma, _policy, _modelMeta, model, context === null || context === void 0 ? void 0 : context.user, options === null || options === void 0 ? void 0 : options.logPrismaQuery), 'policy');
20
21
  }
21
22
  exports.withPolicy = withPolicy;
22
23
  function getDefaultPolicy() {
@@ -25,7 +26,7 @@ function getDefaultPolicy() {
25
26
  return require('.zenstack/policy').default;
26
27
  }
27
28
  catch (_a) {
28
- throw new Error('Policy definition cannot be loaded from default location');
29
+ throw new Error('Policy definition cannot be loaded from default location. Please make sure "zenstack generate" has been run.');
29
30
  }
30
31
  }
31
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enhancements/policy/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAGvD,8CAAoD;AACpD,oCAAqC;AAErC,uCAA+C;AAS/C;;;;;;;GAOG;AACH,SAAgB,UAAU,CACtB,MAAgB,EAChB,OAA2B,EAC3B,MAAkB,EAClB,SAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,gBAAgB,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAA,gCAAmB,GAAE,CAAC;IACtD,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACf,IAAI,4BAAkB,CAAC,OAA2B,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,EAClG,QAAQ,CACX,CAAC;AACN,CAAC;AAfD,gCAeC;AAED,SAAS,gBAAgB;IACrB,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;KAC9C;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC/E;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enhancements/policy/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAGvD,8CAAoD;AACpD,oCAAqC;AAErC,uCAA+C;AA6B/C;;;;;;;GAOG;AACH,SAAgB,UAAU,CACtB,MAAgB,EAChB,OAA2B,EAC3B,OAA2B;;IAE3B,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,gBAAgB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,IAAA,gCAAmB,GAAE,CAAC;IAC/D,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACf,IAAI,4BAAkB,CAClB,OAA2B,EAC3B,OAAO,EACP,UAAU,EACV,KAAK,EACL,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EACb,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAC1B,EACL,QAAQ,CACX,CAAC;AACN,CAAC;AArBD,gCAqBC;AAED,SAAS,gBAAgB;IACrB,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;KAC9C;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CACX,8GAA8G,CACjH,CAAC;KACL;AACL,CAAC"}
@@ -3,8 +3,16 @@
3
3
  */
4
4
  export declare class Logger {
5
5
  private readonly prisma;
6
+ private emitter;
7
+ private eventNames;
6
8
  constructor(prisma: any);
7
- private get emitter();
9
+ /**
10
+ * Checks if a log level is enabled.
11
+ */
12
+ enabled(level: 'info' | 'warn' | 'error'): boolean;
13
+ /**
14
+ * Generates a message with the given level.
15
+ */
8
16
  log(level: 'info' | 'warn' | 'error', message: string): void;
9
17
  /**
10
18
  * Generates a log message with info level.
@@ -8,11 +8,22 @@ exports.Logger = void 0;
8
8
  class Logger {
9
9
  constructor(prisma) {
10
10
  this.prisma = prisma;
11
- }
12
- get emitter() {
11
+ this.eventNames = [];
13
12
  const engine = this.prisma.getEngine();
14
- return engine ? engine.logEmitter : undefined;
13
+ this.emitter = engine ? engine.logEmitter : undefined;
14
+ if (this.emitter) {
15
+ this.eventNames = this.emitter.eventNames();
16
+ }
17
+ }
18
+ /**
19
+ * Checks if a log level is enabled.
20
+ */
21
+ enabled(level) {
22
+ return !!this.eventNames.includes(level);
15
23
  }
24
+ /**
25
+ * Generates a message with the given level.
26
+ */
16
27
  log(level, message) {
17
28
  var _a;
18
29
  (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.emit(level, {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/enhancements/policy/logger.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAIvD;;GAEG;AACH,MAAa,MAAM;IACf,YAA6B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;IAAG,CAAC;IAE5C,IAAY,OAAO;QACf,MAAM,MAAM,GAAI,IAAI,CAAC,MAAc,CAAC,SAAS,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,UAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAEM,GAAG,CAAC,KAAgC,EAAE,OAAe;;QACxD,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;YACP,MAAM,EAAE,UAAU;SACrB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAe;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ;AApCD,wBAoCC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/enhancements/policy/logger.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAIvD;;GAEG;AACH,MAAa,MAAM;IAIf,YAA6B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAFhC,eAAU,GAA2B,EAAE,CAAC;QAG5C,MAAM,MAAM,GAAI,IAAI,CAAC,MAAc,CAAC,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAE,MAAM,CAAC,UAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;SAC/C;IACL,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,KAAgC;QAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAgC,EAAE,OAAe;;QACxD,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;YACP,MAAM,EAAE,UAAU;SACrB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,OAAe;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAe;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ;AAlDD,wBAkDC"}
@@ -1,5 +1,4 @@
1
- import { PrismaClientKnownRequestError, PrismaClientUnknownRequestError } from '@prisma/client/runtime';
2
- import { CrudFailureReason } from '@zenstackhq/sdk';
1
+ import { CrudFailureReason } from '../../constants';
3
2
  import { AuthUser, DbClientContract, DbOperations, FieldInfo, PolicyOperationKind, PrismaWriteActionType } from '../../types';
4
3
  import { ModelMeta, PolicyDef } from '../types';
5
4
  /**
@@ -10,8 +9,9 @@ export declare class PolicyUtil {
10
9
  private readonly modelMeta;
11
10
  private readonly policy;
12
11
  private readonly user?;
12
+ private readonly logPrismaQuery?;
13
13
  private readonly logger;
14
- constructor(db: DbClientContract, modelMeta: ModelMeta, policy: PolicyDef, user?: AuthUser | undefined);
14
+ constructor(db: DbClientContract, modelMeta: ModelMeta, policy: PolicyDef, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
15
15
  /**
16
16
  * Creates a conjunction of a list of query conditions.
17
17
  */
@@ -63,15 +63,15 @@ export declare class PolicyUtil {
63
63
  * (which can't be trimmed at query time) and removes fields that should be
64
64
  * omitted.
65
65
  */
66
- postProcessForRead(entityData: any, model: string, args: any, operation: PolicyOperationKind): Promise<void>;
66
+ postProcessForRead(data: any, model: string, args: any, operation: PolicyOperationKind): Promise<void>;
67
67
  /**
68
68
  * Process Prisma write actions.
69
69
  */
70
70
  processWrite(model: string, action: PrismaWriteActionType, args: any, writeAction: (dbOps: DbOperations, writeArgs: any) => Promise<unknown>): Promise<any>;
71
71
  private transaction;
72
- deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string, reason?: CrudFailureReason): PrismaClientKnownRequestError;
73
- notFound(model: string): PrismaClientKnownRequestError;
74
- unknownError(message: string): PrismaClientUnknownRequestError;
72
+ deniedByPolicy(model: string, operation: PolicyOperationKind, extra?: string, reason?: CrudFailureReason): Error;
73
+ notFound(model: string): Error;
74
+ unknownError(message: string): void;
75
75
  /**
76
76
  * Given a filter, check if applying access policy filtering will result
77
77
  * in data being trimmed, and if so, throw an error.
@@ -91,4 +91,5 @@ export declare class PolicyUtil {
91
91
  * Gets id field value from an entity.
92
92
  */
93
93
  getEntityIds(model: string, entityData: any): Record<string, unknown>;
94
+ private get shouldLogQuery();
94
95
  }