New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@builtwithjavascript/permissions

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@builtwithjavascript/permissions

A lightweight TypeScript utility for managing and evaluating permissions in web applications. Designed with extensibility and composability in mind.

Source
npmnpm
Version
1.0.1
Version published
Weekly downloads
2
Maintainers
1
Weekly downloads
 
Created
Source

@builtwithjavascript/permissions

A lightweight TypeScript utility for managing and evaluating permissions in web applications. Designed with extensibility and composability in mind.

🚀 Installation

npm install @builtwithjavascript/permissions

🧠 Core Concepts

  • Permission: A rule describing access to a resource and action (optionally with a condition).
  • PermissionsBuilder: A utility to register and evaluate sets of permissions.
  • Security: A wrapper to centralize permission checks in an application.

✨ Usage

  • Define Your Own Permissions Extend the base permission interface to define additional app-specific permissions:
import { Permission, PermissionsBuilder } from '@builtwithjavascript/permissions'

export interface YourAppPermission extends Permission {
  readonly Publish?: boolean
  readonly Share?: boolean
}
  • Add Permissions
const builder = new PermissionsBuilder()
builder.add(
  { resource: 'article', action: 'edit' },
  { resource: 'article', action: 'publish', condition: (ctx) => ctx?.isAdmin }
)
  • Check Access
import { Security } from '@builtwithjavascript/permissions'

const security = new Security(builder)

const canPublish = security.isAllowed(
  { resource: 'article', action: 'publish' },
  { isAdmin: true } // context
)

console.log(canPublish) // true or false

🧪 Example: Extending Permission Types

import { IPermissionType, Permissions } from '@builtwithjavascript/permissions'

/**
 * Extend IPermissionType with custom types
 */
export interface YourAppIPermissionType extends IPermissionType {
  readonly Publish: number
  readonly Share: number
}

/**
 * Extend PermissionType with names matching your custom interface
 */
export const YourAppPermissionType: YourAppIPermissionType = Permissions.extendTypes([
  'Publish',
  'Share',
]) as YourAppIPermissionType

📚 API Overview

Permissions

interface Permission {
  resource: string
  action: string
  condition?: string | ((context?: any) => boolean)
}

PermissionsBuilder

  • add(...permissions: Permission[]): this Adds one or more permissions.
  • allows(permission: Permission, context?: any): boolean Checks if permission is granted.
  • list(): Permission[] Returns all stored permissions.

Security

  • isAllowed(permission: Permission, context?: any): boolean Delegates permission check to PermissionsBuilder.

📦 Project Structure

src/
  ├── permissions/
  │     ├── permission-type.ts
  │     ├── permissions.ts
  │     ├── permissions-builder.ts
  ├── security/
  │     └── security.ts
  └── index.ts

Keywords

component, libraries, scripts, javascript, large scale apps, vue, react, svelte, nuxt, next, node

FAQs

Package last updated on 21 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts