zenstack
Version:
FullStack enhancement for Prisma ORM: seamless integration from database to UI
30 lines (29 loc) • 2.1 kB
TypeScript
import type { PolicyKind, PolicyOperationKind } from '@zenstackhq/runtime';
import { Enum, Model, type DataModel, type DataModelField, type Expression } from '@zenstackhq/sdk/ast';
import { SourceFile, WriterFunction } from 'ts-morph';
/**
* Get policy expressions for the given model or field and operation kind
*/
export declare function getPolicyExpressions(target: DataModel | DataModelField, kind: PolicyKind, operation: PolicyOperationKind, forOverride?: boolean, filter?: 'all' | 'withoutCrossModelComparison' | 'onlyCrossModelComparison'): Expression[];
/**
* Generates a "select" object that contains (recursively) fields referenced by the
* given policy rules
*/
export declare function generateSelectForRules(rules: Expression[], forOperation: PolicyOperationKind | undefined, forAuthContext?: boolean, ignoreFutureReference?: boolean): any;
/**
* Generates a constant query guard function
*/
export declare function generateConstantQueryGuardFunction(sourceFile: SourceFile, model: DataModel, kind: PolicyOperationKind, value: boolean): import("ts-morph").FunctionDeclaration;
/**
* Generates a query guard function that returns a partial Prisma query for the given model or field
*/
export declare function generateQueryGuardFunction(sourceFile: SourceFile, model: DataModel, kind: PolicyOperationKind, allows: Expression[], denies: Expression[], forField?: DataModelField, fieldOverride?: boolean): import("ts-morph").FunctionDeclaration;
export declare function generateEntityCheckerFunction(sourceFile: SourceFile, model: DataModel, kind: PolicyOperationKind, allows: Expression[], denies: Expression[], forField?: DataModelField, fieldOverride?: boolean): import("ts-morph").FunctionDeclaration;
/**
* Generates a normalized auth reference for the given policy rules
*/
export declare function generateNormalizedAuthRef(model: DataModel, allows: Expression[], denies: Expression[], statements: (string | WriterFunction)[]): void;
/**
* Check if the given enum is referenced in the model
*/
export declare function isEnumReferenced(model: Model, decl: Enum): unknown;