@jay-js/system
Version:
A powerful and flexible TypeScript library for UI, state management, lazy loading, routing and managing draggable elements in modern web applications.
45 lines (44 loc) • 1.8 kB
TypeScript
/**
* Utility functions for the guard system
*
* @module @jay-js/system/guard/utils
*/
import type { TPermission } from "../types";
/**
* Combines multiple permission arrays into a single array
*
* This is useful when permissions come from different sources
* such as user roles, feature flags, or dynamic conditions.
*
* @param permissionSets - Arrays of permission objects to combine
* @returns A combined array of all permissions
*
* @example
* ```ts
* const rolePermissions = definePermissions('user', 'articles').allow('read').save();
* const featurePermissions = definePermissions('user', 'beta-features').allow('access').save();
*
* const allPermissions = combinePermissions(rolePermissions, featurePermissions);
* ```
*/
export declare function combinePermissions(...permissionSets: TPermission[][]): TPermission[];
/**
* Creates a permission object for a single permission rule
*
* This is a helper function for creating individual permission entries
* without using the builder pattern from definePermissions.
*
* @param role - The role or roles that the permission applies to
* @param subject - The subject that the permission applies to
* @param action - The action that the permission applies to
* @param granted - Whether the permission is granted
* @param attributes - Optional attributes to restrict the permission to
* @returns A permission object
*
* @example
* ```ts
* const viewArticlesPermission = createPermission('editor', 'articles', 'view', true);
* const deleteArticlesPermission = createPermission('editor', 'articles', 'delete', false);
* ```
*/
export declare function createPermission(role: string | string[], subject: string | string[], action: string | string[], granted: boolean, attributes?: string | string[]): TPermission;