UNPKG

permix

Version:

Permix is a lightweight, framework-agnostic, type-safe permissions management library for JavaScript applications on the client and server sides.

40 lines (39 loc) 2.15 kB
import { A as Definition, C as Rules, S as DehydratedState, _ as PermixHooks, c as PermixRuleNotDefinedError, g as Permix, l as CheckArgs, s as PermixNotReadyError, v as RulesPaths } from "../index-BYcbfVQ7.mjs"; import { Context, Effect, Layer } from "effect"; //#region src/effect/permix.d.ts interface PermixOptions { /** * Unique identifier for the Effect Context tag. Defaults to a unique string * so multiple `createPermix` calls produce isolated instances. */ id?: string; } /** * Create an Effect-compatible Permix factory. * * Returns a Context `Tag`, Layer constructors, and Effect-returning helpers * that you can use in any Effect program — server or client. * * @link https://permix.letstri.dev/docs/integrations/effect */ declare function createPermix<D extends Definition>(options?: PermixOptions): { Tag: Context.Tag<Permix<D>, Permix<D>>; layer: (rules?: Rules<D>) => Layer.Layer<Permix<D>, never, never>; layerSetup: <E, R>(rules: Effect.Effect<Rules<D>, E, R>) => Layer.Layer<Permix<D>, E, R>; setup: (rules: Rules<D>) => Effect.Effect<void, never, Permix<D>>; check: (...args: CheckArgs<D>) => Effect.Effect<boolean, PermixNotReadyError | PermixRuleNotDefinedError, Permix<D>>; dehydrate: () => Effect.Effect<DehydratedState<D>, PermixNotReadyError, Permix<D>>; hydrate: (state: DehydratedState<D>) => Effect.Effect<void, PermixNotReadyError, Permix<D>>; isReady: () => Effect.Effect<boolean, never, Permix<D>>; isReadyAsync: () => Effect.Effect<void, never, Permix<D>>; getRules: () => Effect.Effect<Rules<D> | null, never, Permix<D>>; hook: <K extends keyof PermixHooks<D>>(name: K, fn: PermixHooks<D>[K]) => Effect.Effect<() => void, never, Permix<D>>; hookOnce: <K extends keyof PermixHooks<D>>(name: K, fn: PermixHooks<D>[K]) => Effect.Effect<void, never, Permix<D>>; template: <T = void>(rules: Rules<D> | ((param: T) => Rules<D>)) => (param: T) => Rules<D>; id: string; $inferDefinition: D; $inferPath: RulesPaths<D>; }; type EffectPermix<D extends Definition> = ReturnType<typeof createPermix<D>>; //#endregion export { EffectPermix, PermixOptions, createPermix };