UNPKG

ayanami

Version:
24 lines (23 loc) 971 B
import { allActionSymbols } from '../symbols'; export function createActionDecorator(symbols) { return () => ( // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types target, propertyKey, descriptor) => { addActionName(symbols, target.constructor, propertyKey); return descriptor; }; } // eslint-disable-next-line @typescript-eslint/ban-types function addActionName(symbols, constructor, actionName) { const decoratedActionNames = Reflect.getMetadata(symbols.decorator, constructor) || []; Reflect.defineMetadata(symbols.decorator, [...decoratedActionNames, actionName], constructor); } export function getActionNames(symbols, constructor) { return Reflect.getMetadata(symbols.decorator, constructor) || []; } export function getAllActionNames(instance) { return allActionSymbols.reduce((result, symbols) => [ ...result, ...getActionNames(symbols, instance.constructor), ], []); }