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