@contractspec/lib.identity-rbac
v3.8.2
Published
Identity, Organizations, and RBAC module for ContractSpec applications
Maintainers
Readme
@contractspec/lib.identity-rbac
Website: https://contractspec.io
Identity, Organizations, and RBAC module for ContractSpec applications.
What It Provides
- Layer: lib.
- Consumers: bundles, apps.
src/contracts/contains contract specs, operations, entities, and registry exports.- Related ContractSpec packages include
@contractspec/lib.contracts-spec,@contractspec/lib.schema,@contractspec/tool.bun,@contractspec/tool.typescript. src/contracts/contains contract specs, operations, entities, and registry exports.
Installation
npm install @contractspec/lib.identity-rbac
or
bun add @contractspec/lib.identity-rbac
Usage
Import the root entrypoint from @contractspec/lib.identity-rbac, or choose a documented subpath when you only need one part of the package surface.
The RBACPolicyEngine can evaluate shared ContractSpec PolicyRequirement objects against static role templates, dynamic role/binding sources, or a hybrid of both. Dynamic persistence is intentionally app-owned; the library consumes provider results and applies deterministic precedence (source unavailable fails closed, expired/out-of-scope bindings are ignored, explicit deny wins, dynamic grants extend static templates).
import { RBACPolicyEngine, StaticRolePermissionSource } from "@contractspec/lib.identity-rbac/policies";
const source = new StaticRolePermissionSource({
roles: [
{ key: "billing.viewer", permissions: ["invoice.read"], source: "static" },
],
});
const engine = new RBACPolicyEngine();
const decision = await engine.evaluateRequirement({
mode: "static",
requirements: { permissions: { any: ["invoice.read"] } },
subject: { id: "user-1", roles: ["billing.viewer"] },
source,
});Architecture
src/contracts/contains contract specs, operations, entities, and registry exports.src/entities/contains domain entities and value objects.src/events.tsis package-level event definitions.src/identity-rbac.capability.tsdefines a capability surface.src/identity-rbac.feature.tsdefines a feature entrypoint.src/index.tsis the root public barrel and package entrypoint.src/policiesis part of the package's public or composition surface.
Public Entry Points
- Export
.resolves through./src/index.ts. - Export
./contractsresolves through./src/contracts/index.ts. - Export
./contracts/organizationresolves through./src/contracts/organization.ts. - Export
./contracts/rbacresolves through./src/contracts/rbac.ts. - Export
./contracts/userresolves through./src/contracts/user.ts. - Export
./entitiesresolves through./src/entities/index.ts. - Export
./entities/organizationresolves through./src/entities/organization.ts. - Export
./entities/rbacresolves through./src/entities/rbac.ts. - Export
./entities/userresolves through./src/entities/user.ts. - Export
./eventsresolves through./src/events.ts. - The package publishes 14 total export subpaths; keep docs aligned with
package.json.
Local Commands
bun run dev— contractspec-bun-build devbun run build— bun run prebuild && bun run build:bundle && bun run build:typesbun run lint— bun lint:fixbun run lint:check— biome check .bun run lint:fix— biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .bun run typecheck— tsc --noEmitbun run publish:pkg— bun publish --tolerate-republish --ignore-scripts --verbosebun run publish:pkg:canary— bun publish:pkg --tag canarybun run clean— rimraf dist .turbobun run build:bundle— contractspec-bun-build transpilebun run build:types— contractspec-bun-build typesbun run prebuild— contractspec-bun-build prebuild
Recent Updates
- Replace eslint+prettier by biomejs to optimize speed.
Notes
- Security-critical — RBAC policies control access across the platform.
- Role and permission schemas must stay backward-compatible; removals are breaking.
- Capability contract is public API; policy evaluation must be deterministic.
