@zenstackhq/runtime 1.1.1 → 1.2.0

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 (47) hide show
  1. package/cross/index.d.mts +229 -0
  2. package/cross/index.d.ts +229 -0
  3. package/cross/index.js +464 -0
  4. package/cross/index.js.map +1 -0
  5. package/cross/index.mjs +431 -0
  6. package/cross/index.mjs.map +1 -0
  7. package/enhancements/index.d.ts +2 -3
  8. package/enhancements/index.js +2 -3
  9. package/enhancements/index.js.map +1 -1
  10. package/enhancements/model-data-visitor.d.ts +1 -1
  11. package/enhancements/model-data-visitor.js +2 -2
  12. package/enhancements/model-data-visitor.js.map +1 -1
  13. package/enhancements/omit.d.ts +2 -1
  14. package/enhancements/omit.js +4 -5
  15. package/enhancements/omit.js.map +1 -1
  16. package/enhancements/password.d.ts +2 -1
  17. package/enhancements/password.js +2 -2
  18. package/enhancements/password.js.map +1 -1
  19. package/enhancements/policy/handler.d.ts +2 -1
  20. package/enhancements/policy/handler.js +14 -15
  21. package/enhancements/policy/handler.js.map +1 -1
  22. package/enhancements/policy/index.d.ts +2 -1
  23. package/enhancements/policy/index.js +2 -2
  24. package/enhancements/policy/index.js.map +1 -1
  25. package/enhancements/policy/policy-utils.d.ts +4 -4
  26. package/enhancements/policy/policy-utils.js +11 -11
  27. package/enhancements/policy/policy-utils.js.map +1 -1
  28. package/enhancements/proxy.d.ts +2 -2
  29. package/enhancements/proxy.js.map +1 -1
  30. package/enhancements/types.d.ts +2 -17
  31. package/enhancements/types.js.map +1 -1
  32. package/enhancements/utils.d.ts +3 -19
  33. package/enhancements/utils.js +1 -44
  34. package/enhancements/utils.js.map +1 -1
  35. package/enhancements/where-visitor.d.ts +1 -2
  36. package/enhancements/where-visitor.js +3 -4
  37. package/enhancements/where-visitor.js.map +1 -1
  38. package/package.json +10 -5
  39. package/types.d.ts +0 -58
  40. package/types.js +0 -14
  41. package/types.js.map +1 -1
  42. package/enhancements/model-meta.d.ts +0 -10
  43. package/enhancements/model-meta.js +0 -21
  44. package/enhancements/model-meta.js.map +0 -1
  45. package/enhancements/nested-write-visitor.d.ts +0 -75
  46. package/enhancements/nested-write-visitor.js +0 -241
  47. package/enhancements/nested-write-visitor.js.map +0 -1
