From d0bd2facc33a0b5a58304d032722f2491d54de02 Mon Sep 17 00:00:00 2001 From: Markus Sanin Date: Mon, 13 May 2024 10:20:10 +0200 Subject: [PATCH] Fix check for ability class check --- ember-can/src/services/abilities.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ember-can/src/services/abilities.ts b/ember-can/src/services/abilities.ts index 2a36790..8ad212e 100644 --- a/ember-can/src/services/abilities.ts +++ b/ember-can/src/services/abilities.ts @@ -40,7 +40,7 @@ export default class AbilitiesService extends Service { const ability = AbilityFactory.create(properties); assert( `Ability '${abilityName}' has to inherit from ember-can Ability`, - ability instanceof Ability, + isAbilityClass(ability), // "ability instanceof Ability" is not working cause of a bug in ember-auto-import see https://github.com/embroider-build/ember-auto-import/issues/588 ); return ability; @@ -102,3 +102,13 @@ export default class AbilitiesService extends Service { return !this.can(abilityString, model, properties); } } + +function isAbilityClass(possibleAbilityClass: unknown): possibleAbilityClass is Ability { + const abilityClass = (possibleAbilityClass as Ability); + return ( + abilityClass.parseProperty !== undefined && + typeof abilityClass.parseProperty === 'function' && + abilityClass.getAbility !== undefined && + typeof abilityClass.getAbility === 'function' + ); +}