@zenstackhq/runtime 1.0.0-alpha.98 → 1.0.0-beta.1

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 +2 -2
  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 +5 -4
  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
package/constants.d.ts CHANGED
@@ -2,3 +2,24 @@
2
2
  * Default length of password hash salt (used by bcryptjs to hash password)
3
3
  */
4
4
  export declare const DEFAULT_PASSWORD_SALT_LENGTH = 12;
5
+ /**
6
+ * Auxiliary database field for supporting policy check for nested writes
7
+ */
8
+ export declare const TRANSACTION_FIELD_NAME = "zenstack_transaction";
9
+ /**
10
+ * Auxiliary database field for building up policy check queries
11
+ */
12
+ export declare const GUARD_FIELD_NAME = "zenstack_guard";
13
+ /**
14
+ * All Auxiliary fields.
15
+ */
16
+ export declare const AUXILIARY_FIELDS: string[];
17
+ /**
18
+ * Reasons for a CRUD operation to fail.
19
+ */
20
+ export declare enum CrudFailureReason {
21
+ /**
22
+ * CRUD suceeded but the result was not readable.
23
+ */
24
+ RESULT_NOT_READABLE = "RESULT_NOT_READABLE"
25
+ }
package/constants.js CHANGED
@@ -1,8 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
3
+ exports.CrudFailureReason = exports.AUXILIARY_FIELDS = exports.GUARD_FIELD_NAME = exports.TRANSACTION_FIELD_NAME = exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
4
4
  /**
5
5
  * Default length of password hash salt (used by bcryptjs to hash password)
6
6
  */
7
7
  exports.DEFAULT_PASSWORD_SALT_LENGTH = 12;
8
+ /**
9
+ * Auxiliary database field for supporting policy check for nested writes
10
+ */
11
+ exports.TRANSACTION_FIELD_NAME = 'zenstack_transaction';
12
+ /**
13
+ * Auxiliary database field for building up policy check queries
14
+ */
15
+ exports.GUARD_FIELD_NAME = 'zenstack_guard';
16
+ /**
17
+ * All Auxiliary fields.
18
+ */
19
+ exports.AUXILIARY_FIELDS = [exports.TRANSACTION_FIELD_NAME, exports.GUARD_FIELD_NAME];
20
+ /**
21
+ * Reasons for a CRUD operation to fail.
22
+ */
23
+ var CrudFailureReason;
24
+ (function (CrudFailureReason) {
25
+ /**
26
+ * CRUD suceeded but the result was not readable.
27
+ */
28
+ CrudFailureReason["RESULT_NOT_READABLE"] = "RESULT_NOT_READABLE";
29
+ })(CrudFailureReason = exports.CrudFailureReason || (exports.CrudFailureReason = {}));
8
30
  //# sourceMappingURL=constants.js.map
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACU,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,8BAAsB,EAAE,wBAAgB,CAAC,CAAC;AAE3E;;GAEG;AACH,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB;;OAEG;IACH,gEAA2C,CAAA;AAC/C,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
@@ -2,3 +2,4 @@ export * from './omit';
2
2
  export * from './password';
3
3
  export * from './policy';
4
4
  export * from './preset';
5
+ export * from './utils';
@@ -18,4 +18,5 @@ __exportStar(require("./omit"), exports);
18
18
  __exportStar(require("./password"), exports);
19
19
  __exportStar(require("./policy"), exports);
20
20
  __exportStar(require("./preset"), exports);
