@cerebruminc/yates 1.0.4 → 1.1.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/dist/index.js CHANGED
@@ -65,16 +65,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
65
65
  exports.__esModule = true;
66
66
  exports.setup = exports.createRoles = exports.setupMiddleware = exports.createRoleName = exports.createAbilityName = void 0;
67
67
  var client_1 = require("@prisma/client");
68
+ var difference_1 = __importDefault(require("lodash/difference"));
68
69
  var flatMap_1 = __importDefault(require("lodash/flatMap"));
69
70
  var map_1 = __importDefault(require("lodash/map"));
70
71
  var toPairs_1 = __importDefault(require("lodash/toPairs"));
72
+ var VALID_OPERATIONS = ["SELECT", "UPDATE", "INSERT", "DELETE"];
73
+ /**
74
+ * This function is used to take a lock that is automatically released at the end of the current transaction.
75
+ * This is very convenient for ensuring we don't hit concurrency issues when running setup code.
76
+ */
77
+ var takeLock = function (prisma) {
78
+ return prisma.$executeRawUnsafe("SELECT pg_advisory_xact_lock(2142616474639426746);");
79
+ };
80
+ // Sanitize a single string by ensuring the it has only lowercase alpha characters and underscores
81
+ var sanitizeSlug = function (slug) { return slug.toLowerCase().replace("-", "_").replace(/[^a-z0-9_]/gi, ""); };
71
82
  var createAbilityName = function (model, ability) {
72
- return "".concat(model, "_").concat(ability, "_role").toLowerCase();
83
+ return sanitizeSlug("yates_ability_".concat(model, "_").concat(ability, "_role"));
73
84
  };
74
85
  exports.createAbilityName = createAbilityName;
75
86
  var createRoleName = function (name) {
76
- var normalized = name.toLowerCase().replace("-", "_").replace(/[^a-z_]/g, "");
77
- return "yates_role_".concat(normalized);
87
+ // Ensure the role name only has lowercase alpha characters and underscores
88
+ // This also doubles as a check against SQL injection
89
+ return sanitizeSlug("yates_role_".concat(name));
78
90
  };
79
91
  exports.createRoleName = createRoleName;
80
92
  // This middleware is used to set the role and context for the current user so that RLS can be applied
