{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { AbilityOptions, AbilityTuple, fieldPatternMatcher, PureAbility, RawRuleFrom } from '@casl/ability';\nimport { createAbilityFactory, createAccessibleByFactory, prismaQuery } from './runtime';\nimport type { WhereInputPerModel, ModelName, PrismaQuery } from './prismaClientBoundTypes';\n\nexport type { PrismaQuery, WhereInput } from './prismaClientBoundTypes';\nexport type { Model, Subjects } from './runtime';\nexport { prismaQuery, ParsingQueryError } from './runtime';\n\nconst createPrismaAbility = createAbilityFactory<ModelName, PrismaQuery>();\nconst accessibleBy = createAccessibleByFactory<WhereInputPerModel, PrismaQuery>();\n\nexport {\n  createPrismaAbility,\n  accessibleBy,\n};\n\n/**\n * Uses conditional type to support union distribution\n */\ntype ExtendedAbilityTuple<T extends AbilityTuple> = T extends AbilityTuple\n  ? [T[0], 'all' | T[1]]\n  : never;\n\n/**\n * @deprecated use createPrismaAbility instead\n */\nexport class PrismaAbility<\n  A extends AbilityTuple = [string, ModelName],\n  C extends PrismaQuery = PrismaQuery\n> extends PureAbility<ExtendedAbilityTuple<A>, C> {\n  constructor(\n    rules?: RawRuleFrom<ExtendedAbilityTuple<A>, C>[],\n    options?: AbilityOptions<ExtendedAbilityTuple<A>, C>\n  ) {\n    super(rules, {\n      conditionsMatcher: prismaQuery,\n      fieldMatcher: fieldPatternMatcher,\n      ...options,\n    });\n  }\n}\n"],"names":["createPrismaAbility","createAbilityFactory","accessibleBy","createAccessibleByFactory","PrismaAbility","PureAbility","constructor","rules","options","super","Object","assign","conditionsMatcher","prismaQuery","fieldMatcher","fieldPatternMatcher"],"mappings":"mOAQA,MAAMA,EAAsBC,IAC5B,MAAMC,EAAeC,IAiBd,MAAMC,sBAGHC,EACRC,WAAAA,CACEC,EACAC,GAEAC,MAAMF,EAAKG,OAAAC,OAAA,CACTC,kBAAmBC,EACnBC,aAAcC,GACXP,GAEP"}