@zenstackhq/runtime 0.6.0-pre.11 → 0.6.0-pre.12

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 (118) hide show
  1. package/constants.d.ts +4 -0
  2. package/constants.js +8 -0
  3. package/constants.js.map +1 -0
  4. package/enhancements/index.d.ts +4 -0
  5. package/enhancements/index.js +21 -0
  6. package/enhancements/index.js.map +1 -0
  7. package/enhancements/model-meta.d.ts +9 -0
  8. package/enhancements/model-meta.js +25 -0
  9. package/enhancements/model-meta.js.map +1 -0
  10. package/enhancements/nested-write-vistor.d.ts +65 -0
  11. package/enhancements/nested-write-vistor.js +155 -0
  12. package/enhancements/nested-write-vistor.js.map +1 -0
  13. package/enhancements/omit.d.ts +5 -0
  14. package/enhancements/omit.js +60 -0
  15. package/enhancements/omit.js.map +1 -0
  16. package/enhancements/password.d.ts +5 -0
  17. package/enhancements/password.js +66 -0
  18. package/enhancements/password.js.map +1 -0
  19. package/enhancements/policy/handler.d.ts +36 -0
  20. package/enhancements/policy/handler.js +278 -0
  21. package/enhancements/policy/handler.js.map +1 -0
  22. package/enhancements/policy/index.d.ts +17 -0
  23. package/enhancements/policy/index.js +31 -0
  24. package/enhancements/policy/index.js.map +1 -0
  25. package/{lib → enhancements}/policy/logger.d.ts +3 -0
  26. package/{lib → enhancements}/policy/logger.js +4 -0
  27. package/enhancements/policy/logger.js.map +1 -0
  28. package/enhancements/policy/policy-utils.d.ts +78 -0
  29. package/enhancements/policy/policy-utils.js +569 -0
  30. package/enhancements/policy/policy-utils.js.map +1 -0
  31. package/enhancements/preset.d.ts +7 -0
  32. package/enhancements/preset.js +15 -0
  33. package/enhancements/preset.js.map +1 -0
  34. package/enhancements/proxy.d.ts +75 -0
  35. package/enhancements/proxy.js +196 -0
  36. package/enhancements/proxy.js.map +1 -0
  37. package/enhancements/types.d.ts +24 -0
  38. package/{lib/config.js → enhancements/types.js} +1 -1
  39. package/enhancements/types.js.map +1 -0
  40. package/enhancements/utils.d.ts +16 -0
  41. package/enhancements/utils.js +31 -0
  42. package/enhancements/utils.js.map +1 -0
  43. package/index.d.ts +4 -0
  44. package/{lib/index.js → index.js} +2 -4
  45. package/index.js.map +1 -0
  46. package/package.json +4 -3
  47. package/{lib/request.d.ts → request.d.ts} +0 -0
  48. package/{lib/request.js → request.js} +0 -0
  49. package/request.js.map +1 -0
  50. package/{lib/serialization-utils.d.ts → serialization-utils.d.ts} +0 -0
  51. package/{lib/serialization-utils.js → serialization-utils.js} +0 -0
  52. package/serialization-utils.js.map +1 -0
  53. package/types.d.ts +80 -0
  54. package/types.js +14 -0
  55. package/types.js.map +1 -0
  56. package/{lib/validation.d.ts → validation.d.ts} +0 -0
  57. package/{lib/validation.js → validation.js} +0 -0
  58. package/validation.js.map +1 -0
  59. package/{lib/version.d.ts → version.d.ts} +0 -0
  60. package/{lib/version.js → version.js} +0 -0
  61. package/version.js.map +1 -0
  62. package/client/index.d.ts +0 -3
  63. package/client/index.js +0 -11
  64. package/lib/config.d.ts +0 -14
  65. package/lib/config.js.map +0 -1
  66. package/lib/constants.d.ts +0 -16
  67. package/lib/constants.js +0 -20
  68. package/lib/constants.js.map +0 -1
  69. package/lib/handler/data/crud.d.ts +0 -17
  70. package/lib/handler/data/crud.js +0 -255
  71. package/lib/handler/data/crud.js.map +0 -1
  72. package/lib/handler/data/handler.d.ts +0 -20
  73. package/lib/handler/data/handler.js +0 -150
  74. package/lib/handler/data/handler.js.map +0 -1
  75. package/lib/handler/data/nested-write-vistor.d.ts +0 -31
  76. package/lib/handler/data/nested-write-vistor.js +0 -67
  77. package/lib/handler/data/nested-write-vistor.js.map +0 -1
  78. package/lib/handler/data/policy-utils.d.ts +0 -73
  79. package/lib/handler/data/policy-utils.js +0 -447
  80. package/lib/handler/data/policy-utils.js.map +0 -1
  81. package/lib/handler/index.d.ts +0 -1
  82. package/lib/handler/index.js +0 -9
  83. package/lib/handler/index.js.map +0 -1
  84. package/lib/handler/types.d.ts +0 -28
  85. package/lib/handler/types.js +0 -36
  86. package/lib/handler/types.js.map +0 -1
  87. package/lib/index.d.ts +0 -6
  88. package/lib/index.js.map +0 -1
  89. package/lib/policy/handler.d.ts +0 -37
  90. package/lib/policy/handler.js +0 -333
  91. package/lib/policy/handler.js.map +0 -1
  92. package/lib/policy/index.d.ts +0 -11
  93. package/lib/policy/index.js +0 -10
  94. package/lib/policy/index.js.map +0 -1
  95. package/lib/policy/logger.js.map +0 -1
  96. package/lib/policy/nested-write-vistor.d.ts +0 -30
  97. package/lib/policy/nested-write-vistor.js +0 -69
  98. package/lib/policy/nested-write-vistor.js.map +0 -1
  99. package/lib/policy/policy-utils.d.ts +0 -78
  100. package/lib/policy/policy-utils.js +0 -503
  101. package/lib/policy/policy-utils.js.map +0 -1
  102. package/lib/request-handler.d.ts +0 -21
  103. package/lib/request-handler.js +0 -37
  104. package/lib/request-handler.js.map +0 -1
  105. package/lib/request.js.map +0 -1
  106. package/lib/serialization-utils.js.map +0 -1
  107. package/lib/service.d.ts +0 -32
  108. package/lib/service.js +0 -184
  109. package/lib/service.js.map +0 -1
  110. package/lib/types.d.ts +0 -185
  111. package/lib/types.js +0 -71
  112. package/lib/types.js.map +0 -1
  113. package/lib/validation.js.map +0 -1
  114. package/lib/version.js.map +0 -1
  115. package/server/index.d.ts +0 -16
  116. package/server/index.js +0 -6
  117. package/types/index.d.ts +0 -1
  118. package/types/index.js +0 -3
