ayanami
Version:
A better way to react with state
22 lines (21 loc) • 1.08 kB
JavaScript
import { __spreadArray } from "tslib";
import { allActionSymbols } from '../symbols';
export function createActionDecorator(symbols) {
return function () { return function (
// 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) {
var decoratedActionNames = Reflect.getMetadata(symbols.decorator, constructor) || [];
Reflect.defineMetadata(symbols.decorator, __spreadArray(__spreadArray([], decoratedActionNames), [actionName]), constructor);
}
export function getActionNames(symbols, constructor) {
return Reflect.getMetadata(symbols.decorator, constructor) || [];
}
export function getAllActionNames(instance) {
return allActionSymbols.reduce(function (result, symbols) { return __spreadArray(__spreadArray([], result), getActionNames(symbols, instance.constructor)); }, []);
}