moonbridge-ts 0.6.0 → 0.6.2
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/ipc/coordinator/ipc_request_coordinator.js +1 -1
- package/dist/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.js.map +1 -1
- package/dist/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.mjs +2 -2
- package/dist/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.d.ts +4 -4
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.js.map +1 -1
- package/dist/moonbridge-ipc/client/moonbridge_ipc_client.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.d.ts +41 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.d.ts.map +1 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.js +31 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.js.map +1 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.mjs +27 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.mjs.map +1 -0
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.d.ts +1 -1
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.js +9 -2
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.js.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.mjs +8 -1
- package/dist/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.d.ts +1 -19
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.js +6 -32
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.js.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.mjs +7 -32
- package/dist/moonbridge-ipc/client/rpc/rpc_annotation.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_service_factory.d.ts +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_service_factory.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_service_factory.js.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/rpc_service_factory.mjs.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/service/job/ipc_request_job.d.ts +6 -0
- package/dist/moonbridge-ipc/client/rpc/service/job/ipc_request_job.d.ts.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/service/job/ipc_request_job.js.map +1 -1
- package/dist/moonbridge-ipc/client/rpc/service/job/ipc_request_job.mjs.map +1 -1
- package/dist/moonbridge-ipc/general/transport/websocket/websocket_client.js +1 -2
- package/dist/moonbridge-ipc/general/transport/websocket/websocket_client.js.map +1 -1
- package/dist/moonbridge-ipc/general/transport/websocket/websocket_client.mjs +1 -2
- package/dist/moonbridge-ipc/general/transport/websocket/websocket_client.mjs.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.d.ts.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.js +1 -3
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.js.map +1 -1
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.mjs +1 -3
- package/dist/moonbridge-ipc/server/moonbridge_ipc_server.mjs.map +1 -1
- package/dist/moonbridge-ipc/utils/string_utils.d.ts +12 -3
- package/dist/moonbridge-ipc/utils/string_utils.d.ts.map +1 -1
- package/dist/moonbridge-ipc/utils/string_utils.js +18 -8
- package/dist/moonbridge-ipc/utils/string_utils.js.map +1 -1
- package/dist/moonbridge-ipc/utils/string_utils.mjs +18 -8
- package/dist/moonbridge-ipc/utils/string_utils.mjs.map +1 -1
- package/package.json +2 -2
- package/src/moonbridge/logger/logger.ts +1 -7
- package/src/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.ts +2 -2
- package/src/moonbridge-ipc/client/moonbridge_ipc_client.ts +20 -4
- package/src/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.ts +70 -0
- package/src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts +21 -5
- package/src/moonbridge-ipc/client/rpc/rpc_annotation.ts +5 -59
- package/src/moonbridge-ipc/client/rpc/rpc_service_factory.ts +1 -1
- package/src/moonbridge-ipc/client/rpc/service/job/ipc_request_job.ts +10 -0
- package/src/moonbridge-ipc/general/transport/websocket/websocket_client.ts +2 -2
- package/src/moonbridge-ipc/server/internal/moonbridge_ipc_server.internal.ts +2 -0
- package/src/moonbridge-ipc/server/moonbridge_ipc_server.ts +15 -4
- package/src/moonbridge-ipc/utils/string_utils.ts +17 -13
|
@@ -85,7 +85,7 @@ class IpcRequestCoordinator {
|
|
|
85
85
|
}
|
|
86
86
|
generateRequestId(fromClient, toClient, moduleName, methodName) {
|
|
87
87
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
88
|
-
const random = string_utils.
|
|
88
|
+
const random = string_utils.StringUtils.random(6);
|
|
89
89
|
return `${fromClient}~${toClient}|${moduleName}@${methodName}|${timestamp}-${random}`;
|
|
90
90
|
}
|
|
91
91
|
generateCallbackId(requestId, index) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.ts"],"names":["Request","logger","IpcError","
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.ts"],"names":["Request","logger","IpcError","StringUtils"],"mappings":"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","file":"ipc_request_coordinator.js","sourcesContent":["// 对应:\n// moonbridge-ipc-flutter/lib/client/internal/ipc/coordinator/ipc_request_coordinator.dart\n//\n// IPC 客户端请求与响应协调器。\n\nimport { IpcClientComponentProvider } from '../ipc_client_component_provider';\nimport { IpcErrorCallback, IpcResponseCallback } from '../../../types/ipc_types';\nimport { Request } from '../../../../general/message/request';\nimport { Response } from '../../../../general/message/response';\nimport { Error } from '../../../../general/message/error';\nimport { IpcError } from '../../../../general/error/ipc_error';\nimport { logger } from '../../../../utils/logger';\nimport { StringUtils } from '../../../../utils/string_utils';\n\n/**\n * IPC 客户端请求与响应协调器类\n * 负责构建 IPC 请求的参数并管理相应的回调处理。\n */\nexport class IpcRequestCoordinator {\n private readonly clientName: string;\n\n private readonly responseCallbacks: Map<\n string,\n Map<string, IpcResponseCallback>\n > = new Map();\n\n private readonly errorCallbacks: Map<string, IpcErrorCallback> = new Map();\n\n constructor(componentProvider: IpcClientComponentProvider) {\n this.clientName = componentProvider.settings.clientName;\n }\n\n initialize(): void {\n // 与 Dart 保持一致,当前无初始化逻辑。\n }\n\n prepareAndCreateIpcRequest(options: {\n toClient: string;\n moduleName: string;\n methodName: string;\n arguments?: Array<unknown>;\n onError?: IpcErrorCallback;\n }): Request {\n const {\n toClient,\n moduleName,\n methodName,\n arguments: args = [],\n onError,\n } = options;\n\n const requestId = this.generateRequestId(\n this.clientName,\n toClient,\n moduleName,\n methodName,\n );\n\n if (onError) {\n this.errorCallbacks.set(requestId, onError);\n }\n\n const ipcArgs: Array<unknown> = [];\n const callbackMap: Map<string, IpcResponseCallback> = new Map();\n\n for (let i = 0; i < args.length; i += 1) {\n const arg = args[i];\n let ipcArg = arg;\n\n if (typeof arg === 'function') {\n if (callbackMap.size === 0) {\n this.responseCallbacks.set(requestId, callbackMap);\n }\n\n const callbackId = this.generateCallbackId(requestId, i);\n ipcArg = callbackId;\n callbackMap.set(callbackId, arg as IpcResponseCallback);\n }\n\n ipcArgs.push(ipcArg);\n }\n\n return new Request(\n requestId,\n this.clientName,\n toClient,\n moduleName,\n methodName,\n ipcArgs,\n );\n }\n\n onResponse(response: Response): void {\n const callbackMap = this.responseCallbacks.get(response.requestId);\n if (response.finished) {\n this.responseCallbacks.delete(response.requestId);\n this.errorCallbacks.delete(response.requestId);\n }\n\n if (!callbackMap) {\n logger.error('接收到响应消息但回调失败,callbackMap 为空!');\n return;\n }\n\n const callback = callbackMap.get(response.callbackId);\n if (!callback) {\n logger.error('接收到响应消息但回调失败,callback 为空!');\n return;\n }\n\n callback(response.response);\n }\n\n onError(error: Error): void {\n logger.error(`接收到错误消息,error: ${String(error)}.`);\n\n const errorCallback = this.errorCallbacks.get(error.requestId);\n this.errorCallbacks.delete(error.requestId);\n this.responseCallbacks.delete(error.requestId);\n\n if (errorCallback) {\n errorCallback(\n new IpcError(error.code, error.message ?? undefined, error.userInfo ?? undefined),\n );\n }\n }\n\n private generateRequestId(\n fromClient: string,\n toClient: string,\n moduleName: string,\n methodName: string,\n ): string {\n const timestamp = new Date().toISOString();\n const random = StringUtils.random(6);\n return `${fromClient}~${toClient}|${moduleName}@${methodName}|${timestamp}-${random}`;\n }\n\n private generateCallbackId(requestId: string, index: number): string {\n if (requestId.length < 6) {\n return `_$_mb_callback_$_[${index}]`;\n }\n const suffix = requestId.slice(-6);\n return `_$_mb_callback_$_[${index}]-${suffix}`;\n }\n}\n\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Request } from '../../../../general/message/request';
|
|
2
2
|
import { IpcError } from '../../../../general/error/ipc_error';
|
|
3
3
|
import { logger } from '../../../../utils/logger';
|
|
4
|
-
import {
|
|
4
|
+
import { StringUtils } from '../../../../utils/string_utils';
|
|
5
5
|
|
|
6
6
|
class IpcRequestCoordinator {
|
|
7
7
|
constructor(componentProvider) {
|
|
@@ -83,7 +83,7 @@ class IpcRequestCoordinator {
|
|
|
83
83
|
}
|
|
84
84
|
generateRequestId(fromClient, toClient, moduleName, methodName) {
|
|
85
85
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
86
|
-
const random =
|
|
86
|
+
const random = StringUtils.random(6);
|
|
87
87
|
return `${fromClient}~${toClient}|${moduleName}@${methodName}|${timestamp}-${random}`;
|
|
88
88
|
}
|
|
89
89
|
generateCallbackId(requestId, index) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/moonbridge-ipc/client/internal/ipc/coordinator/ipc_request_coordinator.ts"],"names":[],"mappings":"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","file":"ipc_request_coordinator.mjs","sourcesContent":["// 对应:\n// moonbridge-ipc-flutter/lib/client/internal/ipc/coordinator/ipc_request_coordinator.dart\n//\n// IPC 客户端请求与响应协调器。\n\nimport { IpcClientComponentProvider } from '../ipc_client_component_provider';\nimport { IpcErrorCallback, IpcResponseCallback } from '../../../types/ipc_types';\nimport { Request } from '../../../../general/message/request';\nimport { Response } from '../../../../general/message/response';\nimport { Error } from '../../../../general/message/error';\nimport { IpcError } from '../../../../general/error/ipc_error';\nimport { logger } from '../../../../utils/logger';\nimport { StringUtils } from '../../../../utils/string_utils';\n\n/**\n * IPC 客户端请求与响应协调器类\n * 负责构建 IPC 请求的参数并管理相应的回调处理。\n */\nexport class IpcRequestCoordinator {\n private readonly clientName: string;\n\n private readonly responseCallbacks: Map<\n string,\n Map<string, IpcResponseCallback>\n > = new Map();\n\n private readonly errorCallbacks: Map<string, IpcErrorCallback> = new Map();\n\n constructor(componentProvider: IpcClientComponentProvider) {\n this.clientName = componentProvider.settings.clientName;\n }\n\n initialize(): void {\n // 与 Dart 保持一致,当前无初始化逻辑。\n }\n\n prepareAndCreateIpcRequest(options: {\n toClient: string;\n moduleName: string;\n methodName: string;\n arguments?: Array<unknown>;\n onError?: IpcErrorCallback;\n }): Request {\n const {\n toClient,\n moduleName,\n methodName,\n arguments: args = [],\n onError,\n } = options;\n\n const requestId = this.generateRequestId(\n this.clientName,\n toClient,\n moduleName,\n methodName,\n );\n\n if (onError) {\n this.errorCallbacks.set(requestId, onError);\n }\n\n const ipcArgs: Array<unknown> = [];\n const callbackMap: Map<string, IpcResponseCallback> = new Map();\n\n for (let i = 0; i < args.length; i += 1) {\n const arg = args[i];\n let ipcArg = arg;\n\n if (typeof arg === 'function') {\n if (callbackMap.size === 0) {\n this.responseCallbacks.set(requestId, callbackMap);\n }\n\n const callbackId = this.generateCallbackId(requestId, i);\n ipcArg = callbackId;\n callbackMap.set(callbackId, arg as IpcResponseCallback);\n }\n\n ipcArgs.push(ipcArg);\n }\n\n return new Request(\n requestId,\n this.clientName,\n toClient,\n moduleName,\n methodName,\n ipcArgs,\n );\n }\n\n onResponse(response: Response): void {\n const callbackMap = this.responseCallbacks.get(response.requestId);\n if (response.finished) {\n this.responseCallbacks.delete(response.requestId);\n this.errorCallbacks.delete(response.requestId);\n }\n\n if (!callbackMap) {\n logger.error('接收到响应消息但回调失败,callbackMap 为空!');\n return;\n }\n\n const callback = callbackMap.get(response.callbackId);\n if (!callback) {\n logger.error('接收到响应消息但回调失败,callback 为空!');\n return;\n }\n\n callback(response.response);\n }\n\n onError(error: Error): void {\n logger.error(`接收到错误消息,error: ${String(error)}.`);\n\n const errorCallback = this.errorCallbacks.get(error.requestId);\n this.errorCallbacks.delete(error.requestId);\n this.responseCallbacks.delete(error.requestId);\n\n if (errorCallback) {\n errorCallback(\n new IpcError(error.code, error.message ?? undefined, error.userInfo ?? undefined),\n );\n }\n }\n\n private generateRequestId(\n fromClient: string,\n toClient: string,\n moduleName: string,\n methodName: string,\n ): string {\n const timestamp = new Date().toISOString();\n const random = StringUtils.random(6);\n return `${fromClient}~${toClient}|${moduleName}@${methodName}|${timestamp}-${random}`;\n }\n\n private generateCallbackId(requestId: string, index: number): string {\n if (requestId.length < 6) {\n return `_$_mb_callback_$_[${index}]`;\n }\n const suffix = requestId.slice(-6);\n return `_$_mb_callback_$_[${index}]-${suffix}`;\n }\n}\n\n"]}
|
|
@@ -66,7 +66,7 @@ export declare class MoonBridgeIpcClientBuilder {
|
|
|
66
66
|
/**
|
|
67
67
|
* 设置 WebSocket 连接配置
|
|
68
68
|
*/
|
|
69
|
-
useWebSocketChannel(endpoint: WebSocketServerEndpoint
|
|
69
|
+
useWebSocketChannel(endpoint: WebSocketServerEndpoint): this;
|
|
70
70
|
/**
|
|
71
71
|
* 设置服务器应用路径
|
|
72
72
|
*/
|
|
@@ -90,16 +90,16 @@ export declare class MoonBridgeIpcClientBuilder {
|
|
|
90
90
|
/**
|
|
91
91
|
* 设置消息拦截器
|
|
92
92
|
*/
|
|
93
|
-
messageInterceptor(interceptor
|
|
93
|
+
messageInterceptor(interceptor: MessageInterceptor): this;
|
|
94
94
|
/**
|
|
95
95
|
* 设置连接状态观察者
|
|
96
96
|
*/
|
|
97
|
-
connectionObserver(observer
|
|
97
|
+
connectionObserver(observer: ConnectionObserver): this;
|
|
98
98
|
/**
|
|
99
99
|
* 注入应用启动器
|
|
100
100
|
* 用于覆盖默认的唤醒方式(如 wps-addin 通过 URL Scheme 唤起)
|
|
101
101
|
*/
|
|
102
|
-
appLauncher(launcher
|
|
102
|
+
appLauncher(launcher: AppLauncher): this;
|
|
103
103
|
/**
|
|
104
104
|
* 构建客户端实例并可选注册为默认客户端。
|
|
105
105
|
*/
|
|
@@ -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;AAG9D;;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;IAInC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":["IpcClientSettings","RealMoonBridgeIpcClient"],"mappings":";;;;;AAmBO,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,EAgBtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,QAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":["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';\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\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 useWebSocketChannel(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 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 useWebSocketChannel to set the transport configuration.',\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/moonbridge-ipc/client/moonbridge_ipc_client.ts"],"names":[],"mappings":";;;AAmBO,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,EAgBtB,WAAW,IAAA,EAAoB;AAC7B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,QAAA,
|
|
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';\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\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 useWebSocketChannel(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 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 useWebSocketChannel to set the transport configuration.',\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"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 远程方法元数据。
|
|
3
|
+
*/
|
|
4
|
+
export interface RemoteMethodMetadata {
|
|
5
|
+
/** 远程模块名称。 */
|
|
6
|
+
module?: string;
|
|
7
|
+
/** 远程方法名称。 */
|
|
8
|
+
method?: string;
|
|
9
|
+
/** 重试次数。 */
|
|
10
|
+
retries?: number;
|
|
11
|
+
/** 是否自动启动目标应用。 */
|
|
12
|
+
autoLaunch?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 远程服务元数据。
|
|
16
|
+
*/
|
|
17
|
+
export interface RemoteServiceMetadata {
|
|
18
|
+
clientName?: string;
|
|
19
|
+
methods: Map<string, RemoteMethodMetadata>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 用于创建 RPC 代理服务的构造函数类型。
|
|
23
|
+
*/
|
|
24
|
+
export type RpcServiceType<T> = abstract new (...args: never[]) => T;
|
|
25
|
+
/**
|
|
26
|
+
* 用于创建 RPC 代理服务的构造函数类型。
|
|
27
|
+
*/
|
|
28
|
+
export type ServiceConstructor = abstract new (...args: never[]) => unknown;
|
|
29
|
+
/**
|
|
30
|
+
* 确保远程服务元数据。
|
|
31
|
+
*/
|
|
32
|
+
export declare function registerServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata;
|
|
33
|
+
/**
|
|
34
|
+
* 确保远程方法元数据。
|
|
35
|
+
*/
|
|
36
|
+
export declare function registerMethodMetadata(ctor: ServiceConstructor, propertyKey: string): RemoteMethodMetadata;
|
|
37
|
+
/**
|
|
38
|
+
* 获取远程服务元数据。
|
|
39
|
+
*/
|
|
40
|
+
export declare function getRemoteServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata | undefined;
|
|
41
|
+
//# sourceMappingURL=rpc_annotation_registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc_annotation_registry.d.ts","sourceRoot":"","sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAO5E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,CAOvF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAS1G;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,CAGpG"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const serviceMetadataMap = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
function registerServiceMetadata(ctor) {
|
|
5
|
+
let meta = serviceMetadataMap.get(ctor);
|
|
6
|
+
if (!meta) {
|
|
7
|
+
meta = { methods: /* @__PURE__ */ new Map() };
|
|
8
|
+
serviceMetadataMap.set(ctor, meta);
|
|
9
|
+
}
|
|
10
|
+
return meta;
|
|
11
|
+
}
|
|
12
|
+
function registerMethodMetadata(ctor, propertyKey) {
|
|
13
|
+
const serviceMeta = registerServiceMetadata(ctor);
|
|
14
|
+
const key = String(propertyKey);
|
|
15
|
+
let methodMeta = serviceMeta.methods.get(key);
|
|
16
|
+
if (!methodMeta) {
|
|
17
|
+
methodMeta = {};
|
|
18
|
+
serviceMeta.methods.set(key, methodMeta);
|
|
19
|
+
}
|
|
20
|
+
return methodMeta;
|
|
21
|
+
}
|
|
22
|
+
function getRemoteServiceMetadata(ctor) {
|
|
23
|
+
const meta = serviceMetadataMap.get(ctor);
|
|
24
|
+
return meta;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.getRemoteServiceMetadata = getRemoteServiceMetadata;
|
|
28
|
+
exports.registerMethodMetadata = registerMethodMetadata;
|
|
29
|
+
exports.registerServiceMetadata = registerServiceMetadata;
|
|
30
|
+
//# sourceMappingURL=rpc_annotation_registry.js.map
|
|
31
|
+
//# sourceMappingURL=rpc_annotation_registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.ts"],"names":[],"mappings":";;AAmCA,MAAM,kBAAA,uBAAyB,OAAA,EAAmD;AAK3E,SAAS,wBAAwB,IAAA,EAAiD;AACrF,EAAA,IAAI,IAAA,GAAO,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA;AACtC,EAAA,IAAI,CAAC,IAAA,EAAM;AACP,IAAA,IAAA,GAAO,EAAE,OAAA,kBAAS,IAAI,GAAA,EAAkC,EAAE;AAC1D,IAAA,kBAAA,CAAmB,GAAA,CAAI,MAAM,IAAI,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAA;AACX;AAKO,SAAS,sBAAA,CAAuB,MAA0B,WAAA,EAA2C;AACxG,EAAA,MAAM,WAAA,GAAc,wBAAwB,IAAI,CAAA;AAChD,EAAA,MAAM,GAAA,GAAM,OAAO,WAAW,CAAA;AAC9B,EAAA,IAAI,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC5C,EAAA,IAAI,CAAC,UAAA,EAAY;AACb,IAAA,UAAA,GAAa,EAAC;AACd,IAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,UAAU,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,UAAA;AACX;AAKO,SAAS,yBAAyB,IAAA,EAA6D;AAClG,EAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,GAAA,CAAI,IAA0B,CAAA;AAC9D,EAAA,OAAO,IAAA;AACX","file":"rpc_annotation_registry.js","sourcesContent":["/**\n * 远程方法元数据。\n */\nexport interface RemoteMethodMetadata {\n /** 远程模块名称。 */\n module?: string;\n /** 远程方法名称。 */\n method?: string;\n /** 重试次数。 */\n retries?: number;\n /** 是否自动启动目标应用。 */\n autoLaunch?: boolean;\n}\n\n/**\n * 远程服务元数据。\n */\nexport interface RemoteServiceMetadata {\n clientName?: string;\n methods: Map<string, RemoteMethodMetadata>;\n}\n\n/**\n * 用于创建 RPC 代理服务的构造函数类型。\n */\nexport type RpcServiceType<T> = abstract new (...args: never[]) => T;\n\n/**\n * 用于创建 RPC 代理服务的构造函数类型。\n */\nexport type ServiceConstructor = abstract new (...args: never[]) => unknown;\n\n/**\n * 远程服务元数据映射。\n */\nconst serviceMetadataMap = new WeakMap<ServiceConstructor, RemoteServiceMetadata>();\n\n/**\n * 确保远程服务元数据。\n */\nexport function registerServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata {\n let meta = serviceMetadataMap.get(ctor);\n if (!meta) {\n meta = { methods: new Map<string, RemoteMethodMetadata>() };\n serviceMetadataMap.set(ctor, meta);\n }\n return meta;\n}\n\n/**\n * 确保远程方法元数据。\n */\nexport function registerMethodMetadata(ctor: ServiceConstructor, propertyKey: string): RemoteMethodMetadata {\n const serviceMeta = registerServiceMetadata(ctor);\n const key = String(propertyKey);\n let methodMeta = serviceMeta.methods.get(key);\n if (!methodMeta) {\n methodMeta = {};\n serviceMeta.methods.set(key, methodMeta);\n }\n return methodMeta;\n}\n\n/**\n * 获取远程服务元数据。\n */\nexport function getRemoteServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata | undefined {\n const meta = serviceMetadataMap.get(ctor as ServiceConstructor);\n return meta;\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const serviceMetadataMap = /* @__PURE__ */ new WeakMap();
|
|
2
|
+
function registerServiceMetadata(ctor) {
|
|
3
|
+
let meta = serviceMetadataMap.get(ctor);
|
|
4
|
+
if (!meta) {
|
|
5
|
+
meta = { methods: /* @__PURE__ */ new Map() };
|
|
6
|
+
serviceMetadataMap.set(ctor, meta);
|
|
7
|
+
}
|
|
8
|
+
return meta;
|
|
9
|
+
}
|
|
10
|
+
function registerMethodMetadata(ctor, propertyKey) {
|
|
11
|
+
const serviceMeta = registerServiceMetadata(ctor);
|
|
12
|
+
const key = String(propertyKey);
|
|
13
|
+
let methodMeta = serviceMeta.methods.get(key);
|
|
14
|
+
if (!methodMeta) {
|
|
15
|
+
methodMeta = {};
|
|
16
|
+
serviceMeta.methods.set(key, methodMeta);
|
|
17
|
+
}
|
|
18
|
+
return methodMeta;
|
|
19
|
+
}
|
|
20
|
+
function getRemoteServiceMetadata(ctor) {
|
|
21
|
+
const meta = serviceMetadataMap.get(ctor);
|
|
22
|
+
return meta;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { getRemoteServiceMetadata, registerMethodMetadata, registerServiceMetadata };
|
|
26
|
+
//# sourceMappingURL=rpc_annotation_registry.mjs.map
|
|
27
|
+
//# sourceMappingURL=rpc_annotation_registry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_annotation_registry.ts"],"names":[],"mappings":"AAmCA,MAAM,kBAAA,uBAAyB,OAAA,EAAmD;AAK3E,SAAS,wBAAwB,IAAA,EAAiD;AACrF,EAAA,IAAI,IAAA,GAAO,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA;AACtC,EAAA,IAAI,CAAC,IAAA,EAAM;AACP,IAAA,IAAA,GAAO,EAAE,OAAA,kBAAS,IAAI,GAAA,EAAkC,EAAE;AAC1D,IAAA,kBAAA,CAAmB,GAAA,CAAI,MAAM,IAAI,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAA;AACX;AAKO,SAAS,sBAAA,CAAuB,MAA0B,WAAA,EAA2C;AACxG,EAAA,MAAM,WAAA,GAAc,wBAAwB,IAAI,CAAA;AAChD,EAAA,MAAM,GAAA,GAAM,OAAO,WAAW,CAAA;AAC9B,EAAA,IAAI,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC5C,EAAA,IAAI,CAAC,UAAA,EAAY;AACb,IAAA,UAAA,GAAa,EAAC;AACd,IAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,UAAU,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,UAAA;AACX;AAKO,SAAS,yBAAyB,IAAA,EAA6D;AAClG,EAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,GAAA,CAAI,IAA0B,CAAA;AAC9D,EAAA,OAAO,IAAA;AACX","file":"rpc_annotation_registry.mjs","sourcesContent":["/**\n * 远程方法元数据。\n */\nexport interface RemoteMethodMetadata {\n /** 远程模块名称。 */\n module?: string;\n /** 远程方法名称。 */\n method?: string;\n /** 重试次数。 */\n retries?: number;\n /** 是否自动启动目标应用。 */\n autoLaunch?: boolean;\n}\n\n/**\n * 远程服务元数据。\n */\nexport interface RemoteServiceMetadata {\n clientName?: string;\n methods: Map<string, RemoteMethodMetadata>;\n}\n\n/**\n * 用于创建 RPC 代理服务的构造函数类型。\n */\nexport type RpcServiceType<T> = abstract new (...args: never[]) => T;\n\n/**\n * 用于创建 RPC 代理服务的构造函数类型。\n */\nexport type ServiceConstructor = abstract new (...args: never[]) => unknown;\n\n/**\n * 远程服务元数据映射。\n */\nconst serviceMetadataMap = new WeakMap<ServiceConstructor, RemoteServiceMetadata>();\n\n/**\n * 确保远程服务元数据。\n */\nexport function registerServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata {\n let meta = serviceMetadataMap.get(ctor);\n if (!meta) {\n meta = { methods: new Map<string, RemoteMethodMetadata>() };\n serviceMetadataMap.set(ctor, meta);\n }\n return meta;\n}\n\n/**\n * 确保远程方法元数据。\n */\nexport function registerMethodMetadata(ctor: ServiceConstructor, propertyKey: string): RemoteMethodMetadata {\n const serviceMeta = registerServiceMetadata(ctor);\n const key = String(propertyKey);\n let methodMeta = serviceMeta.methods.get(key);\n if (!methodMeta) {\n methodMeta = {};\n serviceMeta.methods.set(key, methodMeta);\n }\n return methodMeta;\n}\n\n/**\n * 获取远程服务元数据。\n */\nexport function getRemoteServiceMetadata(ctor: ServiceConstructor): RemoteServiceMetadata | undefined {\n const meta = serviceMetadataMap.get(ctor as ServiceConstructor);\n return meta;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_service_proxy.d.ts","sourceRoot":"","sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,
|
|
1
|
+
{"version":3,"file":"rpc_service_proxy.d.ts","sourceRoot":"","sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAkD,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3G;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAC9B,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,GAAG,SAAS,CAoEf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var ipc_message_strategy = require('../../types/ipc_message_strategy');
|
|
4
|
-
var
|
|
4
|
+
var rpc_annotation_registry = require('./rpc_annotation_registry');
|
|
5
5
|
var ipc_request_job = require('../service/job/ipc_request_job');
|
|
6
6
|
|
|
7
7
|
function createRpcService(messenger, serviceType, clientName) {
|
|
8
|
-
const serviceMeta =
|
|
8
|
+
const serviceMeta = rpc_annotation_registry.getRemoteServiceMetadata(serviceType);
|
|
9
9
|
if (!serviceMeta) {
|
|
10
10
|
return void 0;
|
|
11
11
|
}
|
|
@@ -64,10 +64,17 @@ class IpcRequestJobImpl extends ipc_request_job.IpcRequestJob {
|
|
|
64
64
|
this.args = args;
|
|
65
65
|
this.strategy = strategy;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 设置 IPC 错误回调。
|
|
69
|
+
*/
|
|
67
70
|
onIpcError(errorCallback) {
|
|
68
71
|
this.errorCallback = errorCallback;
|
|
69
72
|
return this;
|
|
70
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* 发送 IPC 请求。
|
|
76
|
+
* 通过 messenger 发送 IPC 请求。
|
|
77
|
+
*/
|
|
71
78
|
send() {
|
|
72
79
|
this.messenger.call(this.target).args(this.args).strategy(this.strategy).onError(this.errorCallback).send();
|
|
73
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":["getRemoteServiceMetadata","IpcMessageStrategy","IpcRequestJob"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":["getRemoteServiceMetadata","IpcMessageStrategy","IpcRequestJob"],"mappings":";;;;;;AASO,SAAS,gBAAA,CACd,SAAA,EACA,WAAA,EACA,UAAA,EACe;AAEf,EAAA,MAAM,WAAA,GAAcA,iDAAyB,WAAW,CAAA;AACxD,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,kBAAA,GAAqB,kCAAc,WAAA,CAAY,UAAA;AACrD,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAkC;AACxD,EAAA,KAAA,MAAW,CAAC,UAAA,EAAY,UAAU,KAAK,WAAA,CAAY,OAAA,CAAQ,SAAQ,EAAG;AACpE,IAAA,IAAI,CAAC,UAAA,CAAW,MAAA,IAAU,CAAC,WAAW,MAAA,EAAQ;AAC5C,MAAA;AAAA,IACF;AACA,IAAA,SAAA,CAAU,GAAA,CAAI,YAAY,UAAU,CAAA;AAAA,EACtC;AAGA,EAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,QAAQ,IAAI,KAAA;AAAA,IAChB,EAAC;AAAA,IACD;AAAA,MACE,GAAA,CAAI,SAAS,IAAA,EAAe;AAE1B,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,OAAO,MAAA;AAAA,QACT;AAGA,QAAA,MAAM,UAAA,GAAa,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AACrC,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,OAAO,MAAA;AAAA,QACT;AAGA,QAAA,OAAO,IAAI,IAAA,KAAmC;AAzDtD,UAAA,IAAA,EAAA,EAAA,EAAA;AA0DU,UAAA,MAAM,WAAW,IAAIC,uCAAA;AAAA,YAAA,CACnB,EAAA,GAAA,UAAA,CAAW,YAAX,IAAA,GAAA,EAAA,GAAsB,CAAA;AAAA,YAAA,CACtB,EAAA,GAAA,UAAA,CAAW,eAAX,IAAA,GAAA,EAAA,GAAyB;AAAA,WAC3B;AAGA,UAAA,OAAO,IAAI,iBAAA;AAAA,YACT,SAAA;AAAA,YACA;AAAA,cACE,UAAA,EAAY,kBAAA;AAAA,cACZ,YAAY,UAAA,CAAW,MAAA;AAAA,cACvB,YAAY,UAAA,CAAW;AAAA,aACzB;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,MACF;AAAA;AACF,GACF;AAGA,EAAA,OAAO,KAAA;AACT;AAKA,MAAM,0BAA0BC,6BAAA,CAAc;AAAA,EAG5C,WAAA,CACmB,SAAA,EACA,MAAA,EACA,IAAA,EACA,QAAA,EACjB;AACA,IAAA,KAAA,EAAM;AALW,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA,EAGnB;AAAA;AAAA;AAAA;AAAA,EAKS,WAAW,aAAA,EAAiD;AACnE,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMS,IAAA,GAAa;AACpB,IAAA,IAAA,CAAK,UACF,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,CAChB,KAAK,IAAA,CAAK,IAAI,CAAA,CACd,QAAA,CAAS,KAAK,QAAQ,CAAA,CACtB,QAAQ,IAAA,CAAK,aAAa,EAC1B,IAAA,EAAK;AAAA,EACV;AACF","file":"rpc_service_proxy.js","sourcesContent":["import { IpcMessageStrategy } from '../../types/ipc_message_strategy';\nimport { MessageEndpoint, Messenger } from '../../types/ipc_messenger';\nimport { IpcErrorCallback } from '../../types/ipc_types';\nimport { getRemoteServiceMetadata, RemoteMethodMetadata, RpcServiceType } from './rpc_annotation_registry';\nimport { IpcRequestJob } from '../service/job/ipc_request_job';\n\n/**\n * 基于装饰器元数据创建 RPC 服务代理。\n */\nexport function createRpcService<T>(\n messenger: Messenger,\n serviceType: RpcServiceType<T>,\n clientName?: string,\n): T | undefined {\n // 获取服务元数据\n const serviceMeta = getRemoteServiceMetadata(serviceType);\n if (!serviceMeta) {\n return undefined;\n }\n\n // 解析客户端名称\n const resolvedClientName = clientName ?? serviceMeta.clientName;\n if (!resolvedClientName) {\n return undefined;\n }\n\n // 构建方法映射\n const methodMap = new Map<string, RemoteMethodMetadata>();\n for (const [methodName, methodMeta] of serviceMeta.methods.entries()) {\n if (!methodMeta.module || !methodMeta.method) {\n continue;\n }\n methodMap.set(methodName, methodMeta);\n }\n\n // 如果方法映射为空,则返回 undefined\n if (methodMap.size === 0) {\n return undefined;\n }\n\n // 创建代理对象\n const proxy = new Proxy(\n {},\n {\n get(_target, prop): unknown {\n // eslint-disable-next-line no-restricted-syntax -- typeof 判定仅用于运行时类型收窄\n if (typeof prop !== 'string') {\n return undefined;\n }\n\n // 获取方法元数据\n const methodMeta = methodMap.get(prop);\n if (!methodMeta) {\n return undefined;\n }\n\n // 返回方法代理\n return (...args: unknown[]): IpcRequestJob => {\n const strategy = new IpcMessageStrategy(\n methodMeta.retries ?? 1,\n methodMeta.autoLaunch ?? true,\n );\n\n // 创建 IPC 请求任务\n return new IpcRequestJobImpl(\n messenger,\n {\n clientName: resolvedClientName,\n moduleName: methodMeta.module!,\n methodName: methodMeta.method!,\n },\n args,\n strategy,\n );\n };\n },\n },\n );\n\n // 返回代理对象\n return proxy as T;\n}\n\n/**\n * IPC 请求任务实现。\n */\nclass IpcRequestJobImpl extends IpcRequestJob {\n private errorCallback?: IpcErrorCallback;\n\n constructor(\n private readonly messenger: Messenger,\n private readonly target: MessageEndpoint,\n private readonly args: unknown[],\n private readonly strategy: IpcMessageStrategy,\n ) {\n super();\n }\n\n /**\n * 设置 IPC 错误回调。\n */\n override onIpcError(errorCallback?: IpcErrorCallback): IpcRequestJob {\n this.errorCallback = errorCallback;\n return this;\n }\n\n /**\n * 发送 IPC 请求。\n * 通过 messenger 发送 IPC 请求。\n */\n override send(): void {\n this.messenger\n .call(this.target)\n .args(this.args)\n .strategy(this.strategy)\n .onError(this.errorCallback)\n .send();\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IpcMessageStrategy } from '../../types/ipc_message_strategy';
|
|
2
|
-
import { getRemoteServiceMetadata } from '
|
|
2
|
+
import { getRemoteServiceMetadata } from './rpc_annotation_registry';
|
|
3
3
|
import { IpcRequestJob } from '../service/job/ipc_request_job';
|
|
4
4
|
|
|
5
5
|
function createRpcService(messenger, serviceType, clientName) {
|
|
@@ -62,10 +62,17 @@ class IpcRequestJobImpl extends IpcRequestJob {
|
|
|
62
62
|
this.args = args;
|
|
63
63
|
this.strategy = strategy;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* 设置 IPC 错误回调。
|
|
67
|
+
*/
|
|
65
68
|
onIpcError(errorCallback) {
|
|
66
69
|
this.errorCallback = errorCallback;
|
|
67
70
|
return this;
|
|
68
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* 发送 IPC 请求。
|
|
74
|
+
* 通过 messenger 发送 IPC 请求。
|
|
75
|
+
*/
|
|
69
76
|
send() {
|
|
70
77
|
this.messenger.call(this.target).args(this.args).strategy(this.strategy).onError(this.errorCallback).send();
|
|
71
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/moonbridge-ipc/client/rpc/internal/rpc_service_proxy.ts"],"names":[],"mappings":";;;;AASO,SAAS,gBAAA,CACd,SAAA,EACA,WAAA,EACA,UAAA,EACe;AAEf,EAAA,MAAM,WAAA,GAAc,yBAAyB,WAAW,CAAA;AACxD,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,kBAAA,GAAqB,kCAAc,WAAA,CAAY,UAAA;AACrD,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAkC;AACxD,EAAA,KAAA,MAAW,CAAC,UAAA,EAAY,UAAU,KAAK,WAAA,CAAY,OAAA,CAAQ,SAAQ,EAAG;AACpE,IAAA,IAAI,CAAC,UAAA,CAAW,MAAA,IAAU,CAAC,WAAW,MAAA,EAAQ;AAC5C,MAAA;AAAA,IACF;AACA,IAAA,SAAA,CAAU,GAAA,CAAI,YAAY,UAAU,CAAA;AAAA,EACtC;AAGA,EAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,QAAQ,IAAI,KAAA;AAAA,IAChB,EAAC;AAAA,IACD;AAAA,MACE,GAAA,CAAI,SAAS,IAAA,EAAe;AAE1B,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,OAAO,MAAA;AAAA,QACT;AAGA,QAAA,MAAM,UAAA,GAAa,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AACrC,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,OAAO,MAAA;AAAA,QACT;AAGA,QAAA,OAAO,IAAI,IAAA,KAAmC;AAzDtD,UAAA,IAAA,EAAA,EAAA,EAAA;AA0DU,UAAA,MAAM,WAAW,IAAI,kBAAA;AAAA,YAAA,CACnB,EAAA,GAAA,UAAA,CAAW,YAAX,IAAA,GAAA,EAAA,GAAsB,CAAA;AAAA,YAAA,CACtB,EAAA,GAAA,UAAA,CAAW,eAAX,IAAA,GAAA,EAAA,GAAyB;AAAA,WAC3B;AAGA,UAAA,OAAO,IAAI,iBAAA;AAAA,YACT,SAAA;AAAA,YACA;AAAA,cACE,UAAA,EAAY,kBAAA;AAAA,cACZ,YAAY,UAAA,CAAW,MAAA;AAAA,cACvB,YAAY,UAAA,CAAW;AAAA,aACzB;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,MACF;AAAA;AACF,GACF;AAGA,EAAA,OAAO,KAAA;AACT;AAKA,MAAM,0BAA0B,aAAA,CAAc;AAAA,EAG5C,WAAA,CACmB,SAAA,EACA,MAAA,EACA,IAAA,EACA,QAAA,EACjB;AACA,IAAA,KAAA,EAAM;AALW,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA,EAGnB;AAAA;AAAA;AAAA;AAAA,EAKS,WAAW,aAAA,EAAiD;AACnE,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMS,IAAA,GAAa;AACpB,IAAA,IAAA,CAAK,UACF,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,CAChB,KAAK,IAAA,CAAK,IAAI,CAAA,CACd,QAAA,CAAS,KAAK,QAAQ,CAAA,CACtB,QAAQ,IAAA,CAAK,aAAa,EAC1B,IAAA,EAAK;AAAA,EACV;AACF","file":"rpc_service_proxy.mjs","sourcesContent":["import { IpcMessageStrategy } from '../../types/ipc_message_strategy';\nimport { MessageEndpoint, Messenger } from '../../types/ipc_messenger';\nimport { IpcErrorCallback } from '../../types/ipc_types';\nimport { getRemoteServiceMetadata, RemoteMethodMetadata, RpcServiceType } from './rpc_annotation_registry';\nimport { IpcRequestJob } from '../service/job/ipc_request_job';\n\n/**\n * 基于装饰器元数据创建 RPC 服务代理。\n */\nexport function createRpcService<T>(\n messenger: Messenger,\n serviceType: RpcServiceType<T>,\n clientName?: string,\n): T | undefined {\n // 获取服务元数据\n const serviceMeta = getRemoteServiceMetadata(serviceType);\n if (!serviceMeta) {\n return undefined;\n }\n\n // 解析客户端名称\n const resolvedClientName = clientName ?? serviceMeta.clientName;\n if (!resolvedClientName) {\n return undefined;\n }\n\n // 构建方法映射\n const methodMap = new Map<string, RemoteMethodMetadata>();\n for (const [methodName, methodMeta] of serviceMeta.methods.entries()) {\n if (!methodMeta.module || !methodMeta.method) {\n continue;\n }\n methodMap.set(methodName, methodMeta);\n }\n\n // 如果方法映射为空,则返回 undefined\n if (methodMap.size === 0) {\n return undefined;\n }\n\n // 创建代理对象\n const proxy = new Proxy(\n {},\n {\n get(_target, prop): unknown {\n // eslint-disable-next-line no-restricted-syntax -- typeof 判定仅用于运行时类型收窄\n if (typeof prop !== 'string') {\n return undefined;\n }\n\n // 获取方法元数据\n const methodMeta = methodMap.get(prop);\n if (!methodMeta) {\n return undefined;\n }\n\n // 返回方法代理\n return (...args: unknown[]): IpcRequestJob => {\n const strategy = new IpcMessageStrategy(\n methodMeta.retries ?? 1,\n methodMeta.autoLaunch ?? true,\n );\n\n // 创建 IPC 请求任务\n return new IpcRequestJobImpl(\n messenger,\n {\n clientName: resolvedClientName,\n moduleName: methodMeta.module!,\n methodName: methodMeta.method!,\n },\n args,\n strategy,\n );\n };\n },\n },\n );\n\n // 返回代理对象\n return proxy as T;\n}\n\n/**\n * IPC 请求任务实现。\n */\nclass IpcRequestJobImpl extends IpcRequestJob {\n private errorCallback?: IpcErrorCallback;\n\n constructor(\n private readonly messenger: Messenger,\n private readonly target: MessageEndpoint,\n private readonly args: unknown[],\n private readonly strategy: IpcMessageStrategy,\n ) {\n super();\n }\n\n /**\n * 设置 IPC 错误回调。\n */\n override onIpcError(errorCallback?: IpcErrorCallback): IpcRequestJob {\n this.errorCallback = errorCallback;\n return this;\n }\n\n /**\n * 发送 IPC 请求。\n * 通过 messenger 发送 IPC 请求。\n */\n override send(): void {\n this.messenger\n .call(this.target)\n .args(this.args)\n .strategy(this.strategy)\n .onError(this.errorCallback)\n .send();\n }\n}\n"]}
|
|
@@ -7,24 +7,7 @@
|
|
|
7
7
|
* - IpcCallRetry:标记重试次数(autoLaunch 默认 true);
|
|
8
8
|
* - IpcCallStrategy:统一设置 retries 与 autoLaunch。
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
module?: string;
|
|
12
|
-
method?: string;
|
|
13
|
-
retries?: number;
|
|
14
|
-
autoLaunch?: boolean;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* 可用于创建 RPC 代理服务的构造函数类型。
|
|
18
|
-
*/
|
|
19
|
-
export type RpcServiceType<T> = abstract new (...args: never[]) => T;
|
|
20
|
-
type ServiceConstructor = abstract new (...args: never[]) => unknown;
|
|
21
|
-
/**
|
|
22
|
-
* 供 RPC 代理读取注解元数据。
|
|
23
|
-
*/
|
|
24
|
-
export declare function getRemoteServiceMetadata(ctor: ServiceConstructor): {
|
|
25
|
-
clientName?: string;
|
|
26
|
-
methods: ReadonlyMap<string, RemoteMethodMetadata>;
|
|
27
|
-
} | undefined;
|
|
10
|
+
import { ServiceConstructor } from "./internal/rpc_annotation_registry";
|
|
28
11
|
/**
|
|
29
12
|
* 标记远程客户端。
|
|
30
13
|
*/
|
|
@@ -51,5 +34,4 @@ export declare function IpcCallStrategy(options?: {
|
|
|
51
34
|
retries?: number;
|
|
52
35
|
autoLaunch?: boolean;
|
|
53
36
|
}): (target: object, propertyKey: string, _descriptor?: PropertyDescriptor) => void;
|
|
54
|
-
export {};
|
|
55
37
|
//# sourceMappingURL=rpc_annotation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_annotation.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/rpc/rpc_annotation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,
|
|
1
|
+
{"version":3,"file":"rpc_annotation.d.ts","sourceRoot":"","sources":["../../../../src/moonbridge-ipc/client/rpc/rpc_annotation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAmD,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAEzH;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,IACxC,QAAQ,kBAAkB,KAAG,IAAI,CAInD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,IAErE,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,cAAc,kBAAkB,KAC/B,IAAI,CAMR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,IAEvD,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,cAAc,kBAAkB,KAC/B,IAAI,CAQR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,IAEhF,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,cAAc,kBAAkB,KAC/B,IAAI,CAMR"}
|