/
index.ts
35 lines (30 loc) · 1.17 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { AbilityOptions, AbilityTuple, fieldPatternMatcher, PureAbility, RawRuleFrom } from '@casl/ability';
import { createAbilityFactory, createAccessibleByFactory, prismaQuery } from './runtime';
import { WhereInputPerModel, ModelName, PrismaQuery } from './prismaClientBoundTypes';
export type { PrismaQuery } from './prismaClientBoundTypes';
export { prismaQuery, Model, Subjects, ParsingQueryError } from './runtime';
const createPrismaAbility = createAbilityFactory<ModelName, PrismaQuery>();
const accessibleBy = createAccessibleByFactory<WhereInputPerModel, PrismaQuery>();
export {
createPrismaAbility,
accessibleBy,
};
type ExtendedAbilityTuple<T extends AbilityTuple> = [T[0], 'all' | T[1]];
/**
* @deprecated use createPrismaAbility instead
*/
export class PrismaAbility<
A extends AbilityTuple = [string, ModelName],
C extends PrismaQuery = PrismaQuery
> extends PureAbility<ExtendedAbilityTuple<A>, C> {
constructor(
rules?: RawRuleFrom<ExtendedAbilityTuple<A>, C>[],
options?: AbilityOptions<ExtendedAbilityTuple<A>, C>
) {
super(rules, {
conditionsMatcher: prismaQuery,
fieldMatcher: fieldPatternMatcher,
...options,
});
}
}