21
+ __exportStar(require("./utils"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enhancements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enhancements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveField = exports.getDefaultModelMeta = void 0;
4
- const change_case_1 = require("change-case");
4
+ const lower_case_first_1 = require("lower-case-first");
5
5
  /**
6
6
  * Load model meta from standard location.
7
7
  */
@@ -19,7 +19,7 @@ exports.getDefaultModelMeta = getDefaultModelMeta;
19
19
  * Resolves a model field to its metadata. Returns undefined if not found.
20
20
  */
21
21
  function resolveField(modelMeta, model, field) {
22
- return modelMeta.fields[(0, change_case_1.camelCase)(model)][field];
22
+ return modelMeta.fields[(0, lower_case_first_1.lowerCaseFirst)(model)][field];
23
23
  }
24
24
  exports.resolveField = resolveField;
25
25
  //# sourceMappingURL=model-meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAGxC;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;AACL,CAAC;AAPD,kDAOC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,uBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC"}
1
+ {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAGlD;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;AACL,CAAC;AAPD,kDAOC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,oCAEC"}
@@ -1,6 +1,5 @@
1
1
  import { FieldInfo, PrismaWriteActionType } from '../types';
2
2
  import { ModelMeta } from './types';
3
- import { Enumerable } from './utils';
4
3
  type NestingPathItem = {
5
4
  field?: FieldInfo;
6
5
  where: any;
@@ -28,27 +27,27 @@ export type VisitorContext = {
28
27
  */
29
28
  export type NestedWriterVisitorCallback = {
30
29
  create?: (model: string, args: any[], context: VisitorContext) => Promise<void>;
31
- connectOrCreate?: (model: string, args: Enumerable<{
30
+ connectOrCreate?: (model: string, args: {
32
31
  where: object;
33
32
  create: any;
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>;
37
- update?: (model: string, args: Enumerable<{
33
+ }, context: VisitorContext) => Promise<void>;
34
+ connect?: (model: string, args: object, context: VisitorContext) => Promise<void>;
35
+ disconnect?: (model: string, args: object, context: VisitorContext) => Promise<void>;
36
+ update?: (model: string, args: {
38
37
  where: object;
39
38
  data: any;
40
- }>, context: VisitorContext) => Promise<void>;
41
- updateMany?: (model: string, args: Enumerable<{
39
+ }, context: VisitorContext) => Promise<void>;
40
+ updateMany?: (model: string, args: {
42
41
  where?: object;
43
42
  data: any;
44
- }>, context: VisitorContext) => Promise<void>;
45
- upsert?: (model: string, args: Enumerable<{
43
+ }, context: VisitorContext) => Promise<void>;
44
+ upsert?: (model: string, args: {
46
45
  where: object;
47
46
  create: any;
48
47
  update: any;
49
- }>, context: VisitorContext) => Promise<void>;
50
- delete?: (model: string, args: Enumerable<object> | boolean, context: VisitorContext) => Promise<void>;
51
- deleteMany?: (model: string, args: Enumerable<object>, context: VisitorContext) => Promise<void>;
48
+ }, context: VisitorContext) => Promise<void>;
49
+ delete?: (model: string, args: object | boolean, context: VisitorContext) => Promise<void>;
50
+ deleteMany?: (model: string, args: any | object, context: VisitorContext) => Promise<void>;
52
51
  field?: (field: FieldInfo, action: PrismaWriteActionType, data: any, context: VisitorContext) => Promise<void>;
53
52
  };
54
53
  /**
@@ -66,5 +65,6 @@ export declare class NestedWriteVisitor {
66
65
  */
67
66
  visit(model: string, action: PrismaWriteActionType, args: any): Promise<void>;
68
67
  private doVisit;
68
+ private visitSubPayload;
69
69
  }
70
70
  export {};
@@ -56,113 +56,140 @@ class NestedWriteVisitor {
56
56
  if (!data) {
57
57
  return;
58
58
  }
59
- const fieldContainers = [];
60
59
  const isToOneUpdate = (field === null || field === void 0 ? void 0 : field.isDataModel) && !field.isArray;
61
60
  const context = { parent, field, nestingPath: [...nestingPath] };
62
61
  // visit payload
63
62
  switch (action) {
64
63
  case 'create':
65
64
  context.nestingPath.push({ field, where: {}, unique: false });
66
- if (this.callback.create) {
67
- yield this.callback.create(model, data, context);
65
+ for (const item of (0, utils_1.enumerate)(data)) {
66
+ if (this.callback.create) {
67
+ yield this.callback.create(model, item, context);
68
+ }
69
+ yield this.visitSubPayload(model, action, item, context.nestingPath);
68
70
  }
69
- fieldContainers.push(...(0, utils_1.ensureArray)(data));
70
71
  break;
71
72
  case 'createMany':
72
73
  // skip the 'data' layer so as to keep consistency with 'create'
73
74
  if (data.data) {
74
75
  context.nestingPath.push({ field, where: {}, unique: false });
75
- if (this.callback.create) {
76
- yield this.callback.create(model, data.data, context);
76
+ for (const item of (0, utils_1.enumerate)(data.data)) {
77
+ if (this.callback.create) {
78
+ yield this.callback.create(model, item, context);
79
+ }
80
+ yield this.visitSubPayload(model, action, item, context.nestingPath);
77
81
  }
78
- fieldContainers.push(...(0, utils_1.ensureArray)(data.data));
79
82
  }
80
83
  break;
81
84
  case 'connectOrCreate':
82
85
  context.nestingPath.push({ field, where: data.where, unique: true });
83
- if (this.callback.connectOrCreate) {
84
- yield this.callback.connectOrCreate(model, data, context);
86
+ for (const item of (0, utils_1.enumerate)(data)) {
87
+ if (this.callback.connectOrCreate) {
88
+ yield this.callback.connectOrCreate(model, item, context);
89
+ }
90
+ yield this.visitSubPayload(model, action, item.create, context.nestingPath);
85
91
  }
86
- fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.create));
87
92
  break;
88
93
  case 'connect':
89
- context.nestingPath.push({ field, where: data, unique: true });
90
94
  if (this.callback.connect) {
91
- yield this.callback.connect(model, data, context);
95
+ for (const item of (0, utils_1.enumerate)(data)) {
96
+ const newContext = Object.assign(Object.assign({}, context), { nestingPath: [...context.nestingPath, { field, where: item, unique: true }] });
97
+ yield this.callback.connect(model, item, newContext);
98
+ }
92
99
  }
93
100
  break;
94
101
  case 'disconnect':
95
102
  // disconnect has two forms:
96
103
  // if relation is to-many, the payload is a unique filter object
97
104
  // if relation is to-one, the payload can only be boolean `true`
98
- context.nestingPath.push({ field, where: data, unique: typeof data === 'object' });
99
105
  if (this.callback.disconnect) {
100
- yield this.callback.disconnect(model, data, context);
106
+ for (const item of (0, utils_1.enumerate)(data)) {
107
+ const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
108
+ ...context.nestingPath,
109
+ { field, where: item, unique: typeof item === 'object' },
110
+ ] });
111
+ yield this.callback.disconnect(model, item, newContext);
112
+ }
101
113
  }
102
114
  break;
103
115
  case 'update':
104
116
  context.nestingPath.push({ field, where: data.where, unique: false });
105
- if (this.callback.update) {
106
- yield this.callback.update(model, data, context);
117
+ for (const item of (0, utils_1.enumerate)(data)) {
118
+ if (this.callback.update) {
119
+ yield this.callback.update(model, item, context);
120
+ }
121
+ const payload = isToOneUpdate ? item : item.data;
122
+ yield this.visitSubPayload(model, action, payload, context.nestingPath);
107
123
  }
108
- fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => (isToOneUpdate ? d : d.data)));
109
124
  break;
110
125
  case 'updateMany':
111
126
  context.nestingPath.push({ field, where: data.where, unique: false });
112
- if (this.callback.updateMany) {
113
- yield this.callback.updateMany(model, data, context);
127
+ for (const item of (0, utils_1.enumerate)(data)) {
128
+ if (this.callback.updateMany) {
129
+ yield this.callback.updateMany(model, item, context);
130
+ }
131
+ yield this.visitSubPayload(model, action, item, context.nestingPath);
114
132
  }
115
- fieldContainers.push(...(0, utils_1.ensureArray)(data));
116
133
  break;
117
- case 'upsert':
134
+ case 'upsert': {
118
135
  context.nestingPath.push({ field, where: data.where, unique: true });
119
- if (this.callback.upsert) {
120
- yield this.callback.upsert(model, data, context);
136
+ for (const item of (0, utils_1.enumerate)(data)) {
137
+ if (this.callback.upsert) {
138
+ yield this.callback.upsert(model, item, context);
139
+ }
140
+ yield this.visitSubPayload(model, action, item.create, context.nestingPath);
141
+ yield this.visitSubPayload(model, action, item.update, context.nestingPath);
121
142
  }
122
- fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.create));
123
- fieldContainers.push(...(0, utils_1.ensureArray)(data).map((d) => d.update));
124
143
  break;
125
- case 'delete':
126
- context.nestingPath.push({ field, where: data.where, unique: false });
144
+ }
145
+ case 'delete': {
127
146
  if (this.callback.delete) {
128
- yield this.callback.delete(model, data, context);
147
+ context.nestingPath.push({ field, where: data.where, unique: false });
148
+ for (const item of (0, utils_1.enumerate)(data)) {
149
+ yield this.callback.delete(model, item, context);
150
+ }
129
151
  }
130
152
  break;
153
+ }
131
154
  case 'deleteMany':
132
- context.nestingPath.push({ field, where: data.where, unique: false });
133
155
  if (this.callback.deleteMany) {
134
- yield this.callback.deleteMany(model, data, context);
156
+ context.nestingPath.push({ field, where: data.where, unique: false });
157
+ for (const item of (0, utils_1.enumerate)(data)) {
158
+ yield this.callback.deleteMany(model, item, context);
159
+ }
135
160
  }
136
161
  break;
137
162
  default: {
138
163
  throw new Error(`unhandled action type ${action}`);
139
164
  }
140
165
  }
141
- for (const fieldContainer of fieldContainers) {
142
- for (const field of (0, utils_1.getModelFields)(fieldContainer)) {
143
- const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
144
- if (!fieldInfo) {
145
- continue;
146
- }
147
- if (fieldInfo.isDataModel) {
148
- // recurse into nested payloads
149
- for (const [subAction, subData] of Object.entries(fieldContainer[field])) {
150
- if (this.isPrismaWriteAction(subAction) && subData) {
151
- yield this.doVisit(fieldInfo.type, subAction, subData, fieldContainer[field], fieldInfo, [
152
- ...context.nestingPath,
153
- ]);
154
- }
166
+ });
167
+ }
168
+ visitSubPayload(model, action, payload, nestingPath) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ for (const field of (0, utils_1.getModelFields)(payload)) {
171
+ const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
172
+ if (!fieldInfo) {
173
+ continue;
174
+ }
175
+ if (fieldInfo.isDataModel) {
176
+ // recurse into nested payloads
177
+ for (const [subAction, subData] of Object.entries(payload[field])) {
178
+ if (this.isPrismaWriteAction(subAction) && subData) {
179
+ yield this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [
180
+ ...nestingPath,
181
+ ]);
155
182
  }
156
183
  }
157
- else {
158
- // visit plain field
159
- if (this.callback.field) {
160
- yield this.callback.field(fieldInfo, action, fieldContainer[field], {
161
- parent: fieldContainer,
162
- nestingPath: [...context.nestingPath],
163
- field: fieldInfo,
164
- });
165
- }
184
+ }
185
+ else {
186
+ // visit plain field
187
+ if (this.callback.field) {
188
+ yield this.callback.field(fieldInfo, action, payload[field], {
189
+ parent: payload,
190
+ nestingPath,
191
+ field: fieldInfo,
192
+ });
166
193
  }
167
194
  }
168
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import { ModelMeta } from './types';
2
+ /**
3
+ * Options for @see withOmit
4
+ */
5
+ export type WithOmitOptions = {
6
+ /**
7
+ * Model metatadata
8
+ */
9
+ modelMeta?: ModelMeta;
10
+ };
2
11
  /**
3
12
  * Gets an enhanced Prisma client that supports @omit attribute.
4
13
  */
5
- export declare function withOmit<DbClient extends object>(prisma: DbClient, modelMeta?: ModelMeta): DbClient;
14
+ export declare function withOmit<DbClient extends object>(prisma: DbClient, options?: WithOmitOptions): DbClient;
@@ -18,8 +18,9 @@ const utils_1 = require("./utils");
18
18
  /**
19
19
  * Gets an enhanced Prisma client that supports @omit attribute.
20
20
  */
21
- function withOmit(prisma, modelMeta) {
22
- const _modelMeta = modelMeta !== null && modelMeta !== void 0 ? modelMeta : (0, model_meta_1.getDefaultModelMeta)();
21
+ function withOmit(prisma, options) {
22
+ var _a;
23
+ const _modelMeta = (_a = options === null || options === void 0 ? void 0 : options.modelMeta) !== null && _a !== void 0 ? _a : (0, model_meta_1.getDefaultModelMeta)();
23
24
  return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new OmitHandler(_prisma, model, _modelMeta), 'omit');
24
25
  }
25
26
  exports.withOmit = withOmit;
@@ -32,7 +33,7 @@ class OmitHandler extends proxy_1.DefaultPrismaProxyHandler {
32
33
  processResultEntity(data) {
33
34
  return __awaiter(this, void 0, void 0, function* () {
34
35
  if (data) {
35
- for (const value of (0, utils_1.ensureArray)(data)) {
36
+ for (const value of (0, utils_1.enumerate)(data)) {
36
37
  yield this.doPostProcess(value, this.model);
37
38
  }
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/enhancements/omit.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,uDAAuD;;;;;;;;;;;;AAGvD,6CAAiE;AACjE,mCAA+D;AAE/D,mCAAsD;AAEtD;;GAEG;AACH,SAAgB,QAAQ,CAA0B,MAAgB,EAAE,SAAqB;IACrF,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,CAAC,IAAI,WAAW,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACnF,MAAM,CACT,CAAC;AACN,CAAC;AARD,4BAQC;AAED,MAAM,WAAY,SAAQ,iCAAyB;IAC/C,YAAY,MAAwB,EAAE,KAAa,EAAmB,SAAoB;QACtF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAD6C,cAAS,GAAT,SAAS,CAAW;IAE1F,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAI,IAAO;;YAC1C,IAAI,IAAI,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,UAAe,EAAE,KAAa;;YACtD,KAAK,MAAM,KAAK,IAAI,IAAA,sBAAc,EAAC,UAAU,CAAC,EAAE;gBAC5C,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,EAAE;oBACZ,SAAS;iBACZ;gBAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;oBAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC5B;qBAAM,IAAI,SAAS,CAAC,WAAW,EAAE;oBAC9B,UAAU;oBACV,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;iBAC/D;aACJ;QACL,CAAC;KAAA;CACJ"}
1
+ {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/enhancements/omit.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,uDAAuD;;;;;;;;;;;;AAGvD,6CAAiE;AACjE,mCAA+D;AAE/D,mCAAoD;AAYpD;;GAEG;AACH,SAAgB,QAAQ,CAA0B,MAAgB,EAAE,OAAyB;;IACzF,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,CAAC,IAAI,WAAW,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACnF,MAAM,CACT,CAAC;AACN,CAAC;AARD,4BAQC;AAED,MAAM,WAAY,SAAQ,iCAAyB;IAC/C,YAAY,MAAwB,EAAE,KAAa,EAAmB,SAAoB;QACtF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAD6C,cAAS,GAAT,SAAS,CAAW;IAE1F,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAI,IAAO;;YAC1C,IAAI,IAAI,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE;oBACjC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,UAAe,EAAE,KAAa;;YACtD,KAAK,MAAM,KAAK,IAAI,IAAA,sBAAc,EAAC,UAAU,CAAC,EAAE;gBAC5C,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,EAAE;oBACZ,SAAS;iBACZ;gBAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;oBAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC5B;qBAAM,IAAI,SAAS,CAAC,WAAW,EAAE;oBAC9B,UAAU;oBACV,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;iBAC/D;aACJ;QACL,CAAC;KAAA;CACJ"}
@@ -1,5 +1,14 @@
1
1
  import { ModelMeta } from './types';
2
+ /**
3
+ * Options for @see withPassword
4
+ */
5
+ export type WithPasswordOptions = {
6
+ /**
7
+ * Model metatadata
8
+ */
9
+ modelMeta?: ModelMeta;
10
+ };
2
11
  /**
3
12
  * Gets an enhanced Prisma client that supports @password attribute.
4
13
  */
5
- export declare function withPassword<DbClient extends object = any>(prisma: DbClient, modelMeta?: ModelMeta): DbClient;
14
+ export declare function withPassword<DbClient extends object = any>(prisma: DbClient, options?: WithPasswordOptions): DbClient;
@@ -20,8 +20,9 @@ const proxy_1 = require("./proxy");
20
20
  /**
21
21
  * Gets an enhanced Prisma client that supports @password attribute.
22
22
  */
23
- function withPassword(prisma, modelMeta) {
24
- const _modelMeta = modelMeta !== null && modelMeta !== void 0 ? modelMeta : (0, model_meta_1.getDefaultModelMeta)();
23
+ function withPassword(prisma, options) {
24
+ var _a;
25
+ const _modelMeta = (_a = options === null || options === void 0 ? void 0 : options.modelMeta) !== null && _a !== void 0 ? _a : (0, model_meta_1.getDefaultModelMeta)();
25
26
  return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new PasswordHandler(_prisma, model, _modelMeta), 'password');
26
27
  }
27
28
  exports.withPassword = withPassword;
@@ -1 +1 @@
1
- {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/enhancements/password.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,sDAAsD;;;;;;;;;;;;AAEtD,uCAAgC;AAChC,4CAA4D;AAE5D,6CAAmD;AACnD,+DAA2D;AAC3D,mCAAmF;AAGnF;;GAEG;AACH,SAAgB,YAAY,CAAgC,MAAgB,EAAE,SAAqB;IAC/F,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,CAAC,IAAI,eAAe,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACvF,UAAU,CACb,CAAC;AACN,CAAC;AARD,oCAQC;AAED,MAAM,eAAgB,SAAQ,iCAAyB;IACnD,YAAY,MAAwB,EAAE,KAAa,EAAW,SAAoB;QAC9E,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QADqC,cAAS,GAAT,SAAS,CAAW;IAElF,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,MAA0B,EAAE,IAAS;;YAChE,MAAM,iBAAiB,GAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC3G,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACzD,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAA+B,EAAE,IAAI,CAAC,CAAC;aACxF;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,sBAAsB,CAAC,KAAa,EAAE,MAA6B,EAAE,IAAS;;YACxF,MAAM,OAAO,GAAG,IAAI,wCAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnD,KAAK,EAAE,CAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBAC3C,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;oBAC5E,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACpC,sBAAsB;wBACtB,IAAI,IAAI,GAAgC,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,0CACjF,KAAe,CAAC;wBACtB,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAe,CAAC;yBACjF;wBACD,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,wCAA4B,CAAC;yBACvC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACvD;gBACL,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ"}
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/enhancements/password.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,sDAAsD;;;;;;;;;;;;AAEtD,uCAAgC;AAChC,4CAA4D;AAE5D,6CAAmD;AACnD,+DAA2D;AAC3D,mCAAmF;AAanF;;GAEG;AACH,SAAgB,YAAY,CAAgC,MAAgB,EAAE,OAA6B;;IACvG,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,CAAC,IAAI,eAAe,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACvF,UAAU,CACb,CAAC;AACN,CAAC;AARD,oCAQC;AAED,MAAM,eAAgB,SAAQ,iCAAyB;IACnD,YAAY,MAAwB,EAAE,KAAa,EAAW,SAAoB;QAC9E,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QADqC,cAAS,GAAT,SAAS,CAAW;IAElF,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,MAA0B,EAAE,IAAS;;YAChE,MAAM,iBAAiB,GAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC3G,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACzD,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAA+B,EAAE,IAAI,CAAC,CAAC;aACxF;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,sBAAsB,CAAC,KAAa,EAAE,MAA6B,EAAE,IAAS;;YACxF,MAAM,OAAO,GAAG,IAAI,wCAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnD,KAAK,EAAE,CAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBAC3C,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;oBAC5E,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACpC,sBAAsB;wBACtB,IAAI,IAAI,GAAgC,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,0CACjF,KAAe,CAAC;wBACtB,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAe,CAAC;yBACjF;wBACD,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,wCAA4B,CAAC;yBACvC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACvD;gBACL,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ"}
@@ -10,9 +10,10 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
10
10
  private readonly modelMeta;
11
11
  private readonly model;
12
12
  private readonly user?;
13
+ private readonly logPrismaQuery?;
13
14
  private readonly logger;
14
15
  private readonly utils;
15
- constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, model: string, user?: AuthUser | undefined);
16
+ constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, model: string, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
16
17
  private get modelClient();
17
18
  findUnique(args: any): Promise<{} | null>;
18
19
  findUniqueOrThrow(args: any): Promise<{}>;
@@ -33,4 +34,5 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
33
34
  count(args: any): Promise<unknown>;
34
35
  tryReject(operation: PolicyOperationKind): Promise<void>;
35
36
  private checkReadback;
37
+ private get shouldLogQuery();
36
38
  }