@zenstackhq/runtime 2.15.1 → 3.0.0-alpha.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.
- package/LICENSE +1 -1
- package/dist/client.cjs +6094 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +19 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.js +6060 -0
- package/dist/client.js.map +1 -0
- package/dist/contract-DguafRNB.d.cts +1272 -0
- package/dist/contract-DguafRNB.d.ts +1272 -0
- package/dist/index.cjs +6088 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +14 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +6057 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/policy.cjs +2343 -0
- package/dist/plugins/policy.cjs.map +1 -0
- package/dist/plugins/policy.d.cts +24 -0
- package/dist/plugins/policy.d.ts +24 -0
- package/dist/plugins/policy.js +2307 -0
- package/dist/plugins/policy.js.map +1 -0
- package/dist/schema.cjs +110 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.cts +29 -0
- package/dist/schema.d.ts +29 -0
- package/dist/schema.js +85 -0
- package/dist/schema.js.map +1 -0
- package/dist/utils/pg-utils.cjs +39 -0
- package/dist/utils/pg-utils.cjs.map +1 -0
- package/dist/utils/pg-utils.d.cts +8 -0
- package/dist/utils/pg-utils.d.ts +8 -0
- package/dist/utils/pg-utils.js +16 -0
- package/dist/utils/pg-utils.js.map +1 -0
- package/{browser/index.js → dist/utils/sqlite-utils.cjs} +21 -37
- package/dist/utils/sqlite-utils.cjs.map +1 -0
- package/dist/utils/sqlite-utils.d.cts +8 -0
- package/dist/utils/sqlite-utils.d.ts +8 -0
- package/dist/utils/sqlite-utils.js +22 -0
- package/dist/utils/sqlite-utils.js.map +1 -0
- package/package.json +105 -114
- package/README.md +0 -5
- package/browser/index.d.mts +0 -13
- package/browser/index.d.ts +0 -13
- package/browser/index.js.map +0 -1
- package/browser/index.mjs +0 -33
- package/browser/index.mjs.map +0 -1
- package/constants.d.ts +0 -62
- package/constants.js +0 -76
- package/constants.js.map +0 -1
- package/cross/index.d.mts +0 -379
- package/cross/index.d.ts +0 -379
- package/cross/index.js +0 -903
- package/cross/index.js.map +0 -1
- package/cross/index.mjs +0 -861
- package/cross/index.mjs.map +0 -1
- package/edge.d.ts +0 -1
- package/edge.js +0 -18
- package/edge.js.map +0 -1
- package/encryption/index.d.ts +0 -25
- package/encryption/index.js +0 -74
- package/encryption/index.js.map +0 -1
- package/encryption/utils.d.ts +0 -9
- package/encryption/utils.js +0 -99
- package/encryption/utils.js.map +0 -1
- package/enhance-edge.d.ts +0 -1
- package/enhance-edge.js +0 -10
- package/enhance.d.ts +0 -1
- package/enhance.js +0 -10
- package/enhancements/edge/create-enhancement.d.ts +0 -42
- package/enhancements/edge/create-enhancement.js +0 -102
- package/enhancements/edge/create-enhancement.js.map +0 -1
- package/enhancements/edge/default-auth.d.ts +0 -8
- package/enhancements/edge/default-auth.js +0 -180
- package/enhancements/edge/default-auth.js.map +0 -1
- package/enhancements/edge/delegate.d.ts +0 -77
- package/enhancements/edge/delegate.js +0 -1294
- package/enhancements/edge/delegate.js.map +0 -1
- package/enhancements/edge/encryption.d.ts +0 -7
- package/enhancements/edge/encryption.js +0 -150
- package/enhancements/edge/encryption.js.map +0 -1
- package/enhancements/edge/index.d.ts +0 -4
- package/enhancements/edge/index.js +0 -21
- package/enhancements/edge/index.js.map +0 -1
- package/enhancements/edge/json-processor.d.ts +0 -7
- package/enhancements/edge/json-processor.js +0 -89
- package/enhancements/edge/json-processor.js.map +0 -1
- package/enhancements/edge/logger.d.ts +0 -29
- package/enhancements/edge/logger.js +0 -65
- package/enhancements/edge/logger.js.map +0 -1
- package/enhancements/edge/omit.d.ts +0 -7
- package/enhancements/edge/omit.js +0 -96
- package/enhancements/edge/omit.js.map +0 -1
- package/enhancements/edge/password.d.ts +0 -7
- package/enhancements/edge/password.js +0 -64
- package/enhancements/edge/password.js.map +0 -1
- package/enhancements/edge/policy/check-utils.d.ts +0 -5
- package/enhancements/edge/policy/check-utils.js +0 -20
- package/enhancements/edge/policy/check-utils.js.map +0 -1
- package/enhancements/edge/policy/handler.d.ts +0 -100
- package/enhancements/edge/policy/handler.js +0 -1442
- package/enhancements/edge/policy/handler.js.map +0 -1
- package/enhancements/edge/policy/index.d.ts +0 -19
- package/enhancements/edge/policy/index.js +0 -65
- package/enhancements/edge/policy/index.js.map +0 -1
- package/enhancements/edge/policy/policy-utils.d.ts +0 -181
- package/enhancements/edge/policy/policy-utils.js +0 -1357
- package/enhancements/edge/policy/policy-utils.js.map +0 -1
- package/enhancements/edge/promise.d.ts +0 -15
- package/enhancements/edge/promise.js +0 -99
- package/enhancements/edge/promise.js.map +0 -1
- package/enhancements/edge/proxy.d.ts +0 -120
- package/enhancements/edge/proxy.js +0 -287
- package/enhancements/edge/proxy.js.map +0 -1
- package/enhancements/edge/query-utils.d.ts +0 -53
- package/enhancements/edge/query-utils.js +0 -256
- package/enhancements/edge/query-utils.js.map +0 -1
- package/enhancements/edge/types.d.ts +0 -238
- package/enhancements/edge/types.js +0 -3
- package/enhancements/edge/types.js.map +0 -1
- package/enhancements/edge/utils.d.ts +0 -11
- package/enhancements/edge/utils.js +0 -49
- package/enhancements/edge/utils.js.map +0 -1
- package/enhancements/edge/where-visitor.d.ts +0 -32
- package/enhancements/edge/where-visitor.js +0 -86
- package/enhancements/edge/where-visitor.js.map +0 -1
- package/enhancements/node/create-enhancement.d.ts +0 -42
- package/enhancements/node/create-enhancement.js +0 -102
- package/enhancements/node/create-enhancement.js.map +0 -1
- package/enhancements/node/default-auth.d.ts +0 -8
- package/enhancements/node/default-auth.js +0 -180
- package/enhancements/node/default-auth.js.map +0 -1
- package/enhancements/node/delegate.d.ts +0 -77
- package/enhancements/node/delegate.js +0 -1294
- package/enhancements/node/delegate.js.map +0 -1
- package/enhancements/node/encryption.d.ts +0 -7
- package/enhancements/node/encryption.js +0 -150
- package/enhancements/node/encryption.js.map +0 -1
- package/enhancements/node/index.d.ts +0 -4
- package/enhancements/node/index.js +0 -21
- package/enhancements/node/index.js.map +0 -1
- package/enhancements/node/json-processor.d.ts +0 -7
- package/enhancements/node/json-processor.js +0 -89
- package/enhancements/node/json-processor.js.map +0 -1
- package/enhancements/node/logger.d.ts +0 -29
- package/enhancements/node/logger.js +0 -65
- package/enhancements/node/logger.js.map +0 -1
- package/enhancements/node/omit.d.ts +0 -7
- package/enhancements/node/omit.js +0 -96
- package/enhancements/node/omit.js.map +0 -1
- package/enhancements/node/password.d.ts +0 -7
- package/enhancements/node/password.js +0 -64
- package/enhancements/node/password.js.map +0 -1
- package/enhancements/node/policy/check-utils.d.ts +0 -5
- package/enhancements/node/policy/check-utils.js +0 -87
- package/enhancements/node/policy/check-utils.js.map +0 -1
- package/enhancements/node/policy/constraint-solver.d.ts +0 -27
- package/enhancements/node/policy/constraint-solver.js +0 -164
- package/enhancements/node/policy/constraint-solver.js.map +0 -1
- package/enhancements/node/policy/handler.d.ts +0 -100
- package/enhancements/node/policy/handler.js +0 -1442
- package/enhancements/node/policy/handler.js.map +0 -1
- package/enhancements/node/policy/index.d.ts +0 -19
- package/enhancements/node/policy/index.js +0 -65
- package/enhancements/node/policy/index.js.map +0 -1
- package/enhancements/node/policy/policy-utils.d.ts +0 -181
- package/enhancements/node/policy/policy-utils.js +0 -1357
- package/enhancements/node/policy/policy-utils.js.map +0 -1
- package/enhancements/node/promise.d.ts +0 -15
- package/enhancements/node/promise.js +0 -99
- package/enhancements/node/promise.js.map +0 -1
- package/enhancements/node/proxy.d.ts +0 -120
- package/enhancements/node/proxy.js +0 -287
- package/enhancements/node/proxy.js.map +0 -1
- package/enhancements/node/query-utils.d.ts +0 -53
- package/enhancements/node/query-utils.js +0 -256
- package/enhancements/node/query-utils.js.map +0 -1
- package/enhancements/node/types.d.ts +0 -238
- package/enhancements/node/types.js +0 -3
- package/enhancements/node/types.js.map +0 -1
- package/enhancements/node/utils.d.ts +0 -11
- package/enhancements/node/utils.js +0 -49
- package/enhancements/node/utils.js.map +0 -1
- package/enhancements/node/where-visitor.d.ts +0 -32
- package/enhancements/node/where-visitor.js +0 -86
- package/enhancements/node/where-visitor.js.map +0 -1
- package/error.d.ts +0 -11
- package/error.js +0 -22
- package/error.js.map +0 -1
- package/index.d.ts +0 -7
- package/index.js +0 -24
- package/index.js.map +0 -1
- package/model-meta.d.ts +0 -1
- package/model-meta.js +0 -10
- package/models.d.ts +0 -1
- package/models.js +0 -1
- package/types.d.ts +0 -180
- package/types.js +0 -4
- package/types.js.map +0 -1
- package/validation.d.ts +0 -24
- package/validation.js +0 -52
- package/validation.js.map +0 -1
- package/version.d.ts +0 -5
- package/version.js +0 -35
- package/version.js.map +0 -1
- package/zod/index.d.ts +0 -3
- package/zod/index.js +0 -5
- package/zod/input.d.ts +0 -1
- package/zod/input.js +0 -8
- package/zod/models.d.ts +0 -1
- package/zod/models.js +0 -8
- package/zod/objects.d.ts +0 -1
- package/zod/objects.js +0 -8
- package/zod-utils.d.ts +0 -12
- package/zod-utils.js +0 -97
- package/zod-utils.js.map +0 -1
package/cross/index.mjs
DELETED
|
@@ -1,861 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __async = (__this, __arguments, generator) => {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
var fulfilled = (value) => {
|
|
23
|
-
try {
|
|
24
|
-
step(generator.next(value));
|
|
25
|
-
} catch (e) {
|
|
26
|
-
reject(e);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var rejected = (value) => {
|
|
30
|
-
try {
|
|
31
|
-
step(generator.throw(value));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
reject(e);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// src/cross/clone.ts
|
|
42
|
-
import { isPlainObject } from "is-plain-object";
|
|
43
|
-
function clone(value) {
|
|
44
|
-
if (Array.isArray(value)) {
|
|
45
|
-
return value.map((v) => clone(v));
|
|
46
|
-
}
|
|
47
|
-
if (typeof value === "object") {
|
|
48
|
-
if (!value || !isPlainObject(value)) {
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
51
|
-
const result = {};
|
|
52
|
-
for (const key of Object.keys(value)) {
|
|
53
|
-
result[key] = clone(value[key]);
|
|
54
|
-
}
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
return value;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// src/cross/model-data-visitor.ts
|
|
61
|
-
var ModelDataVisitor = class {
|
|
62
|
-
constructor(modelMeta) {
|
|
63
|
-
this.modelMeta = modelMeta;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Visits the given model data.
|
|
67
|
-
*/
|
|
68
|
-
visit(model, data, callback) {
|
|
69
|
-
if (!data || typeof data !== "object") {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const scalarData = {};
|
|
73
|
-
const subTasks = [];
|
|
74
|
-
for (const [k, v] of Object.entries(data)) {
|
|
75
|
-
const field = resolveField(this.modelMeta, model, k);
|
|
76
|
-
if (field && field.isDataModel) {
|
|
77
|
-
if (field.isArray && Array.isArray(v)) {
|
|
78
|
-
subTasks.push(...v.map((item) => ({ model: field.type, data: item })));
|
|
79
|
-
} else {
|
|
80
|
-
subTasks.push({ model: field.type, data: v });
|
|
81
|
-
}
|
|
82
|
-
} else {
|
|
83
|
-
scalarData[k] = v;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
callback(model, data, scalarData);
|
|
87
|
-
subTasks.forEach(({ model: model2, data: data2 }) => this.visit(model2, data2, callback));
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
// src/cross/model-meta.ts
|
|
92
|
-
import { lowerCaseFirst } from "lower-case-first";
|
|
93
|
-
function resolveField(modelMeta, modelOrTypeDef, field, isTypeDef = false) {
|
|
94
|
-
var _a, _b;
|
|
95
|
-
const container = isTypeDef ? modelMeta.typeDefs : modelMeta.models;
|
|
96
|
-
return (_b = (_a = container == null ? void 0 : container[lowerCaseFirst(modelOrTypeDef)]) == null ? void 0 : _a.fields) == null ? void 0 : _b[field];
|
|
97
|
-
}
|
|
98
|
-
function requireField(modelMeta, model, field, isTypeDef = false) {
|
|
99
|
-
const f = resolveField(modelMeta, model, field, isTypeDef);
|
|
100
|
-
if (!f) {
|
|
101
|
-
throw new Error(`Field ${model}.${field} cannot be resolved`);
|
|
102
|
-
}
|
|
103
|
-
return f;
|
|
104
|
-
}
|
|
105
|
-
function getFields(modelMeta, model) {
|
|
106
|
-
var _a;
|
|
107
|
-
return (_a = modelMeta.models[lowerCaseFirst(model)]) == null ? void 0 : _a.fields;
|
|
108
|
-
}
|
|
109
|
-
function getUniqueConstraints(modelMeta, model) {
|
|
110
|
-
var _a;
|
|
111
|
-
return (_a = modelMeta.models[lowerCaseFirst(model)]) == null ? void 0 : _a.uniqueConstraints;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// src/cross/mutator.ts
|
|
115
|
-
import { v4 as uuid } from "uuid";
|
|
116
|
-
function applyMutation(queryModel, queryOp, queryData, mutationModel, mutationOp, mutationArgs, modelMeta, logging) {
|
|
117
|
-
return __async(this, null, function* () {
|
|
118
|
-
if (!queryData || typeof queryData !== "object" && !Array.isArray(queryData)) {
|
|
119
|
-
return void 0;
|
|
120
|
-
}
|
|
121
|
-
if (!queryOp.startsWith("find")) {
|
|
122
|
-
return void 0;
|
|
123
|
-
}
|
|
124
|
-
return yield doApplyMutation(queryModel, queryData, mutationModel, mutationOp, mutationArgs, modelMeta, logging);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
function doApplyMutation(queryModel, queryData, mutationModel, mutationOp, mutationArgs, modelMeta, logging) {
|
|
128
|
-
return __async(this, null, function* () {
|
|
129
|
-
let resultData = queryData;
|
|
130
|
-
let updated = false;
|
|
131
|
-
const visitor = new NestedWriteVisitor(modelMeta, {
|
|
132
|
-
create: (model, args) => {
|
|
133
|
-
if (model === queryModel && Array.isArray(resultData)) {
|
|
134
|
-
const r = createMutate(queryModel, resultData, args, modelMeta, logging);
|
|
135
|
-
if (r) {
|
|
136
|
-
resultData = r;
|
|
137
|
-
updated = true;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
createMany: (model, args) => {
|
|
142
|
-
if (model === queryModel && (args == null ? void 0 : args.data) && Array.isArray(resultData)) {
|
|
143
|
-
for (const oneArg of enumerate(args.data)) {
|
|
144
|
-
const r = createMutate(queryModel, resultData, oneArg, modelMeta, logging);
|
|
145
|
-
if (r) {
|
|
146
|
-
resultData = r;
|
|
147
|
-
updated = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
update: (model, args) => {
|
|
153
|
-
if (model === queryModel && !Array.isArray(resultData)) {
|
|
154
|
-
const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);
|
|
155
|
-
if (r) {
|
|
156
|
-
resultData = r;
|
|
157
|
-
updated = true;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
upsert: (model, args) => {
|
|
162
|
-
if (model === queryModel && (args == null ? void 0 : args.where) && (args == null ? void 0 : args.create) && (args == null ? void 0 : args.update)) {
|
|
163
|
-
const r = upsertMutate(queryModel, resultData, model, args, modelMeta, logging);
|
|
164
|
-
if (r) {
|
|
165
|
-
resultData = r;
|
|
166
|
-
updated = true;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
delete: (model, args) => {
|
|
171
|
-
if (model === queryModel) {
|
|
172
|
-
const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);
|
|
173
|
-
if (r) {
|
|
174
|
-
resultData = r;
|
|
175
|
-
updated = true;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
yield visitor.visit(mutationModel, mutationOp, mutationArgs);
|
|
181
|
-
const modelFields = getFields(modelMeta, queryModel);
|
|
182
|
-
if (Array.isArray(resultData)) {
|
|
183
|
-
let arrayCloned = false;
|
|
184
|
-
for (let i = 0; i < resultData.length; i++) {
|
|
185
|
-
const item = resultData[i];
|
|
186
|
-
if (!item || typeof item !== "object" || item.$optimistic) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
const r = yield doApplyMutation(
|
|
190
|
-
queryModel,
|
|
191
|
-
item,
|
|
192
|
-
mutationModel,
|
|
193
|
-
mutationOp,
|
|
194
|
-
mutationArgs,
|
|
195
|
-
modelMeta,
|
|
196
|
-
logging
|
|
197
|
-
);
|
|
198
|
-
if (r && typeof r === "object") {
|
|
199
|
-
if (!arrayCloned) {
|
|
200
|
-
resultData = [...resultData];
|
|
201
|
-
arrayCloned = true;
|
|
202
|
-
}
|
|
203
|
-
resultData[i] = r;
|
|
204
|
-
updated = true;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
} else if (resultData !== null && typeof resultData === "object") {
|
|
208
|
-
const currentData = __spreadValues({}, resultData);
|
|
209
|
-
for (const [key, value] of Object.entries(currentData)) {
|
|
210
|
-
const fieldInfo = modelFields[key];
|
|
211
|
-
if (!(fieldInfo == null ? void 0 : fieldInfo.isDataModel)) {
|
|
212
|
-
continue;
|
|
213
|
-
}
|
|
214
|
-
const r = yield doApplyMutation(
|
|
215
|
-
fieldInfo.type,
|
|
216
|
-
value,
|
|
217
|
-
mutationModel,
|
|
218
|
-
mutationOp,
|
|
219
|
-
mutationArgs,
|
|
220
|
-
modelMeta,
|
|
221
|
-
logging
|
|
222
|
-
);
|
|
223
|
-
if (r && typeof r === "object") {
|
|
224
|
-
resultData = __spreadProps(__spreadValues({}, resultData), { [key]: r });
|
|
225
|
-
updated = true;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
return updated ? resultData : void 0;
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
function createMutate(queryModel, currentData, newData, modelMeta, logging) {
|
|
233
|
-
if (!newData) {
|
|
234
|
-
return void 0;
|
|
235
|
-
}
|
|
236
|
-
const modelFields = getFields(modelMeta, queryModel);
|
|
237
|
-
if (!modelFields) {
|
|
238
|
-
return void 0;
|
|
239
|
-
}
|
|
240
|
-
const insert = {};
|
|
241
|
-
const newDataFields = Object.keys(newData);
|
|
242
|
-
Object.entries(modelFields).forEach(([name, field]) => {
|
|
243
|
-
var _a, _b, _c, _d;
|
|
244
|
-
if (field.isDataModel && newData[name]) {
|
|
245
|
-
assignForeignKeyFields(field, insert, newData[name]);
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
if (newDataFields.includes(name)) {
|
|
249
|
-
insert[name] = clone(newData[name]);
|
|
250
|
-
} else {
|
|
251
|
-
const defaultAttr = (_a = field.attributes) == null ? void 0 : _a.find((attr) => attr.name === "@default");
|
|
252
|
-
if (field.type === "DateTime") {
|
|
253
|
-
if (defaultAttr || ((_b = field.attributes) == null ? void 0 : _b.some((attr) => attr.name === "@updatedAt"))) {
|
|
254
|
-
insert[name] = /* @__PURE__ */ new Date();
|
|
255
|
-
}
|
|
256
|
-
} else if (((_d = (_c = defaultAttr == null ? void 0 : defaultAttr.args) == null ? void 0 : _c[0]) == null ? void 0 : _d.value) !== void 0) {
|
|
257
|
-
insert[name] = defaultAttr.args[0].value;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
const idFields = getIdFields(modelMeta, queryModel, false);
|
|
262
|
-
idFields.forEach((f) => {
|
|
263
|
-
if (insert[f.name] === void 0) {
|
|
264
|
-
if (f.type === "Int" || f.type === "BigInt") {
|
|
265
|
-
const currMax = Array.isArray(currentData) ? Math.max(
|
|
266
|
-
...[...currentData].map((item) => {
|
|
267
|
-
const idv = parseInt(item[f.name]);
|
|
268
|
-
return isNaN(idv) ? 0 : idv;
|
|
269
|
-
})
|
|
270
|
-
) : 0;
|
|
271
|
-
insert[f.name] = currMax + 1;
|
|
272
|
-
} else {
|
|
273
|
-
insert[f.name] = uuid();
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
insert.$optimistic = true;
|
|
278
|
-
if (logging) {
|
|
279
|
-
console.log(`Optimistic create for ${queryModel}:`, insert);
|
|
280
|
-
}
|
|
281
|
-
return [insert, ...Array.isArray(currentData) ? currentData : []];
|
|
282
|
-
}
|
|
283
|
-
function updateMutate(queryModel, currentData, mutateModel, mutateArgs, modelMeta, logging) {
|
|
284
|
-
if (!currentData || typeof currentData !== "object") {
|
|
285
|
-
return void 0;
|
|
286
|
-
}
|
|
287
|
-
if (!(mutateArgs == null ? void 0 : mutateArgs.where) || typeof mutateArgs.where !== "object") {
|
|
288
|
-
return void 0;
|
|
289
|
-
}
|
|
290
|
-
if (!(mutateArgs == null ? void 0 : mutateArgs.data) || typeof mutateArgs.data !== "object") {
|
|
291
|
-
return void 0;
|
|
292
|
-
}
|
|
293
|
-
if (!idFieldsMatch(mutateModel, currentData, mutateArgs.where, modelMeta)) {
|
|
294
|
-
return void 0;
|
|
295
|
-
}
|
|
296
|
-
const modelFields = getFields(modelMeta, queryModel);
|
|
297
|
-
if (!modelFields) {
|
|
298
|
-
return void 0;
|
|
299
|
-
}
|
|
300
|
-
let updated = false;
|
|
301
|
-
let resultData = currentData;
|
|
302
|
-
for (const [key, value] of Object.entries(mutateArgs.data)) {
|
|
303
|
-
const fieldInfo = modelFields[key];
|
|
304
|
-
if (!fieldInfo) {
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
if (fieldInfo.isDataModel && !(value == null ? void 0 : value.connect)) {
|
|
308
|
-
continue;
|
|
309
|
-
}
|
|
310
|
-
if (!updated) {
|
|
311
|
-
resultData = __spreadValues({}, currentData);
|
|
312
|
-
}
|
|
313
|
-
if (fieldInfo.isDataModel) {
|
|
314
|
-
assignForeignKeyFields(fieldInfo, resultData, value);
|
|
315
|
-
} else {
|
|
316
|
-
resultData[key] = clone(value);
|
|
317
|
-
}
|
|
318
|
-
resultData.$optimistic = true;
|
|
319
|
-
updated = true;
|
|
320
|
-
if (logging) {
|
|
321
|
-
console.log(`Optimistic update for ${queryModel}:`, resultData);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return updated ? resultData : void 0;
|
|
325
|
-
}
|
|
326
|
-
function upsertMutate(queryModel, currentData, model, args, modelMeta, logging) {
|
|
327
|
-
let updated = false;
|
|
328
|
-
let resultData = currentData;
|
|
329
|
-
if (Array.isArray(resultData)) {
|
|
330
|
-
const foundIndex = resultData.findIndex((x) => idFieldsMatch(model, x, args.where, modelMeta));
|
|
331
|
-
if (foundIndex >= 0) {
|
|
332
|
-
const updateResult = updateMutate(
|
|
333
|
-
queryModel,
|
|
334
|
-
resultData[foundIndex],
|
|
335
|
-
model,
|
|
336
|
-
{ where: args.where, data: args.update },
|
|
337
|
-
modelMeta,
|
|
338
|
-
logging
|
|
339
|
-
);
|
|
340
|
-
if (updateResult) {
|
|
341
|
-
resultData = [...resultData.slice(0, foundIndex), updateResult, ...resultData.slice(foundIndex + 1)];
|
|
342
|
-
updated = true;
|
|
343
|
-
}
|
|
344
|
-
} else {
|
|
345
|
-
const createResult = createMutate(queryModel, resultData, args.create, modelMeta, logging);
|
|
346
|
-
if (createResult) {
|
|
347
|
-
resultData = createResult;
|
|
348
|
-
updated = true;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
} else {
|
|
352
|
-
const updateResult = updateMutate(
|
|
353
|
-
queryModel,
|
|
354
|
-
resultData,
|
|
355
|
-
model,
|
|
356
|
-
{ where: args.where, data: args.update },
|
|
357
|
-
modelMeta,
|
|
358
|
-
logging
|
|
359
|
-
);
|
|
360
|
-
if (updateResult) {
|
|
361
|
-
resultData = updateResult;
|
|
362
|
-
updated = true;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
return updated ? resultData : void 0;
|
|
366
|
-
}
|
|
367
|
-
function deleteMutate(queryModel, currentData, mutateModel, mutateArgs, modelMeta, logging) {
|
|
368
|
-
if (!currentData || !mutateArgs) {
|
|
369
|
-
return void 0;
|
|
370
|
-
}
|
|
371
|
-
if (queryModel !== mutateModel) {
|
|
372
|
-
return void 0;
|
|
373
|
-
}
|
|
374
|
-
let updated = false;
|
|
375
|
-
let result = currentData;
|
|
376
|
-
if (Array.isArray(currentData)) {
|
|
377
|
-
for (const item of currentData) {
|
|
378
|
-
if (idFieldsMatch(mutateModel, item, mutateArgs, modelMeta)) {
|
|
379
|
-
result = result.filter((x) => x !== item);
|
|
380
|
-
updated = true;
|
|
381
|
-
if (logging) {
|
|
382
|
-
console.log(`Optimistic delete for ${queryModel}:`, item);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
} else {
|
|
387
|
-
if (idFieldsMatch(mutateModel, currentData, mutateArgs, modelMeta)) {
|
|
388
|
-
result = null;
|
|
389
|
-
updated = true;
|
|
390
|
-
if (logging) {
|
|
391
|
-
console.log(`Optimistic delete for ${queryModel}:`, currentData);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return updated ? result : void 0;
|
|
396
|
-
}
|
|
397
|
-
function idFieldsMatch(model, x, y, modelMeta) {
|
|
398
|
-
if (!x || !y || typeof x !== "object" || typeof y !== "object") {
|
|
399
|
-
return false;
|
|
400
|
-
}
|
|
401
|
-
const idFields = getIdFields(modelMeta, model, false);
|
|
402
|
-
if (idFields.length === 0) {
|
|
403
|
-
return false;
|
|
404
|
-
}
|
|
405
|
-
return idFields.every((f) => x[f.name] === y[f.name]);
|
|
406
|
-
}
|
|
407
|
-
function assignForeignKeyFields(field, resultData, mutationData) {
|
|
408
|
-
if (!(mutationData == null ? void 0 : mutationData.connect)) {
|
|
409
|
-
return;
|
|
410
|
-
}
|
|
411
|
-
if (!field.foreignKeyMapping) {
|
|
412
|
-
return;
|
|
413
|
-
}
|
|
414
|
-
for (const [idField, fkField] of Object.entries(field.foreignKeyMapping)) {
|
|
415
|
-
if (idField in mutationData.connect) {
|
|
416
|
-
resultData[fkField] = mutationData.connect[idField];
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
// src/cross/nested-read-visitor.ts
|
|
422
|
-
var NestedReadVisitor = class {
|
|
423
|
-
constructor(modelMeta, callback) {
|
|
424
|
-
this.modelMeta = modelMeta;
|
|
425
|
-
this.callback = callback;
|
|
426
|
-
}
|
|
427
|
-
doVisit(model, field, kind, args) {
|
|
428
|
-
if (this.callback.field) {
|
|
429
|
-
const r = this.callback.field(model, field, kind, args);
|
|
430
|
-
if (r === false) {
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
if (!args || typeof args !== "object") {
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
let selectInclude;
|
|
438
|
-
let nextKind;
|
|
439
|
-
if (args.select) {
|
|
440
|
-
selectInclude = args.select;
|
|
441
|
-
nextKind = "select";
|
|
442
|
-
} else if (args.include) {
|
|
443
|
-
selectInclude = args.include;
|
|
444
|
-
nextKind = "include";
|
|
445
|
-
}
|
|
446
|
-
if (selectInclude && typeof selectInclude === "object") {
|
|
447
|
-
for (const [k, v] of Object.entries(selectInclude)) {
|
|
448
|
-
if (k === "_count" && typeof v === "object" && v) {
|
|
449
|
-
this.doVisit(model, field, kind, v);
|
|
450
|
-
} else {
|
|
451
|
-
const field2 = resolveField(this.modelMeta, model, k);
|
|
452
|
-
if (field2) {
|
|
453
|
-
this.doVisit(field2.type, field2, nextKind, v);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
visit(model, args) {
|
|
460
|
-
this.doVisit(model, void 0, void 0, args);
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
// src/cross/types.ts
|
|
465
|
-
var PrismaWriteActions = [
|
|
466
|
-
"create",
|
|
467
|
-
"createMany",
|
|
468
|
-
"createManyAndReturn",
|
|
469
|
-
"connectOrCreate",
|
|
470
|
-
"update",
|
|
471
|
-
"updateMany",
|
|
472
|
-
"updateManyAndReturn",
|
|
473
|
-
"upsert",
|
|
474
|
-
"connect",
|
|
475
|
-
"disconnect",
|
|
476
|
-
"set",
|
|
477
|
-
"delete",
|
|
478
|
-
"deleteMany"
|
|
479
|
-
];
|
|
480
|
-
|
|
481
|
-
// src/cross/utils.ts
|
|
482
|
-
import { lowerCaseFirst as lowerCaseFirst2 } from "lower-case-first";
|
|
483
|
-
function getModelFields(data) {
|
|
484
|
-
return data ? Object.keys(data) : [];
|
|
485
|
-
}
|
|
486
|
-
function enumerate(x) {
|
|
487
|
-
if (x === null || x === void 0) {
|
|
488
|
-
return [];
|
|
489
|
-
} else if (Array.isArray(x)) {
|
|
490
|
-
return x;
|
|
491
|
-
} else {
|
|
492
|
-
return [x];
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
function zip(x, y) {
|
|
496
|
-
if (Array.isArray(x)) {
|
|
497
|
-
if (!Array.isArray(y)) {
|
|
498
|
-
throw new Error("x and y should be both array or both scalar");
|
|
499
|
-
}
|
|
500
|
-
if (x.length !== y.length) {
|
|
501
|
-
throw new Error("x and y should have the same length");
|
|
502
|
-
}
|
|
503
|
-
return x.map((_, i) => [x[i], y[i]]);
|
|
504
|
-
} else {
|
|
505
|
-
if (Array.isArray(y)) {
|
|
506
|
-
throw new Error("x and y should be both array or both scalar");
|
|
507
|
-
}
|
|
508
|
-
return [[x, y]];
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
function getIdFields(modelMeta, model, throwIfNotFound = false) {
|
|
512
|
-
var _a, _b;
|
|
513
|
-
const uniqueConstraints = (_b = (_a = modelMeta.models[lowerCaseFirst2(model)]) == null ? void 0 : _a.uniqueConstraints) != null ? _b : {};
|
|
514
|
-
const entries = Object.values(uniqueConstraints);
|
|
515
|
-
if (entries.length === 0) {
|
|
516
|
-
if (throwIfNotFound) {
|
|
517
|
-
throw new Error(`Model ${model} does not have any id field`);
|
|
518
|
-
}
|
|
519
|
-
return [];
|
|
520
|
-
}
|
|
521
|
-
return entries[0].fields.map((f) => requireField(modelMeta, model, f));
|
|
522
|
-
}
|
|
523
|
-
function getModelInfo(modelMeta, model, throwIfNotFound = false) {
|
|
524
|
-
const info = modelMeta.models[lowerCaseFirst2(model)];
|
|
525
|
-
if (!info && throwIfNotFound) {
|
|
526
|
-
throw new Error(`Unable to load info for ${model}`);
|
|
527
|
-
}
|
|
528
|
-
return info;
|
|
529
|
-
}
|
|
530
|
-
function getTypeDefInfo(modelMeta, typeDef, throwIfNotFound = false) {
|
|
531
|
-
var _a;
|
|
532
|
-
const info = (_a = modelMeta.typeDefs) == null ? void 0 : _a[lowerCaseFirst2(typeDef)];
|
|
533
|
-
if (!info && throwIfNotFound) {
|
|
534
|
-
throw new Error(`Unable to load info for ${typeDef}`);
|
|
535
|
-
}
|
|
536
|
-
return info;
|
|
537
|
-
}
|
|
538
|
-
function isDelegateModel(modelMeta, model) {
|
|
539
|
-
var _a, _b;
|
|
540
|
-
return !!((_b = (_a = getModelInfo(modelMeta, model)) == null ? void 0 : _a.attributes) == null ? void 0 : _b.some((attr) => attr.name === "@@delegate"));
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
// src/cross/nested-write-visitor.ts
|
|
544
|
-
var NestedWriteVisitor = class {
|
|
545
|
-
constructor(modelMeta, callback) {
|
|
546
|
-
this.modelMeta = modelMeta;
|
|
547
|
-
this.callback = callback;
|
|
548
|
-
}
|
|
549
|
-
isPrismaWriteAction(value) {
|
|
550
|
-
return PrismaWriteActions.includes(value);
|
|
551
|
-
}
|
|
552
|
-
/**
|
|
553
|
-
* Start visiting
|
|
554
|
-
*
|
|
555
|
-
* @see NestedWriterVisitorCallback
|
|
556
|
-
*/
|
|
557
|
-
visit(model, action, args) {
|
|
558
|
-
return __async(this, null, function* () {
|
|
559
|
-
if (!args) {
|
|
560
|
-
return;
|
|
561
|
-
}
|
|
562
|
-
let topData = args;
|
|
563
|
-
switch (action) {
|
|
564
|
-
case "create":
|
|
565
|
-
topData = topData.data;
|
|
566
|
-
break;
|
|
567
|
-
case "delete":
|
|
568
|
-
case "deleteMany":
|
|
569
|
-
topData = topData.where;
|
|
570
|
-
break;
|
|
571
|
-
}
|
|
572
|
-
yield this.doVisit(model, action, topData, void 0, void 0, []);
|
|
573
|
-
});
|
|
574
|
-
}
|
|
575
|
-
doVisit(model, action, data, parent, field, nestingPath) {
|
|
576
|
-
return __async(this, null, function* () {
|
|
577
|
-
if (!data) {
|
|
578
|
-
return;
|
|
579
|
-
}
|
|
580
|
-
const toplevel = field == void 0;
|
|
581
|
-
const context = { parent, field, nestingPath: [...nestingPath] };
|
|
582
|
-
const pushNewContext = (field2, model2, where, unique = false) => {
|
|
583
|
-
return __spreadProps(__spreadValues({}, context), { nestingPath: [...context.nestingPath, { field: field2, model: model2, where, unique }] });
|
|
584
|
-
};
|
|
585
|
-
switch (action) {
|
|
586
|
-
case "create":
|
|
587
|
-
for (const item of this.enumerateReverse(data)) {
|
|
588
|
-
const newContext = pushNewContext(field, model, {});
|
|
589
|
-
let callbackResult;
|
|
590
|
-
if (this.callback.create) {
|
|
591
|
-
callbackResult = yield this.callback.create(model, item, newContext);
|
|
592
|
-
}
|
|
593
|
-
if (callbackResult !== false) {
|
|
594
|
-
const subPayload = typeof callbackResult === "object" ? callbackResult : item;
|
|
595
|
-
yield this.visitSubPayload(model, action, subPayload, newContext.nestingPath);
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
break;
|
|
599
|
-
case "createMany":
|
|
600
|
-
case "createManyAndReturn":
|
|
601
|
-
if (data) {
|
|
602
|
-
const newContext = pushNewContext(field, model, {});
|
|
603
|
-
let callbackResult;
|
|
604
|
-
if (this.callback.createMany) {
|
|
605
|
-
callbackResult = yield this.callback.createMany(model, data, newContext);
|
|
606
|
-
}
|
|
607
|
-
if (callbackResult !== false) {
|
|
608
|
-
const subPayload = typeof callbackResult === "object" ? callbackResult : data.data;
|
|
609
|
-
yield this.visitSubPayload(model, action, subPayload, newContext.nestingPath);
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
break;
|
|
613
|
-
case "connectOrCreate":
|
|
614
|
-
for (const item of this.enumerateReverse(data)) {
|
|
615
|
-
const newContext = pushNewContext(field, model, item.where);
|
|
616
|
-
let callbackResult;
|
|
617
|
-
if (this.callback.connectOrCreate) {
|
|
618
|
-
callbackResult = yield this.callback.connectOrCreate(model, item, newContext);
|
|
619
|
-
}
|
|
620
|
-
if (callbackResult !== false) {
|
|
621
|
-
const subPayload = typeof callbackResult === "object" ? callbackResult : item.create;
|
|
622
|
-
yield this.visitSubPayload(model, action, subPayload, newContext.nestingPath);
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
break;
|
|
626
|
-
case "connect":
|
|
627
|
-
if (this.callback.connect) {
|
|
628
|
-
for (const item of this.enumerateReverse(data)) {
|
|
629
|
-
const newContext = pushNewContext(field, model, item, true);
|
|
630
|
-
yield this.callback.connect(model, item, newContext);
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
break;
|
|
634
|
-
case "disconnect":
|
|
635
|
-
if (this.callback.disconnect) {
|
|
636
|
-
for (const item of this.enumerateReverse(data)) {
|
|
637
|
-
const newContext = pushNewContext(field, model, item, typeof item === "object");
|
|
638
|
-
yield this.callback.disconnect(model, item, newContext);
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
break;
|
|
642
|
-
case "set":
|
|
643
|
-
if (this.callback.set) {
|
|
644
|
-
for (const item of this.enumerateReverse(data)) {
|
|
645
|
-
const newContext = pushNewContext(field, model, item, true);
|
|
646
|
-
yield this.callback.set(model, item, newContext);
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
break;
|
|
650
|
-
case "update":
|
|
651
|
-
for (const item of this.enumerateReverse(data)) {
|
|
652
|
-
const newContext = pushNewContext(field, model, item.where);
|
|
653
|
-
let callbackResult;
|
|
654
|
-
if (this.callback.update) {
|
|
655
|
-
callbackResult = yield this.callback.update(model, item, newContext);
|
|
656
|
-
}
|
|
657
|
-
if (callbackResult !== false) {
|
|
658
|
-
const subPayload = typeof callbackResult === "object" ? callbackResult : typeof item.data === "object" ? item.data : item;
|
|
659
|
-
yield this.visitSubPayload(model, action, subPayload, newContext.nestingPath);
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
break;
|
|
663
|
-
case "updateMany":
|
|
664
|
-
case "updateManyAndReturn":
|
|
665
|
-
for (const item of this.enumerateReverse(data)) {
|
|
666
|
-
const newContext = pushNewContext(field, model, item.where);
|
|
667
|
-
let callbackResult;
|
|
668
|
-
if (this.callback.updateMany) {
|
|
669
|
-
callbackResult = yield this.callback.updateMany(model, item, newContext);
|
|
670
|
-
}
|
|
671
|
-
if (callbackResult !== false) {
|
|
672
|
-
const subPayload = typeof callbackResult === "object" ? callbackResult : item;
|
|
673
|
-
yield this.visitSubPayload(model, action, subPayload, newContext.nestingPath);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
break;
|
|
677
|
-
case "upsert": {
|
|
678
|
-
for (const item of this.enumerateReverse(data)) {
|
|
679
|
-
const newContext = pushNewContext(field, model, item.where);
|
|
680
|
-
let callbackResult;
|
|
681
|
-
if (this.callback.upsert) {
|
|
682
|
-
callbackResult = yield this.callback.upsert(model, item, newContext);
|
|
683
|
-
}
|
|
684
|
-
if (callbackResult !== false) {
|
|
685
|
-
if (typeof callbackResult === "object") {
|
|
686
|
-
yield this.visitSubPayload(model, action, callbackResult, newContext.nestingPath);
|
|
687
|
-
} else {
|
|
688
|
-
yield this.visitSubPayload(model, action, item.create, newContext.nestingPath);
|
|
689
|
-
yield this.visitSubPayload(model, action, item.update, newContext.nestingPath);
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
break;
|
|
694
|
-
}
|
|
695
|
-
case "delete": {
|
|
696
|
-
if (this.callback.delete) {
|
|
697
|
-
for (const item of this.enumerateReverse(data)) {
|
|
698
|
-
const newContext = pushNewContext(field, model, toplevel ? item.where : item);
|
|
699
|
-
yield this.callback.delete(model, item, newContext);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
break;
|
|
703
|
-
}
|
|
704
|
-
case "deleteMany":
|
|
705
|
-
if (this.callback.deleteMany) {
|
|
706
|
-
for (const item of this.enumerateReverse(data)) {
|
|
707
|
-
const newContext = pushNewContext(field, model, toplevel ? item.where : item);
|
|
708
|
-
yield this.callback.deleteMany(model, item, newContext);
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
break;
|
|
712
|
-
default: {
|
|
713
|
-
throw new Error(`unhandled action type ${action}`);
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
});
|
|
717
|
-
}
|
|
718
|
-
visitSubPayload(model, action, payload, nestingPath) {
|
|
719
|
-
return __async(this, null, function* () {
|
|
720
|
-
for (const item of enumerate(payload)) {
|
|
721
|
-
for (const field of getModelFields(item)) {
|
|
722
|
-
const fieldInfo = resolveField(this.modelMeta, model, field);
|
|
723
|
-
if (!fieldInfo) {
|
|
724
|
-
continue;
|
|
725
|
-
}
|
|
726
|
-
if (fieldInfo.isDataModel) {
|
|
727
|
-
if (item[field]) {
|
|
728
|
-
for (const [subAction, subData] of Object.entries(item[field])) {
|
|
729
|
-
if (this.isPrismaWriteAction(subAction) && subData) {
|
|
730
|
-
yield this.doVisit(fieldInfo.type, subAction, subData, item[field], fieldInfo, [
|
|
731
|
-
...nestingPath
|
|
732
|
-
]);
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
} else {
|
|
737
|
-
if (this.callback.field) {
|
|
738
|
-
yield this.callback.field(fieldInfo, action, item[field], {
|
|
739
|
-
parent: item,
|
|
740
|
-
nestingPath,
|
|
741
|
-
field: fieldInfo
|
|
742
|
-
});
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
});
|
|
748
|
-
}
|
|
749
|
-
// enumerate a (possible) array in reverse order, so that the enumeration
|
|
750
|
-
// callback can safely delete the current item
|
|
751
|
-
*enumerateReverse(data) {
|
|
752
|
-
if (Array.isArray(data)) {
|
|
753
|
-
for (let i = data.length - 1; i >= 0; i--) {
|
|
754
|
-
yield data[i];
|
|
755
|
-
}
|
|
756
|
-
} else {
|
|
757
|
-
yield data;
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
};
|
|
761
|
-
|
|
762
|
-
// src/cross/query-analyzer.ts
|
|
763
|
-
import { lowerCaseFirst as lowerCaseFirst3 } from "lower-case-first";
|
|
764
|
-
function getReadModels(model, modelMeta, args) {
|
|
765
|
-
const result = /* @__PURE__ */ new Set();
|
|
766
|
-
result.add(model);
|
|
767
|
-
const visitor = new NestedReadVisitor(modelMeta, {
|
|
768
|
-
field: (model2) => {
|
|
769
|
-
result.add(model2);
|
|
770
|
-
return true;
|
|
771
|
-
}
|
|
772
|
-
});
|
|
773
|
-
visitor.visit(model, args);
|
|
774
|
-
return [...result];
|
|
775
|
-
}
|
|
776
|
-
function getMutatedModels(model, operation, mutationArgs, modelMeta) {
|
|
777
|
-
return __async(this, null, function* () {
|
|
778
|
-
const result = /* @__PURE__ */ new Set();
|
|
779
|
-
result.add(model);
|
|
780
|
-
if (mutationArgs) {
|
|
781
|
-
const addModel = (model2) => void result.add(model2);
|
|
782
|
-
const addCascades = (model2) => {
|
|
783
|
-
const cascades = /* @__PURE__ */ new Set();
|
|
784
|
-
const visited = /* @__PURE__ */ new Set();
|
|
785
|
-
collectDeleteCascades(model2, modelMeta, cascades, visited);
|
|
786
|
-
cascades.forEach((m) => addModel(m));
|
|
787
|
-
};
|
|
788
|
-
const visitor = new NestedWriteVisitor(modelMeta, {
|
|
789
|
-
create: addModel,
|
|
790
|
-
createMany: addModel,
|
|
791
|
-
connectOrCreate: addModel,
|
|
792
|
-
connect: addModel,
|
|
793
|
-
disconnect: addModel,
|
|
794
|
-
set: addModel,
|
|
795
|
-
update: addModel,
|
|
796
|
-
updateMany: addModel,
|
|
797
|
-
upsert: addModel,
|
|
798
|
-
delete: (model2) => {
|
|
799
|
-
addModel(model2);
|
|
800
|
-
addCascades(model2);
|
|
801
|
-
},
|
|
802
|
-
deleteMany: (model2) => {
|
|
803
|
-
addModel(model2);
|
|
804
|
-
addCascades(model2);
|
|
805
|
-
}
|
|
806
|
-
});
|
|
807
|
-
yield visitor.visit(model, operation, mutationArgs);
|
|
808
|
-
}
|
|
809
|
-
result.forEach((m) => {
|
|
810
|
-
getBaseRecursively(m, modelMeta, result);
|
|
811
|
-
});
|
|
812
|
-
return [...result];
|
|
813
|
-
});
|
|
814
|
-
}
|
|
815
|
-
function collectDeleteCascades(model, modelMeta, result, visited) {
|
|
816
|
-
var _a;
|
|
817
|
-
if (visited.has(model)) {
|
|
818
|
-
return;
|
|
819
|
-
}
|
|
820
|
-
visited.add(model);
|
|
821
|
-
const cascades = (_a = modelMeta.deleteCascade) == null ? void 0 : _a[lowerCaseFirst3(model)];
|
|
822
|
-
if (!cascades) {
|
|
823
|
-
return;
|
|
824
|
-
}
|
|
825
|
-
cascades.forEach((m) => {
|
|
826
|
-
result.add(m);
|
|
827
|
-
collectDeleteCascades(m, modelMeta, result, visited);
|
|
828
|
-
});
|
|
829
|
-
}
|
|
830
|
-
function getBaseRecursively(model, modelMeta, result) {
|
|
831
|
-
var _a;
|
|
832
|
-
const bases = (_a = getModelInfo(modelMeta, model)) == null ? void 0 : _a.baseTypes;
|
|
833
|
-
if (bases) {
|
|
834
|
-
bases.forEach((base) => {
|
|
835
|
-
result.add(base);
|
|
836
|
-
getBaseRecursively(base, modelMeta, result);
|
|
837
|
-
});
|
|
838
|
-
}
|
|
839
|
-
}
|
|
840
|
-
export {
|
|
841
|
-
ModelDataVisitor,
|
|
842
|
-
NestedReadVisitor,
|
|
843
|
-
NestedWriteVisitor,
|
|
844
|
-
PrismaWriteActions,
|
|
845
|
-
applyMutation,
|
|
846
|
-
clone,
|
|
847
|
-
enumerate,
|
|
848
|
-
getFields,
|
|
849
|
-
getIdFields,
|
|
850
|
-
getModelFields,
|
|
851
|
-
getModelInfo,
|
|
852
|
-
getMutatedModels,
|
|
853
|
-
getReadModels,
|
|
854
|
-
getTypeDefInfo,
|
|
855
|
-
getUniqueConstraints,
|
|
856
|
-
isDelegateModel,
|
|
857
|
-
requireField,
|
|
858
|
-
resolveField,
|
|
859
|
-
zip
|
|
860
|
-
};
|
|
861
|
-
//# sourceMappingURL=index.mjs.map
|