@@ -1,241 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
3
- /* eslint-disable @typescript-eslint/no-explicit-any */
4
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
- return new (P || (P = Promise))(function (resolve, reject) {
7
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
- step((generator = generator.apply(thisArg, _arguments || [])).next());
11
- });
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.NestedWriteVisitor = void 0;
15
- const types_1 = require("../types");
16
- const model_meta_1 = require("./model-meta");
17
- const utils_1 = require("./utils");
18
- /**
19
- * Recursive visitor for nested write (create/update) payload.
20
- */
21
- class NestedWriteVisitor {
22
- constructor(modelMeta, callback) {
23
- this.modelMeta = modelMeta;
24
- this.callback = callback;
25
- }
26
- isPrismaWriteAction(value) {
27
- return types_1.PrismaWriteActions.includes(value);
28
- }
29
- /**
30
- * Start visiting
31
- *
32
- * @see NestedWriterVisitorCallback
33
- */
34
- visit(model, action, args) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- if (!args) {
37
- return;
38
- }
39
- let topData = args;
40
- switch (action) {
41
- // create has its data wrapped in 'data' field
42
- case 'create':
43
- topData = topData.data;
44
- break;
45
- case 'delete':
46
- case 'deleteMany':
47
- topData = topData.where;
48
- break;
49
- }
50
- yield this.doVisit(model, action, topData, undefined, undefined, []);
51
- });
52
- }
53
- doVisit(model, action, data, parent, field, nestingPath) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- if (!data) {
56
- return;
57
- }
58
- const context = { parent, field, nestingPath: [...nestingPath] };
59
- const toplevel = field == undefined;
60
- // visit payload
61
- switch (action) {
62
- case 'create':
63
- context.nestingPath.push({ field, model, where: {}, unique: false });
64
- for (const item of (0, utils_1.enumerate)(data)) {
65
- let callbackResult;
66
- if (this.callback.create) {
67
- callbackResult = yield this.callback.create(model, item, context);
68
- }
69
- if (callbackResult !== false) {
70
- const subPayload = typeof callbackResult === 'object' ? callbackResult : item;
71
- yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
72
- }
73
- }
74
- break;
75
- case 'createMany':
76
- if (data) {
77
- context.nestingPath.push({ field, model, where: {}, unique: false });
78
- let callbackResult;
79
- if (this.callback.createMany) {
80
- callbackResult = yield this.callback.createMany(model, data, context);
81
- }
82
- if (callbackResult !== false) {
83
- const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;
84
- yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
85
- }
86
- }
87
- break;
88
- case 'connectOrCreate':
89
- context.nestingPath.push({ field, model, where: data.where, unique: false });
90
- for (const item of (0, utils_1.enumerate)(data)) {
91
- let callbackResult;
92
- if (this.callback.connectOrCreate) {
93
- callbackResult = yield this.callback.connectOrCreate(model, item, context);
94
- }
95
- if (callbackResult !== false) {
96
- const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;
97
- yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
98
- }
99
- }
100
- break;
101
- case 'connect':
102
- if (this.callback.connect) {
103
- for (const item of (0, utils_1.enumerate)(data)) {
104
- const newContext = Object.assign(Object.assign({}, context), { nestingPath: [...context.nestingPath, { field, model, where: item, unique: true }] });
105
- yield this.callback.connect(model, item, newContext);
106
- }
107
- }
108
- break;
109
- case 'disconnect':
110
- // disconnect has two forms:
111
- // if relation is to-many, the payload is a unique filter object
112
- // if relation is to-one, the payload can only be boolean `true`
113
- if (this.callback.disconnect) {
114
- for (const item of (0, utils_1.enumerate)(data)) {
115
- const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
116
- ...context.nestingPath,
117
- { field, model, where: item, unique: typeof item === 'object' },
118
- ] });
119
- yield this.callback.disconnect(model, item, newContext);
120
- }
121
- }
122
- break;
123
- case 'set':
124
- if (this.callback.set) {
125
- context.nestingPath.push({ field, model, where: {}, unique: false });
126
- yield this.callback.set(model, data, context);
127
- }
128
- break;
129
- case 'update':
130
- context.nestingPath.push({ field, model, where: data.where, unique: false });
131
- for (const item of (0, utils_1.enumerate)(data)) {
132
- let callbackResult;
133
- if (this.callback.update) {
134
- callbackResult = yield this.callback.update(model, item, context);
135
- }
136
- if (callbackResult !== false) {
137
- const subPayload = typeof callbackResult === 'object'
138
- ? callbackResult
139
- : typeof item.data === 'object'
140
- ? item.data
141
- : item;
142
- yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
143
- }
144
- }
145
- break;
146
- case 'updateMany':
147
- context.nestingPath.push({ field, model, where: data.where, unique: false });
148
- for (const item of (0, utils_1.enumerate)(data)) {
149
- let callbackResult;
150
- if (this.callback.updateMany) {
151
- callbackResult = yield this.callback.updateMany(model, item, context);
152
- }
153
- if (callbackResult !== false) {
154
- const subPayload = typeof callbackResult === 'object' ? callbackResult : item;
155
- yield this.visitSubPayload(model, action, subPayload, context.nestingPath);
156
- }
157
- }
158
- break;
159
- case 'upsert': {
160
- context.nestingPath.push({ field, model, where: data.where, unique: false });
161
- for (const item of (0, utils_1.enumerate)(data)) {
162
- let callbackResult;
163
- if (this.callback.upsert) {
164
- callbackResult = yield this.callback.upsert(model, item, context);
165
- }
166
- if (callbackResult !== false) {
167
- if (typeof callbackResult === 'object') {
168
- yield this.visitSubPayload(model, action, callbackResult, context.nestingPath);
169
- }
170
- else {
171
- yield this.visitSubPayload(model, action, item.create, context.nestingPath);
172
- yield this.visitSubPayload(model, action, item.update, context.nestingPath);
173
- }
174
- }
175
- }
176
- break;
177
- }
178
- case 'delete': {
179
- if (this.callback.delete) {
180
- for (const item of (0, utils_1.enumerate)(data)) {
181
- const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
182
- ...context.nestingPath,
183
- { field, model, where: toplevel ? item.where : item, unique: false },
184
- ] });
185
- yield this.callback.delete(model, item, newContext);
186
- }
187
- }
188
- break;
189
- }
190
- case 'deleteMany':
191
- if (this.callback.deleteMany) {
192
- for (const item of (0, utils_1.enumerate)(data)) {
193
- const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
194
- ...context.nestingPath,
195
- { field, model, where: toplevel ? item.where : item, unique: false },
196
- ] });
197
- yield this.callback.deleteMany(model, item, newContext);
198
- }
199
- }
200
- break;
201
- default: {
202
- throw new Error(`unhandled action type ${action}`);
203
- }
204
- }
205
- });
206
- }
207
- visitSubPayload(model, action, payload, nestingPath) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- for (const field of (0, utils_1.getModelFields)(payload)) {
210
- const fieldInfo = (0, model_meta_1.resolveField)(this.modelMeta, model, field);
211
- if (!fieldInfo) {
212
- continue;
213
- }
214
- if (fieldInfo.isDataModel) {
215
- if (payload[field]) {
216
- // recurse into nested payloads
217
- for (const [subAction, subData] of Object.entries(payload[field])) {
218
- if (this.isPrismaWriteAction(subAction) && subData) {
219
- yield this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [
220
- ...nestingPath,
221
- ]);
222
- }
223
- }
224
- }
225
- }
226
- else {
227
- // visit plain field
228
- if (this.callback.field) {
229
- yield this.callback.field(fieldInfo, action, payload[field], {
230
- parent: payload,
231
- nestingPath,
232
- field: fieldInfo,
233
- });
234
- }
235
- }
236
- }
237
- });
238
- }
239
- }
240
- exports.NestedWriteVisitor = NestedWriteVisitor;
241
- //# sourceMappingURL=nested-write-visitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nested-write-visitor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-visitor.ts"],"names":[],"mappings":"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"}