diff --git a/plugins/permission-node/src/integration/createConditionTransformer.ts b/plugins/permission-node/src/integration/createConditionTransformer.ts index 94e7a3f76e..ee4224b8bd 100644 --- a/plugins/permission-node/src/integration/createConditionTransformer.ts +++ b/plugins/permission-node/src/integration/createConditionTransformer.ts @@ -14,6 +14,8 @@ * limitations under the License. */ import { + AllOfCriteria, + AnyOfCriteria, PermissionCondition, PermissionCriteria, } from '@backstage/plugin-permission-common'; @@ -25,32 +27,18 @@ import { isOrCriteria, } from './util'; -const nonEmpty = (list: T[]): [T, ...T[]] => { - if (list.length === 0) { - throw new Error( - 'Invalid conditions provided. Expected at least one item for `allOf`/`anyOf` criteria but received none.', - ); - } - - return list as [T, ...T[]]; -}; - const mapConditions = ( criteria: PermissionCriteria, getRule: (name: string) => PermissionRule, ): PermissionCriteria => { if (isAndCriteria(criteria)) { return { - allOf: nonEmpty( - criteria.allOf.map(child => mapConditions(child, getRule)), - ), - }; + allOf: criteria.allOf.map(child => mapConditions(child, getRule)), + } as AllOfCriteria; } else if (isOrCriteria(criteria)) { return { - anyOf: nonEmpty( - criteria.anyOf.map(child => mapConditions(child, getRule)), - ), - }; + anyOf: criteria.anyOf.map(child => mapConditions(child, getRule)), + } as AnyOfCriteria; } else if (isNotCriteria(criteria)) { return { not: mapConditions(criteria.not, getRule),