Skip to content

Commit 29f2d90

Browse files
authored
fix: gets rid of dist imported types which cannot be resolved at runtime (#895)
1 parent 095bea5 commit 29f2d90

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

packages/casl-mongoose/src/accessibleBy.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { AnyMongoAbility, Generics, SubjectType } from '@casl/ability';
2-
import { ToAbilityTypes } from '@casl/ability/dist/types/types';
1+
import { AnyMongoAbility, Generics, SubjectType, Abilities, AbilityTuple, ExtractSubjectType } from '@casl/ability';
32
import { rulesToQuery } from '@casl/ability/extra';
43

54
function convertToMongoQuery(rule: AnyMongoAbility['rules'][number]) {
@@ -23,12 +22,16 @@ export class AccessibleRecords<T extends SubjectType> {
2322
}
2423
}
2524

25+
type SubjectTypes<T extends Abilities> = T extends AbilityTuple
26+
? ExtractSubjectType<T[1]>
27+
: never;
28+
2629
/**
2730
* Returns accessible records Mongo query per record type (i.e., entity type) based on provided Ability and action.
2831
*/
2932
export function accessibleBy<T extends AnyMongoAbility>(
3033
ability: T,
3134
action: Parameters<T['rulesFor']>[0] = 'read'
32-
): AccessibleRecords<ToAbilityTypes<Generics<T>['abilities']>[1]> {
35+
): AccessibleRecords<SubjectTypes<Generics<T>['abilities']>> {
3336
return new AccessibleRecords(ability, action);
3437
}

0 commit comments

Comments
 (0)