5.1.0-next.12 (2020-11-18)
Bug Fixes
- ability: replaces getters with functions to ensure terser properly minifies them (386ecb6)
- extra: makes
permittedFieldsOfto iterate from the end of array (81e6409)
Code Refactoring
- extra: makes
fieldsFromoption to be mandatory forpermittedFieldsOf[skip release] (df29b0d) - types: restricts which utility types are exported by library (e98618f)
Reverts
- builder: reverts back
AbilityBuildergeneric parameter (aa7b45f)
BREAKING CHANGES
-
types: types
AliasesMap,TaggedInterface,AbilityTupleType,ToAbilityTypes,AnyObjectare no longer exported by the library -
extra: makes
fieldsFromoption to be mandatory forpermittedFieldsO f. This reduces confusion around whypermittedFieldsOfreturns empty array when user can manage entity fields. So, now this logic is just explicit and clearBefore
import { defineAbility } from '@casl/ability'; import { permittedFieldsOf } from '@casl/ability/extra'; const ability = defineAbility((can) => { can('read', 'Article'); }); const fields = permittedFieldsOf(ability, 'read', 'Article'); // []
After
import { defineAbility } from '@casl/ability'; import { permittedFieldsOf } from '@casl/ability/extra'; const ability = defineAbility((can) => { can('read', 'Article'); }); const ARTICLE_FIELDS = ['id', 'title', 'description']; const fields = permittedFieldsOf(ability, 'read', 'Article', { fieldsFrom: rule => rule.fields || ARTICLE_FIELDS }); // ['id', 'title', 'description']