moonbridge-ts 0.6.3 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.d.ts +2 -2
- package/dist/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.js +2 -2
- package/dist/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.js.map +1 -1
- package/dist/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.mjs +2 -2
- package/dist/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.d.ts +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.js +2 -2
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.js.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.mjs +2 -2
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/types/ipc_messenger.d.ts +24 -8
- package/dist/moonbridge-ipc/client/types/ipc_messenger.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/types/ipc_types.d.ts +10 -2
- package/dist/moonbridge-ipc/client/types/ipc_types.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/types/ipc_types.js.map +1 -1
- package/dist/moonbridge-ipc/client/types/ipc_types.mjs.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.d.ts +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.d.ts.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.js +2 -2
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.js.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.mjs +2 -2
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.mjs.map +1 -1
- package/package.json +1 -1
- package/src/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.ts +9 -9
- package/src/moonbridge-ipc/client/moonbridge_ipc_client.ts +2 -2
- package/src/moonbridge-ipc/client/types/ipc_messenger.ts +24 -8
- package/src/moonbridge-ipc/client/types/ipc_types.ts +10 -2
- package/src/moonbridge-ipc/server/moonbridge_ipc_server.ts +2 -2
- package/tests/unit/rpc_service_factory.test.ts +6 -6
- package/tests/unit/rpc_service_proxy.test.ts +6 -6
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { IpcClientSettings } from './settings/ipc_client_settings';
|
|
5
5
|
import { IpcConnectionCompletionHandler } from '../types/ipc_types';
|
|
6
6
|
import { MoonBridgeIpcClient } from '../moonbridge_ipc_client';
|
|
7
|
-
import { Messenger, MessageEndpoint,
|
|
7
|
+
import { Messenger, MessageEndpoint, MessageSender } from '../types/ipc_messenger';
|
|
8
8
|
import { EventBus } from '../types/ipc_event_bus';
|
|
9
9
|
import { IpcClientComponentProvider } from './ipc/ipc_client_component_provider';
|
|
10
10
|
import { IpcConnectionManager } from './ipc/connect/ipc_connection_manager';
|
|
@@ -34,7 +34,7 @@ export declare class RealMoonBridgeIpcClient implements IpcClientComponentProvid
|
|
|
34
34
|
isConnected(): boolean;
|
|
35
35
|
get messenger(): Messenger;
|
|
36
36
|
get eventBus(): EventBus;
|
|
37
|
-
call(target: MessageEndpoint):
|
|
37
|
+
call(target: MessageEndpoint): MessageSender;
|
|
38
38
|
private sendMessage;
|
|
39
39
|
private realPostMessage;
|
|
40
40
|
}
|
|
@@ -56,7 +56,7 @@ class RealMoonBridgeIpcClient {
|
|
|
56
56
|
baseStrategy.retries,
|
|
57
57
|
baseStrategy.autoLaunch
|
|
58
58
|
);
|
|
59
|
-
return new
|
|
59
|
+
return new RealMessageSender(
|
|
60
60
|
strategy,
|
|
61
61
|
(args, callStrategy, onError) => {
|
|
62
62
|
this.sendMessage(target, args, callStrategy, onError);
|
|
@@ -105,7 +105,7 @@ class RealMoonBridgeIpcClient {
|
|
|
105
105
|
);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
class
|
|
108
|
+
class RealMessageSender {
|
|
109
109
|
constructor(strategy, dispatch) {
|
|
110
110
|
this.dispatch = dispatch;
|
|
111
111
|
this.argsList = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.ts"],"names":["IpcConnectionManager","IpcRequestCoordinator","IpcCommunicationAgent","IpcEventBus","IpcConnectionKeeper","IpcClientBridge","DefaultRpcServiceFactory","logger","IpcMessageStrategy"],"mappings":"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","file":"moonbridge_ipc_client.internal.js","sourcesContent":["/**\n * MoonBridge IPC 客户端实际实现与注册表,对应 Flutter lib/client/internal/moonbridge_ipc_client.internal.dart。\n */\n\nimport { IpcClientSettings } from './settings/ipc_client_settings';\nimport { IpcMessageStrategy } from '../types/ipc_message_strategy';\nimport { IpcConnectionCompletionHandler, IpcErrorCallback } from '../types/ipc_types';\nimport { MoonBridgeIpcClient } from '../moonbridge_ipc_client';\nimport { Messenger, MessageEndpoint, RoutedMessage } from '../types/ipc_messenger';\nimport { EventBus } from '../types/ipc_event_bus';\nimport { logger } from '../../utils/logger';\nimport { IpcClientComponentProvider } from './ipc/ipc_client_component_provider';\nimport { IpcConnectionManager } from './ipc/connect/ipc_connection_manager';\nimport { IpcRequestCoordinator } from './ipc/coordinator/ipc_request_coordinator';\nimport { IpcCommunicationAgent } from './ipc/communication/ipc_communication_agent';\nimport { IpcEventBus } from './ipc/eventbus/ipc_event_bus';\nimport { IpcConnectionKeeper } from './ipc/keep/ipc_connection_keeper';\nimport { IpcClientBridge } from './bridge/ipc_client_bridge';\nimport { DefaultRpcServiceFactory, RpcServiceFactory } from '../rpc/rpc_service_factory';\n\n/**\n * 实际 IPC 客户端实现:继承组件装配,并实现 MoonBridgeIpcClient、Messenger。\n * 装配顺序与 Flutter RealMoonBridgeIpcClient 一致;JS 不传入 moduleFactories(见 spec 012)。\n */\nexport class RealMoonBridgeIpcClient implements IpcClientComponentProvider, MoonBridgeIpcClient, Messenger {\n readonly settings: IpcClientSettings;\n readonly connectionManager: IpcConnectionManager;\n readonly requestCoordinator: IpcRequestCoordinator;\n readonly communicationAgent: IpcCommunicationAgent;\n readonly ipcEventBus: IpcEventBus;\n readonly connectionKeeper: IpcConnectionKeeper;\n readonly bridge: IpcClientBridge;\n readonly rpcServiceFactory: RpcServiceFactory;\n\n // CONSTRUCTOR\n\n constructor(settings: IpcClientSettings) {\n this.settings = settings;\n\n this.connectionManager = new IpcConnectionManager(this);\n this.requestCoordinator = new IpcRequestCoordinator(this);\n this.communicationAgent = new IpcCommunicationAgent(this);\n this.ipcEventBus = new IpcEventBus(this);\n this.connectionKeeper = new IpcConnectionKeeper(this);\n this.bridge = new IpcClientBridge(this, this.communicationAgent);\n this.rpcServiceFactory = new DefaultRpcServiceFactory(this);\n\n this.connectionManager.initialize();\n this.requestCoordinator.initialize();\n this.communicationAgent.initialize();\n this.ipcEventBus.initialize();\n this.connectionKeeper.initialize();\n this.bridge.initialize();\n\n logger.info(`[MoonBridgeIpcClient] 客户端 \"${settings.clientName}\" 已创建`);\n }\n\n // PUBLIC METHODS\n\n get clientName(): string {\n return this.settings.clientName;\n }\n\n connect(onResult?: IpcConnectionCompletionHandler): void {\n this.connectionManager.connect(onResult);\n this.connectionKeeper.startHeartbeat();\n }\n\n async disconnect(): Promise<void> {\n await this.connectionManager.disconnect();\n this.connectionKeeper.stopHeartbeat();\n }\n\n isConnected(): boolean {\n return this.connectionManager.isConnected();\n }\n\n get messenger(): Messenger {\n return this;\n }\n\n get eventBus(): EventBus {\n return this.ipcEventBus;\n }\n\n call(target: MessageEndpoint): RoutedMessage {\n const baseStrategy = this.settings.messageStrategy;\n const strategy = new IpcMessageStrategy(\n baseStrategy.retries,\n baseStrategy.autoLaunch,\n );\n return new RoutedMessageImpl(\n strategy,\n (args, callStrategy, onError) => {\n this.sendMessage(target, args, callStrategy, onError);\n },\n );\n }\n\n // PRIVATE METHODS\n\n private sendMessage(\n target: MessageEndpoint,\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ): void {\n const remainingRetries = Math.max(strategy.retries, 0);\n this.realPostMessage(\n target.clientName,\n target.moduleName,\n target.methodName,\n args,\n onError,\n strategy,\n remainingRetries,\n );\n }\n\n private realPostMessage(\n clientName: string,\n moduleName: string,\n methodName: string,\n argumentsList: unknown[],\n onError: IpcErrorCallback | undefined,\n strategy: IpcMessageStrategy,\n remainingRetries: number,\n ): void {\n const request = this.requestCoordinator.prepareAndCreateIpcRequest({\n toClient: clientName,\n moduleName,\n methodName,\n arguments: argumentsList,\n onError,\n });\n\n this.communicationAgent.sendRequestAfterSetupSession(\n request,\n strategy,\n (success, error) => {\n if (remainingRetries - 1 <= 0) {\n if (!success && error) onError?.(error);\n return;\n }\n this.realPostMessage(\n clientName,\n moduleName,\n methodName,\n argumentsList,\n onError,\n strategy,\n remainingRetries - 1,\n );\n },\n );\n }\n}\n\nclass RoutedMessageImpl implements RoutedMessage {\n private argsList: unknown[] = [];\n private currentStrategy: IpcMessageStrategy;\n private errorCallback?: IpcErrorCallback;\n\n constructor(\n strategy: IpcMessageStrategy,\n private readonly dispatch: (\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ) => void,\n ) {\n this.currentStrategy = strategy;\n }\n\n args(args: unknown[]): RoutedMessage;\n args(...args: unknown[]): RoutedMessage;\n args(...argsOrList: unknown[]): RoutedMessage {\n if (argsOrList.length === 1 && Array.isArray(argsOrList[0])) {\n this.argsList = [...(argsOrList[0] as unknown[])];\n return this;\n }\n this.argsList = [...argsOrList];\n return this;\n }\n\n strategy(strategy: IpcMessageStrategy): RoutedMessage {\n this.currentStrategy = strategy;\n return this;\n }\n\n onError(onError?: IpcErrorCallback): RoutedMessage {\n this.errorCallback = onError;\n return this;\n }\n\n send(): void {\n this.dispatch(this.argsList, this.currentStrategy, this.errorCallback);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.ts"],"names":["IpcConnectionManager","IpcRequestCoordinator","IpcCommunicationAgent","IpcEventBus","IpcConnectionKeeper","IpcClientBridge","DefaultRpcServiceFactory","logger","IpcMessageStrategy"],"mappings":";;;;;;;;;;;;AAwBO,MAAM,uBAAA,CAA8F;AAAA;AAAA,EAYzG,YAAY,QAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAEhB,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAIA,2CAAA,CAAqB,IAAI,CAAA;AACtD,IAAA,IAAA,CAAK,kBAAA,GAAqB,IAAIC,6CAAA,CAAsB,IAAI,CAAA;AACxD,IAAA,IAAA,CAAK,kBAAA,GAAqB,IAAIC,6CAAA,CAAsB,IAAI,CAAA;AACxD,IAAA,IAAA,CAAK,WAAA,GAAc,IAAIC,yBAAA,CAAY,IAAI,CAAA;AACvC,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAIC,yCAAA,CAAoB,IAAI,CAAA;AACpD,IAAA,IAAA,CAAK,MAAA,GAAS,IAAIC,iCAAA,CAAgB,IAAA,EAAM,KAAK,kBAAkB,CAAA;AAC/D,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAIC,4CAAA,CAAyB,IAAI,CAAA;AAE1D,IAAA,IAAA,CAAK,kBAAkB,UAAA,EAAW;AAClC,IAAA,IAAA,CAAK,mBAAmB,UAAA,EAAW;AACnC,IAAA,IAAA,CAAK,mBAAmB,UAAA,EAAW;AACnC,IAAA,IAAA,CAAK,YAAY,UAAA,EAAW;AAC5B,IAAA,IAAA,CAAK,iBAAiB,UAAA,EAAW;AACjC,IAAA,IAAA,CAAK,OAAO,UAAA,EAAW;AAEvB,IAAAC,aAAA,CAAO,IAAA,CAAK,CAAA,0CAAA,EAA8B,QAAA,CAAS,UAAU,CAAA,oBAAA,CAAO,CAAA;AAAA,EACtE;AAAA;AAAA,EAIA,IAAI,UAAA,GAAqB;AACvB,IAAA,OAAO,KAAK,QAAA,CAAS,UAAA;AAAA,EACvB;AAAA,EAEA,QAAQ,QAAA,EAAiD;AACvD,IAAA,IAAA,CAAK,iBAAA,CAAkB,QAAQ,QAAQ,CAAA;AACvC,IAAA,IAAA,CAAK,iBAAiB,cAAA,EAAe;AAAA,EACvC;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,MAAM,IAAA,CAAK,kBAAkB,UAAA,EAAW;AACxC,IAAA,IAAA,CAAK,iBAAiB,aAAA,EAAc;AAAA,EACtC;AAAA,EAEA,WAAA,GAAuB;AACrB,IAAA,OAAO,IAAA,CAAK,kBAAkB,WAAA,EAAY;AAAA,EAC5C;AAAA,EAEA,IAAI,SAAA,GAAuB;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,IAAI,QAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA,EAEA,KAAK,MAAA,EAAwC;AAC3C,IAAA,MAAM,YAAA,GAAe,KAAK,QAAA,CAAS,eAAA;AACnC,IAAA,MAAM,WAAW,IAAIC,uCAAA;AAAA,MACnB,YAAA,CAAa,OAAA;AAAA,MACb,YAAA,CAAa;AAAA,KACf;AACA,IAAA,OAAO,IAAI,iBAAA;AAAA,MACT,QAAA;AAAA,MACA,CAAC,IAAA,EAAM,YAAA,EAAc,OAAA,KAAY;AAC/B,QAAA,IAAA,CAAK,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,YAAA,EAAc,OAAO,CAAA;AAAA,MACtD;AAAA,KACF;AAAA,EACF;AAAA;AAAA,EAIQ,WAAA,CACN,MAAA,EACA,IAAA,EACA,QAAA,EACA,OAAA,EACM;AACN,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,SAAS,CAAC,CAAA;AACrD,IAAA,IAAA,CAAK,eAAA;AAAA,MACH,MAAA,CAAO,UAAA;AAAA,MACP,MAAA,CAAO,UAAA;AAAA,MACP,MAAA,CAAO,UAAA;AAAA,MACP,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,gBACN,UAAA,EACA,UAAA,EACA,YACA,aAAA,EACA,OAAA,EACA,UACA,gBAAA,EACM;AACN,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,kBAAA,CAAmB,0BAAA,CAA2B;AAAA,MACjE,QAAA,EAAU,UAAA;AAAA,MACV,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACX;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,kBAAA,CAAmB,4BAAA;AAAA,MACtB,OAAA;AAAA,MACA,QAAA;AAAA,MACA,CAAC,SAAS,KAAA,KAAU;AAClB,QAAA,IAAI,gBAAA,GAAmB,KAAK,CAAA,EAAG;AAC7B,UAAA,IAAI,CAAC,OAAA,IAAW,KAAA,EAAO,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACjC,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,eAAA;AAAA,UACH,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,aAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,gBAAA,GAAmB;AAAA,SACrB;AAAA,MACF;AAAA,KACF;AAAA,EACF;AACF;AAEA,MAAM,iBAAA,CAA2C;AAAA,EAK/C,WAAA,CACE,UACiB,QAAA,EAKjB;AALiB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AANnB,IAAA,IAAA,CAAQ,WAAsB,EAAC;AAY7B,IAAA,IAAA,CAAK,eAAA,GAAkB,QAAA;AAAA,EACzB;AAAA,EAIA,QAAQ,UAAA,EAAsC;AAC5C,IAAA,IAAI,UAAA,CAAW,WAAW,CAAA,IAAK,KAAA,CAAM,QAAQ,UAAA,CAAW,CAAC,CAAC,CAAA,EAAG;AAC3D,MAAA,IAAA,CAAK,QAAA,GAAW,CAAC,GAAI,UAAA,CAAW,CAAC,CAAe,CAAA;AAChD,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,CAAC,GAAG,UAAU,CAAA;AAC9B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,SAAS,QAAA,EAA6C;AACpD,IAAA,IAAA,CAAK,eAAA,GAAkB,QAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,QAAQ,OAAA,EAA2C;AACjD,IAAA,IAAA,CAAK,aAAA,GAAgB,OAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,IAAA,GAAa;AACX,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,eAAA,EAAiB,KAAK,aAAa,CAAA;AAAA,EACvE;AACF","file":"moonbridge_ipc_client.internal.js","sourcesContent":["/**\n * MoonBridge IPC 客户端实际实现与注册表,对应 Flutter lib/client/internal/moonbridge_ipc_client.internal.dart。\n */\n\nimport { IpcClientSettings } from './settings/ipc_client_settings';\nimport { IpcMessageStrategy } from '../types/ipc_message_strategy';\nimport { IpcConnectionCompletionHandler, IpcErrorCallback } from '../types/ipc_types';\nimport { MoonBridgeIpcClient } from '../moonbridge_ipc_client';\nimport { Messenger, MessageEndpoint, MessageSender } from '../types/ipc_messenger';\nimport { EventBus } from '../types/ipc_event_bus';\nimport { logger } from '../../utils/logger';\nimport { IpcClientComponentProvider } from './ipc/ipc_client_component_provider';\nimport { IpcConnectionManager } from './ipc/connect/ipc_connection_manager';\nimport { IpcRequestCoordinator } from './ipc/coordinator/ipc_request_coordinator';\nimport { IpcCommunicationAgent } from './ipc/communication/ipc_communication_agent';\nimport { IpcEventBus } from './ipc/eventbus/ipc_event_bus';\nimport { IpcConnectionKeeper } from './ipc/keep/ipc_connection_keeper';\nimport { IpcClientBridge } from './bridge/ipc_client_bridge';\nimport { DefaultRpcServiceFactory, RpcServiceFactory } from '../rpc/rpc_service_factory';\n\n/**\n * 实际 IPC 客户端实现:继承组件装配,并实现 MoonBridgeIpcClient、Messenger。\n * 装配顺序与 Flutter RealMoonBridgeIpcClient 一致;JS 不传入 moduleFactories(见 spec 012)。\n */\nexport class RealMoonBridgeIpcClient implements IpcClientComponentProvider, MoonBridgeIpcClient, Messenger {\n readonly settings: IpcClientSettings;\n readonly connectionManager: IpcConnectionManager;\n readonly requestCoordinator: IpcRequestCoordinator;\n readonly communicationAgent: IpcCommunicationAgent;\n readonly ipcEventBus: IpcEventBus;\n readonly connectionKeeper: IpcConnectionKeeper;\n readonly bridge: IpcClientBridge;\n readonly rpcServiceFactory: RpcServiceFactory;\n\n // CONSTRUCTOR\n\n constructor(settings: IpcClientSettings) {\n this.settings = settings;\n\n this.connectionManager = new IpcConnectionManager(this);\n this.requestCoordinator = new IpcRequestCoordinator(this);\n this.communicationAgent = new IpcCommunicationAgent(this);\n this.ipcEventBus = new IpcEventBus(this);\n this.connectionKeeper = new IpcConnectionKeeper(this);\n this.bridge = new IpcClientBridge(this, this.communicationAgent);\n this.rpcServiceFactory = new DefaultRpcServiceFactory(this);\n\n this.connectionManager.initialize();\n this.requestCoordinator.initialize();\n this.communicationAgent.initialize();\n this.ipcEventBus.initialize();\n this.connectionKeeper.initialize();\n this.bridge.initialize();\n\n logger.info(`[MoonBridgeIpcClient] 客户端 \"${settings.clientName}\" 已创建`);\n }\n\n // PUBLIC METHODS\n\n get clientName(): string {\n return this.settings.clientName;\n }\n\n connect(onResult?: IpcConnectionCompletionHandler): void {\n this.connectionManager.connect(onResult);\n this.connectionKeeper.startHeartbeat();\n }\n\n async disconnect(): Promise<void> {\n await this.connectionManager.disconnect();\n this.connectionKeeper.stopHeartbeat();\n }\n\n isConnected(): boolean {\n return this.connectionManager.isConnected();\n }\n\n get messenger(): Messenger {\n return this;\n }\n\n get eventBus(): EventBus {\n return this.ipcEventBus;\n }\n\n call(target: MessageEndpoint): MessageSender {\n const baseStrategy = this.settings.messageStrategy;\n const strategy = new IpcMessageStrategy(\n baseStrategy.retries,\n baseStrategy.autoLaunch,\n );\n return new RealMessageSender(\n strategy,\n (args, callStrategy, onError) => {\n this.sendMessage(target, args, callStrategy, onError);\n },\n );\n }\n\n // PRIVATE METHODS\n\n private sendMessage(\n target: MessageEndpoint,\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ): void {\n const remainingRetries = Math.max(strategy.retries, 0);\n this.realPostMessage(\n target.clientName,\n target.moduleName,\n target.methodName,\n args,\n onError,\n strategy,\n remainingRetries,\n );\n }\n\n private realPostMessage(\n clientName: string,\n moduleName: string,\n methodName: string,\n argumentsList: unknown[],\n onError: IpcErrorCallback | undefined,\n strategy: IpcMessageStrategy,\n remainingRetries: number,\n ): void {\n const request = this.requestCoordinator.prepareAndCreateIpcRequest({\n toClient: clientName,\n moduleName,\n methodName,\n arguments: argumentsList,\n onError,\n });\n\n this.communicationAgent.sendRequestAfterSetupSession(\n request,\n strategy,\n (success, error) => {\n if (remainingRetries - 1 <= 0) {\n if (!success && error) onError?.(error);\n return;\n }\n this.realPostMessage(\n clientName,\n moduleName,\n methodName,\n argumentsList,\n onError,\n strategy,\n remainingRetries - 1,\n );\n },\n );\n }\n}\n\nclass RealMessageSender implements MessageSender {\n private argsList: unknown[] = [];\n private currentStrategy: IpcMessageStrategy;\n private errorCallback?: IpcErrorCallback;\n\n constructor(\n strategy: IpcMessageStrategy,\n private readonly dispatch: (\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ) => void,\n ) {\n this.currentStrategy = strategy;\n }\n\n args(args: unknown[]): MessageSender;\n args(...args: unknown[]): MessageSender;\n args(...argsOrList: unknown[]): MessageSender {\n if (argsOrList.length === 1 && Array.isArray(argsOrList[0])) {\n this.argsList = [...(argsOrList[0] as unknown[])];\n return this;\n }\n this.argsList = [...argsOrList];\n return this;\n }\n\n strategy(strategy: IpcMessageStrategy): MessageSender {\n this.currentStrategy = strategy;\n return this;\n }\n\n onError(onError?: IpcErrorCallback): MessageSender {\n this.errorCallback = onError;\n return this;\n }\n\n send(): void {\n this.dispatch(this.argsList, this.currentStrategy, this.errorCallback);\n }\n}\n"]}
|
|
@@ -54,7 +54,7 @@ class RealMoonBridgeIpcClient {
|
|
|
54
54
|
baseStrategy.retries,
|
|
55
55
|
baseStrategy.autoLaunch
|
|
56
56
|
);
|
|
57
|
-
return new
|
|
57
|
+
return new RealMessageSender(
|
|
58
58
|
strategy,
|
|
59
59
|
(args, callStrategy, onError) => {
|
|
60
60
|
this.sendMessage(target, args, callStrategy, onError);
|
|
@@ -103,7 +103,7 @@ class RealMoonBridgeIpcClient {
|
|
|
103
103
|
);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
class
|
|
106
|
+
class RealMessageSender {
|
|
107
107
|
constructor(strategy, dispatch) {
|
|
108
108
|
this.dispatch = dispatch;
|
|
109
109
|
this.argsList = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.ts"],"names":[],"mappings":"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","file":"moonbridge_ipc_client.internal.mjs","sourcesContent":["/**\n * MoonBridge IPC 客户端实际实现与注册表,对应 Flutter lib/client/internal/moonbridge_ipc_client.internal.dart。\n */\n\nimport { IpcClientSettings } from './settings/ipc_client_settings';\nimport { IpcMessageStrategy } from '../types/ipc_message_strategy';\nimport { IpcConnectionCompletionHandler, IpcErrorCallback } from '../types/ipc_types';\nimport { MoonBridgeIpcClient } from '../moonbridge_ipc_client';\nimport { Messenger, MessageEndpoint,
|
|
1
|
+
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/internal/moonbridge_ipc_client.internal.ts"],"names":[],"mappings":"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","file":"moonbridge_ipc_client.internal.mjs","sourcesContent":["/**\n * MoonBridge IPC 客户端实际实现与注册表,对应 Flutter lib/client/internal/moonbridge_ipc_client.internal.dart。\n */\n\nimport { IpcClientSettings } from './settings/ipc_client_settings';\nimport { IpcMessageStrategy } from '../types/ipc_message_strategy';\nimport { IpcConnectionCompletionHandler, IpcErrorCallback } from '../types/ipc_types';\nimport { MoonBridgeIpcClient } from '../moonbridge_ipc_client';\nimport { Messenger, MessageEndpoint, MessageSender } from '../types/ipc_messenger';\nimport { EventBus } from '../types/ipc_event_bus';\nimport { logger } from '../../utils/logger';\nimport { IpcClientComponentProvider } from './ipc/ipc_client_component_provider';\nimport { IpcConnectionManager } from './ipc/connect/ipc_connection_manager';\nimport { IpcRequestCoordinator } from './ipc/coordinator/ipc_request_coordinator';\nimport { IpcCommunicationAgent } from './ipc/communication/ipc_communication_agent';\nimport { IpcEventBus } from './ipc/eventbus/ipc_event_bus';\nimport { IpcConnectionKeeper } from './ipc/keep/ipc_connection_keeper';\nimport { IpcClientBridge } from './bridge/ipc_client_bridge';\nimport { DefaultRpcServiceFactory, RpcServiceFactory } from '../rpc/rpc_service_factory';\n\n/**\n * 实际 IPC 客户端实现:继承组件装配,并实现 MoonBridgeIpcClient、Messenger。\n * 装配顺序与 Flutter RealMoonBridgeIpcClient 一致;JS 不传入 moduleFactories(见 spec 012)。\n */\nexport class RealMoonBridgeIpcClient implements IpcClientComponentProvider, MoonBridgeIpcClient, Messenger {\n readonly settings: IpcClientSettings;\n readonly connectionManager: IpcConnectionManager;\n readonly requestCoordinator: IpcRequestCoordinator;\n readonly communicationAgent: IpcCommunicationAgent;\n readonly ipcEventBus: IpcEventBus;\n readonly connectionKeeper: IpcConnectionKeeper;\n readonly bridge: IpcClientBridge;\n readonly rpcServiceFactory: RpcServiceFactory;\n\n // CONSTRUCTOR\n\n constructor(settings: IpcClientSettings) {\n this.settings = settings;\n\n this.connectionManager = new IpcConnectionManager(this);\n this.requestCoordinator = new IpcRequestCoordinator(this);\n this.communicationAgent = new IpcCommunicationAgent(this);\n this.ipcEventBus = new IpcEventBus(this);\n this.connectionKeeper = new IpcConnectionKeeper(this);\n this.bridge = new IpcClientBridge(this, this.communicationAgent);\n this.rpcServiceFactory = new DefaultRpcServiceFactory(this);\n\n this.connectionManager.initialize();\n this.requestCoordinator.initialize();\n this.communicationAgent.initialize();\n this.ipcEventBus.initialize();\n this.connectionKeeper.initialize();\n this.bridge.initialize();\n\n logger.info(`[MoonBridgeIpcClient] 客户端 \"${settings.clientName}\" 已创建`);\n }\n\n // PUBLIC METHODS\n\n get clientName(): string {\n return this.settings.clientName;\n }\n\n connect(onResult?: IpcConnectionCompletionHandler): void {\n this.connectionManager.connect(onResult);\n this.connectionKeeper.startHeartbeat();\n }\n\n async disconnect(): Promise<void> {\n await this.connectionManager.disconnect();\n this.connectionKeeper.stopHeartbeat();\n }\n\n isConnected(): boolean {\n return this.connectionManager.isConnected();\n }\n\n get messenger(): Messenger {\n return this;\n }\n\n get eventBus(): EventBus {\n return this.ipcEventBus;\n }\n\n call(target: MessageEndpoint): MessageSender {\n const baseStrategy = this.settings.messageStrategy;\n const strategy = new IpcMessageStrategy(\n baseStrategy.retries,\n baseStrategy.autoLaunch,\n );\n return new RealMessageSender(\n strategy,\n (args, callStrategy, onError) => {\n this.sendMessage(target, args, callStrategy, onError);\n },\n );\n }\n\n // PRIVATE METHODS\n\n private sendMessage(\n target: MessageEndpoint,\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ): void {\n const remainingRetries = Math.max(strategy.retries, 0);\n this.realPostMessage(\n target.clientName,\n target.moduleName,\n target.methodName,\n args,\n onError,\n strategy,\n remainingRetries,\n );\n }\n\n private realPostMessage(\n clientName: string,\n moduleName: string,\n methodName: string,\n argumentsList: unknown[],\n onError: IpcErrorCallback | undefined,\n strategy: IpcMessageStrategy,\n remainingRetries: number,\n ): void {\n const request = this.requestCoordinator.prepareAndCreateIpcRequest({\n toClient: clientName,\n moduleName,\n methodName,\n arguments: argumentsList,\n onError,\n });\n\n this.communicationAgent.sendRequestAfterSetupSession(\n request,\n strategy,\n (success, error) => {\n if (remainingRetries - 1 <= 0) {\n if (!success && error) onError?.(error);\n return;\n }\n this.realPostMessage(\n clientName,\n moduleName,\n methodName,\n argumentsList,\n onError,\n strategy,\n remainingRetries - 1,\n );\n },\n );\n }\n}\n\nclass RealMessageSender implements MessageSender {\n private argsList: unknown[] = [];\n private currentStrategy: IpcMessageStrategy;\n private errorCallback?: IpcErrorCallback;\n\n constructor(\n strategy: IpcMessageStrategy,\n private readonly dispatch: (\n args: unknown[],\n strategy: IpcMessageStrategy,\n onError?: IpcErrorCallback,\n ) => void,\n ) {\n this.currentStrategy = strategy;\n }\n\n args(args: unknown[]): MessageSender;\n args(...args: unknown[]): MessageSender;\n args(...argsOrList: unknown[]): MessageSender {\n if (argsOrList.length === 1 && Array.isArray(argsOrList[0])) {\n this.argsList = [...(argsOrList[0] as unknown[])];\n return this;\n }\n this.argsList = [...argsOrList];\n return this;\n }\n\n strategy(strategy: IpcMessageStrategy): MessageSender {\n this.currentStrategy = strategy;\n return this;\n }\n\n onError(onError?: IpcErrorCallback): MessageSender {\n this.errorCallback = onError;\n return this;\n }\n\n send(): void {\n this.dispatch(this.argsList, this.currentStrategy, this.errorCallback);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moonbridge_ipc_client.d.ts","sourceRoot":"","sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAU,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;GAEG;AACH,8BAAsB,mBAAmB;IACvC;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,0BAA0B;IAI5C;;KAEC;IACD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,8BAA8B,GAAG,IAAI;IACjE;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;CAChC;AAID,yBAAyB;AACzB,qBAAa,0BAA0B;IACrC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,wBAAwB,CAAC,CAA0B;IAC3D,OAAO,CAAC,uBAAuB,CAAC,CAAsB;IACtD,OAAO,CAAC,uBAAuB,CAAC,CAAsB;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAU;IACnC,OAAO,CAAC,oBAAoB,CAAC,CAAS;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAqB;IAC9C,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAIvC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"moonbridge_ipc_client.d.ts","sourceRoot":"","sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ class MoonBridgeIpcClientBuilder {
|
|
|
27
27
|
/**
|
|
28
28
|
* 设置 WebSocket 连接配置
|
|
29
29
|
*/
|
|
30
|
-
|
|
30
|
+
onWebSocketChannel(endpoint) {
|
|
31
31
|
this._webSocketServerEndpoint = endpoint;
|
|
32
32
|
return this;
|
|
33
33
|
}
|
|
@@ -104,7 +104,7 @@ class MoonBridgeIpcClientBuilder {
|
|
|
104
104
|
}
|
|
105
105
|
if (!this._webSocketServerEndpoint) {
|
|
106
106
|
throw new Error(
|
|
107
|
-
"Call
|
|
107
|
+
"Call onWebSocketChannel to set the transport configuration."
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
110
|
if (this._logSubscriber) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":["Logger","IpcClientSettings","RealMoonBridgeIpcClient"],"mappings":";;;;;;AAoBO,MAAe,mBAAA,CAAoB;AAAA;AAAA;AAAA;AAAA,EAIxC,OAAO,OAAA,GAAsC;AAC3C,IAAA,OAAO,IAAI,0BAAA,EAA2B;AAAA,EACxC;AA+BF;AAKO,MAAM,0BAAA,CAA2B;AAAA,EAAjC,WAAA,GAAA;AACL,IAAA,IAAA,CAAQ,WAAA,GAAc,EAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,
|
|
1
|
+
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":["Logger","IpcClientSettings","RealMoonBridgeIpcClient"],"mappings":"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","file":"moonbridge_ipc_client.js","sourcesContent":["/**\n * MoonBridge IPC 客户端入口类,对应 Flutter lib/client/moonbridge_ipc_client.dart。\n * 定义连接管理、消息发送、RPC 服务工厂与事件总线等公开 API。\n */\n\nimport { WebSocketServerEndpoint } from '../general/config/websocket_server_endpoint';\nimport { AppInstallationPath, AppLaunchIdentifier } from '../general/app_launch/model/app_info';\nimport { AppLauncher } from '../general/app_launch/app_launcher';\nimport { IpcClientSettings } from './internal/settings/ipc_client_settings';\nimport { IpcMessageStrategy } from './types/ipc_message_strategy';\nimport { ConnectionObserver, IpcConnectionCompletionHandler, MessageInterceptor } from './types/ipc_types';\nimport { EventBus } from './types/ipc_event_bus';\nimport { Messenger } from './types/ipc_messenger';\nimport { RpcServiceFactory } from './rpc/rpc_service_factory';\nimport { RealMoonBridgeIpcClient } from './internal/moonbridge_ipc_client.internal';\nimport { Logger, LogSubscriber } from '../../moonbridge/logger/logger';\n\n/** \n * MoonBridge IPC 客户端抽象接口 \n */\nexport abstract class MoonBridgeIpcClient {\n /**\n * 创建客户端构建器 \n */\n static builder(): MoonBridgeIpcClientBuilder {\n return new MoonBridgeIpcClientBuilder();\n }\n\n /** \n * 客户端名称 \n */\n abstract readonly clientName: string;\n /** \n * 消息发送器 \n */\n abstract readonly messenger: Messenger;\n /** \n * 事件总线 \n */\n abstract readonly eventBus: EventBus;\n /**\n * RPC 服务工厂\n */\n abstract readonly rpcServiceFactory: RpcServiceFactory;\n\n /** \n * 连接到 IPC 服务器 \n */\n abstract connect(onResult?: IpcConnectionCompletionHandler): void;\n /** \n * 断开与 IPC 服务器的连接 \n */\n abstract disconnect(): Promise<void>;\n /** \n * 检查是否已连接到 IPC 服务器 \n */\n abstract isConnected(): boolean;\n}\n\n// PUBLIC CLASS\n\n/** 构造器,用于链式配置并构建客户端实例 */\nexport class MoonBridgeIpcClientBuilder {\n private _clientName = '';\n private _webSocketServerEndpoint?: WebSocketServerEndpoint;\n private _serverInstallationPath?: AppInstallationPath;\n private _serverLaunchIdentifier?: AppLaunchIdentifier;\n private _enableHeartbeat?: boolean;\n private _heartbeatIntervalMs?: number;\n private _messageStrategy?: IpcMessageStrategy;\n private _messageInterceptor?: MessageInterceptor;\n private _connectionObserver?: ConnectionObserver;\n private _appLauncher?: AppLauncher;\n private _logSubscriber?: LogSubscriber;\n\n // PUBLIC METHODS\n\n /**\n * 设置客户端名称 \n */\n clientName(name: string): this {\n this._clientName = name;\n return this;\n }\n\n /**\n * 设置 WebSocket 连接配置 \n */\n onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {\n this._webSocketServerEndpoint = endpoint;\n return this;\n }\n\n /**\n * 设置服务器应用路径 \n */\n serverInstallationPath(path: AppInstallationPath): this {\n this._serverInstallationPath = path;\n return this;\n }\n\n /**\n * 设置服务器应用标识符 \n */\n serverLaunchIdentifier(identifier: AppLaunchIdentifier): this {\n this._serverLaunchIdentifier = identifier;\n return this;\n }\n\n /**\n * 设置是否启用心跳检测 \n */\n enableHeartbeat(enable: boolean): this {\n this._enableHeartbeat = enable;\n return this;\n }\n\n /**\n * 设置心跳检测间隔时间 \n */\n heartbeatIntervalMs(ms: number): this {\n this._heartbeatIntervalMs = ms;\n return this;\n }\n\n /**\n * 设置消息策略 \n */\n messageStrategy(strategy: IpcMessageStrategy): this {\n this._messageStrategy = strategy;\n return this;\n }\n\n /**\n * 设置消息拦截器 \n */\n messageInterceptor(interceptor: MessageInterceptor): this {\n this._messageInterceptor = interceptor;\n return this;\n }\n\n /**\n * 设置连接状态观察者 \n */\n connectionObserver(observer: ConnectionObserver): this {\n this._connectionObserver = observer;\n return this;\n }\n\n /** \n * 注入应用启动器\n * 用于覆盖默认的唤醒方式(如 wps-addin 通过 URL Scheme 唤起) \n */\n appLauncher(launcher: AppLauncher): this {\n this._appLauncher = launcher;\n return this;\n }\n\n /**\n * 添加日志订阅者\n */\n logSubscriber(subscriber: LogSubscriber): this {\n this._logSubscriber = subscriber;\n return this;\n }\n\n /**\n * 构建客户端实例并可选注册为默认客户端。\n */\n build(makeDefault = false): MoonBridgeIpcClient {\n if (!this._clientName || this._clientName.trim() === '') {\n throw new Error('clientName must be non-empty.');\n }\n if (!this._webSocketServerEndpoint) {\n throw new Error(\n 'Call onWebSocketChannel to set the transport configuration.',\n );\n }\n\n // 添加日志订阅者\n if (this._logSubscriber) {\n Logger.addSubscriber(this._logSubscriber);\n }\n\n // 创建客户端设置\n const settings = new IpcClientSettings({\n clientName: this._clientName,\n webSocketServerEndpoint: this._webSocketServerEndpoint,\n serverInstallationPath: this._serverInstallationPath,\n serverLaunchIdentifier: this._serverLaunchIdentifier,\n enableHeartbeat: this._enableHeartbeat,\n heartbeatIntervalMs: this._heartbeatIntervalMs,\n messageStrategy: this._messageStrategy,\n messageInterceptor: this._messageInterceptor,\n connectionObserver: this._connectionObserver,\n appLauncher: this._appLauncher,\n });\n\n const client = new RealMoonBridgeIpcClient(settings);\n MoonBridgeIpcClientRegistry.getInstance().register(client);\n if (makeDefault) {\n MoonBridgeIpcClientRegistry.getInstance().setDefault(client);\n }\n return client;\n }\n}\n\n\n/** \n * 客户端注册表单例 \n */\nexport class MoonBridgeIpcClientRegistry {\n private static _instance: MoonBridgeIpcClientRegistry;\n private readonly _clientMap = new Map<string, MoonBridgeIpcClient>();\n\n /**\n * 获取客户端注册表单例 \n */\n static getInstance(): MoonBridgeIpcClientRegistry {\n if (!MoonBridgeIpcClientRegistry._instance) {\n MoonBridgeIpcClientRegistry._instance = new MoonBridgeIpcClientRegistry();\n }\n return MoonBridgeIpcClientRegistry._instance;\n }\n\n /**\n * 设置默认客户端 \n */\n setDefault(client: MoonBridgeIpcClient): void {\n this._clientMap.set('__default__', client);\n }\n\n /**\n * 注册客户端 \n */\n register(client: MoonBridgeIpcClient): void {\n this._clientMap.set(client.clientName, client);\n }\n\n /**\n * 获取客户端 \n */\n get(clientName?: string): MoonBridgeIpcClient | undefined {\n return this._clientMap.get(clientName ?? '__default__');\n }\n}\n"]}
|
|
@@ -25,7 +25,7 @@ class MoonBridgeIpcClientBuilder {
|
|
|
25
25
|
/**
|
|
26
26
|
* 设置 WebSocket 连接配置
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
onWebSocketChannel(endpoint) {
|
|
29
29
|
this._webSocketServerEndpoint = endpoint;
|
|
30
30
|
return this;
|
|
31
31
|
}
|
|
@@ -102,7 +102,7 @@ class MoonBridgeIpcClientBuilder {
|
|
|
102
102
|
}
|
|
103
103
|
if (!this._webSocketServerEndpoint) {
|
|
104
104
|
throw new Error(
|
|
105
|
-
"Call
|
|
105
|
+
"Call onWebSocketChannel to set the transport configuration."
|
|
106
106
|
);
|
|
107
107
|
}
|
|
108
108
|
if (this._logSubscriber) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":[],"mappings":";;;;AAoBO,MAAe,mBAAA,CAAoB;AAAA;AAAA;AAAA;AAAA,EAIxC,OAAO,OAAA,GAAsC;AAC3C,IAAA,OAAO,IAAI,0BAAA,EAA2B;AAAA,EACxC;AA+BF;AAKO,MAAM,0BAAA,CAA2B;AAAA,EAAjC,WAAA,GAAA;AACL,IAAA,IAAA,CAAQ,WAAA,GAAc,EAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,
|
|
1
|
+
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":[],"mappings":"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","file":"moonbridge_ipc_client.mjs","sourcesContent":["/**\n * MoonBridge IPC 客户端入口类,对应 Flutter lib/client/moonbridge_ipc_client.dart。\n * 定义连接管理、消息发送、RPC 服务工厂与事件总线等公开 API。\n */\n\nimport { WebSocketServerEndpoint } from '../general/config/websocket_server_endpoint';\nimport { AppInstallationPath, AppLaunchIdentifier } from '../general/app_launch/model/app_info';\nimport { AppLauncher } from '../general/app_launch/app_launcher';\nimport { IpcClientSettings } from './internal/settings/ipc_client_settings';\nimport { IpcMessageStrategy } from './types/ipc_message_strategy';\nimport { ConnectionObserver, IpcConnectionCompletionHandler, MessageInterceptor } from './types/ipc_types';\nimport { EventBus } from './types/ipc_event_bus';\nimport { Messenger } from './types/ipc_messenger';\nimport { RpcServiceFactory } from './rpc/rpc_service_factory';\nimport { RealMoonBridgeIpcClient } from './internal/moonbridge_ipc_client.internal';\nimport { Logger, LogSubscriber } from '../../moonbridge/logger/logger';\n\n/** \n * MoonBridge IPC 客户端抽象接口 \n */\nexport abstract class MoonBridgeIpcClient {\n /**\n * 创建客户端构建器 \n */\n static builder(): MoonBridgeIpcClientBuilder {\n return new MoonBridgeIpcClientBuilder();\n }\n\n /** \n * 客户端名称 \n */\n abstract readonly clientName: string;\n /** \n * 消息发送器 \n */\n abstract readonly messenger: Messenger;\n /** \n * 事件总线 \n */\n abstract readonly eventBus: EventBus;\n /**\n * RPC 服务工厂\n */\n abstract readonly rpcServiceFactory: RpcServiceFactory;\n\n /** \n * 连接到 IPC 服务器 \n */\n abstract connect(onResult?: IpcConnectionCompletionHandler): void;\n /** \n * 断开与 IPC 服务器的连接 \n */\n abstract disconnect(): Promise<void>;\n /** \n * 检查是否已连接到 IPC 服务器 \n */\n abstract isConnected(): boolean;\n}\n\n// PUBLIC CLASS\n\n/** 构造器,用于链式配置并构建客户端实例 */\nexport class MoonBridgeIpcClientBuilder {\n private _clientName = '';\n private _webSocketServerEndpoint?: WebSocketServerEndpoint;\n private _serverInstallationPath?: AppInstallationPath;\n private _serverLaunchIdentifier?: AppLaunchIdentifier;\n private _enableHeartbeat?: boolean;\n private _heartbeatIntervalMs?: number;\n private _messageStrategy?: IpcMessageStrategy;\n private _messageInterceptor?: MessageInterceptor;\n private _connectionObserver?: ConnectionObserver;\n private _appLauncher?: AppLauncher;\n private _logSubscriber?: LogSubscriber;\n\n // PUBLIC METHODS\n\n /**\n * 设置客户端名称 \n */\n clientName(name: string): this {\n this._clientName = name;\n return this;\n }\n\n /**\n * 设置 WebSocket 连接配置 \n */\n onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {\n this._webSocketServerEndpoint = endpoint;\n return this;\n }\n\n /**\n * 设置服务器应用路径 \n */\n serverInstallationPath(path: AppInstallationPath): this {\n this._serverInstallationPath = path;\n return this;\n }\n\n /**\n * 设置服务器应用标识符 \n */\n serverLaunchIdentifier(identifier: AppLaunchIdentifier): this {\n this._serverLaunchIdentifier = identifier;\n return this;\n }\n\n /**\n * 设置是否启用心跳检测 \n */\n enableHeartbeat(enable: boolean): this {\n this._enableHeartbeat = enable;\n return this;\n }\n\n /**\n * 设置心跳检测间隔时间 \n */\n heartbeatIntervalMs(ms: number): this {\n this._heartbeatIntervalMs = ms;\n return this;\n }\n\n /**\n * 设置消息策略 \n */\n messageStrategy(strategy: IpcMessageStrategy): this {\n this._messageStrategy = strategy;\n return this;\n }\n\n /**\n * 设置消息拦截器 \n */\n messageInterceptor(interceptor: MessageInterceptor): this {\n this._messageInterceptor = interceptor;\n return this;\n }\n\n /**\n * 设置连接状态观察者 \n */\n connectionObserver(observer: ConnectionObserver): this {\n this._connectionObserver = observer;\n return this;\n }\n\n /** \n * 注入应用启动器\n * 用于覆盖默认的唤醒方式(如 wps-addin 通过 URL Scheme 唤起) \n */\n appLauncher(launcher: AppLauncher): this {\n this._appLauncher = launcher;\n return this;\n }\n\n /**\n * 添加日志订阅者\n */\n logSubscriber(subscriber: LogSubscriber): this {\n this._logSubscriber = subscriber;\n return this;\n }\n\n /**\n * 构建客户端实例并可选注册为默认客户端。\n */\n build(makeDefault = false): MoonBridgeIpcClient {\n if (!this._clientName || this._clientName.trim() === '') {\n throw new Error('clientName must be non-empty.');\n }\n if (!this._webSocketServerEndpoint) {\n throw new Error(\n 'Call onWebSocketChannel to set the transport configuration.',\n );\n }\n\n // 添加日志订阅者\n if (this._logSubscriber) {\n Logger.addSubscriber(this._logSubscriber);\n }\n\n // 创建客户端设置\n const settings = new IpcClientSettings({\n clientName: this._clientName,\n webSocketServerEndpoint: this._webSocketServerEndpoint,\n serverInstallationPath: this._serverInstallationPath,\n serverLaunchIdentifier: this._serverLaunchIdentifier,\n enableHeartbeat: this._enableHeartbeat,\n heartbeatIntervalMs: this._heartbeatIntervalMs,\n messageStrategy: this._messageStrategy,\n messageInterceptor: this._messageInterceptor,\n connectionObserver: this._connectionObserver,\n appLauncher: this._appLauncher,\n });\n\n const client = new RealMoonBridgeIpcClient(settings);\n MoonBridgeIpcClientRegistry.getInstance().register(client);\n if (makeDefault) {\n MoonBridgeIpcClientRegistry.getInstance().setDefault(client);\n }\n return client;\n }\n}\n\n\n/** \n * 客户端注册表单例 \n */\nexport class MoonBridgeIpcClientRegistry {\n private static _instance: MoonBridgeIpcClientRegistry;\n private readonly _clientMap = new Map<string, MoonBridgeIpcClient>();\n\n /**\n * 获取客户端注册表单例 \n */\n static getInstance(): MoonBridgeIpcClientRegistry {\n if (!MoonBridgeIpcClientRegistry._instance) {\n MoonBridgeIpcClientRegistry._instance = new MoonBridgeIpcClientRegistry();\n }\n return MoonBridgeIpcClientRegistry._instance;\n }\n\n /**\n * 设置默认客户端 \n */\n setDefault(client: MoonBridgeIpcClient): void {\n this._clientMap.set('__default__', client);\n }\n\n /**\n * 注册客户端 \n */\n register(client: MoonBridgeIpcClient): void {\n this._clientMap.set(client.clientName, client);\n }\n\n /**\n * 获取客户端 \n */\n get(clientName?: string): MoonBridgeIpcClient | undefined {\n return this._clientMap.get(clientName ?? '__default__');\n }\n}\n"]}
|
|
@@ -16,21 +16,29 @@ export type MessageEndpoint = {
|
|
|
16
16
|
/**
|
|
17
17
|
* call API 返回的可链式请求对象。
|
|
18
18
|
*/
|
|
19
|
-
export interface
|
|
19
|
+
export interface MessageSender {
|
|
20
20
|
/**
|
|
21
21
|
* 设置参数。
|
|
22
|
-
* 支持 `args([a, b])` 或 `args(a, b)`
|
|
22
|
+
* 支持 `args([a, b])` 或 `args(a, b)` 两种写法。如果需要接收响应,可以在参数中使用 `IpcResponseCallback` 作为参数类型。
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* messenger
|
|
26
|
+
* .call({ clientName: 'client_b', moduleName: 'CallPhone', methodName: 'callWithCallback' })
|
|
27
|
+
* .args('0431-4610123', (response) => console.log('response:', response))
|
|
28
|
+
* .onError((error) => console.error('ipc error:', error))
|
|
29
|
+
* .send();
|
|
30
|
+
* ```
|
|
23
31
|
*/
|
|
24
|
-
args(args: unknown[]):
|
|
25
|
-
args(...args: unknown[]):
|
|
32
|
+
args(args: unknown[]): MessageSender;
|
|
33
|
+
args(...args: unknown[]): MessageSender;
|
|
26
34
|
/**
|
|
27
35
|
* 设置消息策略(重试次数、是否自动唤醒)。
|
|
28
36
|
*/
|
|
29
|
-
strategy(strategy: IpcMessageStrategy):
|
|
37
|
+
strategy(strategy: IpcMessageStrategy): MessageSender;
|
|
30
38
|
/**
|
|
31
39
|
* 设置 IPC 发送错误回调。
|
|
32
40
|
*/
|
|
33
|
-
onError(onError?: IpcErrorCallback):
|
|
41
|
+
onError(onError?: IpcErrorCallback): MessageSender;
|
|
34
42
|
/**
|
|
35
43
|
* 发送消息。
|
|
36
44
|
*/
|
|
@@ -42,13 +50,21 @@ export interface Messenger {
|
|
|
42
50
|
*
|
|
43
51
|
* 示例:
|
|
44
52
|
* ```ts
|
|
53
|
+
* import { IpcResponseCallback } from 'moonbridge-ts';
|
|
54
|
+
*
|
|
55
|
+
* const onResponse = (response: unknown[]) => console.log('response:', response);
|
|
56
|
+
*
|
|
45
57
|
* messenger
|
|
46
|
-
* .call({
|
|
58
|
+
* .call({
|
|
59
|
+
* clientName: 'client_b',
|
|
60
|
+
* moduleName: 'CallPhone',
|
|
61
|
+
* methodName: 'callWithCallback',
|
|
62
|
+
* })
|
|
47
63
|
* .args('0431-4610123', onResponse)
|
|
48
64
|
* .onError(console.error)
|
|
49
65
|
* .send();
|
|
50
66
|
* ```
|
|
51
67
|
*/
|
|
52
|
-
call(target: MessageEndpoint):
|
|
68
|
+
call(target: MessageEndpoint): MessageSender;
|
|
53
69
|
}
|
|
54
70
|
//# sourceMappingURL=ipc_messenger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc_messenger.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/types/ipc_messenger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B
|
|
1
|
+
{"version":3,"file":"ipc_messenger.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/types/ipc_messenger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAEnD;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAAC;CAC9C"}
|
|
@@ -6,9 +6,17 @@ import { IpcError } from '../../general/error/ipc_error';
|
|
|
6
6
|
import { Request } from '../../general/message/request';
|
|
7
7
|
import { Response } from '../../general/message/response';
|
|
8
8
|
import { Error } from '../../general/message/error';
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* 响应回调:在 IPC 通信过程中,作为接收响应结果的回调函数,在 MessageSender#args 以及定义的 RPC 服务方法中使用。
|
|
11
|
+
*/
|
|
10
12
|
export type IpcResponseCallback = (response: unknown[]) => void;
|
|
11
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* 错误回调:接收 IpcError。
|
|
15
|
+
*
|
|
16
|
+
* 注意:
|
|
17
|
+
* IpcErrorCallback 是用来监听 IPC 通信过程的错误,而不是用来处理业务逻辑结果的错误。
|
|
18
|
+
* 业务逻辑结果的错误应该通过 `IpcResponseCallback` 的回调参数来处理。
|
|
19
|
+
*/
|
|
12
20
|
export type IpcErrorCallback = (error: IpcError) => void;
|
|
13
21
|
/** 服务端进程连接完成处理器。US2:统一使用 undefined 表示无错误,不再使用 | null。 */
|
|
14
22
|
export type IpcConnectionCompletionHandler = (isConnected: boolean, error?: IpcError) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc_types.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"ipc_types.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEzD,yDAAyD;AACzD,MAAM,MAAM,8BAA8B,GAAG,CAC3C,WAAW,EAAE,OAAO,EACpB,KAAK,CAAC,EAAE,QAAQ,KACb,IAAI,CAAC;AAEV;;;GAGG;AACH,qBAAa,kBAAkB;IAE3B,0CAA0C;aAC1B,gBAAgB,CAAC,GAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO;IAChE,2BAA2B;aACX,iBAAiB,CAAC,GAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO;IACnE,2BAA2B;aACX,cAAc,CAAC,GAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO;;IAL1D,0CAA0C;IAC1B,gBAAgB,CAAC,GAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,aAAA;IAChE,2BAA2B;IACX,iBAAiB,CAAC,GAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,aAAA;IACnE,2BAA2B;IACX,cAAc,CAAC,GAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,aAAA;CAE7D;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAE3B,mBAAmB;aACH,WAAW,CAAC,GAAE,MAAM,IAAI;IACxC,mBAAmB;aACH,cAAc,CAAC,GAAE,MAAM,IAAI;;IAH3C,mBAAmB;IACH,WAAW,CAAC,GAAE,MAAM,IAAI,aAAA;IACxC,mBAAmB;IACH,cAAc,CAAC,GAAE,MAAM,IAAI,aAAA;CAE9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":";;AAkCO,MAAM,kBAAA,CAAmB;AAAA,EAC9B,WAAA,CAEkB,gBAAA,EAEA,iBAAA,EAEA,cAAA,EAChB;AALgB,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AAEA,IAAA,IAAA,CAAA,iBAAA,GAAA,iBAAA;AAEA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAAA,EACd;AACN;AAMO,MAAM,kBAAA,CAAmB;AAAA,EAC9B,WAAA,CAEkB,aAEA,cAAA,EAChB;AAHgB,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAEA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAAA,EACd;AACN","file":"ipc_types.js","sourcesContent":["/**\n * IPC 类型定义,对应 Flutter lib/client/types/ipc_types.dart。\n * 仅定义类型,不包含具体实现逻辑。\n */\n\nimport { IpcError } from '../../general/error/ipc_error';\nimport { Request } from '../../general/message/request';\nimport { Response } from '../../general/message/response';\nimport { Error } from '../../general/message/error';\n\n/** \n * 响应回调:在 IPC 通信过程中,作为接收响应结果的回调函数,在 MessageSender#args 以及定义的 RPC 服务方法中使用。 \n */\nexport type IpcResponseCallback = (response: unknown[]) => void;\n\n/** \n * 错误回调:接收 IpcError。\n * \n * 注意:\n * IpcErrorCallback 是用来监听 IPC 通信过程的错误,而不是用来处理业务逻辑结果的错误。\n * 业务逻辑结果的错误应该通过 `IpcResponseCallback` 的回调参数来处理。\n */\nexport type IpcErrorCallback = (error: IpcError) => void;\n\n/** 服务端进程连接完成处理器。US2:统一使用 undefined 表示无错误,不再使用 | null。 */\nexport type IpcConnectionCompletionHandler = (\n isConnected: boolean,\n error?: IpcError,\n) => void;\n\n/**\n * IPC 消息拦截器,用于拦截和处理 IPC 消息。\n * 对应 Flutter MessageInterceptor。\n */\nexport class MessageInterceptor {\n constructor(\n /** 拦截请求消息;返回 true 表示已处理,false 表示继续默认逻辑 */\n public readonly interceptRequest?: (request: Request) => boolean,\n /** 拦截响应消息;返回 true 表示已处理 */\n public readonly interceptResponse?: (response: Response) => boolean,\n /** 拦截错误消息;返回 true 表示已处理 */\n public readonly interceptError?: (error: Error) => boolean,\n ) { }\n}\n\n/**\n * IPC 连接状态观察器,定义处理与服务端连接状态变化的方式。\n * 对应 Flutter ConnectionObserver。\n */\nexport class ConnectionObserver {\n constructor(\n /** 当与服务端建立连接时调用 */\n public readonly onConnected?: () => void,\n /** 当与服务端断开连接时调用 */\n public readonly onDisconnected?: () => void,\n ) { }\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/moonbridge-ipc/client/types/ipc_types.ts"],"names":[],"mappings":"AAkCO,MAAM,kBAAA,CAAmB;AAAA,EAC9B,WAAA,CAEkB,gBAAA,EAEA,iBAAA,EAEA,cAAA,EAChB;AALgB,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AAEA,IAAA,IAAA,CAAA,iBAAA,GAAA,iBAAA;AAEA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAAA,EACd;AACN;AAMO,MAAM,kBAAA,CAAmB;AAAA,EAC9B,WAAA,CAEkB,aAEA,cAAA,EAChB;AAHgB,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAEA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAAA,EACd;AACN","file":"ipc_types.mjs","sourcesContent":["/**\n * IPC 类型定义,对应 Flutter lib/client/types/ipc_types.dart。\n * 仅定义类型,不包含具体实现逻辑。\n */\n\nimport { IpcError } from '../../general/error/ipc_error';\nimport { Request } from '../../general/message/request';\nimport { Response } from '../../general/message/response';\nimport { Error } from '../../general/message/error';\n\n/** \n * 响应回调:在 IPC 通信过程中,作为接收响应结果的回调函数,在 MessageSender#args 以及定义的 RPC 服务方法中使用。 \n */\nexport type IpcResponseCallback = (response: unknown[]) => void;\n\n/** \n * 错误回调:接收 IpcError。\n * \n * 注意:\n * IpcErrorCallback 是用来监听 IPC 通信过程的错误,而不是用来处理业务逻辑结果的错误。\n * 业务逻辑结果的错误应该通过 `IpcResponseCallback` 的回调参数来处理。\n */\nexport type IpcErrorCallback = (error: IpcError) => void;\n\n/** 服务端进程连接完成处理器。US2:统一使用 undefined 表示无错误,不再使用 | null。 */\nexport type IpcConnectionCompletionHandler = (\n isConnected: boolean,\n error?: IpcError,\n) => void;\n\n/**\n * IPC 消息拦截器,用于拦截和处理 IPC 消息。\n * 对应 Flutter MessageInterceptor。\n */\nexport class MessageInterceptor {\n constructor(\n /** 拦截请求消息;返回 true 表示已处理,false 表示继续默认逻辑 */\n public readonly interceptRequest?: (request: Request) => boolean,\n /** 拦截响应消息;返回 true 表示已处理 */\n public readonly interceptResponse?: (response: Response) => boolean,\n /** 拦截错误消息;返回 true 表示已处理 */\n public readonly interceptError?: (error: Error) => boolean,\n ) { }\n}\n\n/**\n * IPC 连接状态观察器,定义处理与服务端连接状态变化的方式。\n * 对应 Flutter ConnectionObserver。\n */\nexport class ConnectionObserver {\n constructor(\n /** 当与服务端建立连接时调用 */\n public readonly onConnected?: () => void,\n /** 当与服务端断开连接时调用 */\n public readonly onDisconnected?: () => void,\n ) { }\n}\n\n"]}
|
|
@@ -61,7 +61,7 @@ export declare class MoonBridgeIpcServerBuilder {
|
|
|
61
61
|
/** 设置服务器名称 */
|
|
62
62
|
serverName(name: string): this;
|
|
63
63
|
/** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */
|
|
64
|
-
|
|
64
|
+
onWebSocketChannel(endpoint: WebSocketServerEndpoint): this;
|
|
65
65
|
/** 设置客户端身份信息提供者列表 */
|
|
66
66
|
clientIdentityProviders(providers: ClientIdentityProvider[]): this;
|
|
67
67
|
/** 设置唤醒客户端应用的拦截器 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moonbridge_ipc_server.d.ts","sourceRoot":"","sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAU,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEvE,0BAA0B;AAC1B,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpE,iBAAiB;AACjB,MAAM,MAAM,kBAAkB,GAAG,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC;AAE7E,mBAAmB;AACnB,MAAM,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAEhE,aAAa;AACb,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAEvF,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5F;;GAEG;AACH,8BAAsB,mBAAmB;IACvC,iBAAiB;IACjB,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAwB;IAC/C,iBAAiB;IACjB,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAwB;IAE/C;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,0BAA0B;IAI5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAMlC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,KAAK,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IAEjD;;OAEG;IACH,QAAQ,KAAK,UAAU,IAAI,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,wBAAwB,CAAC,CAA0B;IAC3D,OAAO,CAAC,wBAAwB,CAAC,CAA2B;IAC5D,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,qBAAqB,CAAC,CAAuB;IACrD,OAAO,CAAC,oBAAoB,CAAC,CAAsB;IACnD,OAAO,CAAC,kBAAkB,CAAC,CAAoB;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC,cAAc;IACd,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B,mDAAmD;IACnD,
|
|
1
|
+
{"version":3,"file":"moonbridge_ipc_server.d.ts","sourceRoot":"","sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ class MoonBridgeIpcServerBuilder {
|
|
|
27
27
|
return this;
|
|
28
28
|
}
|
|
29
29
|
/** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */
|
|
30
|
-
|
|
30
|
+
onWebSocketChannel(endpoint) {
|
|
31
31
|
this._webSocketServerEndpoint = endpoint;
|
|
32
32
|
return this;
|
|
33
33
|
}
|
|
@@ -67,7 +67,7 @@ class MoonBridgeIpcServerBuilder {
|
|
|
67
67
|
*/
|
|
68
68
|
build(makeDefault = false) {
|
|
69
69
|
if (this._webSocketServerEndpoint == null) {
|
|
70
|
-
throw new Error("\u8BF7\u4F7F\u7528
|
|
70
|
+
throw new Error("\u8BF7\u4F7F\u7528 onWebSocketChannel \u8BBE\u7F6E\u4F20\u8F93\u914D\u7F6E\u3002");
|
|
71
71
|
}
|
|
72
72
|
if (this._logSubscriber) {
|
|
73
73
|
logger.Logger.addSubscriber(this._logSubscriber);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":["SocketServer","Logger","RealMoonBridgeIpcServer"],"mappings":";;;;;;AA4BO,MAAe,mBAAA,CAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxC,OAAO,OAAA,GAAsC;AAC3C,IAAA,OAAO,IAAI,0BAAA,EAA2B;AAAA,EACxC;AA4BF;AAAA;AAxCsB,mBAAA,CAEJ,UAAUA,6BAAA,CAAa,OAAA;AAAA;AAFnB,mBAAA,CAIJ,UAAUA,6BAAA,CAAa,OAAA;AAyClC,MAAM,0BAAA,CAA2B;AAAA,EAAjC,WAAA,GAAA;AACL,IAAA,IAAA,CAAQ,WAAA,GAAc,EAAA;AAAA,EAAA;AAAA;AAAA,EAUtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA,EAGA,
|
|
1
|
+
{"version":3,"sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":["SocketServer","Logger","RealMoonBridgeIpcServer"],"mappings":"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","file":"moonbridge_ipc_server.js","sourcesContent":["/**\n * MoonBridge IPC 服务器入口类\n */\n\nimport { SocketServer } from '../general/transport/websocket/websocket_server';\nimport type { WebSocketServerEndpoint } from '../general/config/websocket_server_endpoint';\nimport type { ClientIdentity, ClientIdentityProvider } from './credential/client_identity';\nimport { RealMoonBridgeIpcServer } from './internal/moonbridge_ipc_server.internal';\nimport { Logger, LogSubscriber } from '../../moonbridge/logger/logger';\n\n/** 消息回复函数,用于向客户端发送响应消息 */\nexport type IpcMessageReply = (message: string) => Promise<boolean>;\n\n/** 唤醒客户端应用拦截器 */\nexport type WakeAppInterceptor = (clientIdentity: ClientIdentity) => boolean;\n\n/** 客户端断开连接的回调函数 */\nexport type DisconnectedCallback = (clientName: string) => void;\n\n/** 消息预处理器 */\nexport type MessagePreprocessor = (reply: IpcMessageReply, message: string) => boolean;\n\n/** 消息接收回调 */\nexport type OnMessageReceived = (clientName: string, type: string, message: string) => void;\n\n/**\n * MoonBridge IPC 服务器抽象类\n */\nexport abstract class MoonBridgeIpcServer {\n /** 任意 IPv4 地址 */\n static readonly anyIPv4 = SocketServer.anyIPv4;\n /** 任意 IPv6 地址 */\n static readonly anyIPv6 = SocketServer.anyIPv6;\n\n /** \n * 构建 MoonBridgeIpcServerBuilder 实例\n * @returns MoonBridgeIpcServerBuilder 实例\n */\n static builder(): MoonBridgeIpcServerBuilder {\n return new MoonBridgeIpcServerBuilder();\n }\n\n /**\n * 服务器名称 \n */\n abstract readonly serverName: string;\n\n /** \n * 启动服务器\n * @returns 是否成功启动\n */\n abstract start(): Promise<boolean>;\n\n /* \n * 停止服务器\n * @returns 是否成功停止\n */\n abstract stop(): Promise<void>;\n\n /** \n * 服务器地址 \n */\n abstract get serverAddress(): string | undefined;\n\n /** \n * 服务器端口 \n */\n abstract get serverPort(): number | undefined;\n}\n\n/**\n * MoonBridge IPC 服务器构造器\n */\nexport class MoonBridgeIpcServerBuilder {\n private _serverName = '';\n private _webSocketServerEndpoint?: WebSocketServerEndpoint;\n private _clientIdentityProviders?: ClientIdentityProvider[];\n private _wakeAppInterceptor?: WakeAppInterceptor;\n private _onClientDisconnected?: DisconnectedCallback;\n private _messagePreprocessor?: MessagePreprocessor;\n private _onMessageReceived?: OnMessageReceived;\n private _logSubscriber?: LogSubscriber;\n\n /** 设置服务器名称 */\n serverName(name: string): this {\n this._serverName = name;\n return this;\n }\n\n /** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */\n onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {\n this._webSocketServerEndpoint = endpoint;\n return this;\n }\n\n /** 设置客户端身份信息提供者列表 */\n clientIdentityProviders(providers: ClientIdentityProvider[]): this {\n this._clientIdentityProviders = providers;\n return this;\n }\n\n /** 设置唤醒客户端应用的拦截器 */\n wakeAppInterceptor(interceptor: WakeAppInterceptor): this {\n this._wakeAppInterceptor = interceptor;\n return this;\n }\n\n /** 设置客户端断开连接的回调函数 */\n onClientDisconnected(callback: DisconnectedCallback): this {\n this._onClientDisconnected = callback;\n return this;\n }\n\n /** 设置消息预处理器 */\n messagePreprocessor(preprocessor: MessagePreprocessor): this {\n this._messagePreprocessor = preprocessor;\n return this;\n }\n\n /** 设置消息接收回调 */\n onMessageReceived(callback: OnMessageReceived): this {\n this._onMessageReceived = callback;\n return this;\n }\n\n /** 设置日志订阅者 */\n logSubscriber(subscriber: LogSubscriber): this {\n this._logSubscriber = subscriber;\n return this;\n }\n\n /**\n * 构建并返回配置完成的服务器实例\n * @param makeDefault 是否将该服务器实例设置为默认服务器,默认为 false\n */\n build(makeDefault = false): MoonBridgeIpcServer {\n if (this._webSocketServerEndpoint == null) {\n throw new Error('请使用 onWebSocketChannel 设置传输配置。',);\n }\n\n // 添加日志订阅者\n if (this._logSubscriber) {\n Logger.addSubscriber(this._logSubscriber);\n }\n\n // 创建服务器实例\n const server = new RealMoonBridgeIpcServer(\n this._serverName,\n this._webSocketServerEndpoint,\n this._wakeAppInterceptor,\n this._clientIdentityProviders,\n this._onClientDisconnected,\n this._messagePreprocessor,\n this._onMessageReceived,\n );\n\n MoonBridgeIpcServerRegistry.instance.register(server);\n if (makeDefault) {\n MoonBridgeIpcServerRegistry.instance.setDefault(server);\n }\n return server;\n }\n}\n\n/**\n * MoonBridge IPC 服务端注册器\n */\nexport class MoonBridgeIpcServerRegistry {\n private static _instance?: MoonBridgeIpcServerRegistry;\n private readonly _serverMap = new Map<string, MoonBridgeIpcServer>();\n\n static get instance(): MoonBridgeIpcServerRegistry {\n return MoonBridgeIpcServerRegistry._instance ??= new MoonBridgeIpcServerRegistry();\n }\n\n setDefault(server: MoonBridgeIpcServer): void {\n this._serverMap.set('__default__', server);\n }\n\n register(server: MoonBridgeIpcServer): void {\n this._serverMap.set(server.serverName, server);\n }\n\n get(serverName?: string): MoonBridgeIpcServer | undefined {\n return this._serverMap.get(serverName ?? '__default__');\n }\n}\n"]}
|
|
@@ -25,7 +25,7 @@ class MoonBridgeIpcServerBuilder {
|
|
|
25
25
|
return this;
|
|
26
26
|
}
|
|
27
27
|
/** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */
|
|
28
|
-
|
|
28
|
+
onWebSocketChannel(endpoint) {
|
|
29
29
|
this._webSocketServerEndpoint = endpoint;
|
|
30
30
|
return this;
|
|
31
31
|
}
|
|
@@ -65,7 +65,7 @@ class MoonBridgeIpcServerBuilder {
|
|
|
65
65
|
*/
|
|
66
66
|
build(makeDefault = false) {
|
|
67
67
|
if (this._webSocketServerEndpoint == null) {
|
|
68
|
-
throw new Error("\u8BF7\u4F7F\u7528
|
|
68
|
+
throw new Error("\u8BF7\u4F7F\u7528 onWebSocketChannel \u8BBE\u7F6E\u4F20\u8F93\u914D\u7F6E\u3002");
|
|
69
69
|
}
|
|
70
70
|
if (this._logSubscriber) {
|
|
71
71
|
Logger.addSubscriber(this._logSubscriber);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":[],"mappings":";;;;AA4BO,MAAe,mBAAA,CAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxC,OAAO,OAAA,GAAsC;AAC3C,IAAA,OAAO,IAAI,0BAAA,EAA2B;AAAA,EACxC;AA4BF;AAAA;AAxCsB,mBAAA,CAEJ,UAAU,YAAA,CAAa,OAAA;AAAA;AAFnB,mBAAA,CAIJ,UAAU,YAAA,CAAa,OAAA;AAyClC,MAAM,0BAAA,CAA2B;AAAA,EAAjC,WAAA,GAAA;AACL,IAAA,IAAA,CAAQ,WAAA,GAAc,EAAA;AAAA,EAAA;AAAA;AAAA,EAUtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA,EAGA,
|
|
1
|
+
{"version":3,"sources":["../../../src/moonbridge-ipc/server/moonbridge_ipc_server.ts"],"names":[],"mappings":"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","file":"moonbridge_ipc_server.mjs","sourcesContent":["/**\n * MoonBridge IPC 服务器入口类\n */\n\nimport { SocketServer } from '../general/transport/websocket/websocket_server';\nimport type { WebSocketServerEndpoint } from '../general/config/websocket_server_endpoint';\nimport type { ClientIdentity, ClientIdentityProvider } from './credential/client_identity';\nimport { RealMoonBridgeIpcServer } from './internal/moonbridge_ipc_server.internal';\nimport { Logger, LogSubscriber } from '../../moonbridge/logger/logger';\n\n/** 消息回复函数,用于向客户端发送响应消息 */\nexport type IpcMessageReply = (message: string) => Promise<boolean>;\n\n/** 唤醒客户端应用拦截器 */\nexport type WakeAppInterceptor = (clientIdentity: ClientIdentity) => boolean;\n\n/** 客户端断开连接的回调函数 */\nexport type DisconnectedCallback = (clientName: string) => void;\n\n/** 消息预处理器 */\nexport type MessagePreprocessor = (reply: IpcMessageReply, message: string) => boolean;\n\n/** 消息接收回调 */\nexport type OnMessageReceived = (clientName: string, type: string, message: string) => void;\n\n/**\n * MoonBridge IPC 服务器抽象类\n */\nexport abstract class MoonBridgeIpcServer {\n /** 任意 IPv4 地址 */\n static readonly anyIPv4 = SocketServer.anyIPv4;\n /** 任意 IPv6 地址 */\n static readonly anyIPv6 = SocketServer.anyIPv6;\n\n /** \n * 构建 MoonBridgeIpcServerBuilder 实例\n * @returns MoonBridgeIpcServerBuilder 实例\n */\n static builder(): MoonBridgeIpcServerBuilder {\n return new MoonBridgeIpcServerBuilder();\n }\n\n /**\n * 服务器名称 \n */\n abstract readonly serverName: string;\n\n /** \n * 启动服务器\n * @returns 是否成功启动\n */\n abstract start(): Promise<boolean>;\n\n /* \n * 停止服务器\n * @returns 是否成功停止\n */\n abstract stop(): Promise<void>;\n\n /** \n * 服务器地址 \n */\n abstract get serverAddress(): string | undefined;\n\n /** \n * 服务器端口 \n */\n abstract get serverPort(): number | undefined;\n}\n\n/**\n * MoonBridge IPC 服务器构造器\n */\nexport class MoonBridgeIpcServerBuilder {\n private _serverName = '';\n private _webSocketServerEndpoint?: WebSocketServerEndpoint;\n private _clientIdentityProviders?: ClientIdentityProvider[];\n private _wakeAppInterceptor?: WakeAppInterceptor;\n private _onClientDisconnected?: DisconnectedCallback;\n private _messagePreprocessor?: MessagePreprocessor;\n private _onMessageReceived?: OnMessageReceived;\n private _logSubscriber?: LogSubscriber;\n\n /** 设置服务器名称 */\n serverName(name: string): this {\n this._serverName = name;\n return this;\n }\n\n /** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */\n onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {\n this._webSocketServerEndpoint = endpoint;\n return this;\n }\n\n /** 设置客户端身份信息提供者列表 */\n clientIdentityProviders(providers: ClientIdentityProvider[]): this {\n this._clientIdentityProviders = providers;\n return this;\n }\n\n /** 设置唤醒客户端应用的拦截器 */\n wakeAppInterceptor(interceptor: WakeAppInterceptor): this {\n this._wakeAppInterceptor = interceptor;\n return this;\n }\n\n /** 设置客户端断开连接的回调函数 */\n onClientDisconnected(callback: DisconnectedCallback): this {\n this._onClientDisconnected = callback;\n return this;\n }\n\n /** 设置消息预处理器 */\n messagePreprocessor(preprocessor: MessagePreprocessor): this {\n this._messagePreprocessor = preprocessor;\n return this;\n }\n\n /** 设置消息接收回调 */\n onMessageReceived(callback: OnMessageReceived): this {\n this._onMessageReceived = callback;\n return this;\n }\n\n /** 设置日志订阅者 */\n logSubscriber(subscriber: LogSubscriber): this {\n this._logSubscriber = subscriber;\n return this;\n }\n\n /**\n * 构建并返回配置完成的服务器实例\n * @param makeDefault 是否将该服务器实例设置为默认服务器,默认为 false\n */\n build(makeDefault = false): MoonBridgeIpcServer {\n if (this._webSocketServerEndpoint == null) {\n throw new Error('请使用 onWebSocketChannel 设置传输配置。',);\n }\n\n // 添加日志订阅者\n if (this._logSubscriber) {\n Logger.addSubscriber(this._logSubscriber);\n }\n\n // 创建服务器实例\n const server = new RealMoonBridgeIpcServer(\n this._serverName,\n this._webSocketServerEndpoint,\n this._wakeAppInterceptor,\n this._clientIdentityProviders,\n this._onClientDisconnected,\n this._messagePreprocessor,\n this._onMessageReceived,\n );\n\n MoonBridgeIpcServerRegistry.instance.register(server);\n if (makeDefault) {\n MoonBridgeIpcServerRegistry.instance.setDefault(server);\n }\n return server;\n }\n}\n\n/**\n * MoonBridge IPC 服务端注册器\n */\nexport class MoonBridgeIpcServerRegistry {\n private static _instance?: MoonBridgeIpcServerRegistry;\n private readonly _serverMap = new Map<string, MoonBridgeIpcServer>();\n\n static get instance(): MoonBridgeIpcServerRegistry {\n return MoonBridgeIpcServerRegistry._instance ??= new MoonBridgeIpcServerRegistry();\n }\n\n setDefault(server: MoonBridgeIpcServer): void {\n this._serverMap.set('__default__', server);\n }\n\n register(server: MoonBridgeIpcServer): void {\n this._serverMap.set(server.serverName, server);\n }\n\n get(serverName?: string): MoonBridgeIpcServer | undefined {\n return this._serverMap.get(serverName ?? '__default__');\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import { IpcClientSettings } from './settings/ipc_client_settings';
|
|
|
6
6
|
import { IpcMessageStrategy } from '../types/ipc_message_strategy';
|
|
7
7
|
import { IpcConnectionCompletionHandler, IpcErrorCallback } from '../types/ipc_types';
|
|
8
8
|
import { MoonBridgeIpcClient } from '../moonbridge_ipc_client';
|
|
9
|
-
import { Messenger, MessageEndpoint,
|
|
9
|
+
import { Messenger, MessageEndpoint, MessageSender } from '../types/ipc_messenger';
|
|
10
10
|
import { EventBus } from '../types/ipc_event_bus';
|
|
11
11
|
import { logger } from '../../utils/logger';
|
|
12
12
|
import { IpcClientComponentProvider } from './ipc/ipc_client_component_provider';
|
|
@@ -83,13 +83,13 @@ export class RealMoonBridgeIpcClient implements IpcClientComponentProvider, Moon
|
|
|
83
83
|
return this.ipcEventBus;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
call(target: MessageEndpoint):
|
|
86
|
+
call(target: MessageEndpoint): MessageSender {
|
|
87
87
|
const baseStrategy = this.settings.messageStrategy;
|
|
88
88
|
const strategy = new IpcMessageStrategy(
|
|
89
89
|
baseStrategy.retries,
|
|
90
90
|
baseStrategy.autoLaunch,
|
|
91
91
|
);
|
|
92
|
-
return new
|
|
92
|
+
return new RealMessageSender(
|
|
93
93
|
strategy,
|
|
94
94
|
(args, callStrategy, onError) => {
|
|
95
95
|
this.sendMessage(target, args, callStrategy, onError);
|
|
@@ -156,7 +156,7 @@ export class RealMoonBridgeIpcClient implements IpcClientComponentProvider, Moon
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
class
|
|
159
|
+
class RealMessageSender implements MessageSender {
|
|
160
160
|
private argsList: unknown[] = [];
|
|
161
161
|
private currentStrategy: IpcMessageStrategy;
|
|
162
162
|
private errorCallback?: IpcErrorCallback;
|
|
@@ -172,9 +172,9 @@ class RoutedMessageImpl implements RoutedMessage {
|
|
|
172
172
|
this.currentStrategy = strategy;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
args(args: unknown[]):
|
|
176
|
-
args(...args: unknown[]):
|
|
177
|
-
args(...argsOrList: unknown[]):
|
|
175
|
+
args(args: unknown[]): MessageSender;
|
|
176
|
+
args(...args: unknown[]): MessageSender;
|
|
177
|
+
args(...argsOrList: unknown[]): MessageSender {
|
|
178
178
|
if (argsOrList.length === 1 && Array.isArray(argsOrList[0])) {
|
|
179
179
|
this.argsList = [...(argsOrList[0] as unknown[])];
|
|
180
180
|
return this;
|
|
@@ -183,12 +183,12 @@ class RoutedMessageImpl implements RoutedMessage {
|
|
|
183
183
|
return this;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
strategy(strategy: IpcMessageStrategy):
|
|
186
|
+
strategy(strategy: IpcMessageStrategy): MessageSender {
|
|
187
187
|
this.currentStrategy = strategy;
|
|
188
188
|
return this;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
onError(onError?: IpcErrorCallback):
|
|
191
|
+
onError(onError?: IpcErrorCallback): MessageSender {
|
|
192
192
|
this.errorCallback = onError;
|
|
193
193
|
return this;
|
|
194
194
|
}
|
|
@@ -86,7 +86,7 @@ export class MoonBridgeIpcClientBuilder {
|
|
|
86
86
|
/**
|
|
87
87
|
* 设置 WebSocket 连接配置
|
|
88
88
|
*/
|
|
89
|
-
|
|
89
|
+
onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {
|
|
90
90
|
this._webSocketServerEndpoint = endpoint;
|
|
91
91
|
return this;
|
|
92
92
|
}
|
|
@@ -173,7 +173,7 @@ export class MoonBridgeIpcClientBuilder {
|
|
|
173
173
|
}
|
|
174
174
|
if (!this._webSocketServerEndpoint) {
|
|
175
175
|
throw new Error(
|
|
176
|
-
'Call
|
|
176
|
+
'Call onWebSocketChannel to set the transport configuration.',
|
|
177
177
|
);
|
|
178
178
|
}
|
|
179
179
|
|
|
@@ -19,23 +19,31 @@ export type MessageEndpoint = {
|
|
|
19
19
|
/**
|
|
20
20
|
* call API 返回的可链式请求对象。
|
|
21
21
|
*/
|
|
22
|
-
export interface
|
|
22
|
+
export interface MessageSender {
|
|
23
23
|
/**
|
|
24
24
|
* 设置参数。
|
|
25
|
-
* 支持 `args([a, b])` 或 `args(a, b)`
|
|
25
|
+
* 支持 `args([a, b])` 或 `args(a, b)` 两种写法。如果需要接收响应,可以在参数中使用 `IpcResponseCallback` 作为参数类型。
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* messenger
|
|
29
|
+
* .call({ clientName: 'client_b', moduleName: 'CallPhone', methodName: 'callWithCallback' })
|
|
30
|
+
* .args('0431-4610123', (response) => console.log('response:', response))
|
|
31
|
+
* .onError((error) => console.error('ipc error:', error))
|
|
32
|
+
* .send();
|
|
33
|
+
* ```
|
|
26
34
|
*/
|
|
27
|
-
args(args: unknown[]):
|
|
28
|
-
args(...args: unknown[]):
|
|
35
|
+
args(args: unknown[]): MessageSender;
|
|
36
|
+
args(...args: unknown[]): MessageSender;
|
|
29
37
|
|
|
30
38
|
/**
|
|
31
39
|
* 设置消息策略(重试次数、是否自动唤醒)。
|
|
32
40
|
*/
|
|
33
|
-
strategy(strategy: IpcMessageStrategy):
|
|
41
|
+
strategy(strategy: IpcMessageStrategy): MessageSender;
|
|
34
42
|
|
|
35
43
|
/**
|
|
36
44
|
* 设置 IPC 发送错误回调。
|
|
37
45
|
*/
|
|
38
|
-
onError(onError?: IpcErrorCallback):
|
|
46
|
+
onError(onError?: IpcErrorCallback): MessageSender;
|
|
39
47
|
|
|
40
48
|
/**
|
|
41
49
|
* 发送消息。
|
|
@@ -49,12 +57,20 @@ export interface Messenger {
|
|
|
49
57
|
*
|
|
50
58
|
* 示例:
|
|
51
59
|
* ```ts
|
|
60
|
+
* import { IpcResponseCallback } from 'moonbridge-ts';
|
|
61
|
+
*
|
|
62
|
+
* const onResponse = (response: unknown[]) => console.log('response:', response);
|
|
63
|
+
*
|
|
52
64
|
* messenger
|
|
53
|
-
* .call({
|
|
65
|
+
* .call({
|
|
66
|
+
* clientName: 'client_b',
|
|
67
|
+
* moduleName: 'CallPhone',
|
|
68
|
+
* methodName: 'callWithCallback',
|
|
69
|
+
* })
|
|
54
70
|
* .args('0431-4610123', onResponse)
|
|
55
71
|
* .onError(console.error)
|
|
56
72
|
* .send();
|
|
57
73
|
* ```
|
|
58
74
|
*/
|
|
59
|
-
call(target: MessageEndpoint):
|
|
75
|
+
call(target: MessageEndpoint): MessageSender;
|
|
60
76
|
}
|
|
@@ -8,10 +8,18 @@ import { Request } from '../../general/message/request';
|
|
|
8
8
|
import { Response } from '../../general/message/response';
|
|
9
9
|
import { Error } from '../../general/message/error';
|
|
10
10
|
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* 响应回调:在 IPC 通信过程中,作为接收响应结果的回调函数,在 MessageSender#args 以及定义的 RPC 服务方法中使用。
|
|
13
|
+
*/
|
|
12
14
|
export type IpcResponseCallback = (response: unknown[]) => void;
|
|
13
15
|
|
|
14
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* 错误回调:接收 IpcError。
|
|
18
|
+
*
|
|
19
|
+
* 注意:
|
|
20
|
+
* IpcErrorCallback 是用来监听 IPC 通信过程的错误,而不是用来处理业务逻辑结果的错误。
|
|
21
|
+
* 业务逻辑结果的错误应该通过 `IpcResponseCallback` 的回调参数来处理。
|
|
22
|
+
*/
|
|
15
23
|
export type IpcErrorCallback = (error: IpcError) => void;
|
|
16
24
|
|
|
17
25
|
/** 服务端进程连接完成处理器。US2:统一使用 undefined 表示无错误,不再使用 | null。 */
|
|
@@ -88,7 +88,7 @@ export class MoonBridgeIpcServerBuilder {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/** 设置 WebSocket 服务端通道监听配置;null 表示不启动 WebSocket。 */
|
|
91
|
-
|
|
91
|
+
onWebSocketChannel(endpoint: WebSocketServerEndpoint): this {
|
|
92
92
|
this._webSocketServerEndpoint = endpoint;
|
|
93
93
|
return this;
|
|
94
94
|
}
|
|
@@ -135,7 +135,7 @@ export class MoonBridgeIpcServerBuilder {
|
|
|
135
135
|
*/
|
|
136
136
|
build(makeDefault = false): MoonBridgeIpcServer {
|
|
137
137
|
if (this._webSocketServerEndpoint == null) {
|
|
138
|
-
throw new Error('请使用
|
|
138
|
+
throw new Error('请使用 onWebSocketChannel 设置传输配置。',);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
// 添加日志订阅者
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from '../../src/moonbridge-ipc/client/rpc/rpc_annotation';
|
|
7
7
|
import { IpcMessageStrategy } from '../../src/moonbridge-ipc/client/types/ipc_message_strategy';
|
|
8
8
|
import { IpcRequestJob } from '../../src/moonbridge-ipc/client/rpc/service/job/ipc_request_job';
|
|
9
|
-
import { MessageEndpoint, Messenger,
|
|
9
|
+
import { MessageEndpoint, Messenger, MessageSender } from '../../src/moonbridge-ipc/client/types/ipc_messenger';
|
|
10
10
|
|
|
11
11
|
abstract class DemoService {
|
|
12
12
|
abstract ping(message: string): IpcRequestJob;
|
|
@@ -29,11 +29,11 @@ type RoutedCall = {
|
|
|
29
29
|
function createMessengerMock(): { messenger: Messenger; calls: RoutedCall[] } {
|
|
30
30
|
const calls: RoutedCall[] = [];
|
|
31
31
|
const messenger: Messenger = {
|
|
32
|
-
call(target: MessageEndpoint):
|
|
32
|
+
call(target: MessageEndpoint): MessageSender {
|
|
33
33
|
let argsList: unknown[] = [];
|
|
34
34
|
let strategy: IpcMessageStrategy | undefined;
|
|
35
|
-
const routed:
|
|
36
|
-
args(args: unknown[] | unknown, ...rest: unknown[]):
|
|
35
|
+
const routed: MessageSender = {
|
|
36
|
+
args(args: unknown[] | unknown, ...rest: unknown[]): MessageSender {
|
|
37
37
|
if (Array.isArray(args) && rest.length === 0) {
|
|
38
38
|
argsList = [...args];
|
|
39
39
|
return routed;
|
|
@@ -41,11 +41,11 @@ function createMessengerMock(): { messenger: Messenger; calls: RoutedCall[] } {
|
|
|
41
41
|
argsList = [args, ...rest];
|
|
42
42
|
return routed;
|
|
43
43
|
},
|
|
44
|
-
strategy(nextStrategy: IpcMessageStrategy):
|
|
44
|
+
strategy(nextStrategy: IpcMessageStrategy): MessageSender {
|
|
45
45
|
strategy = nextStrategy;
|
|
46
46
|
return routed;
|
|
47
47
|
},
|
|
48
|
-
onError():
|
|
48
|
+
onError(): MessageSender {
|
|
49
49
|
return routed;
|
|
50
50
|
},
|
|
51
51
|
send(): void {
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from '../../src/moonbridge-ipc/client/rpc/rpc_annotation';
|
|
8
8
|
import { IpcMessageStrategy } from '../../src/moonbridge-ipc/client/types/ipc_message_strategy';
|
|
9
9
|
import { IpcRequestJob } from '../../src/moonbridge-ipc/client/rpc/service/job/ipc_request_job';
|
|
10
|
-
import { MessageEndpoint, Messenger,
|
|
10
|
+
import { MessageEndpoint, Messenger, MessageSender } from '../../src/moonbridge-ipc/client/types/ipc_messenger';
|
|
11
11
|
|
|
12
12
|
abstract class CallPhoneService {
|
|
13
13
|
abstract callPhone(number: string): IpcRequestJob;
|
|
@@ -51,12 +51,12 @@ type RoutedCall = {
|
|
|
51
51
|
function createMessengerMock(): { messenger: Messenger; calls: RoutedCall[] } {
|
|
52
52
|
const calls: RoutedCall[] = [];
|
|
53
53
|
const messenger: Messenger = {
|
|
54
|
-
call(target: MessageEndpoint):
|
|
54
|
+
call(target: MessageEndpoint): MessageSender {
|
|
55
55
|
let argsList: unknown[] = [];
|
|
56
56
|
let strategy: IpcMessageStrategy | undefined;
|
|
57
57
|
let onError: ((error: unknown) => void) | undefined;
|
|
58
|
-
const routed:
|
|
59
|
-
args(args: unknown[] | unknown, ...rest: unknown[]):
|
|
58
|
+
const routed: MessageSender = {
|
|
59
|
+
args(args: unknown[] | unknown, ...rest: unknown[]): MessageSender {
|
|
60
60
|
if (Array.isArray(args) && rest.length === 0) {
|
|
61
61
|
argsList = [...args];
|
|
62
62
|
return routed;
|
|
@@ -64,11 +64,11 @@ function createMessengerMock(): { messenger: Messenger; calls: RoutedCall[] } {
|
|
|
64
64
|
argsList = [args, ...rest];
|
|
65
65
|
return routed;
|
|
66
66
|
},
|
|
67
|
-
strategy(nextStrategy: IpcMessageStrategy):
|
|
67
|
+
strategy(nextStrategy: IpcMessageStrategy): MessageSender {
|
|
68
68
|
strategy = nextStrategy;
|
|
69
69
|
return routed;
|
|
70
70
|
},
|
|
71
|
-
onError(nextOnError?: (error: unknown) => void):
|
|
71
|
+
onError(nextOnError?: (error: unknown) => void): MessageSender {
|
|
72
72
|
onError = nextOnError;
|
|
73
73
|
return routed;
|
|
74
74
|
},
|