import { defineRole } from '../../actor/functions/define-role.function'; import { getSymbolById } from '../../symbol/functions/get-symbol-by-id.function'; import { ROLE_TYPE } from '../../utils/constants/symbol-tag.constant'; import type { ResolveRoles } from '../types/utility.type'; export function getOrDefineRoles( ...roleNames: Names ) { return roleNames.map((name) => { if (typeof name !== 'string') { throw new TypeError( `"${String(name)}" in roleNames parameter is invalid.`, ); } return getSymbolById(ROLE_TYPE, name) || defineRole(name); }) as ResolveRoles; }