@cerebruminc/yates 3.3.2-beta.dangerous.2d11492 → 3.3.2-beta.dangerous.2fec467
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast-fragments.js.map +1 -1
- package/dist/escape.js +1 -3
- package/dist/escape.js.map +1 -1
- package/dist/expressions.d.ts +1 -1
- package/dist/expressions.js +40 -21
- package/dist/expressions.js.map +1 -1
- package/dist/index.js +230 -204
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-fragments.js","sourceRoot":"","sources":["../src/ast-fragments.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAEzC;;;;GAIG;AACI,IAAM,yBAAyB,GAAG,UAAC,OAAe;IACxD,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACN;oBACC,GAAG,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE;4BACT,IAAI,EAAE,IAAI;yBACV;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;oCACL,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,2BAA2B;oCACjC,IAAI,EAAE;wCACL,IAAI,EAAE,WAAW;wCACjB,KAAK,EAAE;4CACN;gDACC,IAAI,EAAE,MAAM;gDACZ,OAAO,EAAE,MAAM;gDACf,IAAI,EAAE;oDACL,IAAI,EAAE,UAAU;oDAChB,IAAI,EAAE,iBAAiB;oDACvB,IAAI,EAAE;wDACL,IAAI,EAAE,WAAW;wDACjB,KAAK,EAAE;4DACN;gEACC,IAAI,EAAE,WAAW;gEACjB,KAAK,EAAE,IAAA,sBAAa,
|
|
1
|
+
{"version":3,"file":"ast-fragments.js","sourceRoot":"","sources":["../src/ast-fragments.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAEzC;;;;GAIG;AACI,IAAM,yBAAyB,GAAG,UAAC,OAAe;IACxD,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACN;oBACC,GAAG,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE;4BACT,IAAI,EAAE,IAAI;yBACV;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;oCACL,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,2BAA2B;oCACjC,IAAI,EAAE;wCACL,IAAI,EAAE,WAAW;wCACjB,KAAK,EAAE;4CACN;gDACC,IAAI,EAAE,MAAM;gDACZ,OAAO,EAAE,MAAM;gDACf,IAAI,EAAE;oDACL,IAAI,EAAE,UAAU;oDAChB,IAAI,EAAE,iBAAiB;oDACvB,IAAI,EAAE;wDACL,IAAI,EAAE,WAAW;wDACjB,KAAK,EAAE;4DACN;gEACC,IAAI,EAAE,WAAW;gEACjB,KAAK,EAAE,IAAA,sBAAa,EACnB,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CACzC;6DACD;yDACD;qDACD;iDACD;gDACD,EAAE,EAAE,IAAI;gDACR,MAAM,EAAE,IAAI;gDACZ,MAAM,EAAE;oDACP,QAAQ,EAAE,OAAO;iDACjB;gDACD,MAAM,EAAE,EAAE;gDACV,UAAU,EAAE,EAAE;6CACd;yCACD;qCACD;iCACD;gCACD,EAAE,EAAE,IAAI;6BACR;yBACD;wBACD,IAAI,EAAE;4BACL,QAAQ,EAAE,IAAI;yBACd;wBACD,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE;4BACN,SAAS,EAAE,EAAE;4BACb,KAAK,EAAE,EAAE;yBACT;wBACD,MAAM,EAAE,IAAI;qBACZ;iBACD;aACD;SACD;KACD,CAAC;AACH,CAAC,CAAC;AA1EW,QAAA,yBAAyB,6BA0EpC"}
|
package/dist/escape.js
CHANGED
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.escapeLiteral = exports.escapeIdentifier = void 0;
|
|
7
7
|
// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
|
|
8
|
-
var escapeIdentifier = function (str) {
|
|
9
|
-
return "\"".concat(str.replace(/"/g, '""'), "\"");
|
|
10
|
-
};
|
|
8
|
+
var escapeIdentifier = function (str) { return "\"".concat(str.replace(/"/g, '""'), "\""); };
|
|
11
9
|
exports.escapeIdentifier = escapeIdentifier;
|
|
12
10
|
// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
|
|
13
11
|
var escapeLiteral = function (str) {
|
package/dist/escape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,4HAA4H;AAC5H,yJAAyJ;;;AAEzJ,6EAA6E;AACtE,IAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,4HAA4H;AAC5H,yJAAyJ;;;AAEzJ,6EAA6E;AACtE,IAAM,gBAAgB,GAAG,UAAC,GAAW,IAAK,OAAA,YAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAG,EAA9B,CAA8B,CAAC;AAAnE,QAAA,gBAAgB,oBAAmD;AAEhF,6EAA6E;AACtE,IAAM,aAAa,GAAG,UAAC,GAAW;IACxC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,YAAY,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,IAAI,GAAG,CAAC;IAEf,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,YAAK,OAAO,CAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAvBW,QAAA,aAAa,iBAuBxB"}
|
package/dist/expressions.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Prisma, PrismaClient } from "@prisma/client";
|
|
2
|
-
import { AsyncReturnType } from "type-fest";
|
|
3
2
|
import { defineDmmfProperty } from "@prisma/client/runtime/library";
|
|
3
|
+
import { AsyncReturnType } from "type-fest";
|
|
4
4
|
export type RuntimeDataModel = Parameters<typeof defineDmmfProperty>[1];
|
|
5
5
|
type FFMeta<M extends Prisma.ModelName> = PrismaClient[Uncapitalize<M>]["findFirst"];
|
|
6
6
|
type ModelWhereArgs<M extends Prisma.ModelName> = Exclude<Parameters<FFMeta<M>>["0"], undefined>["where"];
|
package/dist/expressions.js
CHANGED
|
@@ -63,19 +63,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
63
63
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
64
|
exports.expressionToSQL = void 0;
|
|
65
65
|
var client_1 = require("@prisma/client");
|
|
66
|
-
var random_1 = __importDefault(require("lodash/random"));
|
|
67
66
|
var matches_1 = __importDefault(require("lodash/matches"));
|
|
67
|
+
var random_1 = __importDefault(require("lodash/random"));
|
|
68
68
|
var node_sql_parser_1 = require("node-sql-parser");
|
|
69
|
-
var escape_1 = require("./escape");
|
|
70
69
|
var ast_fragments_1 = require("./ast-fragments");
|
|
70
|
+
var escape_1 = require("./escape");
|
|
71
71
|
var PRISMA_NUMERIC_TYPES = ["Int", "BigInt", "Float", "Decimal"];
|
|
72
|
+
// This function is a recursive function that will search through an object and
|
|
73
|
+
// its children to find a matching object.
|
|
74
|
+
// It's used to find a matching AST fragment so that we can replace it with a token
|
|
75
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO future cleanup
|
|
72
76
|
var deepFind = function (obj, subObj) {
|
|
73
77
|
var matcher = (0, matches_1.default)(subObj);
|
|
74
78
|
for (var key in obj) {
|
|
75
79
|
if (matcher(obj[key])) {
|
|
76
80
|
return obj[key];
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
if (typeof obj[key] === "object") {
|
|
79
83
|
var result = deepFind(obj[key], subObj);
|
|
80
84
|
if (result) {
|
|
81
85
|
return result;
|
|
@@ -83,16 +87,20 @@ var deepFind = function (obj, subObj) {
|
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
};
|
|
90
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
86
91
|
var expressionRowName = function (col) { return "___yates_row_".concat(col); };
|
|
87
92
|
var expressionContext = function (context) { return "___yates_context_".concat(context); };
|
|
88
93
|
// Generate a big 32bit signed integer to use as an ID
|
|
89
94
|
var getLargeRandomInt = function () { return (0, random_1.default)(1000000000, 2147483647); };
|
|
90
95
|
var getDmmfMetaData = function (client, model, field) {
|
|
91
|
-
|
|
96
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
97
|
+
var runtimeDataModel = client
|
|
98
|
+
._runtimeDataModel;
|
|
92
99
|
var modelData = runtimeDataModel.models[model];
|
|
93
100
|
if (!modelData) {
|
|
94
101
|
throw new Error("Could not retrieve model data from Prisma Client for model '".concat(model, "'"));
|
|
95
102
|
}
|
|
103
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
96
104
|
var fieldData = modelData.fields.find(function (f) { return f.name === field; });
|
|
97
105
|
if (!fieldData) {
|
|
98
106
|
throw new Error("Could not retrieve field data from Prisma Client for field '".concat(model, ".").concat(field, "'"));
|
|
@@ -107,6 +115,7 @@ var tokenizeWhereExpression = function (
|
|
|
107
115
|
/** The Prisma client to use for metadata */
|
|
108
116
|
client,
|
|
109
117
|
/** The Prisma where expression to be tokenized */
|
|
118
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
110
119
|
where,
|
|
111
120
|
/** The base table we are generating an expression for */
|
|
112
121
|
table,
|
|
@@ -133,18 +142,18 @@ tokens) {
|
|
|
133
142
|
if (fieldData.isList) {
|
|
134
143
|
for (var subField in value) {
|
|
135
144
|
var subValue = value[subField];
|
|
136
|
-
var _b = tokenizeWhereExpression(client, subValue, table, fieldData.type, tokens),
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
var _b = tokenizeWhereExpression(client, subValue, table, fieldData.type, tokens), subTokens_1 = _b.tokens, subWhere_1 = _b.where;
|
|
146
|
+
// biome-ignore lint/style/noParameterAssign: TODO fix this
|
|
147
|
+
tokens = __assign(__assign({}, tokens), subTokens_1);
|
|
148
|
+
where[field][subField] = subWhere_1;
|
|
139
149
|
}
|
|
140
150
|
continue;
|
|
141
151
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
152
|
+
var _c = tokenizeWhereExpression(client, value, table, fieldData.type, tokens), subTokens = _c.tokens, subWhere = _c.where;
|
|
153
|
+
// biome-ignore lint/style/noParameterAssign: TODO fix this
|
|
154
|
+
tokens = __assign(__assign({}, tokens), subTokens);
|
|
155
|
+
where[field] = subWhere;
|
|
156
|
+
continue;
|
|
148
157
|
}
|
|
149
158
|
var isNumeric = PRISMA_NUMERIC_TYPES.includes(fieldData.type);
|
|
150
159
|
var isColumnName = typeof value === "string" && !!value.match(/^___yates_row_/);
|
|
@@ -153,6 +162,7 @@ tokens) {
|
|
|
153
162
|
switch (true) {
|
|
154
163
|
case isColumnName:
|
|
155
164
|
// Substiture the yates row placeholder for the actual column name
|
|
165
|
+
// biome-ignore lint/correctness/noSwitchDeclarations: TODO fix this
|
|
156
166
|
var column = value.replace(/^___yates_row_/, "");
|
|
157
167
|
if (!getDmmfMetaData(client, table, column)) {
|
|
158
168
|
throw new Error("Invalid field name \"".concat(column, "\""));
|
|
@@ -222,6 +232,7 @@ tokens) {
|
|
|
222
232
|
try {
|
|
223
233
|
for (var _d = (e_1 = void 0, __values(value.in)), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
224
234
|
var item = _e.value;
|
|
235
|
+
// biome-ignore lint/suspicious/noImplicitAnyLet: TODO fix this
|
|
225
236
|
var inToken = void 0;
|
|
226
237
|
do {
|
|
227
238
|
inToken = getLargeRandomInt();
|
|
@@ -247,11 +258,9 @@ tokens) {
|
|
|
247
258
|
};
|
|
248
259
|
continue;
|
|
249
260
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
astFragment = (0, ast_fragments_1.jsonb_array_elements_text)(value.in);
|
|
254
|
-
}
|
|
261
|
+
// If the value of `in` is a context value, we assume that it is an array that has been JSON encoded
|
|
262
|
+
// We create an AST fragment representing a function call to `jsonb_array_elements_text` with the context value as the argument
|
|
263
|
+
astFragment = (0, ast_fragments_1.jsonb_array_elements_text)(value.in);
|
|
255
264
|
break;
|
|
256
265
|
// All other types are treated as strings
|
|
257
266
|
default:
|
|
@@ -303,21 +312,28 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
|
|
|
303
312
|
},
|
|
304
313
|
});
|
|
305
314
|
return [4 /*yield*/, new Promise(
|
|
306
|
-
//
|
|
315
|
+
// biome-ignore lint/suspicious/noAsyncPromiseExecutor: future cleanup
|
|
307
316
|
function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
308
317
|
var rawExpression, isSubselect, error_1;
|
|
309
318
|
return __generator(this, function (_a) {
|
|
310
319
|
switch (_a.label) {
|
|
311
320
|
case 0:
|
|
312
|
-
rawExpression = getExpression(
|
|
321
|
+
rawExpression = getExpression(
|
|
322
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
323
|
+
expressionClient,
|
|
324
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
325
|
+
expressionRowName, expressionContext);
|
|
313
326
|
isSubselect = typeof rawExpression === "object" &&
|
|
314
327
|
"then" in rawExpression &&
|
|
328
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
315
329
|
typeof rawExpression.then === "function";
|
|
330
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
316
331
|
baseClient.$on("query", function (e) {
|
|
317
332
|
var e_2, _a, e_3, _b;
|
|
318
333
|
try {
|
|
319
334
|
var parser = new node_sql_parser_1.Parser();
|
|
320
335
|
// Parse the query into an AST
|
|
336
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
321
337
|
var ast = parser.astify(e.query, {
|
|
322
338
|
database: "postgresql",
|
|
323
339
|
});
|
|
@@ -398,10 +414,13 @@ var expressionToSQL = function (getExpression, table) { return __awaiter(void 0,
|
|
|
398
414
|
case 2:
|
|
399
415
|
_a.sent();
|
|
400
416
|
return [3 /*break*/, 5];
|
|
401
|
-
case 3:
|
|
417
|
+
case 3:
|
|
418
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
419
|
+
return [4 /*yield*/, expressionClient[table].findFirst({
|
|
402
420
|
where: rawExpression,
|
|
403
421
|
})];
|
|
404
422
|
case 4:
|
|
423
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
405
424
|
_a.sent();
|
|
406
425
|
_a.label = 5;
|
|
407
426
|
case 5: return [3 /*break*/, 7];
|
package/dist/expressions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAsD;
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -105,11 +105,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
105
105
|
};
|
|
106
106
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
107
107
|
exports.setup = exports.createRoles = exports.createClient = exports.createRoleName = exports.createAbilityName = void 0;
|
|
108
|
+
var crypto = __importStar(require("crypto"));
|
|
108
109
|
var difference_1 = __importDefault(require("lodash/difference"));
|
|
109
110
|
var flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
110
111
|
var map_1 = __importDefault(require("lodash/map"));
|
|
111
112
|
var toPairs_1 = __importDefault(require("lodash/toPairs"));
|
|
112
|
-
var crypto = __importStar(require("crypto"));
|
|
113
113
|
var expressions_1 = require("./expressions");
|
|
114
114
|
var VALID_OPERATIONS = ["SELECT", "UPDATE", "INSERT", "DELETE"];
|
|
115
115
|
/**
|
|
@@ -158,16 +158,19 @@ var createClient = function (prisma, getContext, options) {
|
|
|
158
158
|
query: {
|
|
159
159
|
$allModels: {
|
|
160
160
|
$allOperations: function (params) {
|
|
161
|
-
var _a;
|
|
162
161
|
return __awaiter(this, void 0, void 0, function () {
|
|
163
|
-
var model, args, query, operation, ctx, role, context, pgRole,
|
|
164
|
-
var e_2,
|
|
162
|
+
var model, args, query, operation, ctx, role, context, pgRole, _a, _b, k, _c, _d, v, queryResults, e_1;
|
|
163
|
+
var e_2, _e, e_3, _f;
|
|
165
164
|
var _this = this;
|
|
165
|
+
var _g;
|
|
166
166
|
return __generator(this, function (_h) {
|
|
167
167
|
switch (_h.label) {
|
|
168
168
|
case 0:
|
|
169
169
|
model = params.model, args = params.args, query = params.query, operation = params.operation;
|
|
170
170
|
if (!model) {
|
|
171
|
+
// If the model is not defined, we can't apply RLS
|
|
172
|
+
// This can occur when you are making a call with Prisma's $queryRaw method
|
|
173
|
+
// biome-ignore lint/suspicious/noExplicitAny: See above
|
|
171
174
|
return [2 /*return*/, query(args)];
|
|
172
175
|
}
|
|
173
176
|
ctx = getContext();
|
|
@@ -179,18 +182,20 @@ var createClient = function (prisma, getContext, options) {
|
|
|
179
182
|
pgRole = (0, exports.createRoleName)(role);
|
|
180
183
|
if (context) {
|
|
181
184
|
try {
|
|
182
|
-
for (
|
|
183
|
-
k =
|
|
185
|
+
for (_a = __values(Object.keys(context)), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
186
|
+
k = _b.value;
|
|
184
187
|
if (!k.match(/^[a-z_\.]+$/)) {
|
|
185
188
|
throw new Error("Context variable \"".concat(k, "\" contains invalid characters. Context variables must only contain lowercase letters, numbers, periods and underscores."));
|
|
186
189
|
}
|
|
187
|
-
if (typeof context[k] !== "number" &&
|
|
190
|
+
if (typeof context[k] !== "number" &&
|
|
191
|
+
typeof context[k] !== "string" &&
|
|
192
|
+
!Array.isArray(context[k])) {
|
|
188
193
|
throw new Error("Context variable \"".concat(k, "\" must be a string, number or array. Got ").concat(typeof context[k]));
|
|
189
194
|
}
|
|
190
195
|
if (Array.isArray(context[k])) {
|
|
191
196
|
try {
|
|
192
|
-
for (
|
|
193
|
-
v =
|
|
197
|
+
for (_c = (e_3 = void 0, __values(context[k])), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
198
|
+
v = _d.value;
|
|
194
199
|
if (typeof v !== "string") {
|
|
195
200
|
throw new Error("Context variable \"".concat(k, "\" must be an array of strings. Got ").concat(typeof v));
|
|
196
201
|
}
|
|
@@ -199,7 +204,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
199
204
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
200
205
|
finally {
|
|
201
206
|
try {
|
|
202
|
-
if (
|
|
207
|
+
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
203
208
|
}
|
|
204
209
|
finally { if (e_3) throw e_3.error; }
|
|
205
210
|
}
|
|
@@ -211,7 +216,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
211
216
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
212
217
|
finally {
|
|
213
218
|
try {
|
|
214
|
-
if (
|
|
219
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
215
220
|
}
|
|
216
221
|
finally { if (e_2) throw e_2.error; }
|
|
217
222
|
}
|
|
@@ -283,7 +288,7 @@ var createClient = function (prisma, getContext, options) {
|
|
|
283
288
|
case 3:
|
|
284
289
|
e_1 = _h.sent();
|
|
285
290
|
// Normalize RLS errors to make them a bit more readable.
|
|
286
|
-
if ((
|
|
291
|
+
if ((_g = e_1.message) === null || _g === void 0 ? void 0 : _g.includes("new row violates row-level security policy for table")) {
|
|
287
292
|
throw new Error("You do not have permission to perform this action: ".concat(model, ".").concat(operation, "(...)"));
|
|
288
293
|
}
|
|
289
294
|
throw e_1;
|
|
@@ -335,205 +340,222 @@ var setRLS = function (prisma, table, roleName, operation, rawExpression) { retu
|
|
|
335
340
|
}
|
|
336
341
|
});
|
|
337
342
|
}); };
|
|
338
|
-
var createRoles = function (_a) {
|
|
339
|
-
var
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
}
|
|
343
|
+
var createRoles = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
344
|
+
var abilities, runtimeDataModel, models, diff, models_1, models_1_1, model, ability, operation, roles, _c, _d, _e, _i, model, table, _f, _g, _h, _j, slug, ability, roleName, _loop_1, _k, _l, _m, _o, key;
|
|
345
|
+
var e_5, _p;
|
|
346
|
+
var _q;
|
|
347
|
+
var prisma = _b.prisma, customAbilities = _b.customAbilities, getRoles = _b.getRoles;
|
|
348
|
+
return __generator(this, function (_r) {
|
|
349
|
+
switch (_r.label) {
|
|
350
|
+
case 0:
|
|
351
|
+
abilities = {};
|
|
352
|
+
runtimeDataModel = prisma
|
|
353
|
+
._runtimeDataModel;
|
|
354
|
+
models = Object.keys(runtimeDataModel.models).map(function (m) { return runtimeDataModel.models[m].dbName || m; });
|
|
355
|
+
if (customAbilities) {
|
|
356
|
+
diff = (0, difference_1.default)(Object.keys(customAbilities), models);
|
|
357
|
+
if (diff.length) {
|
|
358
|
+
throw new Error("Invalid models in custom abilities: ".concat(diff.join(", ")));
|
|
355
359
|
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
360
|
+
}
|
|
361
|
+
try {
|
|
362
|
+
for (models_1 = __values(models), models_1_1 = models_1.next(); !models_1_1.done; models_1_1 = models_1.next()) {
|
|
363
|
+
model = models_1_1.value;
|
|
364
|
+
abilities[model] = {
|
|
365
|
+
create: {
|
|
366
|
+
description: "Create ".concat(model),
|
|
367
|
+
expression: "true",
|
|
368
|
+
operation: "INSERT",
|
|
369
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
370
|
+
model: model,
|
|
371
|
+
slug: "create",
|
|
372
|
+
},
|
|
373
|
+
read: {
|
|
374
|
+
description: "Read ".concat(model),
|
|
375
|
+
expression: "true",
|
|
376
|
+
operation: "SELECT",
|
|
377
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
378
|
+
model: model,
|
|
379
|
+
slug: "read",
|
|
380
|
+
},
|
|
381
|
+
update: {
|
|
382
|
+
description: "Update ".concat(model),
|
|
383
|
+
expression: "true",
|
|
384
|
+
operation: "UPDATE",
|
|
385
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
386
|
+
model: model,
|
|
387
|
+
slug: "update",
|
|
388
|
+
},
|
|
389
|
+
delete: {
|
|
390
|
+
description: "Delete ".concat(model),
|
|
391
|
+
expression: "true",
|
|
392
|
+
operation: "DELETE",
|
|
393
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
394
|
+
model: model,
|
|
395
|
+
slug: "delete",
|
|
396
|
+
},
|
|
397
|
+
};
|
|
398
|
+
if (customAbilities === null || customAbilities === void 0 ? void 0 : customAbilities[model]) {
|
|
399
|
+
for (ability in customAbilities[model]) {
|
|
400
|
+
operation =
|
|
401
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
402
|
+
(_q = customAbilities[model][ability]) === null || _q === void 0 ? void 0 : _q.operation;
|
|
403
|
+
if (!operation)
|
|
404
|
+
continue;
|
|
405
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
406
|
+
abilities[model][ability] = __assign(__assign({}, customAbilities[model][ability]), { operation: operation,
|
|
407
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
408
|
+
model: model, slug: ability });
|
|
396
409
|
}
|
|
397
410
|
}
|
|
398
411
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
finally { if (e_5) throw e_5.error; }
|
|
405
|
-
}
|
|
406
|
-
roles = getRoles(abilities);
|
|
407
|
-
_b = abilities;
|
|
408
|
-
_c = [];
|
|
409
|
-
for (_d in _b)
|
|
410
|
-
_c.push(_d);
|
|
411
|
-
_i = 0;
|
|
412
|
-
_q.label = 1;
|
|
413
|
-
case 1:
|
|
414
|
-
if (!(_i < _c.length)) return [3 /*break*/, 8];
|
|
415
|
-
_d = _c[_i];
|
|
416
|
-
if (!(_d in _b)) return [3 /*break*/, 7];
|
|
417
|
-
model = _d;
|
|
418
|
-
table = model;
|
|
419
|
-
return [4 /*yield*/, prisma.$transaction([
|
|
420
|
-
takeLock(prisma),
|
|
421
|
-
prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
|
|
422
|
-
])];
|
|
423
|
-
case 2:
|
|
424
|
-
_q.sent();
|
|
425
|
-
_e = abilities[model];
|
|
426
|
-
_f = [];
|
|
427
|
-
for (_g in _e)
|
|
428
|
-
_f.push(_g);
|
|
429
|
-
_h = 0;
|
|
430
|
-
_q.label = 3;
|
|
431
|
-
case 3:
|
|
432
|
-
if (!(_h < _f.length)) return [3 /*break*/, 7];
|
|
433
|
-
_g = _f[_h];
|
|
434
|
-
if (!(_g in _e)) return [3 /*break*/, 6];
|
|
435
|
-
slug = _g;
|
|
436
|
-
ability = abilities[model][slug];
|
|
437
|
-
if (!VALID_OPERATIONS.includes(ability.operation)) {
|
|
438
|
-
throw new Error("Invalid operation: ".concat(ability.operation));
|
|
412
|
+
}
|
|
413
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
414
|
+
finally {
|
|
415
|
+
try {
|
|
416
|
+
if (models_1_1 && !models_1_1.done && (_p = models_1.return)) _p.call(models_1);
|
|
439
417
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
418
|
+
finally { if (e_5) throw e_5.error; }
|
|
419
|
+
}
|
|
420
|
+
roles = getRoles(abilities);
|
|
421
|
+
_c = abilities;
|
|
422
|
+
_d = [];
|
|
423
|
+
for (_e in _c)
|
|
424
|
+
_d.push(_e);
|
|
425
|
+
_i = 0;
|
|
426
|
+
_r.label = 1;
|
|
427
|
+
case 1:
|
|
428
|
+
if (!(_i < _d.length)) return [3 /*break*/, 8];
|
|
429
|
+
_e = _d[_i];
|
|
430
|
+
if (!(_e in _c)) return [3 /*break*/, 7];
|
|
431
|
+
model = _e;
|
|
432
|
+
table = model;
|
|
433
|
+
return [4 /*yield*/, prisma.$transaction([
|
|
434
|
+
takeLock(prisma),
|
|
435
|
+
prisma.$queryRawUnsafe("ALTER table \"".concat(table, "\" enable row level security;")),
|
|
436
|
+
])];
|
|
437
|
+
case 2:
|
|
438
|
+
_r.sent();
|
|
439
|
+
_f = abilities[model];
|
|
440
|
+
_g = [];
|
|
441
|
+
for (_h in _f)
|
|
442
|
+
_g.push(_h);
|
|
443
|
+
_j = 0;
|
|
444
|
+
_r.label = 3;
|
|
445
|
+
case 3:
|
|
446
|
+
if (!(_j < _g.length)) return [3 /*break*/, 7];
|
|
447
|
+
_h = _g[_j];
|
|
448
|
+
if (!(_h in _f)) return [3 /*break*/, 6];
|
|
449
|
+
slug = _h;
|
|
450
|
+
ability =
|
|
451
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
452
|
+
abilities[model][slug];
|
|
453
|
+
if (!VALID_OPERATIONS.includes(ability.operation)) {
|
|
454
|
+
throw new Error("Invalid operation: ".concat(ability.operation));
|
|
455
|
+
}
|
|
456
|
+
roleName = (0, exports.createAbilityName)(model, slug);
|
|
457
|
+
// Check if role already exists
|
|
458
|
+
return [4 /*yield*/, prisma.$transaction([
|
|
459
|
+
takeLock(prisma),
|
|
460
|
+
prisma.$queryRawUnsafe("\n\t\t\t\t\tdo\n\t\t\t\t\t$$\n\t\t\t\t\tbegin\n\t\t\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(roleName, "') then \n\t\t\t\t\t\tcreate role ").concat(roleName, ";\n\t\t\t\t\tend if;\n\t\t\t\t\tend\n\t\t\t\t\t$$\n\t\t\t\t\t;\n\t\t\t\t")),
|
|
461
|
+
prisma.$queryRawUnsafe("\n\t\t\t\t\tGRANT ".concat(ability.operation, " ON \"").concat(table, "\" TO ").concat(roleName, ";\n\t\t\t\t")),
|
|
462
|
+
])];
|
|
463
|
+
case 4:
|
|
464
|
+
// Check if role already exists
|
|
465
|
+
_r.sent();
|
|
466
|
+
if (!ability.expression) return [3 /*break*/, 6];
|
|
467
|
+
return [4 /*yield*/, setRLS(prisma, table, roleName, ability.operation,
|
|
468
|
+
// biome-ignore lint/suspicious/noExplicitAny: TODO fix this
|
|
469
|
+
ability.expression)];
|
|
470
|
+
case 5:
|
|
471
|
+
_r.sent();
|
|
472
|
+
_r.label = 6;
|
|
473
|
+
case 6:
|
|
474
|
+
_j++;
|
|
475
|
+
return [3 /*break*/, 3];
|
|
476
|
+
case 7:
|
|
477
|
+
_i++;
|
|
478
|
+
return [3 /*break*/, 1];
|
|
479
|
+
case 8:
|
|
480
|
+
_loop_1 = function (key) {
|
|
481
|
+
var role, wildCardAbilities, roleAbilities, rlsRoles, userRoles, oldRoles;
|
|
482
|
+
return __generator(this, function (_s) {
|
|
483
|
+
switch (_s.label) {
|
|
484
|
+
case 0:
|
|
485
|
+
role = (0, exports.createRoleName)(key);
|
|
486
|
+
return [4 /*yield*/, prisma.$executeRawUnsafe("\n\t\t\tdo\n\t\t\t$$\n\t\t\tbegin\n\t\t\tif not exists (select * from pg_catalog.pg_roles where rolname = '".concat(role, "') then \n\t\t\t\tcreate role ").concat(role, ";\n\t\t\tend if;\n\t\t\tend\n\t\t\t$$\n\t\t\t;\n\t\t"))];
|
|
487
|
+
case 1:
|
|
488
|
+
_s.sent();
|
|
489
|
+
wildCardAbilities = (0, flatMap_1.default)(abilities, function (model, modelName) {
|
|
490
|
+
return (0, map_1.default)(model, function (_params, slug) {
|
|
491
|
+
return (0, exports.createAbilityName)(modelName, slug);
|
|
475
492
|
});
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
takeLock(prisma),
|
|
484
|
-
prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
|
|
485
|
-
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
486
|
-
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
487
|
-
prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
|
|
488
|
-
])];
|
|
489
|
-
case 2:
|
|
490
|
-
// 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.
|
|
491
|
-
// 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.
|
|
492
|
-
_r.sent();
|
|
493
|
-
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\tUNION ALL\n\t\t\t\tSELECT m.roleid\n\t\t\t\tFROM cte\n\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t)\n\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t "))];
|
|
494
|
-
case 3:
|
|
495
|
-
userRoles = _r.sent();
|
|
496
|
-
oldRoles = userRoles.filter(function (_a) {
|
|
497
|
-
var rolename = _a.rolename;
|
|
498
|
-
return !rlsRoles.includes(rolename);
|
|
499
|
-
}).map(function (_a) {
|
|
500
|
-
var rolename = _a.rolename;
|
|
501
|
-
return rolename;
|
|
493
|
+
});
|
|
494
|
+
roleAbilities = roles[key];
|
|
495
|
+
rlsRoles = roleAbilities === "*"
|
|
496
|
+
? wildCardAbilities
|
|
497
|
+
: roleAbilities.map(function (ability) {
|
|
498
|
+
// biome-ignore lint/style/noNonNullAssertion: TODO fix this
|
|
499
|
+
return (0, exports.createAbilityName)(ability.model, ability.slug);
|
|
502
500
|
});
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
501
|
+
// 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.
|
|
502
|
+
// 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.
|
|
503
|
+
return [4 /*yield*/, prisma.$transaction([
|
|
504
|
+
takeLock(prisma),
|
|
505
|
+
prisma.$executeRawUnsafe("GRANT ALL ON ALL TABLES IN SCHEMA public TO ".concat(role, ";")),
|
|
506
|
+
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON ALL SEQUENCES IN SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
507
|
+
prisma.$executeRawUnsafe("\n\t\t\t\tGRANT ALL ON SCHEMA public TO ".concat(role, ";\n\t\t\t")),
|
|
508
|
+
prisma.$queryRawUnsafe("GRANT ".concat(rlsRoles.join(", "), " TO ").concat(role)),
|
|
509
|
+
])];
|
|
510
|
+
case 2:
|
|
511
|
+
// 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.
|
|
512
|
+
// 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.
|
|
513
|
+
_s.sent();
|
|
514
|
+
return [4 /*yield*/, prisma.$queryRawUnsafe("\n\t\t\tWITH RECURSIVE cte AS (\n\t\t\t\tSELECT oid FROM pg_roles where rolname = '".concat(role, "'\n\t\t\t\tUNION ALL\n\t\t\t\tSELECT m.roleid\n\t\t\t\tFROM cte\n\t\t\t\tJOIN pg_auth_members m ON m.member = cte.oid\n\t\t\t\t)\n\t\t\tSELECT oid, oid::regrole::text AS rolename FROM cte where oid::regrole::text != '").concat(role, "'; \n\t "))];
|
|
515
|
+
case 3:
|
|
516
|
+
userRoles = _s.sent();
|
|
517
|
+
oldRoles = userRoles
|
|
518
|
+
.filter(function (_a) {
|
|
519
|
+
var rolename = _a.rolename;
|
|
520
|
+
return !rlsRoles.includes(rolename);
|
|
521
|
+
})
|
|
522
|
+
.map(function (_a) {
|
|
523
|
+
var rolename = _a.rolename;
|
|
524
|
+
return rolename;
|
|
525
|
+
});
|
|
526
|
+
if (!oldRoles.length) return [3 /*break*/, 5];
|
|
527
|
+
// Now revoke old roles from the user role
|
|
528
|
+
return [4 /*yield*/, prisma.$executeRawUnsafe("REVOKE ".concat(oldRoles.join(", "), " FROM ").concat(role))];
|
|
529
|
+
case 4:
|
|
530
|
+
// Now revoke old roles from the user role
|
|
531
|
+
_s.sent();
|
|
532
|
+
_s.label = 5;
|
|
533
|
+
case 5: return [2 /*return*/];
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
};
|
|
537
|
+
_k = roles;
|
|
538
|
+
_l = [];
|
|
539
|
+
for (_m in _k)
|
|
540
|
+
_l.push(_m);
|
|
541
|
+
_o = 0;
|
|
542
|
+
_r.label = 9;
|
|
543
|
+
case 9:
|
|
544
|
+
if (!(_o < _l.length)) return [3 /*break*/, 12];
|
|
545
|
+
_m = _l[_o];
|
|
546
|
+
if (!(_m in _k)) return [3 /*break*/, 11];
|
|
547
|
+
key = _m;
|
|
548
|
+
return [5 /*yield**/, _loop_1(key)];
|
|
549
|
+
case 10:
|
|
550
|
+
_r.sent();
|
|
551
|
+
_r.label = 11;
|
|
552
|
+
case 11:
|
|
553
|
+
_o++;
|
|
554
|
+
return [3 /*break*/, 9];
|
|
555
|
+
case 12: return [2 /*return*/];
|
|
556
|
+
}
|
|
535
557
|
});
|
|
536
|
-
};
|
|
558
|
+
}); };
|
|
537
559
|
exports.createRoles = createRoles;
|
|
538
560
|
/**
|
|
539
561
|
* Creates an extended client that sets contextual parameters and user role on every query
|
|
@@ -544,7 +566,11 @@ var setup = function (params) { return __awaiter(void 0, void 0, void 0, functio
|
|
|
544
566
|
switch (_a.label) {
|
|
545
567
|
case 0:
|
|
546
568
|
prisma = params.prisma, customAbilities = params.customAbilities, getRoles = params.getRoles, getContext = params.getContext;
|
|
547
|
-
return [4 /*yield*/, (0, exports.createRoles)({
|
|
569
|
+
return [4 /*yield*/, (0, exports.createRoles)({
|
|
570
|
+
prisma: prisma,
|
|
571
|
+
customAbilities: customAbilities,
|
|
572
|
+
getRoles: getRoles,
|
|
573
|
+
})];
|
|
548
574
|
case 1:
|
|
549
575
|
_a.sent();
|
|
550
576
|
client = (0, exports.createClient)(prisma, getContext, params.options);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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.3.2-beta.dangerous.
|
|
3
|
+
"version": "3.3.2-beta.dangerous.2fec467",
|
|
4
4
|
"description": "Role based access control for Prisma Apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"generate": "prisma generate",
|
|
13
13
|
"build": "rimraf dist && tsc -p tsconfig.build.json",
|
|
14
|
-
"test": "
|
|
15
|
-
"lint
|
|
14
|
+
"test": "npm run lint",
|
|
15
|
+
"lint": "biome check .",
|
|
16
|
+
"lint:fix": "biome check . --apply",
|
|
16
17
|
"test:types": "tsc --noEmit",
|
|
17
18
|
"test:integration": "jest --runInBand test/integration",
|
|
18
19
|
"test:compose:integration": "docker compose -f docker-compose.yml --profile with-sut up db sut --exit-code-from sut",
|
|
@@ -22,19 +23,18 @@
|
|
|
22
23
|
"author": "Cerebrum <hello@cerebrum.com> (https://cerebrum.com)",
|
|
23
24
|
"license": "MIT",
|
|
24
25
|
"devDependencies": {
|
|
26
|
+
"@biomejs/biome": "1.5.3",
|
|
25
27
|
"@prisma/client": "^5.0.0",
|
|
26
28
|
"@types/cls-hooked": "^4.3.3",
|
|
27
29
|
"@types/jest": "^29.2.6",
|
|
28
30
|
"@types/lodash": "^4.14.191",
|
|
29
31
|
"@types/uuid": "^9.0.0",
|
|
30
32
|
"cls-hooked": "^4.2.2",
|
|
31
|
-
"eslint": "^8.57.0",
|
|
32
33
|
"jest": "^29.3.1",
|
|
33
34
|
"prisma": "^5.0.0",
|
|
34
35
|
"rimraf": "^5.0.5",
|
|
35
36
|
"ts-jest": "^29.0.5",
|
|
36
37
|
"typescript": "^5.3.3",
|
|
37
|
-
"typescript-eslint": "^7.0.2",
|
|
38
38
|
"uuid": "^9.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|