@cerebruminc/yates 3.5.2 → 3.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.6.0](https://github.com/cerebruminc/yates/compare/v3.5.2...v3.6.0) (2024-11-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * improve performance (esp. n+1) by batching requests ([0ff5d67](https://github.com/cerebruminc/yates/commit/0ff5d6716bcf0b49b57e93641b74be175d829b9f))
9
+
3
10
  ## [3.5.2](https://github.com/cerebruminc/yates/compare/v3.5.1...v3.5.2) (2024-04-10)
4
11
 
5
12
 
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  <h1>Yates = Prisma + RLS</h1>
7
7
 
8
8
  <p>
9
- A module for implementing role based access control with Prisma when using Postgres
9
+ A module for implementing role-based access control with Prisma when using Postgres
10
10
  </p>
11
11
  <br>
12
12
  </div>
@@ -15,17 +15,16 @@
15
15
 
16
16
  <br>
17
17
 
18
- Yates is a module for implementing role based access control with Prisma. It is designed to be used with the [Prisma Client](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client) and [PostgreSQL](https://www.postgresql.org/).
19
- It uses the [Row Level Security](https://www.postgresql.org/docs/9.5/ddl-rowsecurity.html) feature of PostgreSQL to provide a simple and secure way to implement role based access control that allows you to define complex access control rules and have them apply to all of your Prisma queries automatically.
18
+ Yates is a module for implementing role-based access control with Prisma. It is designed to be used with the [Prisma Client](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client) and [PostgreSQL](https://www.postgresql.org/). It uses PostgreSQL's [Row Level Security](https://www.postgresql.org/docs/9.5/ddl-rowsecurity.html) feature to provide a simple and secure way to implement role-based access control. This feature allows you to define complex access control rules and have them apply to all of your Prisma queries automatically.
20
19
 
21
20
  ## Prerequisites
22
21
 
23
- Yates requires the `prisma` package ate version 4.9.0 or greater and the `@prisma/client` package at version 4.0.0 or greater. Additionally it makes use of the [Prisma Client extensions](https://www.prisma.io/docs/concepts/components/prisma-client/client-extensions) preview feature to generate rules and add RLS checking, so you will need to enable this feature in your Prisma schema.
22
+ Yates requires the `prisma` package at version 4.9.0 or greater and the `@prisma/client` package at version 4.0.0 or greater. Additionally, it uses [Prisma Client extensions](https://www.prisma.io/docs/concepts/components/prisma-client/client-extensions) to generate rules and add RLS checking (which require a preview feature flag until Prisma 4.16.0, so you might need to enable this feature in your Prisma schema):
24
23
 
25
24
  ```prisma
26
25
  generator client {
27
26
  provider = "prisma-client-js"
28
- previewFeatures = ["clientExtensions"]
27
+ // previewFeatures = ["clientExtensions"] // uncomment when using Prisma before 4.16.0
29
28
  }
30
29
  ```
31
30
 
@@ -37,20 +36,24 @@ npm i @cerebruminc/yates
37
36
 
38
37
  ## Usage
39
38
 
40
- Once you've installed Yates, you can use it in your Prisma project by importing it and calling the `setup` function. This function takes a Prisma Client instance and a configuration object as arguments and returns a client that can intercept all queries and apply the appropriate row level security policies to them.
41
- Yates uses client extensions to generate the RLS rules and add the RLS checking to the Prisma Client queries. This means that you can use the Prisma Client as you normally would, and Yates will automatically apply the appropriate RLS policies to each query. It also means that you will need to apply your middleware _before_ creating the Yates client, as middleware cannot be applied to an extended client.
42
- Client extensions share the same API as the Prisma Client, you can use the Yates client as a drop-in replacement for the Prisma Client in your application.
43
- Client extensions also share the same connection pool as the base client, which means that you can freely create new Yates clients with minimal performance impact.
39
+ Once you've installed Yates, you can use it in your Prisma project by importing it and calling the `setup` function. This function takes a Prisma Client instance and a configuration object as arguments and returns a client that can intercept all queries and apply the appropriate row-level security policies to them.
40
+
41
+ Yates uses [Prisma Client Extensions](https://www.prisma.io/docs/concepts/components/prisma-client/client-extensions) to generate the RLS rules and add the RLS checking to the Prisma Client queries. This means that you can use the Prisma Client as you normally would, and Yates will automatically apply the appropriate RLS policies to each query. It also means that you will need to apply your [Prisma Client middleware](https://www.prisma.io/docs/orm/prisma-client/client-extensions/middleware) _before_ creating the Yates client, as middleware cannot be applied to an extended client.
42
+
43
+ Client extensions share the same API as the Prisma Client, you can use the Yates client as a drop-in replacement for the Prisma Client in your application. They also share the same connection pool as the base client, which means that you can freely create new Yates clients with minimal performance impact.
44
+
45
+ The `setup` function will generate CRUD abilities for each model in your Prisma schema, as well as any additional abilities that you have defined in your configuration. It will then create a new PG role for each ability and apply the appropriate row-level security policies to each role. Finally, it will create a new PG role for each user role you specify and grant them the appropriate abilities.
44
46
 
45
- The `setup` function will generate CRUD abilities for each model in your Prisma schema, as well as any additional abilities that you have defined in your configuration. It will then create a new PG role for each ability and apply the appropriate row level security policies to each role. Finally, it will create a new PG role for each user role you specify and grant them the appropriate abilities.
46
47
  For Yates to be able to set the correct user role for each request, you must pass a function called `getContext` in the `setup` configuration that will return the user role for the current request. This function will be called for each request and the user role returned will be used to set the `role` in the current session. If you want to bypass RLS completely for a specific role, you can return `null` from the `getContext` function for that role.
48
+
47
49
  For accessing the context of a Prisma query, we recommend using a package like [cls-hooked](https://www.npmjs.com/package/cls-hooked) to store the context in the current session.
48
50
 
51
+ ### Example
52
+
49
53
  ```ts
50
54
  import { setup } from "@cerebruminc/yates";
51
55
  import { PrismaClient } from "@prisma/client";
52
56
 
53
-
54
57
  const prisma = new PrismaClient();
55
58
 
56
59
  const client = await setup({
@@ -85,7 +88,7 @@ const client = await setup({
85
88
  },
86
89
  operation: "DELETE",
87
90
  },
88
- }
91
+ },
89
92
  User: {
90
93
  updateOwnUser: {
91
94
  description: "Update own user",
@@ -95,8 +98,7 @@ const client = await setup({
95
98
  },
96
99
  }
97
100
  }
98
-
99
- })
101
+ }),
100
102
  // Return a mapping of user roles and abilities.
101
103
  // This function is paramaterised with a list of all CRUD abilities that have been
102
104
  // automatically generated by Yates, as well as any customAbilities that have been defined.
@@ -117,8 +119,6 @@ const client = await setup({
117
119
  }
118
120
  const { user } = ctx;
119
121
 
120
- let role = user.role;
121
-
122
122
  const role = user.role
123
123
 
124
124
  return {
@@ -146,10 +146,8 @@ When defining an ability you need to provide the following properties:
146
146
 
147
147
  - `description`: A description of the ability.
148
148
  - `expression`: A boolean SQL expression that will be used to filter the results of the query. This expression can use any of the columns in the table that the ability is being applied to, as well as any context settings that have been defined in the `getContext` function.
149
-
150
149
  - For `INSERT`, `UPDATE` and `DELETE` operations, the expression uses the values from the row being inserted. If the expression returns `false` for a row, that row will not be inserted, updated or deleted.
151
150
  - For `SELECT` operations, the expression uses the values from the row being returned. If the expression returns `false` for a row, that row will not be returned.
152
-
153
151
  - `operation`: The operation that the ability is being applied to. This can be one of `CREATE`, `READ`, `UPDATE` or `DELETE`.
154
152
 
155
153
  ### Debug
@@ -161,11 +159,11 @@ To run Yates in debug mode, use the environment variable `DEBUG=yates`.
161
159
  ### Nested transactions
162
160
 
163
161
  Yates uses a transaction to apply the RLS policies to each query. This means that if you are using transactions in your application, rollbacks will not work as expected. This is because [Prisma has poor support for nested transactions](https://github.com/prisma/prisma/issues/15212) and will `COMMIT` the inner transaction even if the outer transaction is rolled back.
164
- If you need this functionality and you are using Yates, you can return `null` from the `getContext()` setup method to bypass the internal transaction, and therefore the RLS policies for the current request. see the `nested-transactions.spec.ts` test case for an example of how to do this.
162
+ If you need this functionality and you are using Yates, you can return `null` from the `getContext()` setup method to bypass the internal transaction, and therefore the RLS policies for the current request. See the `nested-transactions.spec.ts` test case for an example of how to do this.
165
163
 
166
164
  ### Unsupported Prisma Client query features
167
165
 
168
- If you are using the Prisma client to construct an ability expression, the following `where` keywords are not supported.
166
+ If you are using the Prisma Client to construct an ability expression, the following `where` keywords are not supported.
169
167
 
170
168
  - `AND`
171
169
  - `OR`
@@ -74,7 +74,7 @@ var PRISMA_NUMERIC_TYPES = ["Int", "BigInt", "Float", "Decimal"];
74
74
  // This function is a recursive function that will search through an object and
75
75
  // its children to find a matching object.
76
76
  // It's used to find a matching AST fragment so that we can replace it with a token
77
- // biome-ignore lint/suspicious/noExplicitAny: TODO future cleanup
77
+ // TODO future cleanup
78
78
  var deepFind = function (obj, subObj) {
79
79
  var matcher = (0, matches_1.default)(subObj);
80
80
  for (var key in obj) {
@@ -89,20 +89,18 @@ var deepFind = function (obj, subObj) {
89
89
  }
90
90
  }
91
91
  };
92
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
92
+ // TODO fix this
93
93
  var expressionRowName = function (col) { return "___yates_row_".concat(col); };
94
94
  var expressionContext = function (context) { return "___yates_context_".concat(context); };
95
95
  // Generate a big 32bit signed integer to use as an ID
96
96
  var getLargeRandomInt = function () { return (0, random_1.default)(1000000000, 2147483647); };
97
97
  var getDmmfMetaData = function (client, model, field) {
98
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
99
98
  var runtimeDataModel = client
100
99
  ._runtimeDataModel;
101
100
  var modelData = runtimeDataModel.models[model];
102
101
  if (!modelData) {
103
102
  throw new Error("Could not retrieve model data from Prisma Client for model '".concat(model, "'"));
104
103
  }
105
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
106
104
  var fieldData = modelData.fields.find(function (f) { return f.name === field; });
107
105
  if (!fieldData) {
108
106
  throw new Error("Could not retrieve field data from Prisma Client for field '".concat(model, ".").concat(field, "'"));
@@ -117,7 +115,6 @@ var tokenizeWhereExpression = function (
117
115
  /** The Prisma client to use for metadata */
118
116
  client,
119
117
  /** The Prisma where expression to be tokenized */
120
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
121
118
  where,
122
119
  /** The base table we are generating an expression for */
123
120
  table,
@@ -321,22 +318,15 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
321
318
  return __generator(this, function (_a) {
322
319
  switch (_a.label) {
323
320
  case 0:
324
- rawExpression = getExpression(
325
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
326
- expressionClient,
327
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
328
- expressionRowName, expressionContext);
321
+ rawExpression = getExpression(expressionClient, expressionRowName, expressionContext);
329
322
  isSubselect = typeof rawExpression === "object" &&
330
323
  "then" in rawExpression &&
331
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
332
324
  typeof rawExpression.then === "function";
333
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
334
325
  baseClient.$on("query", function (e) {
335
326
  var e_2, _a, e_3, _b;
336
327
  try {
337
328
  var parser = new node_sql_parser_1.Parser();
338
329
  // Parse the query into an AST
339
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
340
330
  var ast = parser.astify(e.query, {
341
331
  database: "postgresql",
342
332
  });
@@ -417,13 +407,10 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
417
407
  case 2:
418
408
  _a.sent();
419
409
  return [3 /*break*/, 5];
420
- case 3:
421
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
422
- return [4 /*yield*/, expressionClient[table].findFirst({
410
+ case 3: return [4 /*yield*/, expressionClient[table].findFirst({
423
411
  where: rawExpression,
424
412
  })];
425
413
  case 4:
426
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
427
414
  _a.sent();
428
415
  _a.label = 5;
429
416
  case 5: return [3 /*break*/, 7];
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -32,6 +32,7 @@ export type CustomAbilities<ContextKeys extends string = string, YModels extends
32
32
  };
33
33
  export type GetContextFn<ContextKeys extends string = string> = () => {
34
34
  role: string;
35
+ transactionId?: string;
35
36
  context?: {
36
37
  [key in ContextKeys]: string | number | string[];
37
38
  };
@@ -43,6 +44,7 @@ declare module "@prisma/client" {
43
44
  }
44
45
  export declare const createAbilityName: (model: string, ability: string) => string;
45
46
  export declare const createRoleName: (name: string) => string;
47
+ export declare function getBatchId(query: any): string | undefined;
46
48
  export declare const createClient: (prisma: PrismaClient, getContext: GetContextFn, options?: ClientOptions) => import("@prisma/client/runtime/library").DynamicClientExtensionThis<Prisma.TypeMap<import("@prisma/client/runtime/library").InternalArgs & {
47
49
  result: {};
48
50
  model: {};
package/dist/index.js CHANGED
@@ -113,7 +113,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
113
113
  return (mod && mod.__esModule) ? mod : { "default": mod };
114
114
  };
115
115
  Object.defineProperty(exports, "__esModule", { value: true });
116
- exports.setup = exports.createRoles = exports.createClient = exports.createRoleName = exports.createAbilityName = void 0;
116
+ exports.setup = exports.createRoles = exports.createClient = exports.getBatchId = exports.createRoleName = exports.createAbilityName = void 0;
117
117
  var crypto = __importStar(require("crypto"));
118
118
  var debug_1 = __importDefault(require("debug"));
119
119
  var difference_1 = __importDefault(require("lodash/difference"));
@@ -180,152 +180,267 @@ var createRoleName = function (name) {
180
180
  return sanitizeSlug(hashWithPrefix("yates_role_", "".concat(name)));
181
181
  };
182
182
  exports.createRoleName = createRoleName;
183
+ // @ts-ignore
184
+ function getBatchId(query) {
185
+ if (query.action !== "findUnique" && query.action !== "findUniqueOrThrow") {
186
+ return undefined;
187
+ }
188
+ var parts = [];
189
+ if (query.modelName) {
190
+ parts.push(query.modelName);
191
+ }
192
+ if (query.query.arguments) {
193
+ parts.push(buildKeysString(query.query.arguments));
194
+ }
195
+ parts.push(buildKeysString(query.query.selection));
196
+ return parts.join("");
197
+ }
198
+ exports.getBatchId = getBatchId;
199
+ function buildKeysString(obj) {
200
+ var keysArray = Object.keys(obj)
201
+ .sort()
202
+ .map(function (key) {
203
+ // @ts-ignore
204
+ var value = obj[key];
205
+ if (typeof value === "object" && value !== null) {
206
+ return "(".concat(key, " ").concat(buildKeysString(value), ")");
207
+ }
208
+ return key;
209
+ });
210
+ return "(".concat(keysArray.join(" "), ")");
211
+ }
183
212
  // This uses client extensions to set the role and context for the current user so that RLS can be applied
184
213
  var createClient = function (prisma, getContext, options) {
185
214
  if (options === void 0) { options = {}; }
186
215
  // Set default options
187
216
  var _a = options.txMaxWait, txMaxWait = _a === void 0 ? 30000 : _a, _b = options.txTimeout, txTimeout = _b === void 0 ? 30000 : _b;
217
+ // By default, Prisma will batch requests by the transaction ID if it is present.
218
+ // This behaviour prevents automatic batching from working when using Yates, since all queries are executed inside an interactive transaction.
219
+ // To get around this we by monkey patching the batching function to use the Yates ID as the batch ID.
220
+ // To get the batching to work we also need to ensure that all the requests we might want to batch together are generated inside the same tick.
221
+ // This means that all the requests per-tick that have the same role and context values will be batched together,
222
+ // allowing the in-built prisma batch optimizations to work for us.
223
+ // This is why we use process.nextTick and the tickActive flag to ensure we only tick once at a time.
224
+ // See:
225
+ // - https://github.com/prisma/prisma/blob/5.21.1/packages/client/src/runtime/RequestHandler.ts#L122
226
+ // - https://www.prisma.io/docs/orm/prisma-client/queries/query-optimization-performance
227
+ prisma._requestHandler.dataloader.options.batchBy = function (request) {
228
+ var _a, _b;
229
+ return ((_a = request.transaction) === null || _a === void 0 ? void 0 : _a.yates_id)
230
+ ? request.transaction.yates_id + (getBatchId(request.protocolQuery) || "")
231
+ : ((_b = request.transaction) === null || _b === void 0 ? void 0 : _b.id)
232
+ ? "transaction-".concat(request.transaction.id)
233
+ : getBatchId(request.protocolQuery);
234
+ };
235
+ var tickActive = false;
236
+ var batches = {};
237
+ // This function is called once per tick, and processes all the batches that have been created during that tick.
238
+ // Each batch represents a unique role + context combination, and contains all the requests that need to be executed with that role + context.
239
+ var dispatchBatches = function () {
240
+ var e_1, _a;
241
+ var _loop_1 = function (key, batch) {
242
+ delete batches[key];
243
+ // Because batch transactions inside a prisma client query extension can run out of order if used with async middleware,
244
+ // we need to run the logic inside an interactive transaction, however this brings a different set of problems in that the
245
+ // main query will no longer automatically run inside the transaction. We resolve this issue by manually executing the prisma request.
246
+ // See https://github.com/prisma/prisma/issues/18276
247
+ prisma
248
+ .$transaction(function (tx) { return __awaiter(void 0, void 0, void 0, function () {
249
+ var _a, _b, _c, key_1, value, e_2_1, txId, results;
250
+ var e_2, _d;
251
+ return __generator(this, function (_e) {
252
+ switch (_e.label) {
253
+ case 0:
254
+ // 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
255
+ return [4 /*yield*/, tx.$queryRawUnsafe("SET ROLE ".concat(batch.pgRole))];
256
+ case 1:
257
+ // 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
258
+ _e.sent();
259
+ _e.label = 2;
260
+ case 2:
261
+ _e.trys.push([2, 7, 8, 9]);
262
+ _a = __values((0, toPairs_1.default)(batch.context)), _b = _a.next();
263
+ _e.label = 3;
264
+ case 3:
265
+ if (!!_b.done) return [3 /*break*/, 6];
266
+ _c = __read(_b.value, 2), key_1 = _c[0], value = _c[1];
267
+ return [4 /*yield*/, tx.$queryRaw(templateObject_2 || (templateObject_2 = __makeTemplateObject(["SELECT set_config(", ", ", ", true);"], ["SELECT set_config(", ", ", ", true);"])), key_1, value.toString())];
268
+ case 4:
269
+ _e.sent();
270
+ _e.label = 5;
271
+ case 5:
272
+ _b = _a.next();
273
+ return [3 /*break*/, 3];
274
+ case 6: return [3 /*break*/, 9];
275
+ case 7:
276
+ e_2_1 = _e.sent();
277
+ e_2 = { error: e_2_1 };
278
+ return [3 /*break*/, 9];
279
+ case 8:
280
+ try {
281
+ if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
282
+ }
283
+ finally { if (e_2) throw e_2.error; }
284
+ return [7 /*endfinally*/];
285
+ case 9:
286
+ txId = tx[Symbol.for("prisma.client.transaction.id")];
287
+ return [4 /*yield*/, Promise.all(batch.requests.map(function (request) {
288
+ return prisma._executeRequest(__assign(__assign({}, request.params), { transaction: {
289
+ kind: "itx",
290
+ id: txId,
291
+ yates_id: key,
292
+ } }));
293
+ }))];
294
+ case 10:
295
+ results = _e.sent();
296
+ // Switch role back to admin user
297
+ return [4 /*yield*/, tx.$queryRawUnsafe("SET ROLE none")];
298
+ case 11:
299
+ // Switch role back to admin user
300
+ _e.sent();
301
+ return [2 /*return*/, results];
302
+ }
303
+ });
304
+ }); }, {
305
+ maxWait: txMaxWait,
306
+ timeout: txTimeout,
307
+ })
308
+ .then(function (results) {
309
+ results.forEach(function (result, index) {
310
+ batch.requests[index].resolve(result);
311
+ });
312
+ })
313
+ .catch(function (e) {
314
+ var e_3, _a;
315
+ try {
316
+ for (var _b = (e_3 = void 0, __values(batch.requests)), _c = _b.next(); !_c.done; _c = _b.next()) {
317
+ var request = _c.value;
318
+ request.reject(e);
319
+ }
320
+ }
321
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
322
+ finally {
323
+ try {
324
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
325
+ }
326
+ finally { if (e_3) throw e_3.error; }
327
+ }
328
+ delete batches[key];
329
+ });
330
+ };
331
+ try {
332
+ for (var _b = __values(Object.entries(batches)), _c = _b.next(); !_c.done; _c = _b.next()) {
333
+ var _d = __read(_c.value, 2), key = _d[0], batch = _d[1];
334
+ _loop_1(key, batch);
335
+ }
336
+ }
337
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
338
+ finally {
339
+ try {
340
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
341
+ }
342
+ finally { if (e_1) throw e_1.error; }
343
+ }
344
+ };
188
345
  var client = prisma.$extends({
189
346
  name: "Yates client",
190
347
  query: {
191
348
  $allModels: {
192
349
  $allOperations: function (params) {
193
350
  return __awaiter(this, void 0, void 0, function () {
194
- var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, queryResults, e_1;
195
- var e_2, _e, e_3, _f;
196
- var _this = this;
197
- var _g;
198
- return __generator(this, function (_h) {
199
- switch (_h.label) {
200
- case 0:
201
- model = params.model, args = params.args, query = params.query, operation = params.operation;
202
- if (!model) {
203
- // If the model is not defined, we can't apply RLS
204
- // This can occur when you are making a call with Prisma's $queryRaw method
205
- // biome-ignore lint/suspicious/noExplicitAny: See above
206
- return [2 /*return*/, query(args)];
207
- }
208
- ctx = getContext();
209
- // If ctx is null, the middleware is explicitly skipped
210
- if (ctx === null) {
211
- return [2 /*return*/, query(args)];
212
- }
213
- role = ctx.role, context = ctx.context;
214
- pgRole = (0, exports.createRoleName)(role);
215
- if (context) {
216
- try {
217
- for (_a = __values(Object.keys(context)), _b = _a.next(); !_b.done; _b = _a.next()) {
218
- k = _b.value;
219
- if (!k.match(/^[a-z_\.]+$/)) {
220
- throw new Error("Context variable \"".concat(k, "\" contains invalid characters. Context variables must only contain lowercase letters, numbers, periods and underscores."));
221
- }
222
- if (typeof context[k] !== "number" &&
223
- typeof context[k] !== "string" &&
224
- !Array.isArray(context[k])) {
225
- throw new Error("Context variable \"".concat(k, "\" must be a string, number or array. Got ").concat(typeof context[k]));
226
- }
227
- if (Array.isArray(context[k])) {
228
- try {
229
- for (_c = (e_3 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
230
- v = _d.value;
231
- if (typeof v !== "string") {
232
- throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
233
- }
234
- }
235
- }
236
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
237
- finally {
238
- try {
239
- if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
240
- }
241
- finally { if (e_3) throw e_3.error; }
351
+ var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, txId, hash, __internalParams;
352
+ var e_4, _e, e_5, _f;
353
+ return __generator(this, function (_g) {
354
+ model = params.model, args = params.args, query = params.query, operation = params.operation;
355
+ if (!model) {
356
+ // If the model is not defined, we can't apply RLS
357
+ // This can occur when you are making a call with Prisma's $queryRaw method
358
+ return [2 /*return*/, query(args)];
359
+ }
360
+ ctx = getContext();
361
+ // If ctx is null, the middleware is explicitly skipped
362
+ if (ctx === null) {
363
+ return [2 /*return*/, query(args)];
364
+ }
365
+ role = ctx.role, context = ctx.context;
366
+ pgRole = (0, exports.createRoleName)(role);
367
+ if (context) {
368
+ try {
369
+ for (_a = __values(Object.keys(context)), _b = _a.next(); !_b.done; _b = _a.next()) {
370
+ k = _b.value;
371
+ if (!k.match(/^[a-z_\.]+$/)) {
372
+ throw new Error("Context variable \"".concat(k, "\" contains invalid characters. Context variables must only contain lowercase letters, numbers, periods and underscores."));
373
+ }
374
+ if (typeof context[k] !== "number" &&
375
+ typeof context[k] !== "string" &&
376
+ !Array.isArray(context[k])) {
377
+ throw new Error("Context variable \"".concat(k, "\" must be a string, number or array. Got ").concat(typeof context[k]));
378
+ }
379
+ if (Array.isArray(context[k])) {
380
+ try {
381
+ for (_c = (e_5 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
382
+ v = _d.value;
383
+ if (typeof v !== "string") {
384
+ throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
242
385
  }
243
- // Cast to a JSON string so that it can be used in RLS expressions
244
- context[k] = JSON.stringify(context[k]);
245
386
  }
246
387
  }
247
- }
248
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
249
- finally {
250
- try {
251
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
388
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
389
+ finally {
390
+ try {
391
+ if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
392
+ }
393
+ finally { if (e_5) throw e_5.error; }
252
394
  }
253
- finally { if (e_2) throw e_2.error; }
395
+ // Cast to a JSON string so that it can be used in RLS expressions
396
+ context[k] = JSON.stringify(context[k]);
254
397
  }
255
398
  }
256
- _h.label = 1;
257
- case 1:
258
- _h.trys.push([1, 3, , 4]);
259
- return [4 /*yield*/, prisma.$transaction(function (tx) { return __awaiter(_this, void 0, void 0, function () {
260
- var _a, _b, _c, key, value, e_4_1, txId, __internalParams, result;
261
- var e_4, _d;
262
- return __generator(this, function (_e) {
263
- switch (_e.label) {
264
- case 0:
265
- // 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
266
- return [4 /*yield*/, tx.$queryRawUnsafe("SET ROLE ".concat(pgRole))];
267
- case 1:
268
- // 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
269
- _e.sent();
270
- _e.label = 2;
271
- case 2:
272
- _e.trys.push([2, 7, 8, 9]);
273
- _a = __values((0, toPairs_1.default)(context)), _b = _a.next();
274
- _e.label = 3;
275
- case 3:
276
- if (!!_b.done) return [3 /*break*/, 6];
277
- _c = __read(_b.value, 2), key = _c[0], value = _c[1];
278
- return [4 /*yield*/, tx.$queryRaw(templateObject_2 || (templateObject_2 = __makeTemplateObject(["SELECT set_config(", ", ", ", true);"], ["SELECT set_config(", ", ", ", true);"])), key, value.toString())];
279
- case 4:
280
- _e.sent();
281
- _e.label = 5;
282
- case 5:
283
- _b = _a.next();
284
- return [3 /*break*/, 3];
285
- case 6: return [3 /*break*/, 9];
286
- case 7:
287
- e_4_1 = _e.sent();
288
- e_4 = { error: e_4_1 };
289
- return [3 /*break*/, 9];
290
- case 8:
291
- try {
292
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
293
- }
294
- finally { if (e_4) throw e_4.error; }
295
- return [7 /*endfinally*/];
296
- case 9:
297
- txId = tx[Symbol.for("prisma.client.transaction.id")];
298
- __internalParams = params.__internalParams;
299
- return [4 /*yield*/, prisma._executeRequest(__assign(__assign({}, __internalParams), { transaction: {
300
- kind: "itx",
301
- id: txId,
302
- } }))];
303
- case 10:
304
- result = _e.sent();
305
- // Switch role back to admin user
306
- return [4 /*yield*/, tx.$queryRawUnsafe("SET ROLE none")];
307
- case 11:
308
- // Switch role back to admin user
309
- _e.sent();
310
- return [2 /*return*/, result];
311
- }
312
- });
313
- }); }, {
314
- maxWait: txMaxWait,
315
- timeout: txTimeout,
316
- })];
317
- case 2:
318
- queryResults = _h.sent();
319
- return [2 /*return*/, queryResults];
320
- case 3:
321
- e_1 = _h.sent();
399
+ }
400
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
401
+ finally {
402
+ try {
403
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
404
+ }
405
+ finally { if (e_4) throw e_4.error; }
406
+ }
407
+ }
408
+ txId = hashWithPrefix("yates_tx_", JSON.stringify(ctx));
409
+ hash = txId;
410
+ if (!batches[hash]) {
411
+ // Create a new batch for this role + context combination
412
+ batches[hash] = {
413
+ pgRole: pgRole,
414
+ context: context,
415
+ requests: [],
416
+ };
417
+ // make sure, that we only tick once at a time
418
+ if (!tickActive) {
419
+ tickActive = true;
420
+ process.nextTick(function () {
421
+ dispatchBatches();
422
+ tickActive = false;
423
+ });
424
+ }
425
+ }
426
+ __internalParams = params.__internalParams;
427
+ // Add the request to the batch, and return a promise that will be resolved or rejected in dispatchBatches
428
+ return [2 /*return*/, new Promise(function (resolve, reject) {
429
+ batches[hash].requests.push({
430
+ params: __internalParams,
431
+ query: query,
432
+ args: args,
433
+ resolve: resolve,
434
+ reject: reject,
435
+ });
436
+ }).catch(function (e) {
437
+ var _a;
322
438
  // Normalize RLS errors to make them a bit more readable.
323
- if ((_g = e_1.message) === null || _g === void 0 ? void 0 : _g.includes("new row violates row-level security policy for table")) {
439
+ if ((_a = e.message) === null || _a === void 0 ? void 0 : _a.includes("new row violates row-level security policy for table")) {
324
440
  throw new Error("You do not have permission to perform this action: ".concat(model, ".").concat(operation, "(...)"));
325
441
  }
326
- throw e_1;
327
- case 4: return [2 /*return*/];
328
- }
442
+ throw e;
443
+ })];
329
444
  });
330
445
  });
331
446
  },
@@ -422,8 +537,8 @@ var setRLS = function (prisma, table, roleName, slug, ability) { return __awaite
422
537
  });
423
538
  }); };
424
539
  var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
425
- var abilities, runtimeDataModel, models, diff, models_1, models_1_1, model, ability, operation, roles, pgRoles, existingAbilities, pgPolicies, migratedAbilities, _c, _d, _e, _i, model, table, _loop_1, _f, _g, _h, _j, slug, _loop_2, _k, _l, _m, _o, key;
426
- var e_5, _p;
540
+ var abilities, runtimeDataModel, models, diff, models_1, models_1_1, model, ability, operation, roles, pgRoles, existingAbilities, pgPolicies, migratedAbilities, _c, _d, _e, _i, model, table, _loop_2, _f, _g, _h, _j, slug, _loop_3, _k, _l, _m, _o, key;
541
+ var e_6, _p;
427
542
  var _q;
428
543
  var prisma = _b.prisma, customAbilities = _b.customAbilities, getRoles = _b.getRoles;
429
544
  return __generator(this, function (_r) {
@@ -447,7 +562,6 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
447
562
  description: "Create ".concat(model),
448
563
  expression: "true",
449
564
  operation: "INSERT",
450
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
451
565
  model: model,
452
566
  slug: "create",
453
567
  },
@@ -455,7 +569,6 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
455
569
  description: "Read ".concat(model),
456
570
  expression: "true",
457
571
  operation: "SELECT",
458
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
459
572
  model: model,
460
573
  slug: "read",
461
574
  },
@@ -463,7 +576,6 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
463
576
  description: "Update ".concat(model),
464
577
  expression: "true",
465
578
  operation: "UPDATE",
466
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
467
579
  model: model,
468
580
  slug: "update",
469
581
  },
@@ -471,7 +583,6 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
471
583
  description: "Delete ".concat(model),
472
584
  expression: "true",
473
585
  operation: "DELETE",
474
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
475
586
  model: model,
476
587
  slug: "delete",
477
588
  },
@@ -484,19 +595,17 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
484
595
  if (!operation)
485
596
  continue;
486
597
  // biome-ignore lint/style/noNonNullAssertion: TODO fix this
487
- abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { operation: operation,
488
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
489
- model: model, slug: ability });
598
+ abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { operation: operation, model: model, slug: ability });
490
599
  }
491
600
  }
492
601
  }
493
602
  }
494
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
603
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
495
604
  finally {
496
605
  try {
497
606
  if (models_1_1 && !models_1_1.done && (_p = models_1.return)) _p.call(models_1);
498
607
  }
499
- finally { if (e_5) throw e_5.error; }
608
+ finally { if (e_6) throw e_6.error; }
500
609
  }
501
610
  debug("Setting up ability table");
502
611
  return [4 /*yield*/, setupAbilityTable(prisma)];
@@ -552,7 +661,7 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
552
661
  ])];
553
662
  case 8:
554
663
  _r.sent();
555
- _loop_1 = function (slug) {
664
+ _loop_2 = function (slug) {
556
665
  var ability, roleName;
557
666
  return __generator(this, function (_s) {
558
667
  switch (_s.label) {
@@ -577,9 +686,7 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
577
686
  _s.label = 3;
578
687
  case 3:
579
688
  if (!ability.expression) return [3 /*break*/, 5];
580
- return [4 /*yield*/, setRLS(prisma, table, roleName, slug,
581
- // biome-ignore lint/suspicious/noExplicitAny: TODO fix this
582
- ability)];
689
+ return [4 /*yield*/, setRLS(prisma, table, roleName, slug, ability)];
583
690
  case 4:
584
691
  _s.sent();
585
692
  _s.label = 5;
@@ -598,7 +705,7 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
598
705
  _h = _g[_j];
599
706
  if (!(_h in _f)) return [3 /*break*/, 11];
600
707
  slug = _h;
601
- return [5 /*yield**/, _loop_1(slug)];
708
+ return [5 /*yield**/, _loop_2(slug)];
602
709
  case 10:
603
710
  _r.sent();
604
711
  _r.label = 11;
@@ -609,7 +716,7 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
609
716
  _i++;
610
717
  return [3 /*break*/, 7];
611
718
  case 13:
612
- _loop_2 = function (key) {
719
+ _loop_3 = function (key) {
613
720
  var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles, policies;
614
721
  return __generator(this, function (_t) {
615
722
  switch (_t.label) {
@@ -695,7 +802,7 @@ var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, functio
695
802
  _m = _l[_o];
696
803
  if (!(_m in _k)) return [3 /*break*/, 16];
697
804
  key = _m;
698
- return [5 /*yield**/, _loop_2(key)];
805
+ return [5 /*yield**/, _loop_3(key)];
699
806
  case 15:
700
807
  _r.sent();
701
808
  _r.label = 16;
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.5.2",
3
+ "version": "3.6.0",
4
4
  "description": "Role based access control for Prisma Apps",
5
5
  "main": "dist/index.js",
6
6
  "files": [