@@ -85,10 +97,10 @@ var setupMiddleware = function (prisma, getContext) {
85
97
  // get an infinite loop and can trigger client middlewares multiple times
86
98
  var adminClient = new client_1.PrismaClient();
87
99
  prisma.$use(function (params, next) { return __awaiter(void 0, void 0, void 0, function () {
88
- var ctx, role, context, pgRole, modelName, txResults, queryResults, selectKeys, e_1;
89
- var _a;
90
- return __generator(this, function (_b) {
91
- switch (_b.label) {
100
+ var ctx, role, context, pgRole, modelName, _i, _a, k, txResults, queryResults, selectKeys, e_1;
101
+ var _b;
102
+ return __generator(this, function (_c) {
103
+ switch (_c.label) {
92
104
  case 0:
93
105
  if (!params.model) {
94
106
  return [2 /*return*/, next(params)];
@@ -100,22 +112,27 @@ var setupMiddleware = function (prisma, getContext) {
100
112
  }
101
113
  role = ctx.role, context = ctx.context;
102
114
  pgRole = (0, exports.createRoleName)(role);
103
- // Check the role name only has lowercase alpha characters and underscores
104
- // This also doubles as a check against SQL injection
105
- if (pgRole.match(/[^a-z_]/)) {
106
- throw new Error("Invalid role name.");
107
- }
108
115
  modelName = params.model.charAt(0).toLowerCase() + params.model.slice(1);
109
- _b.label = 1;
116
+ if (context) {
117
+ for (_i = 0, _a = Object.keys(context); _i < _a.length; _i++) {
118
+ k = _a[_i];
119
+ if (!k.match(/^[a-z_\.]+$/)) {
120
+ throw new Error("Context variable \"".concat(k, "\" contains invalid characters. Context variables must only contain lowercase letters, numbers, periods and underscores."));
121
+ }
122
+ if (typeof context[k] !== "number" && typeof context[k] !== "string") {
123
+ throw new Error("Context variable \"".concat(k, "\" must be a string or number. Got ").concat(typeof context[k]));
124
+ }
125
+ }
126
+ }
127
+ _c.label = 1;
110
128
  case 1:
111
- _b.trys.push([1, 3, , 4]);
129
+ _c.trys.push([1, 3, , 4]);
112
130
  return [4 /*yield*/, adminClient.$transaction(__spreadArray(__spreadArray([
113
131
  // Switch to the user role, We can't use a prepared statement here, due to limitations in PG not allowing prepared statements to be used in SET ROLE
114
132
  adminClient.$queryRawUnsafe("SET ROLE ".concat(pgRole))
115
133
  ], (0, toPairs_1["default"])(context).map(function (_a) {
116
134
  var key = _a[0], value = _a[1];
117
- var keySafe = key.replace(/[^a-z_\.]/g, "");
118
- return adminClient.$queryRaw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["SELECT set_config(", ", ", ", true);"], ["SELECT set_config(", ", ", ", true);"])), keySafe, value);
135
+ return adminClient.$queryRaw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["SELECT set_config(", ", ", ", true);"], ["SELECT set_config(", ", ", ", true);"])), key, value);
119
136
  }), true), [
120
137
  // Now call original function
121
138
  // Assumptions:
@@ -126,7 +143,7 @@ var setupMiddleware = function (prisma, getContext) {
126
143
  adminClient.$queryRawUnsafe("SET ROLE none"),
127
144
  ], false))];
128
145
  case 2:
129
- txResults = _b.sent();
146
+ txResults = _c.sent();
130
147
  queryResults = txResults[txResults.length - 2];
131
148
  // This heuristic is used to determine if this is a query for a related entity, and if so, unwraps the results.
132
149
  // This mimics the "native" prisma behaviour, where if you query for a related entity, it will return the related entity (or entities) directly, rather than an object with the related entity as a property.
@@ -142,9 +159,9 @@ var setupMiddleware = function (prisma, getContext) {
142
159
  }
143
160
  return [2 /*return*/, queryResults];
144
161
  case 3:
145
- e_1 = _b.sent();
162
+ e_1 = _c.sent();
146
163
  // Normalize RLS errors to make them a bit more readable.
147
- if ((_a = e_1.message) === null || _a === void 0 ? void 0 : _a.includes("new row violates row-level security policy for table")) {
164
+ if ((_b = e_1.message) === null || _b === void 0 ? void 0 : _b.includes("new row violates row-level security policy for table")) {
148
165
  throw new Error("You do not have permission to perform this action.");
149
166
  }
150
167
  throw e_1;
@@ -192,12 +209,19 @@ var setRLS = function (prisma, table, roleName, operation, expression) { return
192
209
  var createRoles = function (_a) {
193
210
  var prisma = _a.prisma, customAbilities = _a.customAbilities, getRoles = _a.getRoles;
194
211
  return __awaiter(void 0, void 0, void 0, function () {
195
- var abilities, models, _i, models_1, model, ability, roles, _b, _c, _d, _e, model, table, _f, _g, _h, _j, slug, ability, roleName, _k, _l, _m, _o, key, role, wildCardAbilities, roleAbilities, rlsRoles;
196
- return __generator(this, function (_p) {
197
- switch (_p.label) {
212
+ var abilities, models, diff, _i, models_1, model, ability, operation, roles, _b, _c, _d, _e, model, table, _f, _g, _h, _j, slug, ability, roleName, _loop_1, _k, _l, _m, _o, key;
213
+ var _p;
214
+ return __generator(this, function (_q) {
215
+ switch (_q.label) {
198
216
  case 0:
199
217
  abilities = {};
200
218
  models = prisma._baseDmmf.datamodel.models.map(function (m) { return m.name; });
219
+ if (customAbilities) {
220
+ diff = (0, difference_1["default"])(Object.keys(customAbilities), models);
221
+ if (diff.length) {
222
+ throw new Error("Invalid models in custom abilities: ".concat(diff.join(", ")));
223
+ }
224
+ }
201
225
  for (_i = 0, models_1 = models; _i < models_1.length; _i++) {
202
226
  model = models_1[_i];
203
227
  abilities[model] = {
@@ -232,7 +256,10 @@ var createRoles = function (_a) {
232
256
  };
233
257
  if (customAbilities === null || customAbilities === void 0 ? void 0 : customAbilities[model]) {
234
258
  for (ability in customAbilities[model]) {
235
- abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { model: model, slug: ability });
259
+ operation = (_p = customAbilities[model][ability]) === null || _p === void 0 ? void 0 : _p.operation;
260
+ if (!operation)
261
+ continue;
262
+ abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { operation: operation, model: model, slug: ability });
236
263
  }
237
264
  }
238
265
  }
@@ -242,39 +269,49 @@ var createRoles = function (_a) {
242
269
  for (_d in _b)
243
270
  _c.push(_d);
244
271
  _e = 0;
245
- _p.label = 1;
272
+ _q.label = 1;
246
273
  case 1:
247
274
  if (!(_e < _c.length)) return [3 /*break*/, 8];
248
275
  _d = _c[_e];
249
276
  if (!(_d in _b)) return [3 /*break*/, 7];
250
277
  model = _d;
251
278
  table = model;
252
- return [4 /*yield*/, prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security"))];
279
+ return [4 /*yield*/, prisma.$transaction([
280
+ takeLock(prisma),
281
+ prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
282
+ ])];
253
283
  case 2:
254
- _p.sent();
284
+ _q.sent();
255
285
  _f = abilities[model];
256
286
  _g = [];
257
287
  for (_h in _f)
258
288
  _g.push(_h);
259
289
  _j = 0;
260
- _p.label = 3;
290
+ _q.label = 3;
261
291
  case 3:
262
292
  if (!(_j < _g.length)) return [3 /*break*/, 7];
263
293
  _h = _g[_j];
264
294
  if (!(_h in _f)) return [3 /*break*/, 6];
265
295
  slug = _h;
266
296
  ability = abilities[model][slug];
297
+ if (!VALID_OPERATIONS.includes(ability.operation)) {
298
+ throw new Error("Invalid operation: ".concat(ability.operation));
299
+ }
267
300
  roleName = (0, exports.createAbilityName)(model, slug);
268
301
  // Check if role already exists
269
- return [4 /*yield*/, prisma.$queryRawUnsafe("\n do\n $$\n begin\n if not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n create role ").concat(roleName, ";\n GRANT ").concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n end if;\n end\n $$\n ;\n "))];
302
+ return [4 /*yield*/, prisma.$transaction([
303
+ takeLock(prisma),
304
+ prisma.$queryRawUnsafe("\n\t\t\t\t\tdo\n\t\t\t\t\t$$\n\t\t\t\t\tbegin\n\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\tend if;\n\t\t\t\t\tend\n\t\t\t\t\t$$\n\t\t\t\t\t;\n\t\t\t\t")),
305
+ prisma.$queryRawUnsafe("\n\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t")),
306
+ ])];
270
307
  case 4:
271
308
  // Check if role already exists
272
- _p.sent();
309
+ _q.sent();
273
310
  if (!ability.expression) return [3 /*break*/, 6];
274
311
  return [4 /*yield*/, setRLS(prisma, table, roleName, ability.operation, ability.expression)];
275
312
  case 5:
276
- _p.sent();
277
- _p.label = 6;
313
+ _q.sent();
314
+ _q.label = 6;
278
315
  case 6:
279
316
  _j++;
280
317
  return [3 /*break*/, 3];
@@ -282,70 +319,96 @@ var createRoles = function (_a) {
282
319
  _e++;
283
320
  return [3 /*break*/, 1];
284
321
  case 8:
322
+ _loop_1 = function (key) {
323
+ var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles;
324
+ return __generator(this, function (_r) {
325
+ switch (_r.label) {
326
+ case 0:
327
+ role = (0, exports.createRoleName)(key);
328
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\tdo\n\t\t\t$$\n\t\t\tbegin\n\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\tcreate role ").concat(role, ";\n\t\t\tend if;\n\t\t\tend\n\t\t\t$$\n\t\t\t;\n\t\t"))];
329
+ case 1:
330
+ _r.sent();
331
+ wildCardAbilities = (0, flatMap_1["default"])(abilities, function (model, modelName) {
332
+ return (0, map_1["default"])(model, function (_params, slug) {
333
+ return (0, exports.createAbilityName)(modelName, slug);
334
+ });
335
+ });
336
+ roleAbilities = roles[key];
337
+ rlsRoles = roleAbilities === "*"
338
+ ? wildCardAbilities
339
+ : roleAbilities.map(function (ability) { return (0, exports.createAbilityName)(ability.model, ability.slug); });
340
+ // Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
341
+ // This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
342
+ return [4 /*yield*/, prisma.$transaction([
343
+ takeLock(prisma),
344
+ prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
345
+ prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t")),
346
+ prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t")),
347
+ prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
348
+ ])];
349
+ case 2:
350
+ // Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
351
+ // This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
352
+ _r.sent();
353
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\tUNION ALL\n\t\t\t\tSELECT m.roleid\n\t\t\t\tFROM cte\n\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t)\n\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t "))];
354
+ case 3:
355
+ userRoles = _r.sent();
356
+ oldRoles = userRoles.filter(function (_a) {
357
+ var rolename = _a.rolename;
358
+ return !rlsRoles.includes(rolename);
359
+ }).map(function (_a) {
360
+ var rolename = _a.rolename;
361
+ return rolename;
362
+ });
363
+ if (!oldRoles.length) return [3 /*break*/, 5];
364
+ // Now revoke old roles from the user role
365
+ return [4 /*yield*/, prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
366
+ case 4:
367
+ // Now revoke old roles from the user role
368
+ _r.sent();
369
+ _r.label = 5;
370
+ case 5: return [2 /*return*/];
371
+ }
372
+ });
373
+ };
285
374
  _k = roles;
286
375
  _l = [];
287
376
  for (_m in _k)
288
377
  _l.push(_m);
289
378
  _o = 0;
290
- _p.label = 9;
379
+ _q.label = 9;
291
380
  case 9:
292
- if (!(_o < _l.length)) return [3 /*break*/, 16];
381
+ if (!(_o < _l.length)) return [3 /*break*/, 12];
293
382
  _m = _l[_o];
294
- if (!(_m in _k)) return [3 /*break*/, 15];
383
+ if (!(_m in _k)) return [3 /*break*/, 11];
295
384
  key = _m;
296
- role = (0, exports.createRoleName)(key);
297
- return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\tdo\n\t\t$$\n\t\tbegin\n\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\tcreate role ").concat(role, ";\n\t\tend if;\n\t\tend\n\t\t$$\n\t\t;\n\t"))];
385
+ return [5 /*yield**/, _loop_1(key)];
298
386
  case 10:
299
- _p.sent();
300
- // Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
301
- // This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
302
- return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\tGRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";\n\t"))];
387
+ _q.sent();
388
+ _q.label = 11;
303
389
  case 11:
304
- // Note: We need to GRANT all on schema public so that we can resolve relation queries with prisma, as they will sometimes use a join table.
305
- // This is not ideal, but because we are using RLS, it's not a security risk. Any table with RLS also needs a corresponding policy for the role to have access.
306
- _p.sent();
307
- return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t"))];
308
- case 12:
309
- _p.sent();
310
- return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t"))];
311
- case 13:
312
- _p.sent();
313
- wildCardAbilities = (0, flatMap_1["default"])(abilities, function (model, modelName) {
314
- return (0, map_1["default"])(model, function (params, slug) {
315
- return (0, exports.createAbilityName)(modelName, slug);
316
- });
317
- });
318
- roleAbilities = roles[key];
319
- rlsRoles = roleAbilities === "*"
320
- ? wildCardAbilities
321
- : roleAbilities.map(function (ability) { return (0, exports.createAbilityName)(ability.model, ability.slug); });
322
- return [4 /*yield*/, prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role))];
323
- case 14:
324
- _p.sent();
325
- _p.label = 15;
326
- case 15:
327
390
  _o++;
328
391
  return [3 /*break*/, 9];
329
- case 16: return [2 /*return*/];
392
+ case 12: return [2 /*return*/];
330
393
  }
331
394
  });
332
395
  });
333
396
  };
334
397
  exports.createRoles = createRoles;
335
- var setup = function (_a) {
336
- var prisma = _a.prisma, customAbilities = _a.customAbilities, getRoles = _a.getRoles, getContext = _a.getContext;
337
- return __awaiter(void 0, void 0, void 0, function () {
338
- return __generator(this, function (_b) {
339
- switch (_b.label) {
340
- case 0: return [4 /*yield*/, (0, exports.createRoles)({ prisma: prisma, customAbilities: customAbilities, getRoles: getRoles })];
341
- case 1:
342
- _b.sent();
343
- (0, exports.setupMiddleware)(prisma, getContext);
344
- return [2 /*return*/];
345
- }
346
- });
398
+ var setup = function (params) { return __awaiter(void 0, void 0, void 0, function () {
399
+ var prisma, customAbilities, getRoles, getContext;
400
+ return __generator(this, function (_a) {
401
+ switch (_a.label) {
402
+ case 0:
403
+ prisma = params.prisma, customAbilities = params.customAbilities, getRoles = params.getRoles, getContext = params.getContext;
404
+ return [4 /*yield*/, (0, exports.createRoles)({ prisma: prisma, customAbilities: customAbilities, getRoles: getRoles })];
405
+ case 1:
406
+ _a.sent();
407
+ (0, exports.setupMiddleware)(prisma, getContext);
408
+ return [2 /*return*/];
409
+ }
347
410
  });
348
- };
411
+ }); };
349
412
  exports.setup = setup;
350
413
  var templateObject_1;
351
414
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAsD;AACtD,2DAAqC;AACrC,mDAA6B;AAC7B,2DAAqC;AAmB9B,IAAM,iBAAiB,GAAG,UAAC,KAAa,EAAE,OAAe;IAC/D,OAAO,UAAG,KAAK,cAAI,OAAO,UAAO,CAAC,WAAW,EAAE,CAAC;AACjD,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,IAAM,cAAc,GAAG,UAAC,IAAY;IAC1C,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,qBAAc,UAAU,CAAE,CAAC;AACnC,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEF,sGAAsG;AACtG,oHAAoH;AAC7G,IAAM,eAAe,GAAG,UAAC,MAAoB,EAAE,UAAwB;IAC7E,4DAA4D;IAC5D,8GAA8G;IAC9G,yEAAyE;IACzE,IAAM,WAAW,GAAG,IAAI,qBAAY,EAAE,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC,UAAO,MAAM,EAAE,IAAI;;;;;;oBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;wBAClB,sBAAO,IAAI,CAAC,MAAM,CAAC,EAAC;qBACpB;oBAEK,GAAG,GAAG,UAAU,EAAE,CAAC;oBAEzB,uDAAuD;oBACvD,IAAI,GAAG,KAAK,IAAI,EAAE;wBACjB,sBAAO,IAAI,CAAC,MAAM,CAAC,EAAC;qBACpB;oBACO,IAAI,GAAc,GAAG,KAAjB,EAAE,OAAO,GAAK,GAAG,QAAR,CAAS;oBAExB,MAAM,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;oBAEpC,0EAA0E;oBAC1E,qDAAqD;oBACrD,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;wBAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;qBACtC;oBAGK,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;;;oBAG5D,qBAAM,WAAW,CAAC,YAAY;4BAC/C,oJAAoJ;4BACpJ,WAAW,CAAC,eAAe,CAAC,mBAAY,MAAM,CAAE,CAAC;2BAE9C,IAAA,oBAAO,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAC,EAAY;gCAAX,GAAG,QAAA,EAAE,KAAK,QAAA;4BACnC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;4BAC9C,OAAO,WAAW,CAAC,SAAS,0GAAA,oBAAqB,EAAO,IAAK,EAAK,WAAW,KAA5B,OAAO,EAAK,KAAK,EAAY;wBAC/E,CAAC,CAAC,SACC;4BACF,6BAA6B;4BAC7B,eAAe;4BACf,oDAAoD;4BACpD,0CAA0C;4BACzC,WAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;4BAC3D,iCAAiC;4BACjC,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC;yBAC5C,SACA,EAAA;;oBAjBI,SAAS,GAAG,SAiBhB;oBACI,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAErD,+GAA+G;oBAC/G,6MAA6M;oBAC7M,oEAAoE;oBACpE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;wBACjB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnD,IACC,UAAU,CAAC,MAAM,KAAK,CAAC;4BACvB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;4BAC1B,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;4BAC7D,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC7C;4BACD,sBAAO,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC;yBACnC;qBACD;oBACD,sBAAO,YAAY,EAAC;;;oBAEpB,yDAAyD;oBACzD,IAAI,MAAA,GAAC,CAAC,OAAO,0CAAE,QAAQ,CAAC,sDAAsD,CAAC,EAAE;wBAChF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;qBACtE;oBAED,MAAM,GAAC,CAAC;;;;SAET,CAAC,CAAC;AACJ,CAAC,CAAC;AA3EW,QAAA,eAAe,mBA2E1B;AAEF,IAAM,MAAM,GAAG,UACd,MAAoB,EACpB,KAAa,EACb,QAAgB,EAChB,SAAoD,EACpD,UAAkB;;;;;gBAGZ,UAAU,GAAG,UAAG,QAAQ,YAAS,CAAC;gBACpB,qBAAM,MAAM,CAAC,eAAe,CAAC,wEACU,KAAK,iCAAuB,UAAU,WAChG,CAAC,EAAA;;gBAFI,IAAI,GAAU,SAElB;qBAEE,CAAA,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA,EAAjB,wBAAiB;qBAEhB,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;gBACzB,qBAAM,MAAM,CAAC,eAAe,CAAC,kCACR,UAAU,8BAAiB,KAAK,oBAAS,SAAS,iBAAO,QAAQ,0BAAgB,UAAU,eAC5G,CAAC,EAAA;;gBAFL,SAEK,CAAC;;oBAEN,qBAAM,MAAM,CAAC,eAAe,CAAC,kCACR,UAAU,8BAAiB,KAAK,oBAAS,SAAS,iBAAO,QAAQ,qBAAW,UAAU,eACvG,CAAC,EAAA;;gBAFL,SAEK,CAAC;;;;qBAEG,CAAA,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAA,EAA3B,yBAA2B;qBACjC,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;gBACzB,qBAAM,MAAM,CAAC,eAAe,CAAC,iCACT,UAAU,8BAAiB,KAAK,mBAAQ,QAAQ,0BAAgB,UAAU,eAC1F,CAAC,EAAA;;gBAFL,SAEK,CAAC;;oBAEN,qBAAM,MAAM,CAAC,eAAe,CAAC,iCACT,UAAU,8BAAiB,KAAK,mBAAQ,QAAQ,qBAAW,UAAU,eACrF,CAAC,EAAA;;gBAFL,SAEK,CAAC;;;;;KAGR,CAAC;AAEK,IAAM,WAAW,GAAG,UAAO,EAUjC;QATA,MAAM,YAAA,EACN,eAAe,qBAAA,EACf,QAAQ,cAAA;;;;;;oBAQF,SAAS,GAA4B,EAAE,CAAC;oBAExC,MAAM,GAAI,MAAc,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAa,CAAC;oBAC9F,WAA0B,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE;wBAAjB,KAAK;wBACf,SAAS,CAAC,KAAK,CAAC,GAAG;4BAClB,MAAM,EAAE;gCACP,WAAW,EAAE,iBAAU,KAAK,CAAE;gCAC9B,UAAU,EAAE,MAAM;gCAClB,SAAS,EAAE,QAAQ;gCACnB,KAAK,OAAA;gCACL,IAAI,EAAE,QAAQ;6BACd;4BACD,IAAI,EAAE;gCACL,WAAW,EAAE,eAAQ,KAAK,CAAE;gCAC5B,UAAU,EAAE,MAAM;gCAClB,SAAS,EAAE,QAAQ;gCACnB,KAAK,OAAA;gCACL,IAAI,EAAE,MAAM;6BACZ;4BACD,MAAM,EAAE;gCACP,WAAW,EAAE,iBAAU,KAAK,CAAE;gCAC9B,UAAU,EAAE,MAAM;gCAClB,SAAS,EAAE,QAAQ;gCACnB,KAAK,OAAA;gCACL,IAAI,EAAE,QAAQ;6BACd;4BACD,QAAM,EAAE;gCACP,WAAW,EAAE,iBAAU,KAAK,CAAE;gCAC9B,UAAU,EAAE,MAAM;gCAClB,SAAS,EAAE,QAAQ;gCACnB,KAAK,OAAA;gCACL,IAAI,EAAE,QAAQ;6BACd;yBACD,CAAC;wBACF,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,KAAK,CAAC,EAAE;4BAC7B,KAAW,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;gCAC7C,SAAS,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,yBACtB,eAAe,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,KACnC,KAAK,OAAA,EACL,IAAI,EAAE,OAAO,GACb,CAAC;6BACF;yBACD;qBACD;oBAEK,KAAK,GAAG,QAAQ,CAAC,SAA2B,CAAC,CAAC;yBAIhC,SAAS;;;;;;;;;;;oBACtB,KAAK,GAAG,KAAK,CAAC;oBAEpB,qBAAM,MAAM,CAAC,eAAe,CAAC,wBAAgB,KAAK,iCAA6B,CAAC,EAAA;;oBAAhF,SAAgF,CAAC;yBAE9D,SAAS,CAAC,KAA+B,CAAC;;;;;;;;;;;oBACtD,OAAO,GAAG,SAAS,CAAC,KAA+B,CAAE,CAAC,IAAI,CAAC,CAAC;oBAC5D,QAAQ,GAAG,IAAA,yBAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAEhD,+BAA+B;oBAC/B,qBAAM,MAAM,CAAC,eAAe,CAAC,6HAI4C,QAAQ,6CAC5D,QAAQ,gCACd,OAAO,CAAC,SAAS,mBAAQ,KAAK,mBAAQ,QAAQ,mEAKzD,CAAC,EAAA;;oBAZL,+BAA+B;oBAC/B,SAWK,CAAC;yBAEF,OAAO,CAAC,UAAU,EAAlB,wBAAkB;oBACrB,qBAAM,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,EAAA;;oBAA5E,SAA4E,CAAC;;;;;;;;;yBAQ9D,KAAK;;;;;;;;;;;oBAChB,IAAI,GAAG,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;oBACjC,qBAAM,MAAM,CAAC,eAAe,CAAC,6GAIuC,IAAI,yCACzD,IAAI,+CAKnB,CAAC,EAAA;;oBAVD,SAUC,CAAC;oBAEF,4IAA4I;oBAC5I,+JAA+J;oBAC/J,qBAAM,MAAM,CAAC,eAAe,CAAC,4DACiB,IAAI,UAClD,CAAC,EAAA;;oBAJD,4IAA4I;oBAC5I,+JAA+J;oBAC/J,SAEC,CAAC;oBACF,qBAAM,MAAM,CAAC,eAAe,CAAC,+DACoB,IAAI,UACrD,CAAC,EAAA;;oBAFD,SAEC,CAAC;oBACF,qBAAM,MAAM,CAAC,eAAe,CAAC,8CACG,IAAI,UACpC,CAAC,EAAA;;oBAFD,SAEC,CAAC;oBAEI,iBAAiB,GAAG,IAAA,oBAAO,EAAC,SAAS,EAAE,UAAC,KAAK,EAAE,SAAS;wBAC7D,OAAO,IAAA,gBAAG,EAAC,KAAK,EAAE,UAAC,MAAM,EAAE,IAAI;4BAC9B,OAAO,IAAA,yBAAiB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACG,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC3B,QAAQ,GACb,aAAa,KAAK,GAAG;wBACpB,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,UAAC,OAAO,IAAK,OAAA,IAAA,yBAAiB,EAAC,OAAO,CAAC,KAAM,EAAE,OAAO,CAAC,IAAK,CAAC,EAAhD,CAAgD,CAAC,CAAC;oBACrF,qBAAM,MAAM,CAAC,eAAe,CAAC,gBAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAO,IAAI,CAAE,CAAC,EAAA;;oBAAvE,SAAuE,CAAC;;;;;;;;;CAEzE,CAAC;AAlIW,QAAA,WAAW,eAkItB;AA2BK,IAAM,KAAK,GAAG,UAAO,EAA8D;QAA5D,MAAM,YAAA,EAAE,eAAe,qBAAA,EAAE,QAAQ,cAAA,EAAE,UAAU,gBAAA;;;;wBAC1E,qBAAM,IAAA,mBAAW,EAAC,EAAE,MAAM,QAAA,EAAE,eAAe,iBAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAAA;;oBAAxD,SAAwD,CAAC;oBACzD,IAAA,uBAAe,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;;;;CACpC,CAAC;AAHW,QAAA,KAAK,SAGhB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cerebruminc/yates",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Role based access control for Prisma Apps",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {