@diister/quick-permission@0.7.0Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
A flexible and type-safe permission system for TypeScript/JavaScript applications.
This package works with Node.js, Deno, BrowsersIt is unknown whether this package works with Cloudflare Workers, Bun




JSR Score
88%
Published
6 months ago (0.7.0)
Quick Permission Library
A flexible and type-safe permission system for TypeScript/JavaScript applications.
This library provides a hierarchical permission system with strong type safety, allowing you to define complex permission rules that can be composed together and validated against multiple permission sources.
Key Features
- Hierarchical Structure: Organize permissions in an intuitive tree structure
- Strong Type Safety: Full TypeScript support for permission requests and states
- Rule Composition: Combine rules with AND, OR, and NOT operators
- Multiple Permission Sources: Validate against multiple state sources simultaneously
- Performance Focused: Optimized for efficient validation in large applications
Basic Usage
import { hierarchy, permission, validate } from "@diister/quick-permission"; import { allowTarget } from "@diister/quick-permission/rules/allowTarget"; import { allowOwner } from "@diister/quick-permission/rules/allowOwner"; // Create a permission hierarchy const filePermissions = hierarchy({ files: permission({ rules: [allowTarget({ wildcards: true })], children: { read: permission({ rules: [allowTarget()], }), write: permission({ rules: [allowOwner()], }), }, }), }); // Define permission states const states = [ { "files.read": { target: ["file:public/*", "file:user/123/*"] }, "files.write": { target: ["file:user/123/*"] }, }, ]; // Check a permission request const result = validate(filePermissions, states, "files.read", { from: "user:123", target: "file:public/document.txt", }); console.log(result.allowed); // true
Built and signed on
GitHub Actions
Add Package
deno add jsr:@diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";
Import directly with a jsr specifier
import * as quick_permission from "jsr:@diister/quick-permission";
Add Package
pnpm i jsr:@diister/quick-permission
pnpm dlx jsr add @diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";
Add Package
yarn add jsr:@diister/quick-permission
yarn dlx jsr add @diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";
Add Package
vlt install jsr:@diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";
Add Package
npx jsr add @diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";
Add Package
bunx jsr add @diister/quick-permission
Import symbol
import * as quick_permission from "@diister/quick-permission";