@@ -1,503 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.validateModelPayload = exports.preprocessWritePayload = exports.injectTransactionId = exports.checkPolicyForFilter = exports.checkPolicyForIds = exports.preUpdateCheck = exports.readWithCheck = exports.ensureAuthGuard = exports.getAuthGuard = exports.queryIds = exports.ensureArray = exports.or = exports.and = void 0;
16
- /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
17
- /* eslint-disable @typescript-eslint/no-explicit-any */
18
- const bcryptjs_1 = require("bcryptjs");
19
- const deepcopy_1 = __importDefault(require("deepcopy"));
20
- const superjson_1 = __importDefault(require("superjson"));
21
- const constants_1 = require("../constants");
22
- const nested_write_vistor_1 = require("./nested-write-vistor");
23
- const runtime_1 = require("@prisma/client/runtime");
24
- const version_1 = require("../version");
25
- const change_case_1 = require("change-case");
26
- //#region General helpers
27
- /**
28
- * Creates a conjunction of a list of query conditions.
29
- */
30
- function and(...conditions) {
31
- const filtered = conditions.filter((c) => !!c);
32
- if (filtered.length === 0) {
33
- return undefined;
34
- }
35
- else if (filtered.length === 1) {
36
- return filtered[0];
37
- }
38
- else {
39
- return { AND: filtered };
40
- }
41
- }
42
- exports.and = and;
43
- /**
44
- * Creates a disjunction of a list of query conditions.
45
- */
46
- function or(...conditions) {
47
- const filtered = conditions.filter((c) => !!c);
48
- if (filtered.length === 0) {
49
- return undefined;
50
- }
51
- else if (filtered.length === 1) {
52
- return filtered[0];
53
- }
54
- else {
55
- return { OR: filtered };
56
- }
57
- }
58
- exports.or = or;
59
- /**
60
- * Wraps a value into array if it's not already one
61
- */
62
- function ensureArray(value) {
63
- return Array.isArray(value) ? value : [value];
64
- }
65
- exports.ensureArray = ensureArray;
66
- /**
67
- * Given a where condition, queries db and returns IDs of result entities
68
- */
69
- function queryIds(model, db, where) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- const r = yield db[model].findMany({ select: { id: true }, where });
72
- return r.map((item) => item.id);
73
- });
74
- }
75
- exports.queryIds = queryIds;
76
- //#endregion
77
- //#region Policy enforcement helpers
78
- function getAuthGuard(policy, model, operation, user) {
79
- var _a;
80
- return __awaiter(this, void 0, void 0, function* () {
81
- // const metaModule = await loadMetaModule();
82
- const provider = (_a = policy.guard[(0, change_case_1.camelCase)(model)]) === null || _a === void 0 ? void 0 : _a[operation];
83
- if (!provider) {
84
- throw new runtime_1.PrismaClientUnknownRequestError(`zenstack: unable to load authorization query function for ${model}`, { clientVersion: (0, version_1.getVersion)() });
85
- }
86
- return provider({ user });
87
- });
88
- }
89
- exports.getAuthGuard = getAuthGuard;
90
- function resolveField(policy, model, field) {
91
- var _a;
92
- return __awaiter(this, void 0, void 0, function* () {
93
- return (_a = policy.fieldMapping[(0, change_case_1.camelCase)(model)]) === null || _a === void 0 ? void 0 : _a[field];
94
- });
95
- }
96
- function ensureAuthGuard(args, model, operation, user, policy) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- const guard = yield getAuthGuard(policy, model, operation, user);
99
- return Object.assign(Object.assign({}, args), { where: and(args.where, guard) });
100
- });
101
- }
102
- exports.ensureAuthGuard = ensureAuthGuard;
103
- /**
104
- * Read model entities w.r.t the given query args. The result list
105
- * are guaranteed to fully satisfy 'read' policy rules recursively.
106
- *
107
- * For to-many relations involved, items not satisfying policy are
108
- * silently trimmed. For to-one relation, if relation data fails policy
109
- * an CRUDError is thrown.
110
- *
111
- * @param model the model to query for
112
- * @param queryArgs the Prisma query args
113
- * @param service the ZenStack service
114
- * @param context the query context
115
- * @param db the db (or transaction)
116
- * @returns
117
- */
118
- function readWithCheck(model, queryArgs, user, db, policy, logger) {
119
- return __awaiter(this, void 0, void 0, function* () {
120
- const args = queryArgs ? (0, deepcopy_1.default)(queryArgs) : {};
121
- args.where = and(args.where, yield getAuthGuard(policy, model, 'read', user));
122
- // recursively inject read guard conditions into the query args
123
- yield injectNestedReadConditions(policy, model, args, user);
124
- logger.info(`Reading with validation for ${model}: ${superjson_1.default.stringify(args)}`);
125
- const result = yield db[model].findMany(args);
126
- yield Promise.all(result.map((item) => postProcessForRead(item, model, args, user, db, policy, 'read', logger)));
127
- return result;
128
- });
129
- }
130
- exports.readWithCheck = readWithCheck;
131
- function injectNestedReadConditions(policy, model, args, user) {
132
- var _a, _b, _c, _d;
133
- return __awaiter(this, void 0, void 0, function* () {
134
- const injectTarget = (_a = args.select) !== null && _a !== void 0 ? _a : args.include;
135
- if (!injectTarget) {
136
- return;
137
- }
138
- for (const field of getModelFields(injectTarget)) {
139
- const fieldInfo = yield resolveField(policy, model, field);
140
- if (!fieldInfo || !fieldInfo.isDataModel) {
141
- // only care about relation fields
142
- continue;
143
- }
144
- if (fieldInfo.isArray) {
145
- if (typeof injectTarget[field] !== 'object') {
146
- injectTarget[field] = {};
147
- }
148
- // inject extra condition for to-many relation
149
- injectTarget[field].where = and(injectTarget.where, yield getAuthGuard(policy, fieldInfo.type, 'read', user));
150
- }
151
- else {
152
- // there's no way of injecting condition for to-one relation, so we
153
- // make sure 'id' field is selected and check them against query result
154
- if (((_b = injectTarget[field]) === null || _b === void 0 ? void 0 : _b.select) &&
155
- ((_d = (_c = injectTarget[field]) === null || _c === void 0 ? void 0 : _c.select) === null || _d === void 0 ? void 0 : _d.id) !== true) {
156
- injectTarget[field].select.id = true;
157
- }
158
- }
159
- // recurse
160
- yield injectNestedReadConditions(policy, fieldInfo.type, injectTarget[field], user);
161
- }
162
- });
163
- }
164
- function getModelFields(data) {
165
- return Object.keys(data).filter((f) => !constants_1.AUXILIARY_FIELDS.includes(f));
166
- }
167
- /**
168
- * Post processing checks for read model entities.
169
- * Validates to-one relations (which can't be trimmed
170
- * at query time) and removes fields that should be
171
- * omitted.
172
- */
173
- function postProcessForRead(entityData, model, args, user, db, policy, operation, logger) {
174
- var _a, _b;
175
- return __awaiter(this, void 0, void 0, function* () {
176
- if (!(entityData === null || entityData === void 0 ? void 0 : entityData.id)) {
177
- return;
178
- }
179
- for (const field of Object.keys(entityData)) {
180
- if (yield shouldOmit(policy, model, field)) {
181
- delete entityData[field];
182
- }
183
- }
184
- const injectTarget = (_a = args.select) !== null && _a !== void 0 ? _a : args.include;
185
- if (!injectTarget) {
186
- return;
187
- }
188
- // to-one relation data cannot be trimmed by injected guards, we have to
189
- // post-check them
190
- for (const field of getModelFields(injectTarget)) {
191
- const fieldInfo = yield resolveField(policy, model, field);
192
- if (!fieldInfo ||
193
- !fieldInfo.isDataModel ||
194
- fieldInfo.isArray ||
195
- !((_b = entityData === null || entityData === void 0 ? void 0 : entityData[field]) === null || _b === void 0 ? void 0 : _b.id)) {
196
- continue;
197
- }
198
- logger.info(`Validating read of to-one relation: ${fieldInfo.type}#${entityData[field].id}`);
199
- yield checkPolicyForIds(fieldInfo.type, [entityData[field].id], operation, user, db, policy, logger);
200
- // recurse
201
- yield postProcessForRead(entityData[field], fieldInfo.type, injectTarget[field], user, db, policy, operation, logger);
202
- }
203
- });
204
- }
205
- /**
206
- * Validates that a model entity satisfies 'update' policy rules
207
- * before conducting an update
208
- *
209
- * @param model model under update
210
- * @param updateArgs Prisma update args
211
- * @param service the ZenStack service
212
- * @param context the query context
213
- * @param transaction the db transaction context
214
- */
215
- function preUpdateCheck(model, updateArgs, user, transaction, policy, logger) {
216
- return __awaiter(this, void 0, void 0, function* () {
217
- // check the entity directly under update first
218
- yield checkPolicyForFilter(model, updateArgs.where, 'update', user, transaction, policy, logger);
219
- // We need to ensure that all nested updates respect policy rules of
220
- // the corresponding model.
221
- //
222
- // Here we use a visitor to collect all necessary
223
- // checkes. During visiting, for every update we meet against a relation,
224
- // we collect its path (starting from the root object). If the relation
225
- // is a to-many one, it can carry filter condition that we collect as well.
226
- //
227
- // After the visiting, we validate that each collected path satisfies
228
- // corresponding policy rules by making separate queries.
229
- const visitor = new nested_write_vistor_1.NestedWriteVisitor((model, field) => resolveField(policy, model, field));
230
- const state = [];
231
- const checks = [];
232
- const visitAction = (fieldInfo, action, fieldData, _parentData, state) => __awaiter(this, void 0, void 0, function* () {
233
- if (!fieldInfo.isDataModel) {
234
- return state;
235
- }
236
- if (![
237
- 'update',
238
- 'updateMany',
239
- 'upsert',
240
- 'delete',
241
- 'deleteMany',
242
- ].includes(action)) {
243
- // no more nested writes inside, stop recursion
244
- return undefined;
245
- }
246
- // for to-many relation, a filter condition can be attached
247
- let condition = undefined;
248
- if (fieldInfo.isArray) {
249
- switch (action) {
250
- case 'update':
251
- case 'updateMany':
252
- case 'upsert':
253
- // condition is wrapped in 'where'
254
- condition = or(...ensureArray(fieldData).map((d) => d.where));
255
- break;
256
- case 'delete':
257
- case 'deleteMany':
258
- // condition is not wrapped
259
- condition = or(...ensureArray(fieldData));
260
- break;
261
- }
262
- }
263
- // build up a new segment of path
264
- const selectionPath = [
265
- ...state,
266
- { field: fieldInfo, where: condition },
267
- ];
268
- const operation = [
269
- 'update',
270
- 'updateMany',
271
- 'upsert',
272
- ].includes(action)
273
- ? 'update'
274
- : 'delete';
275
- // collect an asynchronous check action
276
- checks.push(checkPolicyForSelectionPath(model, updateArgs.where, selectionPath, operation, transaction, policy, user, logger));
277
- // recurse down with the current path as the new state
278
- return selectionPath;
279
- });
280
- yield visitor.visit(model, updateArgs.data, undefined, state, visitAction);
281
- yield Promise.all(checks);
282
- });
283
- }
284
- exports.preUpdateCheck = preUpdateCheck;
285
- /**
286
- * Given a list of ids for a model, check if they all match policy rules, and if not,
287
- * throw a CRUDError.
288
- *
289
- * @param model the model
290
- * @param ids the entity ids
291
- * @param operation the operation to check for
292
- * @param service the ZenStack service
293
- * @param context the query context
294
- * @param db the db or transaction
295
- */
296
- function checkPolicyForIds(model, ids, operation, user, db, policy, logger) {
297
- return __awaiter(this, void 0, void 0, function* () {
298
- logger.info(`Checking policy for ${model}#[${ids.join(', ')}] for ${operation}`);
299
- // build a query condition with policy injected
300
- const idCondition = ids.length > 1 ? { id: { in: ids } } : { id: ids[0] };
301
- const query = {
302
- where: and(idCondition, yield getAuthGuard(policy, model, operation, user)),
303
- select: { id: true },
304
- };
305
- // query with policy injected
306
- const filteredResult = (yield db[model].findMany(query));
307
- // see if we get fewer items with policy, if so, reject with an throw
308
- const filteredIds = filteredResult.map((item) => item.id);
309
- if (filteredIds.length < ids.length) {
310
- const gap = ids.filter((id) => !filteredIds.includes(id));
311
- throw new runtime_1.PrismaClientKnownRequestError(`denied by policy: entities failed '${operation}' check, ${model}#[${gap.join(', ')}]`, { clientVersion: (0, version_1.getVersion)(), code: 'P2004' });
312
- }
313
- });
314
- }
315
- exports.checkPolicyForIds = checkPolicyForIds;
316
- function checkPolicyForFilter(model, filter, operation, user, db, policy, logger) {
317
- return __awaiter(this, void 0, void 0, function* () {
318
- logger.info(`Checking policy for ${model}#${JSON.stringify(filter)} for ${operation}`);
319
- const count = yield db[model].count({ where: filter });
320
- // build a query condition with policy injected
321
- const guardedQuery = {
322
- where: and(filter, yield getAuthGuard(policy, model, operation, user)),
323
- };
324
- // query with policy injected
325
- const guardedCount = yield db[model].count(guardedQuery);
326
- // see if we get fewer items with policy, if so, reject with an throw
327
- if (guardedCount < count) {
328
- throw new runtime_1.PrismaClientKnownRequestError(`denied by policy: entities of ${model} failed '${operation}' check, ${count - guardedCount} entities failed policy check`, { clientVersion: (0, version_1.getVersion)(), code: 'P2004' });
329
- }
330
- });
331
- }
332
- exports.checkPolicyForFilter = checkPolicyForFilter;
333
- /**
334
- * Given a selection path, check if the entities at the end of path satisfy
335
- * policy rules. If not, throw an error.
336
- */
337
- function checkPolicyForSelectionPath(model, rootFilter, selectionPath, operation, db, policy, user, logger) {
338
- return __awaiter(this, void 0, void 0, function* () {
339
- const targetField = selectionPath[selectionPath.length - 1].field;
340
- // build a Prisma query for the path
341
- const query = buildChainedSelectQuery(rootFilter, selectionPath);
342
- logger.info(`Query for selection path: model ${model}, path ${superjson_1.default.stringify(selectionPath)}, query ${superjson_1.default.stringify(query)}`);
343
- const r = yield db[model].findUnique(query);
344
- // collect ids at the end of the path
345
- const ids = collectTerminalEntityIds(selectionPath, r);
346
- logger.info(`Collected leaf ids: ${superjson_1.default.stringify(ids)}`);
347
- if (ids.length === 0) {
348
- return;
349
- }
350
- // check policies for the collected ids
351
- yield checkPolicyForIds(targetField.type, ids, operation, user, db, policy, logger);
352
- });
353
- }
354
- /**
355
- * Builds a Prisma query for the given selection path
356
- */
357
- function buildChainedSelectQuery(rootFilter, selectionPath) {
358
- const query = { where: rootFilter, select: { id: true } };
359
- let currSelect = query.select;
360
- for (const path of selectionPath) {
361
- const nextSelect = { select: { id: true } };
362
- currSelect[path.field.name] = nextSelect;
363
- if (path.where) {
364
- currSelect[path.field.name].where = path.where;
365
- }
366
- currSelect = nextSelect.select;
367
- }
368
- return query;
369
- }
370
- function collectTerminalEntityIds(selectionPath, data) {
371
- let curr = data;
372
- for (const path of selectionPath) {
373
- curr = curr[path.field.name];
374
- }
375
- if (!curr) {
376
- throw new Error('an unexpected error occurred');
377
- }
378
- return Array.isArray(curr)
379
- ? curr.map((item) => item.id)
380
- : [curr.id];
381
- }
382
- /**
383
- * Injects assignment of zenstack_transaction field for all nested
384
- * update/create in a Prisma update args recursively.
385
- *
386
- * @return a tuple containing all model types that are involved in
387
- * creation or updating, respectively
388
- */
389
- function injectTransactionId(model, args, operation, transactionId, policy) {
390
- return __awaiter(this, void 0, void 0, function* () {
391
- const updatedModels = new Set();
392
- const createdModels = new Set();
393
- // if (args.data) {
394
- // args.data[TRANSACTION_FIELD_NAME] = `${transactionId}:${operation}`;
395
- // updatedModels.add(model);
396
- // }
397
- args[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:${operation}`;
398
- if (operation === 'create') {
399
- createdModels.add(model);
400
- }
401
- else {
402
- updatedModels.add(model);
403
- }
404
- const visitAction = (fieldInfo, action, fieldData) => __awaiter(this, void 0, void 0, function* () {
405
- if (fieldInfo.isDataModel && fieldData) {
406
- switch (action) {
407
- case 'update':
408
- case 'updateMany':
409
- ensureArray(fieldData).forEach((item) => {
410
- if (fieldInfo.isArray && item.data) {
411
- item.data[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:update`;
412
- }
413
- else {
414
- item[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:update`;
415
- }
416
- updatedModels.add(fieldInfo.type);
417
- });
418
- break;
419
- case 'upsert':
420
- ensureArray(fieldData).forEach((item) => {
421
- item.create[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:create`;
422
- createdModels.add(fieldInfo.type);
423
- item.update[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:update`;
424
- updatedModels.add(fieldInfo.type);
425
- });
426
- break;
427
- case 'create':
428
- case 'createMany':
429
- ensureArray(fieldData).forEach((item) => {
430
- item[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:create`;
431
- createdModels.add(fieldInfo.type);
432
- });
433
- break;
434
- case 'connectOrCreate':
435
- ensureArray(fieldData).forEach((item) => {
436
- item.create[constants_1.TRANSACTION_FIELD_NAME] = `${transactionId}:create`;
437
- createdModels.add(fieldInfo.type);
438
- });
439
- break;
440
- }
441
- }
442
- return true;
443
- });
444
- const visitor = new nested_write_vistor_1.NestedWriteVisitor((model, field) => resolveField(policy, model, field));
445
- yield visitor.visit(model, args, undefined, undefined, visitAction);
446
- return {
447
- createdModels: Array.from(createdModels),
448
- updatedModels: Array.from(updatedModels),
449
- };
450
- });
451
- }
452
- exports.injectTransactionId = injectTransactionId;
453
- /**
454
- * Preprocesses the given write args to modify field values (in place) based on
455
- * attributes like @password
456
- */
457
- function preprocessWritePayload(policy, model, args) {
458
- return __awaiter(this, void 0, void 0, function* () {
459
- const visitAction = (fieldInfo, _action, fieldData, parentData) => __awaiter(this, void 0, void 0, function* () {
460
- var _a, _b, _c;
461
- // process @password field
462
- const pwdAttr = (_a = fieldInfo.attributes) === null || _a === void 0 ? void 0 : _a.find((attr) => attr.name === '@password');
463
- if (pwdAttr && fieldInfo.type === 'String') {
464
- // hash password value
465
- let salt = (_b = pwdAttr.args.find((arg) => arg.name === 'salt')) === null || _b === void 0 ? void 0 : _b.value;
466
- if (!salt) {
467
- salt = (_c = pwdAttr.args.find((arg) => arg.name === 'saltLength')) === null || _c === void 0 ? void 0 : _c.value;
468
- }
469
- if (!salt) {
470
- salt = constants_1.DEFAULT_PASSWORD_SALT_LENGTH;
471
- }
472
- parentData[fieldInfo.name] = (0, bcryptjs_1.hashSync)(fieldData, salt);
473
- }
474
- return true;
475
- });
476
- const visitor = new nested_write_vistor_1.NestedWriteVisitor((model, field) => resolveField(policy, model, field));
477
- yield visitor.visit(model, args, undefined, undefined, visitAction);
478
- });
479
- }
480
- exports.preprocessWritePayload = preprocessWritePayload;
481
- function shouldOmit(policy, model, field) {
482
- return __awaiter(this, void 0, void 0, function* () {
483
- if ([constants_1.TRANSACTION_FIELD_NAME, constants_1.GUARD_FIELD_NAME].includes(field)) {
484
- return true;
485
- }
486
- const fieldInfo = yield resolveField(policy, model, field);
487
- return !!(fieldInfo && fieldInfo.attributes.find((attr) => attr.name === '@omit'));
488
- });
489
- }
490
- function validateModelPayload(
491
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
492
- model,
493
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
494
- mode,
495
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
496
- payload) {
497
- return __awaiter(this, void 0, void 0, function* () {
498
- return;
499
- });
500
- }
501
- exports.validateModelPayload = validateModelPayload;
502
- //#endregion
503
- //# sourceMappingURL=policy-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy-utils.js","sourceRoot":"","sources":["../../../src/policy/policy-utils.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { NextApiRequest, NextApiResponse } from 'next';
2
- import { AuthUser, Service } from './types';
3
- /**
4
- * Options for initializing a Next.js API endpoint request handler. This type is re-exported in @zenstackhq/runtime/server.
5
- * @see requestHandler
6
- */
7
- export type RequestHandlerOptions = {
8
- /**
9
- * Hook method for providing current login user from session.
10
- */
11
- getServerUser: (req: NextApiRequest, res: NextApiResponse) => Promise<AuthUser | undefined>;
12
- };
13
- /**
14
- * Creates a Next.js API endpoint request handler which encapsulates RESTful APIs generated by ZenStack.
15
- * The created handler should be mounted at /api/zenstack endpoint.
16
- *
17
- * @param service ZenStack service which wraps a Prisma db client inside
18
- * @param options Options for initialization
19
- * @returns An API endpoint request handler
20
- */
21
- export declare function requestHandler<DbClient>(service: Service<DbClient>, options: RequestHandlerOptions): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.requestHandler = void 0;
13
- const handler_1 = require("./handler");
14
- /**
15
- * Creates a Next.js API endpoint request handler which encapsulates RESTful APIs generated by ZenStack.
16
- * The created handler should be mounted at /api/zenstack endpoint.
17
- *
18
- * @param service ZenStack service which wraps a Prisma db client inside
19
- * @param options Options for initialization
20
- * @returns An API endpoint request handler
21
- */
22
- function requestHandler(service, options) {
23
- const dataHandler = new handler_1.DataHandler(service, options);
24
- return (req, res) => __awaiter(this, void 0, void 0, function* () {
25
- const [route, ...rest] = req.query.path;
26
- switch (route) {
27
- // "/data" route is for handling data-access requests
28
- case 'data':
29
- return dataHandler.handle(req, res, rest);
30
- default:
31
- service.warn(`Unknown route: ${route}`);
32
- res.status(404).json({ error: `Unknown route: ${route}` });
33
- }
34
- });
35
- }
36
- exports.requestHandler = requestHandler;
37
- //# sourceMappingURL=request-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/request-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAAwC;AAiBxC;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC1B,OAA0B,EAC1B,OAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,qBAAW,CAC/B,OAAoC,EACpC,OAAO,CACV,CAAC;IACF,OAAO,CAAO,GAAmB,EAAE,GAAoB,EAAE,EAAE;QACvD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAgB,CAAC;QACpD,QAAQ,KAAK,EAAE;YACX,qDAAqD;YACrD,KAAK,MAAM;gBACP,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE9C;gBACI,OAAO,CAAC,IAAI,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;gBACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,KAAK,EAAE,EAAE,CAAC,CAAC;SAClE;IACL,CAAC,CAAA,CAAC;AACN,CAAC;AApBD,wCAoBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialization-utils.js","sourceRoot":"","sources":["../../src/serialization-utils.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAiC;AACjC,0DAAkC;AAElC,SAAgB,mBAAmB;IAC/B,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACjD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjD,EACD,QAAQ,CACX,CAAC;IACF,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAgB,EAAE,CAAC,oBAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC;KACrC,EACD,YAAY,CACf,CAAC;AACN,CAAC;AAjBD,kDAiBC"}
package/lib/service.d.ts DELETED
@@ -1,32 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'stream';
3
- import { ServiceConfig } from './config';
4
- import { FieldInfo, LogEvent, LogLevel, PolicyOperationKind, QueryContext, Service } from './types';
5
- export declare abstract class DefaultService<DbClient extends {
6
- $on: (eventType: any, handler: (event: any) => void) => void;
7
- }> implements Service<DbClient> {
8
- protected config: ServiceConfig;
9
- private prisma;
10
- protected readonly logEmitter: EventEmitter;
11
- private readonly logSettings;
12
- private guardModule;
13
- private fieldConstraintModule;
14
- private readonly prismaLogLevels;
15
- constructor();
16
- private initialize;
17
- $on(level: LogLevel, callback: (event: LogEvent) => void): void;
18
- private handleLog;
19
- private loadConfig;
20
- get db(): DbClient;
21
- resolveField(model: string, field: string): Promise<FieldInfo | undefined>;
22
- buildQueryGuard(model: string, operation: PolicyOperationKind, context: QueryContext): Promise<unknown>;
23
- validateModelPayload(model: string, mode: 'create' | 'update', payload: unknown): Promise<void>;
24
- verbose(message: string): void;
25
- info(message: string): void;
26
- warn(message: string): void;
27
- error(message: string): void;
28
- reinitialize(): void;
29
- protected abstract initializePrisma(): DbClient;
30
- protected abstract loadGuardModule(): Promise<any>;
31
- protected abstract loadFieldConstraintModule(): Promise<any>;
32
- }