Skip to main content
Home

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
It is unknown whether this package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
It is unknown whether this package works with Bun
This package works with Browsers
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

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@diister/quick-permission

Import symbol

import * as quick_permission from "@diister/quick-permission";
or

Import directly with a jsr specifier

import * as quick_permission from "jsr:@diister/quick-permission";

Add Package

pnpm i jsr:@diister/quick-permission
or (using pnpm 10.8 or older)
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
or (using Yarn 4.8 or older)
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";