class CallbackCollectionBase{__callbacks=new Set;add(callback){return this.__callbacks.add(callback),()=>this.remove(callback)}remove(callback){this.__callbacks.delete(callback)}clear(){this.__callbacks.clear()}getManipulators(){return Object.freeze({add:this.add.bind(this),remove:this.remove.bind(this)})}}export class CallbackCollection extends CallbackCollectionBase{trigger(...args){const result=[];for(const callback of this.__callbacks)try{result.push({status:"fulfilled",value:callback(...args)})}catch(error){result.push({status:"rejected",reason:error})}return result}}export class AsyncCallbackCollection extends CallbackCollectionBase{trigger(...args){let promises=[];for(const callback of this.__callbacks)try{promises.push(callback(...args))}catch(error){promises.push(Promise.reject(error instanceof Error?error:new Error("string"==typeof error?error:void 0)))}return Promise.allSettled(promises)}}