{"version":3,"sources":["../src/events/flexEventBus.ts"],"names":["FlexEventBusNodeEvents","seq","buildFlexEventBusMessage","payload","meta","assignObject","THIS_NODE_EVENT","ALL_NODE_EVENT","_options","_eventbus","_subscribers","FlexEventBusNode","options","__privateAdd","__privateSet","__privateGet","message","eventbus","onMessage","subscriber","event","retain","nodeId","delimiter","listener","timeout","args","useAsync","_nodes","FlexEventBus","FlexEvent","node"],"mappings":"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","file":"chunk-7NOAEF3F.mjs","sourcesContent":["/**\n *  基于FlexEvent的事件总线\n * \n *  let bus = new FlexEventBus() \n * \n *  class MyModule extends FlexEventBusNode{ \n *    constructor(){\n *      this.join(bus)\n *    }  \n *    onMessage(message:FlexEventBusMessage){\n *       // 接收消息 \n *    }\n *  }\n * \n *  let node = new FlexEventBusNode({id:\"node1\"})\n *  node.join(bus)\n * \n *  node.onMessage((message)=>{....})\n * \n *  \n * \n * \n * \n */\nimport { assignObject } from \"../object/assignObject\"\nimport { FlexEvent } from \"./flexEvent\"\nimport type { FlexEventListener,FlexEventOptions,FlexEventSubscriber } from \"./flexEvent\"\n\n\nexport interface FlexEventLikeError{\n    code?:number\n    message?:string\n}\n \nexport enum FlexEventBusNodeEvents{\n    Join    = \"$node/join\",                          // 节点加入到总线时\n    Disjoin = \"$node/disjoin\"                       // 节点从总线中断开时\n}\n\nlet seq = 0\nexport function buildFlexEventBusMessage(payload:any,meta?:FlexEventBusMessageMeta):FlexEventBusMessage{\n    return {\n        id: ++seq,\n        meta:assignObject({\n            timestamp:Date.now()\n        },meta),\n        payload,\n    }\n}\n\nexport interface FlexEventBusMessageMeta{\n    timestamp?:number                    // 消息产生的时间戳\n    [key:string]:any                     // 额外的元数据\n}\n\n/**\n * 为总线中的消息指定类型\n */\n export interface FlexEventBusMessage{\n    from?:string                                // 消息来源=<节点的id>/<事件名称>\n    id?:number                                  // 消息唯一标识用来跟踪消息时有用\n    meta?:FlexEventBusMessageMeta\n    error?:FlexEventLikeError | Error           // 错误信息\n    payload?:any\n}\n\n\nexport interface FlexEventBusNodeOptions{\n    id?:string                                  // 为节点取一个标识，比如模块名称之类\n    receiveBroadcast?:boolean                   // 是否接收广播消息\n    onMessage?:FlexEventListener<FlexEventBusMessage>\n}\n\nconst THIS_NODE_EVENT =  \"{}/$data\"          // 用来接收本节点消息的事件名称\nconst ALL_NODE_EVENT =  \"$ALL\"           // 用来发送给所有节点广播消息的事件名称\n\nexport class FlexEventBusNode{\n    #options:Required<FlexEventBusNodeOptions>\n    #eventbus?:FlexEventBus\n    #subscribers?:FlexEventSubscriber[] = []\n    constructor(options?:FlexEventBusNodeOptions){\n        this.#options = assignObject({\n            id: `node${++seq}`,\n            receiveBroadcast:true\n        },options) \n    }\n    get id(){return this.#options.id}\n\n    private _onMessage(message:FlexEventBusMessage){\n        if(typeof this.#options.onMessage==\"function\"){\n            this.#options.onMessage.call(this,message)\n        }else if('onMessage' in this){\n            this.onMessage.call(this,message)\n        }\n    }\n    /**\n     * 接收到发送给该节点的消息时触发\n     * 供子类继承\n     * @param message \n     */\n    onMessage(message:FlexEventBusMessage){\n        \n    } \n    /**\n     * 连接到总线\n     * @param eventbus \n     */\n    join(eventbus:FlexEventBus){\n        if(!eventbus){\n          throw new Error('eventbus is not defined')\n        }\n        this.#eventbus = eventbus\n        const onMessage = this._onMessage.bind(this) as FlexEventListener\n        // 订阅发送给本节点的消息\n        this.#subscribers?.push(eventbus.on(THIS_NODE_EVENT.params(this.id),onMessage ,{objectify:true}) as FlexEventSubscriber)\n        // 订阅广播消息\n        if(this.#options.receiveBroadcast){\n            this.#subscribers?.push(eventbus.on(ALL_NODE_EVENT,onMessage,{objectify:true}) as FlexEventSubscriber)\n        }\n        // 触发节点加入事件,  $node/join   \n        this.#eventbus?.emit(FlexEventBusNodeEvents.Join,{payload:this.id} as FlexEventBusMessage)\n    }\n    /**\n     * 从总线中断开\n     */\n    disjoin(){\n        // 取消订阅事件\n        this.#subscribers?.forEach(subscriber=>subscriber.off())\n        // 触发节点离开事件,  $node/disjoin\n        this.#eventbus?.emit(FlexEventBusNodeEvents.Disjoin,{payload:this.id} as FlexEventBusMessage)\n        this.#eventbus=undefined\n    }     \n    /**\n     * 以当前节点身份向总线触发事件\n     * \n     * 如node(name='device')\n     * \n     * let node = new FlexEventbusNode({id:\"device\"})\n     * node.emit(\"a\")           // == FlexEventbus.emit(\"device/a\")\n     * @param message \n     */\n    emit(event:string,payload:any,meta?:FlexEventBusMessageMeta,retain?: boolean){\n        let message = buildFlexEventBusMessage(payload,meta)        \n        message.from = `${this.id}${this.#eventbus?.delimiter}${event}`\n        this.#eventbus?.emit(message.from,message,retain)\n    }      \n    \n    async emitAsync(event:string,payload:any,meta?:FlexEventBusMessageMeta,retain?: boolean){\n        let message = buildFlexEventBusMessage(payload,meta)        \n        message.meta!.from = this.id\n        message.from = `${this.id}${this.#eventbus?.delimiter}${event}`     \n        return this.#eventbus?.emitAsync(message.from,message,retain)\n    }\n\n    /**\n     * 向指定节点发送消息\n     * @param nodeId   目标节点id\n     * @param message \n     */\n    send(nodeId:string,payload:any,meta?:FlexEventBusMessageMeta){\n        let message = buildFlexEventBusMessage(payload,meta)        \n        message.from = this.id\n        return this.#eventbus?.emit(THIS_NODE_EVENT.params(nodeId),message)\n    }\n    sendAsync(nodeId:string,payload:any,meta?:FlexEventBusMessageMeta){\n        let message = buildFlexEventBusMessage(payload,meta)        \n        message.from = this.id\n        return this.#eventbus?.emitAsync(THIS_NODE_EVENT.params(nodeId),message)\n    }  \n    /**\n     * 处理要订阅的事件名称\n     * 如果有以分隔符开头，代表要订阅全局事件，其他情况下会自动加上当前节点id作为前缀\n     * 代表只订阅本节点的事件\n     * @param event \n     * @param listener \n     * @returns \n     */\n    private handleOnEvent(event:string){\n        const delimiter = this.#eventbus?.delimiter!\n        if(event.startsWith(delimiter)){\n            event = event.substring(delimiter.length)\n        }else{\n            event = `${this.id}${delimiter}${event}`\n        }       \n        return event\n    }\n    /**\n     * 只订阅一次事件\n     * @param event \n     * @param listener \n     * @returns \n     */\n    once(event:string,listener?:FlexEventListener<FlexEventBusMessage>){\n        event =  this.handleOnEvent(event)\n        return this.#eventbus?.once(event,(listener ? listener : this._onMessage.bind(this)) as FlexEventListener )\n    }\n    /**\n     * 订阅事件\n     * \n     * 如果有以分隔符开头，代表要订阅全局事件\n     * \n     * @param event  事件名称，如果不包含分隔符，会自动加上当前节点id作为前缀\n     * @param listener \n     * @returns \n     */\n    on(event:string,listener?:FlexEventListener<FlexEventBusMessage>){\n        event =  this.handleOnEvent(event)\n        return this.#eventbus?.on(event,(listener ? listener : this._onMessage.bind(this)) as FlexEventListener )\n    }\n    /**\n     * 等待某个事件发生\n     * @param event \n     * @param timeout \n     * @returns \n     */\n    async waitFor(event:string,timeout?:number){\n        event =  this.handleOnEvent(event)\n        return  this.#eventbus?.waitFor(event,timeout)\n    }\n    /**\n     * 取消订阅某个事件\n     * @param event  事件名称，如果不包含分隔符，会自动加上当前节点id作为前缀\n     * @param listener\n     * @returns\n     */\n    off(listener: FlexEventListener<FlexEventBusMessage>): void;\n    off(listenerId: string): void;\n    off(event: string, listener: FlexEventListener<FlexEventBusMessage>): void;\n    off(...args: any[]) {\n      if (args.length === 2) {\n        const event = this.handleOnEvent(args[0]);\n        return this.#eventbus?.off(event, args[1]);\n      }\n      return this.#eventbus?.off(args[0]);\n    }\n    /**\n     * 广播消息，所有节点都会收到该消息\n     * @param message \n     * @param useAsync\n     */\n    broadcast(message:FlexEventBusMessage,useAsync:boolean=false){\n        message.from = this.id\n        if(useAsync){\n            return this.#eventbus?.emitAsync(ALL_NODE_EVENT,message)\n        }else{\n            return this.#eventbus?.emit(ALL_NODE_EVENT,message)\n        }        \n    }\n}\nexport type FlexEventBusOptions = FlexEventOptions \n/**\n * \n * 一个简单的事件总线，每一个节点均具有唯一的ID\n * \n */\nexport class FlexEventBus extends FlexEvent<FlexEventBusMessage>{\n    #nodes:string[] = []\n    constructor(options?:FlexEventBusOptions){\n        super(options)\n        this.on(FlexEventBusNodeEvents.Join,this.onNodeJoin.bind(this) as FlexEventListener)\n        this.on(FlexEventBusNodeEvents.Disjoin,this.onNodeDisjoin.bind(this) as FlexEventListener)\n    }\n    private onNodeJoin(message:FlexEventBusMessage){\n        this.#nodes.push(message.payload)\n    }\n    private onNodeDisjoin(message:FlexEventBusMessage){\n        this.#nodes = this.#nodes.filter(node=>node!=message.payload)\n    } \n    /**\n     * 创建这个eventbus上的节点(直接join)\n     */\n    createNode(options?: FlexEventBusNodeOptions){\n      const node = new FlexEventBusNode(options);\n      node.join(this)\n      return node;\n    }\n    /**\n     * 广播消息，所有节点都会收到该消息\n     *  \n     * @param message \n     * @param useAsync \n     * @returns \n     */\n    broadcast(payload:any,meta?:FlexEventBusMessageMeta){        \n        let message = buildFlexEventBusMessage(payload,meta)\n        return this.emit(ALL_NODE_EVENT,message as FlexEventBusMessage)        \n    }\n    /**\n     * 向指定的节点发送消息\n     * @param nodeId \n     * @param message \n     */\n    send(nodeId:string,payload:any,meta?:FlexEventBusMessageMeta){\n        let message = buildFlexEventBusMessage(payload,meta)\n        this.emit(THIS_NODE_EVENT.params(nodeId),message)\n    } \n}\n\n "]}