@pthm/melange 0.7.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bulk-check.d.ts +1 -0
- package/dist/bulk-check.d.ts.map +1 -1
- package/dist/bulk-check.js +4 -2
- package/dist/bulk-check.js.map +1 -1
- package/dist/checker.d.ts +5 -0
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +10 -3
- package/dist/checker.js.map +1 -1
- package/dist/identifier.d.ts +15 -0
- package/dist/identifier.d.ts.map +1 -0
- package/dist/identifier.js +22 -0
- package/dist/identifier.js.map +1 -0
- package/package.json +1 -1
package/dist/bulk-check.d.ts
CHANGED
package/dist/bulk-check.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-check.d.ts","sourceRoot":"","sources":["../src/bulk-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAgB,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk-check.d.ts","sourceRoot":"","sources":["../src/bulk-check.ts"],"names":[],"mappings":"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"}
|
package/dist/bulk-check.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MelangeError, BulkCheckDeniedError } from './errors.js';
|
|
8
8
|
import { validateObject, validateRelation } from './validator.js';
|
|
9
|
+
import { prefixIdent } from './identifier.js';
|
|
9
10
|
/**
|
|
10
11
|
* Maximum number of checks allowed in a single bulk operation.
|
|
11
12
|
* Prevents accidental resource exhaustion from unbounded batches.
|
|
@@ -80,7 +81,7 @@ export class BulkCheckBuilder {
|
|
|
80
81
|
* Results honour decision overrides, caching, and deduplication.
|
|
81
82
|
*/
|
|
82
83
|
async execute() {
|
|
83
|
-
const { db, cache, decision, shouldValidate, cacheKey } = this.internals;
|
|
84
|
+
const { db, cache, decision, shouldValidate, databaseSchema, cacheKey } = this.internals;
|
|
84
85
|
// 1. Decision override -- return all-same results without DB call.
|
|
85
86
|
if (decision) {
|
|
86
87
|
return this.buildAllDecision(decision.allowed);
|
|
@@ -144,7 +145,8 @@ export class BulkCheckBuilder {
|
|
|
144
145
|
objectTypes.push(r.object.type);
|
|
145
146
|
objectIds.push(r.object.id);
|
|
146
147
|
}
|
|
147
|
-
const
|
|
148
|
+
const func = prefixIdent('check_permission_bulk', databaseSchema);
|
|
149
|
+
const result = await db.query(`SELECT idx, allowed FROM ${func}($1, $2, $3, $4, $5)`, [subjectTypes, subjectIds, relations, objectTypes, objectIds]);
|
|
148
150
|
for (const row of result.rows) {
|
|
149
151
|
// SQL idx is 1-based (WITH ORDINALITY), convert to 0-based.
|
|
150
152
|
const zeroIdx = row.idx - 1;
|
package/dist/bulk-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-check.js","sourceRoot":"","sources":["../src/bulk-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk-check.js","sourceRoot":"","sources":["../src/bulk-check.ts"],"names":[],"mappings":"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"}
|
package/dist/checker.d.ts
CHANGED
|
@@ -35,6 +35,10 @@ export interface CheckerOptions {
|
|
|
35
35
|
* Default: true
|
|
36
36
|
*/
|
|
37
37
|
validateUserset?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Sets the database schema where melange objects live.
|
|
40
|
+
*/
|
|
41
|
+
databaseSchema?: string;
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
40
44
|
* Decision constants for testing.
|
|
@@ -69,6 +73,7 @@ export declare class Checker {
|
|
|
69
73
|
private readonly decision?;
|
|
70
74
|
private readonly validateRequest;
|
|
71
75
|
private readonly validateUserset;
|
|
76
|
+
private readonly databaseSchema;
|
|
72
77
|
/**
|
|
73
78
|
* Creates a new Checker instance.
|
|
74
79
|
*
|
package/dist/checker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAa,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAa,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,QAA4B,CAAC;AACzD,eAAO,MAAM,YAAY,EAAE,QAA6B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC;;;;;OAKG;gBACS,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB;IASvD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,KAAK,CACT,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,aAAa,EACrB,gBAAgB,CAAC,EAAE,eAAe,EAAE,GACnC,OAAO,CAAC,QAAQ,CAAC;IA+CpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,WAAW,CACf,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IA+B9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,YAAY,CAChB,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IA+B9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,yBAAyB,CAC7B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,aAAa,EACrB,gBAAgB,EAAE,eAAe,EAAE,GAClC,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,IAAI,gBAAgB;IAWhC;;OAEG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
|
package/dist/checker.js
CHANGED
|
@@ -8,6 +8,7 @@ import { NoopCache } from './cache.js';
|
|
|
8
8
|
import { validateObject, validateRelation } from './validator.js';
|
|
9
9
|
import { MelangeError } from './errors.js';
|
|
10
10
|
import { BulkCheckBuilder } from './bulk-check.js';
|
|
11
|
+
import { prefixIdent } from './identifier.js';
|
|
11
12
|
/**
|
|
12
13
|
* Decision constants for testing.
|
|
13
14
|
*/
|
|
@@ -41,6 +42,7 @@ export class Checker {
|
|
|
41
42
|
decision;
|
|
42
43
|
validateRequest;
|
|
43
44
|
validateUserset;
|
|
45
|
+
databaseSchema;
|
|
44
46
|
/**
|
|
45
47
|
* Creates a new Checker instance.
|
|
46
48
|
*
|
|
@@ -53,6 +55,7 @@ export class Checker {
|
|
|
53
55
|
this.decision = options.decision;
|
|
54
56
|
this.validateRequest = options.validateRequest ?? true;
|
|
55
57
|
this.validateUserset = options.validateUserset ?? true;
|
|
58
|
+
this.databaseSchema = options.databaseSchema ?? '';
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
61
|
* Check performs a permission check.
|
|
@@ -100,9 +103,10 @@ export class Checker {
|
|
|
100
103
|
return cached;
|
|
101
104
|
}
|
|
102
105
|
}
|
|
106
|
+
const func = prefixIdent('check_permission', this.databaseSchema);
|
|
103
107
|
// Execute check_permission
|
|
104
108
|
// TODO: Support contextual tuples when implemented in PostgreSQL functions
|
|
105
|
-
const result = await this.db.query(
|
|
109
|
+
const result = await this.db.query(`SELECT ${func}($1, $2, $3, $4, $5) as allowed`, [subject.type, subject.id, relation, object.type, object.id]);
|
|
106
110
|
if (!result.rows || result.rows.length === 0) {
|
|
107
111
|
throw new MelangeError('check_permission returned no rows');
|
|
108
112
|
}
|
|
@@ -164,7 +168,8 @@ export class Checker {
|
|
|
164
168
|
limit = null;
|
|
165
169
|
}
|
|
166
170
|
const after = options?.after;
|
|
167
|
-
const
|
|
171
|
+
const func = prefixIdent('list_accessible_objects', this.databaseSchema);
|
|
172
|
+
const result = await this.db.query(`SELECT * FROM ${func}($1, $2, $3, $4, $5, $6)`, [subject.type, subject.id, relation, objectType, limit, after ?? null]);
|
|
168
173
|
const items = result.rows.map((row) => row.object_id);
|
|
169
174
|
const nextCursor = result.rows.length > 0
|
|
170
175
|
? result.rows[result.rows.length - 1].next_cursor
|
|
@@ -210,7 +215,8 @@ export class Checker {
|
|
|
210
215
|
limit = null;
|
|
211
216
|
}
|
|
212
217
|
const after = options?.after;
|
|
213
|
-
const
|
|
218
|
+
const func = prefixIdent('list_accessible_subjects', this.databaseSchema);
|
|
219
|
+
const result = await this.db.query(`SELECT * FROM ${func}($1, $2, $3, $4, $5, $6)`, [object.type, object.id, relation, subjectType, limit, after ?? null]);
|
|
214
220
|
const items = result.rows.map((row) => row.subject_id);
|
|
215
221
|
const nextCursor = result.rows.length > 0
|
|
216
222
|
? result.rows[result.rows.length - 1].next_cursor
|
|
@@ -271,6 +277,7 @@ export class Checker {
|
|
|
271
277
|
cache: this.cache,
|
|
272
278
|
decision: this.decision,
|
|
273
279
|
shouldValidate: this.validateRequest,
|
|
280
|
+
databaseSchema: this.databaseSchema,
|
|
274
281
|
cacheKey: this.cacheKey.bind(this),
|
|
275
282
|
});
|
|
276
283
|
}
|
package/dist/checker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,EAAS,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres identifier helpers.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Safely quotes a PostgreSQL identifier for use in SQL.
|
|
6
|
+
* Double quotes are escaped by doubling them. This is needed when dynamically
|
|
7
|
+
* constructing schema-qualified relation names in UNION queries.
|
|
8
|
+
*/
|
|
9
|
+
export declare function quoteIdent(ident: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Prefixes the identifier with the schema if it is not empty.
|
|
12
|
+
* Both the schema and identifier are quoted for consistency.
|
|
13
|
+
*/
|
|
14
|
+
export declare function prefixIdent(identifier: string, schema: string): string;
|
|
15
|
+
//# sourceMappingURL=identifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../src/identifier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAEvC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMtE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres identifier helpers.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Safely quotes a PostgreSQL identifier for use in SQL.
|
|
6
|
+
* Double quotes are escaped by doubling them. This is needed when dynamically
|
|
7
|
+
* constructing schema-qualified relation names in UNION queries.
|
|
8
|
+
*/
|
|
9
|
+
export function quoteIdent(ident) {
|
|
10
|
+
return '"' + ident.replaceAll('"', '""') + '"';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Prefixes the identifier with the schema if it is not empty.
|
|
14
|
+
* Both the schema and identifier are quoted for consistency.
|
|
15
|
+
*/
|
|
16
|
+
export function prefixIdent(identifier, schema) {
|
|
17
|
+
if (!schema) {
|
|
18
|
+
return identifier;
|
|
19
|
+
}
|
|
20
|
+
return quoteIdent(schema) + '.' + quoteIdent(identifier);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../src/identifier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAA;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,MAAc;IAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;AAC1D,CAAC"}
|