@voltro/plugin-rbac 0.87.0 → 0.88.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 +169 -6
- package/THIRD-PARTY-NOTICES.md +3 -1346
- package/dist/index.js +1 -2
- package/dist/permission.js +1 -2
- package/dist/resolve.js +1 -2
- package/dist/roles.js +1 -2
- package/dist/tables.js +1 -2
- package/dist/userRoleStore.js +1 -2
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { dataStoreRoleResolver as y, userRoleStore as b } from "./userRoleStore.
|
|
|
6
6
|
import { Effect as x } from "effect";
|
|
7
7
|
import { ADMIN_SCOPE as S, ScopeError as C, ScopeError as w, definePlugin as T, pluginInstanceName as E, setEffectiveScopesRefresher as D, setResourceScopeResolver as O } from "@voltro/protocol";
|
|
8
8
|
import { createLogger as k } from "@voltro/logger";
|
|
9
|
-
|
|
9
|
+
// src/index.ts
|
|
10
10
|
var A = k({ scope: "@voltro/plugin-rbac" }), j = (e) => x.suspend(() => {
|
|
11
11
|
let t = e();
|
|
12
12
|
return t instanceof Promise ? x.promise(() => t) : x.succeed(t);
|
|
@@ -69,5 +69,4 @@ var A = k({ scope: "@voltro/plugin-rbac" }), j = (e) => x.suspend(() => {
|
|
|
69
69
|
...s ? { extendSchema: { tables: [...g(l)] } } : {}
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
|
-
//#endregion
|
|
73
72
|
export { p as ROLES_TABLE, C as ScopeError, m as USER_ROLES_TABLE, e as WILDCARD_PERMISSION, l as anyPermission, u as assertPermission, h as buildUserRolesTable, d as can, t as compileRoles, y as dataStoreRoleResolver, i as mergeResolvedScopes, a as metadataRoleResolver, f as permission, N as rbacPlugin, g as rbacTables, o as resolvedRoles, s as resolvedScopes, r as rolesFromMap, _ as rolesTable, c as setResolvedScopes, b as userRoleStore, v as userRolesTable };
|
package/dist/permission.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolvedScopes as e } from "./resolve.js";
|
|
2
2
|
import { Effect as t } from "effect";
|
|
3
3
|
import { ADMIN_SCOPE as n, ScopeError as r } from "@voltro/protocol";
|
|
4
|
-
|
|
4
|
+
// src/permission.ts
|
|
5
5
|
var i = (t, r) => {
|
|
6
6
|
let i = e(t);
|
|
7
7
|
return i.includes(n) || i.includes(r);
|
|
@@ -29,5 +29,4 @@ var i = (t, r) => {
|
|
|
29
29
|
message: `missing required permission '${n}'`
|
|
30
30
|
});
|
|
31
31
|
}, u = (e, t) => o(e.request.subject, a(t)) === null;
|
|
32
|
-
//#endregion
|
|
33
32
|
export { c as anyPermission, l as assertPermission, u as can, s as permission };
|
package/dist/resolve.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compileRoles as e } from "./roles.js";
|
|
2
2
|
import { currentSubjectAuthority as t, effectiveScopes as n, setEffectiveScopes as r, subjectScopes as i } from "@voltro/protocol";
|
|
3
|
-
|
|
3
|
+
// src/resolve.ts
|
|
4
4
|
var a = /* @__PURE__ */ new WeakMap(), o = (e, t, n) => {
|
|
5
5
|
r(e, t), n !== void 0 && a.set(e, n);
|
|
6
6
|
}, s = (e) => n(e), c = (e) => a.get(t(e)) ?? [], l = (e) => {
|
|
@@ -16,5 +16,4 @@ var a = /* @__PURE__ */ new WeakMap(), o = (e, t, n) => {
|
|
|
16
16
|
]) c.has(e) || (c.add(e), s.push(e));
|
|
17
17
|
return s;
|
|
18
18
|
};
|
|
19
|
-
//#endregion
|
|
20
19
|
export { u as mergeResolvedScopes, l as metadataRoleResolver, c as resolvedRoles, s as resolvedScopes, o as setResolvedScopes };
|
package/dist/roles.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ADMIN_SCOPE as e } from "@voltro/protocol";
|
|
2
|
-
|
|
2
|
+
// src/roles.ts
|
|
3
3
|
var t = "*", n = (e) => {
|
|
4
4
|
let t = /* @__PURE__ */ new Set();
|
|
5
5
|
for (let n of Object.values(e)) for (let e of n) e !== "*" && t.add(e);
|
|
@@ -18,5 +18,4 @@ var t = "*", n = (e) => {
|
|
|
18
18
|
slug: e,
|
|
19
19
|
permissions: t
|
|
20
20
|
}));
|
|
21
|
-
//#endregion
|
|
22
21
|
export { t as WILDCARD_PERMISSION, r as compileRoles, n as declaredScopesOf, i as rolesFromMap };
|
package/dist/tables.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { boolean as e, id as t, json as n, reference as r, requireTenants as i, table as a, text as o } from "@voltro/database";
|
|
2
|
-
|
|
2
|
+
// src/tables.ts
|
|
3
3
|
var s = "_voltro_rbac_roles", c = "_voltro_rbac_user_roles", l = a(s, {
|
|
4
4
|
id: t({ prefix: "role" }),
|
|
5
5
|
slug: o().unique(),
|
|
@@ -12,5 +12,4 @@ var s = "_voltro_rbac_roles", c = "_voltro_rbac_user_roles", l = a(s, {
|
|
|
12
12
|
tenantId: e.multitenant ? r(i(), { index: !1 }).nullable() : o().nullable(),
|
|
13
13
|
roleSlug: o()
|
|
14
14
|
}).index("_voltro_rbac_user_roles_by_user_tenant", ["userId", "tenantId"]).index("_voltro_rbac_user_roles_by_role_slug", ["roleSlug"]), d = u(), f = (e = {}) => [l, u(e)];
|
|
15
|
-
//#endregion
|
|
16
15
|
export { s as ROLES_TABLE, c as USER_ROLES_TABLE, u as buildUserRolesTable, f as rbacTables, l as rolesTable, d as userRolesTable };
|
package/dist/userRoleStore.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { USER_ROLES_TABLE as e } from "./tables.js";
|
|
2
2
|
import { and as t, eq as n, or as r } from "@voltro/database";
|
|
3
|
-
|
|
3
|
+
// src/userRoleStore.ts
|
|
4
4
|
var i = (t, n) => t.query({
|
|
5
5
|
table: e,
|
|
6
6
|
predicate: n,
|
|
@@ -36,5 +36,4 @@ var i = (t, n) => t.query({
|
|
|
36
36
|
let o = e ?? (n?.store === void 0 ? void 0 : a(n.store));
|
|
37
37
|
return o === void 0 ? [] : o.rolesOf(i, r);
|
|
38
38
|
};
|
|
39
|
-
//#endregion
|
|
40
39
|
export { s as dataStoreRoleResolver, a as userRoleStore };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltro/plugin-rbac",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.88.0",
|
|
4
4
|
"description": "Role-based access control — roles compile to scopes on top of @voltro/protocol's scope system. Ships rbacPlugin() (role→scope interceptor + resource-aware guard resolver, failing with protocol's typed ScopeError), the permission()/assertPermission()/anyPermission() handler guards, the compileRoles() pure compiler, cross-dialect roles + userRoles tables. The UI gate lives in @voltro/client (useCan / useCanAny) — scopes are a framework concept, so gating a button must not require this plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"voltro",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"node": ">=24.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@voltro/database": "0.
|
|
37
|
-
"@voltro/logger": "0.
|
|
38
|
-
"@voltro/protocol": "0.
|
|
36
|
+
"@voltro/database": "0.88.0",
|
|
37
|
+
"@voltro/logger": "0.88.0",
|
|
38
|
+
"@voltro/protocol": "0.88.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"effect": "4.0
|
|
41
|
+
"effect": "4.1.0",
|
|
42
42
|
"react": "^19.0.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependenciesMeta": {
|