Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/bizproc/workflow/starter/src/ |
Upload File : |
import { EventEmitter } from 'main.core.events'; import type { Starter } from './starter'; export class Manager { #instances: Set<Starter> = new Set(); put(starter: Starter): Manager { this.#instances.add(starter); return this; } remove(starter: Starter) { this.#instances.delete(starter); } fireEvent(starter: Starter, eventName: string, parameters: {}) { const instances = this.#findSimilar(starter); instances.forEach((target) => { target.emit(eventName, parameters); EventEmitter.emit(target, eventName, parameters, { useGlobalNaming: true }); // compatibility }); } #findSimilar(target: Starter): Array<Starter> { const result = [target]; this.#instances.forEach((starter) => { if (starter !== target && this.#isEqual(target, starter)) { result.push(starter); } }); return result; } #isEqual(target: Starter, starter: Starter): boolean { if (target.signedDocumentType && starter.signedDocumentType) { return target.signedDocumentType === starter.signedDocumentType; } if (target.complexDocumentType) { return ( target.complexDocumentType.isEqual( starter.complexDocumentType || starter.signedDocumentType, ) ); } return ( starter.complexDocumentType.isEqual( target.complexDocumentType || target.signedDocumentType, ) ); } }