import { actionDefinitions } from "./actions/definitions"; export interface IActionDefinitionsRegistry { definitions: any[]; setDefinitions(definitions: any[]): void; addDefinition(definition: any, overwrite?: boolean): void; addDefinitions(definitions: any[], overwrite?: boolean): void; } export class ActionDefinitionsRegistry { definitions: any[] = []; public setDefinitions(definitions: any[]) { this.definitions = definitions; } public addDefinition(definition: any, overwrite = false) { if (!definition) { return; } if (Array.isArray(definition)) { this.addDefinitions(definition, overwrite); return; } this.addDefinitions([definition], overwrite); } public addDefinitions(definitions: any[], overwrite = false) { for (const definition of definitions) { if (overwrite || !this.definitions.includes(definition)) { this.definitions.push(definition); } } } defaultDefinitions() { return actionDefinitions; } }