diff --git a/packages/casl-ability/src/extra.ts b/packages/casl-ability/src/extra.ts index f96a425ee..9db2e8de1 100644 --- a/packages/casl-ability/src/extra.ts +++ b/packages/casl-ability/src/extra.ts @@ -94,14 +94,13 @@ export function permittedFieldsOf( const joinIfArray = (value: string | string[]) => Array.isArray(value) ? value.join(',') : value; -export type PackedRule = [ - string, - string, - (UnifiedRawRule['conditions'] | 0)?, - (1 | 0)?, - (string | 0)?, - (string | 0)? -]; +export type PackedRule = + [string, string] | + [string, string, UnifiedRawRule['conditions']] | + [string, string, UnifiedRawRule['conditions'] | 0, 1] | + [string, string, UnifiedRawRule['conditions'] | 0, 1 | 0, string] | + [string, string, UnifiedRawRule['conditions'] | 0, 1 | 0, string | 0, string] +; export function packRules(rules: UnifiedRawRule[]): PackedRule[] { return rules.map(({ actions, subject, conditions, inverted, fields, reason }) => { // eslint-disable-line @@ -111,7 +110,7 @@ export function packRules(rules: UnifiedRawRule[]): PackedRule[] { conditions || 0, inverted ? 1 : 0, fields ? joinIfArray(fields) : 0, - reason || 0 + reason || '' ]; while (!rule[rule.length - 1]) rule.pop();