@cerebruminc/yates 3.8.1 → 4.0.0-beta.dangerous.0d42031

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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.1](https://github.com/cerebruminc/yates/compare/v4.0.0...v4.0.1) (2026-07-06)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **yates:** skip unchanged startup reconciliation ([d01dffc](https://github.com/cerebruminc/yates/commit/d01dffc950666ba28b13b4dc69ea5f3ae71681d4))
9
+
10
+ ## [4.0.0](https://github.com/cerebruminc/yates/compare/v3.8.1...v4.0.0) (2026-02-25)
11
+
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * refactor permissions to query filters
16
+
17
+ ### Features
18
+
19
+ * refactor permissions to query filters ([06d1007](https://github.com/cerebruminc/yates/commit/06d10079c460e15a787516d9301daf28ce776c20))
20
+
3
21
  ## [3.8.1](https://github.com/cerebruminc/yates/compare/v3.8.0...v3.8.1) (2025-11-15)
4
22
 
5
23
 
package/dist/index.d.ts CHANGED
@@ -3,6 +3,27 @@ import { Expression, RuntimeDataModel } from "./expressions";
3
3
  declare const VALID_OPERATIONS: readonly ["SELECT", "UPDATE", "INSERT", "DELETE"];
4
4
  type Operation = (typeof VALID_OPERATIONS)[number];
5
5
  export type Models = Prisma.ModelName;
6
+ type PrismaExecutor = Pick<PrismaClient, "$executeRawUnsafe" | "$queryRawUnsafe" | "$queryRaw">;
7
+ interface ResolvedSetupAbilityExpression {
8
+ abilityExpression: string;
9
+ policyExpression: string;
10
+ }
11
+ export interface SetupManifestAbility {
12
+ expression: string | null;
13
+ model: string;
14
+ operation: Operation;
15
+ policyName: string;
16
+ slug: string;
17
+ }
18
+ export interface SetupManifestRole {
19
+ grants: string[] | "*";
20
+ roleName: string;
21
+ }
22
+ export interface SetupManifest {
23
+ abilities: SetupManifestAbility[];
24
+ databaseScope: string;
25
+ roles: SetupManifestRole[];
26
+ }
6
27
  interface ClientOptions {
7
28
  /** The maximum amount of time Yates will wait to acquire a transaction from the database. The default value is 30 seconds. */
8
29
  txMaxWait?: number;
@@ -76,9 +97,25 @@ export declare class Yates {
76
97
  createDatabaseScope: (databaseName: string) => string;
77
98
  getDatabaseScope: () => string;
78
99
  ensureDatabaseScope: () => Promise<string>;
79
- setupAbilityTable: () => Promise<[number, number, number]>;
100
+ setupAbilityTable: () => Promise<[number, number, number, number, number]>;
80
101
  createAbilityName: (model: string, ability: string) => string;
81
102
  createRoleName: (name: string) => string;
103
+ quoteIdentifier: (identifier: string) => string;
104
+ enableRowLevelSecurityIfNeeded: (prisma: Pick<PrismaClient, "$executeRawUnsafe" | "$queryRawUnsafe">, table: string) => Promise<void>;
105
+ createSetupManifestHash: (manifest: SetupManifest) => string;
106
+ createSetupManifest: (abilities: Partial<DefaultAbilities>, roles: {
107
+ [role: string]: "*" | AllAbilities<string, Prisma.ModelName>[];
108
+ }) => {
109
+ abilities: SetupManifestAbility[];
110
+ databaseScope: string;
111
+ roles: {
112
+ grants: string[] | "*";
113
+ roleName: string;
114
+ }[];
115
+ };
116
+ getSetupManifestId: () => string;
117
+ getStoredSetupManifestHash: (manifestId: string, prisma?: PrismaExecutor) => Promise<string>;
118
+ upsertSetupManifestHash: (manifestId: string, manifestHash: string, prisma?: PrismaExecutor) => Prisma.PrismaPromise<number>;
82
119
  getDefaultAbilities: (models: Models[]) => Partial<DefaultAbilities<string, Prisma.ModelName>>;
83
120
  getBatchId(query: any): string | undefined;
84
121
  buildKeysString(obj: object): string;
@@ -93,12 +130,22 @@ export declare class Yates {
93
130
  query: {};
94
131
  client: {};
95
132
  }>;
96
- setRLS: <ContextKeys extends string, YModel extends Prisma.ModelName>(prisma: PrismaClient, table: string, roleName: string, slug: string, ability: Ability<ContextKeys, YModel>) => Promise<void>;
97
- createRoles: <ContextKeys extends string, YModels extends Prisma.ModelName, K extends CustomAbilities<string, Prisma.ModelName> = CustomAbilities<string, Prisma.ModelName>, T = DefaultAbilities<ContextKeys, YModels> & K>({ customAbilities, getRoles, }: {
133
+ setRLS: <ContextKeys extends string, YModel extends Prisma.ModelName>(prisma: PrismaExecutor, table: string, roleName: string, slug: string, ability: Ability<ContextKeys, YModel>, resolvedExpression: ResolvedSetupAbilityExpression) => Promise<void>;
134
+ createRoles: <ContextKeys extends string, YModels extends Prisma.ModelName, K extends CustomAbilities<string, Prisma.ModelName> = CustomAbilities<string, Prisma.ModelName>, T = DefaultAbilities<ContextKeys, YModels> & K>({ customAbilities, getRoles, options, }: {
98
135
  customAbilities?: Partial<K> | undefined;
99
136
  getRoles: (abilities: T) => {
100
137
  [role: string]: "*" | AllAbilities<ContextKeys, YModels>[];
101
138
  };
139
+ options?: ClientOptions | undefined;
140
+ }) => Promise<void>;
141
+ reconcileRoles: <ContextKeys extends string, YModels extends Prisma.ModelName>({ abilities, defaultAbilities, prisma, resolvedSetupAbilityExpressions, roles, }: {
142
+ abilities: Partial<DefaultAbilities>;
143
+ defaultAbilities: Partial<DefaultAbilities>;
144
+ prisma: PrismaExecutor;
145
+ resolvedSetupAbilityExpressions: Record<string, ResolvedSetupAbilityExpression>;
146
+ roles: {
147
+ [role: string]: "*" | AllAbilities<ContextKeys, YModels>[];
148
+ };
102
149
  }) => Promise<void>;
103
150
  inspectDBRoles: (role: string) => Promise<{
104
151
  tablename: string;
package/dist/index.js CHANGED
@@ -73,17 +73,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
73
73
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
74
74
  }
75
75
  };
76
- var __values = (this && this.__values) || function(o) {
77
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
78
- if (m) return m.call(o);
79
- if (o && typeof o.length === "number") return {
80
- next: function () {
81
- if (o && i >= o.length) o = void 0;
82
- return { value: o && o[i++], done: !o };
83
- }
84
- };
85
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
86
- };
87
76
  var __read = (this && this.__read) || function (o, n) {
88
77
  var m = typeof Symbol === "function" && o[Symbol.iterator];
89
78
  if (!m) return o;
@@ -109,6 +98,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
109
98
  }
110
99
  return to.concat(ar || Array.prototype.slice.call(from));
111
100
  };
101
+ var __values = (this && this.__values) || function(o) {
102
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
103
+ if (m) return m.call(o);
104
+ if (o && typeof o.length === "number") return {
105
+ next: function () {
106
+ if (o && i >= o.length) o = void 0;
107
+ return { value: o && o[i++], done: !o };
108
+ }
109
+ };
110
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
111
+ };
112
112
  var __importDefault = (this && this.__importDefault) || function (mod) {
113
113
  return (mod && mod.__esModule) ? mod : { "default": mod };
114
114
  };
@@ -123,6 +123,8 @@ var map_1 = __importDefault(require("lodash/map"));
123
123
  var toPairs_1 = __importDefault(require("lodash/toPairs"));
124
124
  var expressions_1 = require("./expressions");
125
125
  var VALID_OPERATIONS = ["SELECT", "UPDATE", "INSERT", "DELETE"];
126
+ var SETUP_MANIFEST_VERSION = "1";
127
+ var YATES_VERSION = require("../package.json").version;
126
128
  var debug = (0, debug_1.default)("yates");
127
129
  /**
128
130
  * This function is used to take a lock that is automatically released at the end of the current transaction.
@@ -228,6 +230,8 @@ var Yates = /** @class */ (function () {
228
230
  takeLock(_this.prisma),
229
231
  _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE SCHEMA IF NOT EXISTS _yates;\n\t\t\t"),
230
232
  _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE TABLE IF NOT EXISTS _yates._yates_abilities (\n\t\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\t\tability_model TEXT NOT NULL,\n\t\t\t\t\tability_name TEXT NOT NULL,\n\t\t\t\t\tability_policy_name TEXT NOT NULL UNIQUE,\n\t\t\t\t\tability_description TEXT NOT NULL,\n\t\t\t\t\tability_operation TEXT NOT NULL,\n\t\t\t\t\tability_expression TEXT NOT NULL,\n\t\t\t\t\tcreated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n\t\t\t\t\tupdated_at TIMESTAMP\n\t\t\t\t);\n\t\t\t"),
233
+ _this.prisma.$executeRawUnsafe("\n\t\t\t\tCREATE TABLE IF NOT EXISTS _yates._yates_schema_syncs (\n\t\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\t\tmanifest_hash TEXT NOT NULL,\n\t\t\t\t\tmanifest_version TEXT,\n\t\t\t\t\tyates_version TEXT,\n\t\t\t\t\tapp_name TEXT,\n\t\t\t\t\tapplied_at TIMESTAMPTZ NOT NULL DEFAULT now()\n\t\t\t\t);\n\t\t\t"),
234
+ _this.prisma.$executeRawUnsafe("\n\t\t\t\tDO $$\n\t\t\t\tBEGIN\n\t\t\t\t\tIF EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM information_schema.columns\n\t\t\t\t\t\tWHERE table_schema = '_yates'\n\t\t\t\t\t\tAND table_name = '_yates_schema_syncs'\n\t\t\t\t\t\tAND column_name = 'yates_version'\n\t\t\t\t\t) AND NOT EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM information_schema.columns\n\t\t\t\t\t\tWHERE table_schema = '_yates'\n\t\t\t\t\t\tAND table_name = '_yates_schema_syncs'\n\t\t\t\t\t\tAND column_name = 'manifest_version'\n\t\t\t\t\t) THEN\n\t\t\t\t\t\tALTER TABLE _yates._yates_schema_syncs RENAME COLUMN yates_version TO manifest_version;\n\t\t\t\t\tELSIF NOT EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM information_schema.columns\n\t\t\t\t\t\tWHERE table_schema = '_yates'\n\t\t\t\t\t\tAND table_name = '_yates_schema_syncs'\n\t\t\t\t\t\tAND column_name = 'manifest_version'\n\t\t\t\t\t) THEN\n\t\t\t\t\t\tALTER TABLE _yates._yates_schema_syncs ADD COLUMN manifest_version TEXT;\n\t\t\t\t\tEND IF;\n\n\t\t\t\t\tIF NOT EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM information_schema.columns\n\t\t\t\t\t\tWHERE table_schema = '_yates'\n\t\t\t\t\t\tAND table_name = '_yates_schema_syncs'\n\t\t\t\t\t\tAND column_name = 'yates_version'\n\t\t\t\t\t) THEN\n\t\t\t\t\t\tALTER TABLE _yates._yates_schema_syncs ADD COLUMN yates_version TEXT;\n\t\t\t\t\tEND IF;\n\t\t\t\tEND\n\t\t\t\t$$;\n\t\t\t"),
231
235
  ]);
232
236
  };
233
237
  this.createAbilityName = function (model, ability) {
@@ -238,8 +242,132 @@ var Yates = /** @class */ (function () {
238
242
  var scope = _this.getDatabaseScope();
239
243
  return (0, exports.sanitizeSlug)(hashWithPrefix("yates_role_", "".concat(scope, "_").concat(name)));
240
244
  };
245
+ this.quoteIdentifier = function (identifier) {
246
+ return "\"".concat(identifier.replace(/"/g, '""'), "\"");
247
+ };
248
+ this.enableRowLevelSecurityIfNeeded = function (prisma, table) { return __awaiter(_this, void 0, void 0, function () {
249
+ var rlsState;
250
+ var _a;
251
+ return __generator(this, function (_b) {
252
+ switch (_b.label) {
253
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tSELECT c.relrowsecurity\n\t\t\t\tFROM pg_catalog.pg_class c\n\t\t\t\tJOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\t\t\t\tWHERE n.nspname = 'public'\n\t\t\t\tAND c.relname = $1\n\t\t\t\tAND c.relkind IN ('r', 'p')\n\t\t\t\tLIMIT 1;\n\t\t\t", table)];
254
+ case 1:
255
+ rlsState = _b.sent();
256
+ if ((_a = rlsState[0]) === null || _a === void 0 ? void 0 : _a.relrowsecurity) {
257
+ debug("Row level security already enabled for", table);
258
+ return [2 /*return*/];
259
+ }
260
+ debug("Enabling row level security for", table);
261
+ return [4 /*yield*/, prisma.$executeRawUnsafe("ALTER table ".concat(this.quoteIdentifier("public"), ".").concat(this.quoteIdentifier(table), " enable row level security;"))];
262
+ case 2:
263
+ _b.sent();
264
+ return [2 /*return*/];
265
+ }
266
+ });
267
+ }); };
268
+ this.createSetupManifestHash = function (manifest) {
269
+ var normalizedManifest = {
270
+ abilities: __spreadArray([], __read(manifest.abilities), false).sort(function (a, b) {
271
+ return "".concat(a.model, ":").concat(a.slug, ":").concat(a.operation, ":").concat(a.policyName).localeCompare("".concat(b.model, ":").concat(b.slug, ":").concat(b.operation, ":").concat(b.policyName));
272
+ }),
273
+ databaseScope: manifest.databaseScope,
274
+ roles: __spreadArray([], __read(manifest.roles), false).map(function (role) { return (__assign(__assign({}, role), { grants: Array.isArray(role.grants)
275
+ ? __spreadArray([], __read(role.grants), false).sort()
276
+ : role.grants })); })
277
+ .sort(function (a, b) { return a.roleName.localeCompare(b.roleName); }),
278
+ version: SETUP_MANIFEST_VERSION,
279
+ };
280
+ var hash = crypto.createHash("sha256");
281
+ hash.update(JSON.stringify(normalizedManifest));
282
+ return hash.digest("hex");
283
+ };
284
+ this.createSetupManifest = function (abilities, roles) {
285
+ var e_1, _a, e_2, _b;
286
+ var _c, _d;
287
+ var manifestAbilities = [];
288
+ try {
289
+ for (var _e = __values(Object.keys(abilities).sort()), _f = _e.next(); !_f.done; _f = _e.next()) {
290
+ var model = _f.value;
291
+ var modelAbilities = abilities[model];
292
+ if (!modelAbilities)
293
+ continue;
294
+ try {
295
+ for (var _g = (e_2 = void 0, __values(Object.keys(modelAbilities).sort())), _h = _g.next(); !_h.done; _h = _g.next()) {
296
+ var slug = _h.value;
297
+ var ability = modelAbilities[slug];
298
+ if (!ability)
299
+ continue;
300
+ manifestAbilities.push({
301
+ expression: (_d = (_c = ability.expression) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : null,
302
+ model: model,
303
+ operation: ability.operation,
304
+ policyName: _this.createAbilityName(model, slug),
305
+ slug: slug,
306
+ });
307
+ }
308
+ }
309
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
310
+ finally {
311
+ try {
312
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
313
+ }
314
+ finally { if (e_2) throw e_2.error; }
315
+ }
316
+ }
317
+ }
318
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
319
+ finally {
320
+ try {
321
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
322
+ }
323
+ finally { if (e_1) throw e_1.error; }
324
+ }
325
+ var manifestRoles = Object.keys(roles)
326
+ .sort()
327
+ .map(function (roleName) {
328
+ var roleAbilities = roles[roleName];
329
+ var grants = Array.isArray(roleAbilities)
330
+ ? roleAbilities.map(function (ability) {
331
+ if (!ability.model || !ability.slug) {
332
+ throw new Error("Ability for role ".concat(roleName, " is missing model or slug"));
333
+ }
334
+ return _this.createAbilityName(ability.model, ability.slug);
335
+ })
336
+ : "*";
337
+ return { grants: grants, roleName: roleName };
338
+ });
339
+ return {
340
+ abilities: manifestAbilities,
341
+ databaseScope: _this.getDatabaseScope(),
342
+ roles: manifestRoles,
343
+ };
344
+ };
345
+ this.getSetupManifestId = function () { return "".concat(_this.getDatabaseScope(), ":public"); };
346
+ this.getStoredSetupManifestHash = function (manifestId_1) {
347
+ var args_1 = [];
348
+ for (var _i = 1; _i < arguments.length; _i++) {
349
+ args_1[_i - 1] = arguments[_i];
350
+ }
351
+ return __awaiter(_this, __spreadArray([manifestId_1], __read(args_1), false), void 0, function (manifestId, prisma) {
352
+ var rows;
353
+ var _a, _b;
354
+ if (prisma === void 0) { prisma = this.prisma; }
355
+ return __generator(this, function (_c) {
356
+ switch (_c.label) {
357
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tSELECT manifest_hash\n\t\t\t\tFROM _yates._yates_schema_syncs\n\t\t\t\tWHERE id = $1\n\t\t\t\tLIMIT 1;\n\t\t\t", manifestId)];
358
+ case 1:
359
+ rows = _c.sent();
360
+ return [2 /*return*/, (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.manifest_hash) !== null && _b !== void 0 ? _b : null];
361
+ }
362
+ });
363
+ });
364
+ };
365
+ this.upsertSetupManifestHash = function (manifestId, manifestHash, prisma) {
366
+ if (prisma === void 0) { prisma = _this.prisma; }
367
+ return prisma.$executeRawUnsafe("\n\t\t\t\tINSERT INTO _yates._yates_schema_syncs (id, manifest_hash, manifest_version, yates_version, app_name, applied_at)\n\t\t\t\tVALUES ($1, $2, $3, $4, $5, now())\n\t\t\t\tON CONFLICT (id) DO UPDATE\n\t\t\t\tSET manifest_hash = EXCLUDED.manifest_hash,\n\t\t\t\t\tmanifest_version = EXCLUDED.manifest_version,\n\t\t\t\t\tyates_version = EXCLUDED.yates_version,\n\t\t\t\t\tapp_name = EXCLUDED.app_name,\n\t\t\t\t\tapplied_at = now();\n\t\t\t", manifestId, manifestHash, SETUP_MANIFEST_VERSION, YATES_VERSION, "yates");
368
+ };
241
369
  this.getDefaultAbilities = function (models) {
242
- var e_1, _a;
370
+ var e_3, _a;
243
371
  var abilities = {};
244
372
  try {
245
373
  for (var models_1 = __values(models), models_1_1 = models_1.next(); !models_1_1.done; models_1_1 = models_1.next()) {
@@ -276,12 +404,12 @@ var Yates = /** @class */ (function () {
276
404
  };
277
405
  }
278
406
  }
279
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
407
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
280
408
  finally {
281
409
  try {
282
410
  if (models_1_1 && !models_1_1.done && (_a = models_1.return)) _a.call(models_1);
283
411
  }
284
- finally { if (e_1) throw e_1.error; }
412
+ finally { if (e_3) throw e_3.error; }
285
413
  }
286
414
  return abilities;
287
415
  };
@@ -314,7 +442,7 @@ var Yates = /** @class */ (function () {
314
442
  // This function is called once per tick, and processes all the batches that have been created during that tick.
315
443
  // Each batch represents a unique role + context combination, and contains all the requests that need to be executed with that role + context.
316
444
  var dispatchBatches = function () {
317
- var e_2, _a;
445
+ var e_4, _a;
318
446
  var _loop_1 = function (key, batch) {
319
447
  delete batches[key];
320
448
  // Because batch transactions inside a prisma client query extension can run out of order if used with async middleware,
@@ -323,8 +451,8 @@ var Yates = /** @class */ (function () {
323
451
  // See https://github.com/prisma/prisma/issues/18276
324
452
  prisma
325
453
  .$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
326
- var _a, _b, _c, key_1, value, e_3_1, txId, results;
327
- var e_3, _d;
454
+ var _a, _b, _c, key_1, value, e_5_1, txId, results;
455
+ var e_5, _d;
328
456
  return __generator(this, function (_e) {
329
457
  switch (_e.label) {
330
458
  case 0:
@@ -350,14 +478,14 @@ var Yates = /** @class */ (function () {
350
478
  return [3 /*break*/, 3];
351
479
  case 6: return [3 /*break*/, 9];
352
480
  case 7:
353
- e_3_1 = _e.sent();
354
- e_3 = { error: e_3_1 };
481
+ e_5_1 = _e.sent();
482
+ e_5 = { error: e_5_1 };
355
483
  return [3 /*break*/, 9];
356
484
  case 8:
357
485
  try {
358
486
  if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
359
487
  }
360
- finally { if (e_3) throw e_3.error; }
488
+ finally { if (e_5) throw e_5.error; }
361
489
  return [7 /*endfinally*/];
362
490
  case 9:
363
491
  txId = tx[Symbol.for("prisma.client.transaction.id")];
@@ -382,19 +510,19 @@ var Yates = /** @class */ (function () {
382
510
  });
383
511
  })
384
512
  .catch(function (e) {
385
- var e_4, _a;
513
+ var e_6, _a;
386
514
  try {
387
- for (var _b = (e_4 = void 0, __values(batch.requests)), _c = _b.next(); !_c.done; _c = _b.next()) {
515
+ for (var _b = (e_6 = void 0, __values(batch.requests)), _c = _b.next(); !_c.done; _c = _b.next()) {
388
516
  var request = _c.value;
389
517
  request.reject(e);
390
518
  }
391
519
  }
392
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
520
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
393
521
  finally {
394
522
  try {
395
523
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
396
524
  }
397
- finally { if (e_4) throw e_4.error; }
525
+ finally { if (e_6) throw e_6.error; }
398
526
  }
399
527
  delete batches[key];
400
528
  });
@@ -405,12 +533,12 @@ var Yates = /** @class */ (function () {
405
533
  _loop_1(key, batch);
406
534
  }
407
535
  }
408
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
536
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
409
537
  finally {
410
538
  try {
411
539
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
412
540
  }
413
- finally { if (e_2) throw e_2.error; }
541
+ finally { if (e_4) throw e_4.error; }
414
542
  }
415
543
  };
416
544
  var createRoleName = _this.createRoleName.bind(_this);
@@ -421,7 +549,7 @@ var Yates = /** @class */ (function () {
421
549
  $allOperations: function (params) {
422
550
  return __awaiter(this, void 0, void 0, function () {
423
551
  var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, txId, hash, __internalParams;
424
- var e_5, _e, e_6, _f;
552
+ var e_7, _e, e_8, _f;
425
553
  return __generator(this, function (_g) {
426
554
  model = params.model, args = params.args, query = params.query, operation = params.operation;
427
555
  if (!model) {
@@ -450,31 +578,31 @@ var Yates = /** @class */ (function () {
450
578
  }
451
579
  if (Array.isArray(context[k])) {
452
580
  try {
453
- for (_c = (e_6 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
581
+ for (_c = (e_8 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
454
582
  v = _d.value;
455
583
  if (typeof v !== "string") {
456
584
  throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
457
585
  }
458
586
  }
459
587
  }
460
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
588
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
461
589
  finally {
462
590
  try {
463
591
  if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
464
592
  }
465
- finally { if (e_6) throw e_6.error; }
593
+ finally { if (e_8) throw e_8.error; }
466
594
  }
467
595
  // Cast to a JSON string so that it can be used in RLS expressions
468
596
  context[k] = JSON.stringify(context[k]);
469
597
  }
470
598
  }
471
599
  }
472
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
600
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
473
601
  finally {
474
602
  try {
475
603
  if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
476
604
  }
477
- finally { if (e_5) throw e_5.error; }
605
+ finally { if (e_7) throw e_7.error; }
478
606
  }
479
607
  }
480
608
  txId = hashWithPrefix("yates_tx_", JSON.stringify(ctx));
@@ -521,9 +649,8 @@ var Yates = /** @class */ (function () {
521
649
  });
522
650
  return client;
523
651
  };
524
- this.setRLS = function (prisma, table, roleName, slug, ability) { return __awaiter(_this, void 0, void 0, function () {
525
- var operation, rawExpression, description;
526
- var _this = this;
652
+ this.setRLS = function (prisma, table, roleName, slug, ability, resolvedExpression) { return __awaiter(_this, void 0, void 0, function () {
653
+ var operation, rawExpression, description, abilityExpression, policyExpression, policyName, quotedPolicyName, quotedRoleName, quotedTableName, existingAbilities, existingAbility, shouldUpdateAbilityTable;
527
654
  return __generator(this, function (_a) {
528
655
  switch (_a.label) {
529
656
  case 0:
@@ -531,94 +658,76 @@ var Yates = /** @class */ (function () {
531
658
  if (!rawExpression) {
532
659
  throw new Error("Expression must be defined for RLS abilities");
533
660
  }
534
- // Take a lock and run the RLS setup in a transaction to prevent conflicts
535
- // in a multi-server environment
536
- return [4 /*yield*/, prisma.$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
537
- var policyName, existingAbilities, existingAbility, shouldUpdateAbilityTable, expression, expression;
538
- return __generator(this, function (_a) {
539
- switch (_a.label) {
540
- case 0: return [4 /*yield*/, takeLock(tx)];
541
- case 1:
542
- _a.sent();
543
- policyName = roleName;
544
- return [4 /*yield*/, tx.$queryRaw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"], ["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"])), table, policyName)];
545
- case 2:
546
- existingAbilities = _a.sent();
547
- existingAbility = existingAbilities[0];
548
- shouldUpdateAbilityTable = false;
549
- if (!!existingAbility) return [3 /*break*/, 8];
550
- debug("Creating RLS policy for", roleName, "on", table, "for", operation);
551
- return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
552
- case 3:
553
- expression = _a.sent();
554
- if (!(operation === "INSERT")) return [3 /*break*/, 5];
555
- return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
556
- case 4:
557
- _a.sent();
558
- return [3 /*break*/, 7];
559
- case 5: return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" FOR ").concat(operation, " TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
560
- case 6:
561
- _a.sent();
562
- _a.label = 7;
563
- case 7:
564
- shouldUpdateAbilityTable = true;
565
- return [3 /*break*/, 14];
566
- case 8:
567
- if (!(existingAbility.ability_expression !== rawExpression.toString())) return [3 /*break*/, 14];
568
- debug("Updating RLS policy for", roleName, "on", table, "for", operation);
569
- return [4 /*yield*/, (0, expressions_1.expressionToSQL)(rawExpression, table)];
570
- case 9:
571
- expression = _a.sent();
572
- if (!(operation === "INSERT")) return [3 /*break*/, 11];
573
- return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " WITH CHECK (").concat(expression, ");\n\t\t\t\t"))];
574
- case 10:
575
- _a.sent();
576
- return [3 /*break*/, 13];
577
- case 11: return [4 /*yield*/, tx.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(policyName, " ON \"public\".\"").concat(table, "\" TO ").concat(roleName, " USING (").concat(expression, ");\n\t\t\t\t"))];
578
- case 12:
579
- _a.sent();
580
- _a.label = 13;
581
- case 13:
582
- shouldUpdateAbilityTable = true;
583
- _a.label = 14;
584
- case 14:
585
- if (!shouldUpdateAbilityTable) return [3 /*break*/, 16];
586
- return [4 /*yield*/, upsertAbility(tx, {
587
- ability_model: table,
588
- ability_name: slug,
589
- ability_policy_name: policyName,
590
- ability_description: description !== null && description !== void 0 ? description : "",
591
- ability_operation: operation,
592
- // We store the string representation of the expression so that
593
- // we can compare it later without having to recompute the SQL
594
- ability_expression: rawExpression.toString(),
595
- })];
596
- case 15:
597
- _a.sent();
598
- _a.label = 16;
599
- case 16: return [2 /*return*/];
600
- }
601
- });
602
- }); })];
661
+ abilityExpression = resolvedExpression.abilityExpression, policyExpression = resolvedExpression.policyExpression;
662
+ policyName = roleName;
663
+ quotedPolicyName = this.quoteIdentifier(policyName);
664
+ quotedRoleName = this.quoteIdentifier(roleName);
665
+ quotedTableName = "".concat(this.quoteIdentifier("public"), ".").concat(this.quoteIdentifier(table));
666
+ return [4 /*yield*/, prisma.$queryRaw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"], ["\n\t\t\t\tselect * from _yates._yates_abilities where ability_model = ", " and ability_policy_name = ", "\n\t\t\t"])), table, policyName)];
603
667
  case 1:
604
- // Take a lock and run the RLS setup in a transaction to prevent conflicts
605
- // in a multi-server environment
668
+ existingAbilities = _a.sent();
669
+ existingAbility = existingAbilities[0];
670
+ shouldUpdateAbilityTable = false;
671
+ if (!!existingAbility) return [3 /*break*/, 6];
672
+ debug("Creating RLS policy for", roleName, "on", table, "for", operation);
673
+ if (!(operation === "INSERT")) return [3 /*break*/, 3];
674
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(quotedPolicyName, " ON ").concat(quotedTableName, " FOR ").concat(operation, " TO ").concat(quotedRoleName, " WITH CHECK (").concat(policyExpression, ");\n\t\t\t\t"))];
675
+ case 2:
606
676
  _a.sent();
607
- return [2 /*return*/];
677
+ return [3 /*break*/, 5];
678
+ case 3: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tCREATE POLICY ".concat(quotedPolicyName, " ON ").concat(quotedTableName, " FOR ").concat(operation, " TO ").concat(quotedRoleName, " USING (").concat(policyExpression, ");\n\t\t\t\t"))];
679
+ case 4:
680
+ _a.sent();
681
+ _a.label = 5;
682
+ case 5:
683
+ shouldUpdateAbilityTable = true;
684
+ return [3 /*break*/, 11];
685
+ case 6:
686
+ if (!(existingAbility.ability_expression !== abilityExpression)) return [3 /*break*/, 11];
687
+ debug("Updating RLS policy for", roleName, "on", table, "for", operation);
688
+ if (!(operation === "INSERT")) return [3 /*break*/, 8];
689
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(quotedPolicyName, " ON ").concat(quotedTableName, " TO ").concat(quotedRoleName, " WITH CHECK (").concat(policyExpression, ");\n\t\t\t\t"))];
690
+ case 7:
691
+ _a.sent();
692
+ return [3 /*break*/, 10];
693
+ case 8: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\t\tALTER POLICY ".concat(quotedPolicyName, " ON ").concat(quotedTableName, " TO ").concat(quotedRoleName, " USING (").concat(policyExpression, ");\n\t\t\t\t"))];
694
+ case 9:
695
+ _a.sent();
696
+ _a.label = 10;
697
+ case 10:
698
+ shouldUpdateAbilityTable = true;
699
+ _a.label = 11;
700
+ case 11:
701
+ if (!shouldUpdateAbilityTable) return [3 /*break*/, 13];
702
+ return [4 /*yield*/, upsertAbility(prisma, {
703
+ ability_model: table,
704
+ ability_name: slug,
705
+ ability_policy_name: policyName,
706
+ ability_description: description !== null && description !== void 0 ? description : "",
707
+ ability_operation: operation,
708
+ // We store the string representation of the expression so that
709
+ // we can compare it later without having to recompute the SQL
710
+ ability_expression: abilityExpression,
711
+ })];
712
+ case 12:
713
+ _a.sent();
714
+ _a.label = 13;
715
+ case 13: return [2 /*return*/];
608
716
  }
609
717
  });
610
718
  }); };
611
719
  this.createRoles = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
612
- var runtimeDataModel, models, diff, defaultAbilities, abilities, models_2, models_2_1, model, ability, operation, roles, pgRoles, existingAbilities, pgPolicies, migratedAbilities, _c, _d, _e, _i, model, table, _loop_2, this_1, _f, _g, _h, _j, slug, _loop_3, this_2, _k, _l, _m, _o, key;
613
- var e_7, _p;
720
+ var _c, txMaxWait, _d, txTimeout, runtimeDataModel, models, diff, defaultAbilities, abilities, models_2, models_2_1, model, ability, operation, roles, setupManifest, setupManifestHash, setupManifestId, resolvedSetupAbilityExpressions, _e, _f, _g, _i, model, _h, _j, _k, _l, slug, ability, roleName, _m, _o;
721
+ var e_9, _p, _q;
614
722
  var _this = this;
615
- var _q;
616
- var customAbilities = _b.customAbilities, getRoles = _b.getRoles;
617
- return __generator(this, function (_r) {
618
- switch (_r.label) {
723
+ var _r;
724
+ var customAbilities = _b.customAbilities, getRoles = _b.getRoles, _s = _b.options, options = _s === void 0 ? {} : _s;
725
+ return __generator(this, function (_t) {
726
+ switch (_t.label) {
619
727
  case 0: return [4 /*yield*/, this.ensureDatabaseScope()];
620
728
  case 1:
621
- _r.sent();
729
+ _t.sent();
730
+ _c = options.txMaxWait, txMaxWait = _c === void 0 ? 30000 : _c, _d = options.txTimeout, txTimeout = _d === void 0 ? 30000 : _d;
622
731
  runtimeDataModel = this.inspectRunTimeDataModel();
623
732
  models = Object.keys(runtimeDataModel.models).map(function (m) { return runtimeDataModel.models[m].dbName || m; });
624
733
  if (customAbilities) {
@@ -636,7 +745,7 @@ var Yates = /** @class */ (function () {
636
745
  for (ability in customAbilities[model]) {
637
746
  operation =
638
747
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
639
- (_q = customAbilities[model][ability]) === null || _q === void 0 ? void 0 : _q.operation;
748
+ (_r = customAbilities[model][ability]) === null || _r === void 0 ? void 0 : _r.operation;
640
749
  if (!operation)
641
750
  continue;
642
751
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
@@ -645,26 +754,127 @@ var Yates = /** @class */ (function () {
645
754
  }
646
755
  }
647
756
  }
648
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
757
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
649
758
  finally {
650
759
  try {
651
760
  if (models_2_1 && !models_2_1.done && (_p = models_2.return)) _p.call(models_2);
652
761
  }
653
- finally { if (e_7) throw e_7.error; }
762
+ finally { if (e_9) throw e_9.error; }
654
763
  }
655
764
  roles = getRoles(abilities);
656
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\tselect * from pg_catalog.pg_roles where rolname like 'yates%'\n\t\t")];
765
+ setupManifest = this.createSetupManifest(abilities, roles);
766
+ setupManifestHash = this.createSetupManifestHash(setupManifest);
767
+ setupManifestId = this.getSetupManifestId();
768
+ return [4 /*yield*/, this.getStoredSetupManifestHash(setupManifestId)];
657
769
  case 2:
658
- pgRoles = _r.sent();
659
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\tselect * from _yates._yates_abilities;\n\t\t")];
770
+ if ((_t.sent()) ===
771
+ setupManifestHash) {
772
+ debug("Yates setup manifest unchanged; skipping role reconciliation");
773
+ return [2 /*return*/];
774
+ }
775
+ resolvedSetupAbilityExpressions = {};
776
+ _e = abilities;
777
+ _f = [];
778
+ for (_g in _e)
779
+ _f.push(_g);
780
+ _i = 0;
781
+ _t.label = 3;
660
782
  case 3:
661
- existingAbilities = _r.sent();
662
- if (!(existingAbilities.length === 0)) return [3 /*break*/, 6];
663
- debug('No existing abilities found, importing from "pg_policies" table');
664
- return [4 /*yield*/, this.prisma.$queryRawUnsafe("\n\t\t\t\tselect * from pg_catalog.pg_policies where policyname like 'yates%'\n\t\t\t")];
783
+ if (!(_i < _f.length)) return [3 /*break*/, 8];
784
+ _g = _f[_i];
785
+ if (!(_g in _e)) return [3 /*break*/, 7];
786
+ model = _g;
787
+ _h = abilities[model];
788
+ _j = [];
789
+ for (_k in _h)
790
+ _j.push(_k);
791
+ _l = 0;
792
+ _t.label = 4;
665
793
  case 4:
666
- pgPolicies = _r.sent();
667
- if (!pgPolicies.length) return [3 /*break*/, 6];
794
+ if (!(_l < _j.length)) return [3 /*break*/, 7];
795
+ _k = _j[_l];
796
+ if (!(_k in _h)) return [3 /*break*/, 6];
797
+ slug = _k;
798
+ ability =
799
+ // biome-ignore lint/style/noNonNullAssertion: TODO fix this
800
+ abilities[model][slug];
801
+ if (!ability.expression) {
802
+ return [3 /*break*/, 6];
803
+ }
804
+ roleName = this.createAbilityName(model, slug);
805
+ _m = resolvedSetupAbilityExpressions;
806
+ _o = roleName;
807
+ _q = {
808
+ abilityExpression: ability.expression.toString()
809
+ };
810
+ return [4 /*yield*/, (0, expressions_1.expressionToSQL)(ability.expression, model)];
811
+ case 5:
812
+ _m[_o] = (_q.policyExpression = _t.sent(),
813
+ _q);
814
+ _t.label = 6;
815
+ case 6:
816
+ _l++;
817
+ return [3 /*break*/, 4];
818
+ case 7:
819
+ _i++;
820
+ return [3 /*break*/, 3];
821
+ case 8: return [4 /*yield*/, this.prisma.$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
822
+ var prisma;
823
+ return __generator(this, function (_a) {
824
+ switch (_a.label) {
825
+ case 0:
826
+ prisma = tx;
827
+ return [4 /*yield*/, takeLock(prisma)];
828
+ case 1:
829
+ _a.sent();
830
+ return [4 /*yield*/, this.getStoredSetupManifestHash(setupManifestId, prisma)];
831
+ case 2:
832
+ if ((_a.sent()) ===
833
+ setupManifestHash) {
834
+ debug("Yates setup manifest unchanged after acquiring lock; skipping role reconciliation");
835
+ return [2 /*return*/];
836
+ }
837
+ return [4 /*yield*/, this.reconcileRoles({
838
+ abilities: abilities,
839
+ defaultAbilities: defaultAbilities,
840
+ prisma: prisma,
841
+ resolvedSetupAbilityExpressions: resolvedSetupAbilityExpressions,
842
+ roles: roles,
843
+ })];
844
+ case 3:
845
+ _a.sent();
846
+ return [4 /*yield*/, this.upsertSetupManifestHash(setupManifestId, setupManifestHash, prisma)];
847
+ case 4:
848
+ _a.sent();
849
+ return [2 /*return*/];
850
+ }
851
+ });
852
+ }); }, { maxWait: txMaxWait, timeout: txTimeout })];
853
+ case 9:
854
+ _t.sent();
855
+ return [2 /*return*/];
856
+ }
857
+ });
858
+ }); };
859
+ this.reconcileRoles = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
860
+ var pgRoles, existingAbilities, pgPolicies, migratedAbilities, migratedAbilities_1, migratedAbilities_1_1, migratedAbility, e_10_1, _c, _d, _e, _i, model, table, _loop_2, this_1, _f, _g, _h, _j, slug, _loop_3, this_2, _k, _l, _m, _o, key;
861
+ var e_10, _p;
862
+ var _this = this;
863
+ var abilities = _b.abilities, defaultAbilities = _b.defaultAbilities, prisma = _b.prisma, resolvedSetupAbilityExpressions = _b.resolvedSetupAbilityExpressions, roles = _b.roles;
864
+ return __generator(this, function (_q) {
865
+ switch (_q.label) {
866
+ case 0: return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tselect * from pg_catalog.pg_roles where rolname like 'yates%'\n\t\t")];
867
+ case 1:
868
+ pgRoles = _q.sent();
869
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tselect * from _yates._yates_abilities;\n\t\t")];
870
+ case 2:
871
+ existingAbilities = _q.sent();
872
+ if (!(existingAbilities.length === 0)) return [3 /*break*/, 12];
873
+ debug('No existing abilities found, importing from "pg_policies" table');
874
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tselect * from pg_catalog.pg_policies where policyname like 'yates%'\n\t\t\t")];
875
+ case 3:
876
+ pgPolicies = _q.sent();
877
+ if (!pgPolicies.length) return [3 /*break*/, 12];
668
878
  migratedAbilities = pgPolicies.map(function (policy) {
669
879
  var _a, _b;
670
880
  return ({
@@ -676,36 +886,55 @@ var Yates = /** @class */ (function () {
676
886
  ability_expression: (_b = (_a = policy.qual) !== null && _a !== void 0 ? _a : policy.with_check) !== null && _b !== void 0 ? _b : "",
677
887
  });
678
888
  });
679
- return [4 /*yield*/, this.prisma.$transaction(__spreadArray([
680
- takeLock(this.prisma)
681
- ], __read(migratedAbilities.map(function (ma) { return upsertAbility(_this.prisma, ma); })), false))];
889
+ _q.label = 4;
890
+ case 4:
891
+ _q.trys.push([4, 9, 10, 11]);
892
+ migratedAbilities_1 = __values(migratedAbilities), migratedAbilities_1_1 = migratedAbilities_1.next();
893
+ _q.label = 5;
682
894
  case 5:
683
- _r.sent();
684
- existingAbilities.push.apply(existingAbilities, __spreadArray([], __read(migratedAbilities), false));
685
- _r.label = 6;
895
+ if (!!migratedAbilities_1_1.done) return [3 /*break*/, 8];
896
+ migratedAbility = migratedAbilities_1_1.value;
897
+ return [4 /*yield*/, upsertAbility(prisma, migratedAbility)];
686
898
  case 6:
899
+ _q.sent();
900
+ _q.label = 7;
901
+ case 7:
902
+ migratedAbilities_1_1 = migratedAbilities_1.next();
903
+ return [3 /*break*/, 5];
904
+ case 8: return [3 /*break*/, 11];
905
+ case 9:
906
+ e_10_1 = _q.sent();
907
+ e_10 = { error: e_10_1 };
908
+ return [3 /*break*/, 11];
909
+ case 10:
910
+ try {
911
+ if (migratedAbilities_1_1 && !migratedAbilities_1_1.done && (_p = migratedAbilities_1.return)) _p.call(migratedAbilities_1);
912
+ }
913
+ finally { if (e_10) throw e_10.error; }
914
+ return [7 /*endfinally*/];
915
+ case 11:
916
+ existingAbilities.push.apply(existingAbilities, __spreadArray([], __read(migratedAbilities), false));
917
+ _q.label = 12;
918
+ case 12:
687
919
  _c = abilities;
688
920
  _d = [];
689
921
  for (_e in _c)
690
922
  _d.push(_e);
691
923
  _i = 0;
692
- _r.label = 7;
693
- case 7:
694
- if (!(_i < _d.length)) return [3 /*break*/, 13];
924
+ _q.label = 13;
925
+ case 13:
926
+ if (!(_i < _d.length)) return [3 /*break*/, 19];
695
927
  _e = _d[_i];
696
- if (!(_e in _c)) return [3 /*break*/, 12];
928
+ if (!(_e in _c)) return [3 /*break*/, 18];
697
929
  model = _e;
698
930
  table = model;
699
- return [4 /*yield*/, this.prisma.$transaction([
700
- takeLock(this.prisma),
701
- this.prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
702
- ])];
703
- case 8:
704
- _r.sent();
931
+ return [4 /*yield*/, this.enableRowLevelSecurityIfNeeded(prisma, table)];
932
+ case 14:
933
+ _q.sent();
705
934
  _loop_2 = function (slug) {
706
- var ability, roleName;
707
- return __generator(this, function (_s) {
708
- switch (_s.label) {
935
+ var ability, roleName, resolvedExpression;
936
+ return __generator(this, function (_r) {
937
+ switch (_r.label) {
709
938
  case 0:
710
939
  ability =
711
940
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
@@ -716,22 +945,25 @@ var Yates = /** @class */ (function () {
716
945
  roleName = this_1.createAbilityName(model, slug);
717
946
  if (!pgRoles.find(function (role) { return role.rolname === roleName; })) return [3 /*break*/, 1];
718
947
  debug("Role already exists", roleName, model, slug);
719
- return [3 /*break*/, 3];
720
- case 1: return [4 /*yield*/, this_1.prisma.$transaction([
721
- takeLock(this_1.prisma),
722
- this_1.prisma.$queryRawUnsafe("\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t$$\n\t\t\t\t\t\tbegin\n\t\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\t\tend if;\n\t\t\t\t\t\tend\n\t\t\t\t\t\t$$\n\t\t\t\t\t\t;\n\t\t\t\t\t")),
723
- this_1.prisma.$queryRawUnsafe("\n\t\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t\t")),
724
- ])];
948
+ return [3 /*break*/, 4];
949
+ case 1: return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\t\tdo\n\t\t\t\t\t\t$$\n\t\t\t\t\t\tbegin\n\t\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\t\tend if;\n\t\t\t\t\t\tend\n\t\t\t\t\t\t$$\n\t\t\t\t\t\t;\n\t\t\t\t\t"))];
725
950
  case 2:
726
- _s.sent();
727
- _s.label = 3;
951
+ _r.sent();
952
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\t\tGRANT ".concat(ability.operation, " ON ").concat(this_1.quoteIdentifier("public"), ".").concat(this_1.quoteIdentifier(table), " TO ").concat(this_1.quoteIdentifier(roleName), ";\n\t\t\t\t\t"))];
728
953
  case 3:
729
- if (!ability.expression) return [3 /*break*/, 5];
730
- return [4 /*yield*/, this_1.setRLS(this_1.prisma, table, roleName, slug, ability)];
954
+ _r.sent();
955
+ _r.label = 4;
731
956
  case 4:
732
- _s.sent();
733
- _s.label = 5;
734
- case 5: return [2 /*return*/];
957
+ if (!ability.expression) return [3 /*break*/, 6];
958
+ resolvedExpression = resolvedSetupAbilityExpressions[roleName];
959
+ if (!resolvedExpression) {
960
+ throw new Error("Missing resolved expression for ".concat(model, ".").concat(slug, " (").concat(roleName, ")"));
961
+ }
962
+ return [4 /*yield*/, this_1.setRLS(prisma, table, roleName, slug, ability, resolvedExpression)];
963
+ case 5:
964
+ _r.sent();
965
+ _r.label = 6;
966
+ case 6: return [2 /*return*/];
735
967
  }
736
968
  });
737
969
  };
@@ -741,30 +973,31 @@ var Yates = /** @class */ (function () {
741
973
  for (_h in _f)
742
974
  _g.push(_h);
743
975
  _j = 0;
744
- _r.label = 9;
745
- case 9:
746
- if (!(_j < _g.length)) return [3 /*break*/, 12];
976
+ _q.label = 15;
977
+ case 15:
978
+ if (!(_j < _g.length)) return [3 /*break*/, 18];
747
979
  _h = _g[_j];
748
- if (!(_h in _f)) return [3 /*break*/, 11];
980
+ if (!(_h in _f)) return [3 /*break*/, 17];
749
981
  slug = _h;
750
982
  return [5 /*yield**/, _loop_2(slug)];
751
- case 10:
752
- _r.sent();
753
- _r.label = 11;
754
- case 11:
983
+ case 16:
984
+ _q.sent();
985
+ _q.label = 17;
986
+ case 17:
755
987
  _j++;
756
- return [3 /*break*/, 9];
757
- case 12:
988
+ return [3 /*break*/, 15];
989
+ case 18:
758
990
  _i++;
759
- return [3 /*break*/, 7];
760
- case 13:
991
+ return [3 /*break*/, 13];
992
+ case 19:
761
993
  _loop_3 = function (key) {
762
- var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles, policies;
994
+ var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles, policies, policies_1, policies_1_1, oldPolicy, e_11_1;
995
+ var e_11, _s;
763
996
  return __generator(this, function (_t) {
764
997
  switch (_t.label) {
765
998
  case 0:
766
999
  role = this_2.createRoleName(key);
767
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("\n\t\t\t\tdo\n\t\t\t\t$$\n\t\t\t\tbegin\n\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\t\tcreate role ").concat(role, ";\n\t\t\t\tend if;\n\t\t\t\tend\n\t\t\t\t$$\n\t\t\t\t;\n\t\t\t"))];
1000
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\tdo\n\t\t\t\t$$\n\t\t\t\tbegin\n\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\t\tcreate role ").concat(role, ";\n\t\t\t\tend if;\n\t\t\t\tend\n\t\t\t\t$$\n\t\t\t\t;\n\t\t\t"))];
768
1001
  case 1:
769
1002
  _t.sent();
770
1003
  wildCardAbilities = (0, flatMap_1.default)(defaultAbilities, function (model, modelName) {
@@ -782,19 +1015,22 @@ var Yates = /** @class */ (function () {
782
1015
  debug("Setting up role", key, role, "with abilities", rlsRoles.join(", "));
783
1016
  // 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.
784
1017
  // 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.
785
- return [4 /*yield*/, this_2.prisma.$transaction([
786
- takeLock(this_2.prisma),
787
- this_2.prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
788
- this_2.prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t\t")),
789
- this_2.prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t\t")),
790
- this_2.prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
791
- ])];
1018
+ return [4 /*yield*/, prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";"))];
792
1019
  case 2:
793
1020
  // 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.
794
1021
  // 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.
795
1022
  _t.sent();
796
- return [4 /*yield*/, this_2.prisma.$queryRawUnsafe("\n\t\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\t\tUNION ALL\n\t\t\t\t\tSELECT m.roleid\n\t\t\t\t\tFROM cte\n\t\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t\t)\n\t\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t\t"))];
1023
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t\t"))];
797
1024
  case 3:
1025
+ _t.sent();
1026
+ return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t\t"))];
1027
+ case 4:
1028
+ _t.sent();
1029
+ return [4 /*yield*/, prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role))];
1030
+ case 5:
1031
+ _t.sent();
1032
+ return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\t\tUNION ALL\n\t\t\t\t\tSELECT m.roleid\n\t\t\t\t\tFROM cte\n\t\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t\t)\n\t\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t\t"))];
1033
+ case 6:
798
1034
  userRoles = _t.sent();
799
1035
  oldRoles = userRoles
800
1036
  .filter(function (_a) {
@@ -805,32 +1041,52 @@ var Yates = /** @class */ (function () {
805
1041
  var rolename = _a.rolename;
806
1042
  return rolename;
807
1043
  });
808
- if (!oldRoles.length) return [3 /*break*/, 8];
1044
+ if (!oldRoles.length) return [3 /*break*/, 18];
809
1045
  // Now revoke old roles from the user role
810
1046
  debug("Revoking old roles", key, role, oldRoles.join(", "));
811
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
812
- case 4:
1047
+ return [4 /*yield*/, prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
1048
+ case 7:
813
1049
  _t.sent();
814
- return [4 /*yield*/, this_2.prisma.$queryRawUnsafe("SELECT * FROM pg_catalog.pg_policies WHERE policyname IN (".concat(oldRoles
1050
+ return [4 /*yield*/, prisma.$queryRawUnsafe("SELECT * FROM pg_catalog.pg_policies WHERE policyname IN (".concat(oldRoles
815
1051
  .map(function (or) { return "'".concat(or, "'"); })
816
1052
  .join(", "), ")"))];
817
- case 5:
1053
+ case 8:
818
1054
  policies = _t.sent();
819
- return [4 /*yield*/, this_2.prisma.$transaction(__spreadArray([
820
- takeLock(this_2.prisma)
821
- ], __read(policies.map(function (oldPolicy) {
822
- return _this.prisma.$executeRawUnsafe("DROP POLICY ".concat(oldPolicy.policyname, " ON \"").concat(oldPolicy.tablename, "\""));
823
- })), false))];
824
- case 6:
1055
+ _t.label = 9;
1056
+ case 9:
1057
+ _t.trys.push([9, 14, 15, 16]);
1058
+ policies_1 = (e_11 = void 0, __values(policies)), policies_1_1 = policies_1.next();
1059
+ _t.label = 10;
1060
+ case 10:
1061
+ if (!!policies_1_1.done) return [3 /*break*/, 13];
1062
+ oldPolicy = policies_1_1.value;
1063
+ return [4 /*yield*/, prisma.$executeRawUnsafe("DROP POLICY ".concat(oldPolicy.policyname, " ON \"").concat(oldPolicy.tablename, "\""))];
1064
+ case 11:
825
1065
  _t.sent();
1066
+ _t.label = 12;
1067
+ case 12:
1068
+ policies_1_1 = policies_1.next();
1069
+ return [3 /*break*/, 10];
1070
+ case 13: return [3 /*break*/, 16];
1071
+ case 14:
1072
+ e_11_1 = _t.sent();
1073
+ e_11 = { error: e_11_1 };
1074
+ return [3 /*break*/, 16];
1075
+ case 15:
1076
+ try {
1077
+ if (policies_1_1 && !policies_1_1.done && (_s = policies_1.return)) _s.call(policies_1);
1078
+ }
1079
+ finally { if (e_11) throw e_11.error; }
1080
+ return [7 /*endfinally*/];
1081
+ case 16:
826
1082
  debug("Revoked old rows from ability table", oldRoles.join(", "));
827
- return [4 /*yield*/, this_2.prisma.$executeRawUnsafe("DELETE FROM _yates._yates_abilities WHERE ability_policy_name IN (".concat(oldRoles
1083
+ return [4 /*yield*/, prisma.$executeRawUnsafe("DELETE FROM _yates._yates_abilities WHERE ability_policy_name IN (".concat(oldRoles
828
1084
  .map(function (or) { return "'".concat(or, "'"); })
829
1085
  .join(", "), ")"))];
830
- case 7:
1086
+ case 17:
831
1087
  _t.sent();
832
- _t.label = 8;
833
- case 8: return [2 /*return*/];
1088
+ _t.label = 18;
1089
+ case 18: return [2 /*return*/];
834
1090
  }
835
1091
  });
836
1092
  };
@@ -840,20 +1096,20 @@ var Yates = /** @class */ (function () {
840
1096
  for (_m in _k)
841
1097
  _l.push(_m);
842
1098
  _o = 0;
843
- _r.label = 14;
844
- case 14:
845
- if (!(_o < _l.length)) return [3 /*break*/, 17];
1099
+ _q.label = 20;
1100
+ case 20:
1101
+ if (!(_o < _l.length)) return [3 /*break*/, 23];
846
1102
  _m = _l[_o];
847
- if (!(_m in _k)) return [3 /*break*/, 16];
1103
+ if (!(_m in _k)) return [3 /*break*/, 22];
848
1104
  key = _m;
849
1105
  return [5 /*yield**/, _loop_3(key)];
850
- case 15:
851
- _r.sent();
852
- _r.label = 16;
853
- case 16:
1106
+ case 21:
1107
+ _q.sent();
1108
+ _q.label = 22;
1109
+ case 22:
854
1110
  _o++;
855
- return [3 /*break*/, 14];
856
- case 17: return [2 /*return*/];
1111
+ return [3 /*break*/, 20];
1112
+ case 23: return [2 /*return*/];
857
1113
  }
858
1114
  });
859
1115
  }); };
@@ -933,6 +1189,7 @@ var setup = function (params) { return __awaiter(void 0, void 0, void 0, functio
933
1189
  return [4 /*yield*/, yates.createRoles({
934
1190
  customAbilities: customAbilities,
935
1191
  getRoles: getRoles,
1192
+ options: params.options,
936
1193
  })];
937
1194
  case 2:
938
1195
  _a.sent();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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": "3.8.1",
3
+ "version": "4.0.0-beta.dangerous.0d42031",
4
4
  "description": "Role based access control for Prisma Apps",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -48,4 +48,4 @@
48
48
  "@prisma/client": "^5.11.0",
49
49
  "prisma": "^5.11.0"
50
50
  }
51
- }
51
+ }