@thejrsoft/subway-protocol 1.3.0

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.
Files changed (78) hide show
  1. package/ACK_MESSAGES_IMPLEMENTATION_SUMMARY.md +128 -0
  2. package/ACK_MESSAGE_DESIGN.md +457 -0
  3. package/CHANGELOG.md +58 -0
  4. package/COMMAND_VALIDATION_RULES.md +178 -0
  5. package/DOCUMENTATION_REORGANIZATION_SUMMARY.md +81 -0
  6. package/DOCUMENTATION_STRUCTURE.md +106 -0
  7. package/GATEWAY_MIGRATION_GUIDE.md +130 -0
  8. package/GATEWAY_PROTOCOL_COMPARISON.md +216 -0
  9. package/INTEGRATION_GUIDE.md +190 -0
  10. package/OPTIONAL_FIELDS_WITHOUT_DEFAULTS.md +97 -0
  11. package/PROTOCOL_UTILS_USAGE.md +278 -0
  12. package/README.md +237 -0
  13. package/TYPE_FIXES_SUMMARY.md +210 -0
  14. package/UPDATE_ENUM_VALUES.md +139 -0
  15. package/dist/asyncapi-sync.d.ts +47 -0
  16. package/dist/asyncapi-sync.d.ts.map +1 -0
  17. package/dist/asyncapi-sync.js +85 -0
  18. package/dist/asyncapi-sync.js.map +1 -0
  19. package/dist/command-factory.d.ts +62 -0
  20. package/dist/command-factory.d.ts.map +1 -0
  21. package/dist/command-factory.js +137 -0
  22. package/dist/command-factory.js.map +1 -0
  23. package/dist/command-types.d.ts +27 -0
  24. package/dist/command-types.d.ts.map +1 -0
  25. package/dist/command-types.js +31 -0
  26. package/dist/command-types.js.map +1 -0
  27. package/dist/index.d.ts +403 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +413 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/message-validator.d.ts +102 -0
  32. package/dist/message-validator.d.ts.map +1 -0
  33. package/dist/message-validator.js +640 -0
  34. package/dist/message-validator.js.map +1 -0
  35. package/dist/protocol-utils.d.ts +108 -0
  36. package/dist/protocol-utils.d.ts.map +1 -0
  37. package/dist/protocol-utils.js +293 -0
  38. package/dist/protocol-utils.js.map +1 -0
  39. package/docs/01-protocol/README.md +45 -0
  40. package/docs/01-protocol/design-rationale.md +198 -0
  41. package/docs/01-protocol/message-types.md +669 -0
  42. package/docs/01-protocol/specification.md +1466 -0
  43. package/docs/02-commands/README.md +56 -0
  44. package/docs/02-commands/batch-command.md +435 -0
  45. package/docs/02-commands/complex-command.md +537 -0
  46. package/docs/02-commands/simple-command.md +332 -0
  47. package/docs/02-commands/typed-commands.md +362 -0
  48. package/docs/03-architecture/README.md +66 -0
  49. package/docs/03-architecture/device-protocol.md +430 -0
  50. package/docs/03-architecture/edge-proxy.md +727 -0
  51. package/docs/03-architecture/routing-flow.md +893 -0
  52. package/docs/04-integration/README.md +144 -0
  53. package/docs/04-integration/backend-guide.md +551 -0
  54. package/docs/04-integration/edge-guide.md +684 -0
  55. package/docs/04-integration/gateway-guide.md +180 -0
  56. package/docs/04-integration/migration-guide.md +226 -0
  57. package/docs/05-examples/README.md +141 -0
  58. package/docs/05-examples/progress-update-examples.md +757 -0
  59. package/docs/06-reference/README.md +67 -0
  60. package/docs/06-reference/api.md +572 -0
  61. package/docs/06-reference/faq.md +302 -0
  62. package/docs/06-reference/glossary.md +232 -0
  63. package/examples/backend-upgrade.ts +279 -0
  64. package/examples/edge-multi-device.ts +513 -0
  65. package/examples/gateway-upgrade.ts +150 -0
  66. package/examples/protocol-implementation.ts +715 -0
  67. package/package.json +48 -0
  68. package/scripts/validate-asyncapi.ts +78 -0
  69. package/src/__tests__/protocol.test.ts +297 -0
  70. package/src/asyncapi-sync.ts +84 -0
  71. package/src/command-factory.ts +183 -0
  72. package/src/command-types.ts +72 -0
  73. package/src/edge-proxy.ts +494 -0
  74. package/src/gateway-extensions.ts +278 -0
  75. package/src/index.ts +792 -0
  76. package/src/message-validator.ts +726 -0
  77. package/src/protocol-utils.ts +355 -0
  78. package/tsconfig.json +24 -0
package/dist/index.js ADDED
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+ /**
3
+ * JRSoft Subway 统一WebSocket协议定义
4
+ * 版本: 1.0
5
+ *
6
+ * 功能特性:
7
+ * 1. 统一消息格式定义
8
+ * 2. 支持设备注册、命令执行、心跳等核心功能
9
+ * 3. 支持 Edge 代理模式
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ProtocolUtils = exports.MessageValidator = exports.DEFAULT_PRIORITY = exports.DEFAULT_TIMEOUT = exports.PROTOCOL_VERSION = exports.MessageFactory = exports.ReportLevel = exports.ProgressStatus = exports.ProgressPhase = exports.ProgramDirection = exports.ProgramType = exports.CommandType = exports.CommandStatus = exports.Priority = exports.OperationType = exports.ClientType = exports.MessageType = void 0;
27
+ exports.isRegisterMessage = isRegisterMessage;
28
+ exports.isRegisterAckMessage = isRegisterAckMessage;
29
+ exports.isUnregisterMessage = isUnregisterMessage;
30
+ exports.isUnregisterAckMessage = isUnregisterAckMessage;
31
+ exports.isHeartbeatMessage = isHeartbeatMessage;
32
+ exports.isHeartbeatAckMessage = isHeartbeatAckMessage;
33
+ exports.isCommandMessage = isCommandMessage;
34
+ exports.isCommandResponseMessage = isCommandResponseMessage;
35
+ exports.isProgramMessage = isProgramMessage;
36
+ exports.isProgramResponseMessage = isProgramResponseMessage;
37
+ exports.isProgressUpdateMessage = isProgressUpdateMessage;
38
+ exports.isErrorMessage = isErrorMessage;
39
+ // 消息类型枚举
40
+ var MessageType;
41
+ (function (MessageType) {
42
+ // 连接管理
43
+ MessageType["REGISTER"] = "REGISTER";
44
+ MessageType["REGISTER_ACK"] = "REGISTER_ACK";
45
+ MessageType["UNREGISTER"] = "UNREGISTER";
46
+ MessageType["UNREGISTER_ACK"] = "UNREGISTER_ACK";
47
+ // 心跳
48
+ MessageType["HEARTBEAT"] = "HEARTBEAT";
49
+ MessageType["HEARTBEAT_ACK"] = "HEARTBEAT_ACK";
50
+ // 命令执行
51
+ MessageType["COMMAND"] = "COMMAND";
52
+ MessageType["COMMAND_RESPONSE"] = "COMMAND_RESPONSE";
53
+ // 程序管理
54
+ MessageType["PROGRAM"] = "PROGRAM";
55
+ MessageType["PROGRAM_RESPONSE"] = "PROGRAM_RESPONSE";
56
+ // 进度更新
57
+ MessageType["PROGRESS_UPDATE"] = "PROGRESS_UPDATE";
58
+ // 错误
59
+ MessageType["ERROR"] = "ERROR";
60
+ })(MessageType || (exports.MessageType = MessageType = {}));
61
+ // 客户端类型
62
+ var ClientType;
63
+ (function (ClientType) {
64
+ ClientType["DEVICE"] = "DEVICE";
65
+ ClientType["BACKEND"] = "BACKEND";
66
+ ClientType["EDGE"] = "EDGE";
67
+ ClientType["GATEWAY"] = "GATEWAY"; // 添加缺失的 GATEWAY 类型
68
+ })(ClientType || (exports.ClientType = ClientType = {}));
69
+ // 操作类型
70
+ var OperationType;
71
+ (function (OperationType) {
72
+ OperationType["READ"] = "READ";
73
+ OperationType["WRITE"] = "WRITE";
74
+ OperationType["QUERY"] = "QUERY";
75
+ OperationType["UPDATE"] = "UPDATE";
76
+ OperationType["CONTROL"] = "CONTROL";
77
+ })(OperationType || (exports.OperationType = OperationType = {}));
78
+ // 优先级
79
+ var Priority;
80
+ (function (Priority) {
81
+ Priority["LOW"] = "LOW";
82
+ Priority["NORMAL"] = "NORMAL";
83
+ Priority["HIGH"] = "HIGH";
84
+ Priority["CRITICAL"] = "CRITICAL";
85
+ Priority["EMERGENCY"] = "EMERGENCY";
86
+ })(Priority || (exports.Priority = Priority = {}));
87
+ // 命令状态
88
+ var CommandStatus;
89
+ (function (CommandStatus) {
90
+ CommandStatus["COMPLETED"] = "COMPLETED";
91
+ CommandStatus["FAILED"] = "FAILED";
92
+ CommandStatus["TIMEOUT"] = "TIMEOUT";
93
+ CommandStatus["CANCELLED"] = "CANCELLED";
94
+ CommandStatus["IN_PROGRESS"] = "IN_PROGRESS"; // Gateway特有
95
+ })(CommandStatus || (exports.CommandStatus = CommandStatus = {}));
96
+ // 命令类型
97
+ var CommandType;
98
+ (function (CommandType) {
99
+ CommandType["SIMPLE"] = "SIMPLE";
100
+ CommandType["BATCH"] = "BATCH";
101
+ CommandType["COMPLEX"] = "COMPLEX"; // 持续响应命令
102
+ })(CommandType || (exports.CommandType = CommandType = {}));
103
+ // 程序类型
104
+ var ProgramType;
105
+ (function (ProgramType) {
106
+ ProgramType["DYNAMIC"] = "DYNAMIC";
107
+ ProgramType["STATIC"] = "STATIC";
108
+ })(ProgramType || (exports.ProgramType = ProgramType = {}));
109
+ // 程序方向
110
+ var ProgramDirection;
111
+ (function (ProgramDirection) {
112
+ ProgramDirection["LEFT_TO_RIGHT"] = "LEFT_TO_RIGHT";
113
+ ProgramDirection["RIGHT_TO_LEFT"] = "RIGHT_TO_LEFT";
114
+ })(ProgramDirection || (exports.ProgramDirection = ProgramDirection = {}));
115
+ // 进度阶段
116
+ var ProgressPhase;
117
+ (function (ProgressPhase) {
118
+ ProgressPhase["DOWNLOAD"] = "DOWNLOAD";
119
+ ProgressPhase["DECOMPRESS"] = "DECOMPRESS";
120
+ ProgressPhase["PREPROCESS"] = "PREPROCESS";
121
+ ProgressPhase["FRAMES"] = "FRAMES";
122
+ ProgressPhase["UPLOAD"] = "UPLOAD";
123
+ ProgressPhase["STATS"] = "STATS"; // 统计信息
124
+ })(ProgressPhase || (exports.ProgressPhase = ProgressPhase = {}));
125
+ // 进度状态
126
+ var ProgressStatus;
127
+ (function (ProgressStatus) {
128
+ ProgressStatus["PENDING"] = "PENDING";
129
+ ProgressStatus["IN_PROGRESS"] = "IN_PROGRESS";
130
+ ProgressStatus["PAUSED"] = "PAUSED";
131
+ ProgressStatus["COMPLETED"] = "COMPLETED";
132
+ ProgressStatus["FAILED"] = "FAILED";
133
+ ProgressStatus["CANCELLED"] = "CANCELLED";
134
+ })(ProgressStatus || (exports.ProgressStatus = ProgressStatus = {}));
135
+ // 报告级别
136
+ var ReportLevel;
137
+ (function (ReportLevel) {
138
+ ReportLevel["DEBUG"] = "DEBUG";
139
+ ReportLevel["INFO"] = "INFO";
140
+ ReportLevel["WARNING"] = "WARNING";
141
+ ReportLevel["ERROR"] = "ERROR";
142
+ ReportLevel["CRITICAL"] = "CRITICAL";
143
+ })(ReportLevel || (exports.ReportLevel = ReportLevel = {}));
144
+ // 类型守卫函数
145
+ function isRegisterMessage(msg) {
146
+ return msg && msg.type === MessageType.REGISTER;
147
+ }
148
+ function isRegisterAckMessage(msg) {
149
+ return msg && msg.type === MessageType.REGISTER_ACK;
150
+ }
151
+ function isUnregisterMessage(msg) {
152
+ return msg && msg.type === MessageType.UNREGISTER;
153
+ }
154
+ function isUnregisterAckMessage(msg) {
155
+ return msg && msg.type === MessageType.UNREGISTER_ACK;
156
+ }
157
+ function isHeartbeatMessage(msg) {
158
+ return msg && msg.type === MessageType.HEARTBEAT;
159
+ }
160
+ function isHeartbeatAckMessage(msg) {
161
+ return msg && msg.type === MessageType.HEARTBEAT_ACK;
162
+ }
163
+ function isCommandMessage(msg) {
164
+ return msg && msg.type === MessageType.COMMAND;
165
+ }
166
+ function isCommandResponseMessage(msg) {
167
+ return msg && msg.type === MessageType.COMMAND_RESPONSE;
168
+ }
169
+ function isProgramMessage(msg) {
170
+ return msg && msg.type === MessageType.PROGRAM;
171
+ }
172
+ function isProgramResponseMessage(msg) {
173
+ return msg && msg.type === MessageType.PROGRAM_RESPONSE;
174
+ }
175
+ function isProgressUpdateMessage(msg) {
176
+ return msg && msg.type === MessageType.PROGRESS_UPDATE;
177
+ }
178
+ function isErrorMessage(msg) {
179
+ return msg && msg.type === MessageType.ERROR;
180
+ }
181
+ // 消息工厂类 - 创建符合新协议的消息
182
+ class MessageFactory {
183
+ /**
184
+ * 创建注册消息
185
+ */
186
+ static createRegisterMessage(clientId, clientType, clientInfo) {
187
+ return {
188
+ type: MessageType.REGISTER,
189
+ clientId,
190
+ clientType,
191
+ clientInfo,
192
+ timestamp: new Date().toISOString(),
193
+ version: '1.0'
194
+ };
195
+ }
196
+ /**
197
+ * 创建命令消息
198
+ */
199
+ static createCommandMessage(requestRef, targetClientId, command, callback, options) {
200
+ return {
201
+ type: MessageType.COMMAND,
202
+ requestRef,
203
+ targetClientId,
204
+ command: {
205
+ ...command,
206
+ commandType: command.commandType || CommandType.SIMPLE
207
+ },
208
+ priority: options?.priority || Priority.NORMAL,
209
+ timeout: options?.timeout || exports.DEFAULT_TIMEOUT,
210
+ retryCount: options?.retryCount || 0, // 默认值 0
211
+ callback,
212
+ timestamp: new Date().toISOString(),
213
+ version: exports.PROTOCOL_VERSION
214
+ };
215
+ }
216
+ /**
217
+ * 创建心跳消息
218
+ */
219
+ static createHeartbeatMessage(clientId, sequence) {
220
+ const now = new Date().toISOString();
221
+ return {
222
+ type: MessageType.HEARTBEAT,
223
+ clientId,
224
+ sequence,
225
+ clientTime: now,
226
+ timestamp: now,
227
+ version: exports.PROTOCOL_VERSION
228
+ };
229
+ }
230
+ /**
231
+ * 创建注销消息
232
+ */
233
+ static createUnregisterMessage(clientId, reason) {
234
+ return {
235
+ type: MessageType.UNREGISTER,
236
+ clientId,
237
+ reason,
238
+ timestamp: new Date().toISOString(),
239
+ version: exports.PROTOCOL_VERSION
240
+ };
241
+ }
242
+ /**
243
+ * 创建程序上传消息
244
+ */
245
+ static createProgramMessage(requestRef, targetClientId, parameters, callback, options) {
246
+ return {
247
+ type: MessageType.PROGRAM,
248
+ requestRef,
249
+ targetClientId,
250
+ command: {
251
+ commandCode: 'UPLOAD_PROGRAM',
252
+ parameters
253
+ },
254
+ priority: options?.priority || Priority.NORMAL,
255
+ timeout: options?.timeout || 1800000, // 30分钟
256
+ callback,
257
+ timestamp: new Date().toISOString(),
258
+ version: exports.PROTOCOL_VERSION
259
+ };
260
+ }
261
+ /**
262
+ * 创建进度更新消息
263
+ */
264
+ static createProgressUpdateMessage(requestRef, phase, progress, message, status = ProgressStatus.IN_PROGRESS, options) {
265
+ return {
266
+ type: MessageType.PROGRESS_UPDATE,
267
+ requestRef,
268
+ status,
269
+ phase,
270
+ progress,
271
+ sourceType: options?.command ? 'COMMAND' : 'SYSTEM', // 根据是否有command自动判断
272
+ context: options?.context,
273
+ command: options?.command,
274
+ report: message ? {
275
+ level: options?.level || ReportLevel.INFO,
276
+ message,
277
+ code: options?.code,
278
+ data: options?.data
279
+ } : undefined,
280
+ timestamp: new Date().toISOString(),
281
+ version: exports.PROTOCOL_VERSION
282
+ };
283
+ }
284
+ /**
285
+ * 创建命令响应消息 (Backend 急需)
286
+ */
287
+ static createCommandResponseMessage(requestRef, status, result, message, options) {
288
+ // 如果提供了开始时间但没有 executionTime,自动计算
289
+ const executionTime = options?.executionTime ||
290
+ (options?.commandStartTime ? Date.now() - options.commandStartTime : undefined);
291
+ return {
292
+ type: MessageType.COMMAND_RESPONSE,
293
+ requestRef,
294
+ status,
295
+ result,
296
+ report: options?.report || (message ? {
297
+ level: ReportLevel.INFO,
298
+ message
299
+ } : undefined),
300
+ executionTime,
301
+ timestamp: new Date().toISOString(),
302
+ version: options?.version || exports.PROTOCOL_VERSION
303
+ };
304
+ }
305
+ /**
306
+ * 创建程序响应消息
307
+ */
308
+ static createProgramResponseMessage(requestRef, status, result, message, options) {
309
+ // 如果提供了开始时间但没有 executionTime,自动计算
310
+ const executionTime = options?.executionTime ||
311
+ (options?.programStartTime ? Date.now() - options.programStartTime : undefined);
312
+ return {
313
+ type: MessageType.PROGRAM_RESPONSE,
314
+ requestRef,
315
+ status,
316
+ context: result,
317
+ report: message ? {
318
+ level: ReportLevel.INFO,
319
+ message
320
+ } : undefined,
321
+ executionTime,
322
+ timestamp: new Date().toISOString(),
323
+ version: exports.PROTOCOL_VERSION
324
+ };
325
+ }
326
+ /**
327
+ * 创建错误消息 (Gateway & Backend 都需要)
328
+ */
329
+ static createErrorMessage(code, message, requestRef, options) {
330
+ return {
331
+ type: MessageType.ERROR,
332
+ code,
333
+ message,
334
+ severity: options?.severity || 'ERROR',
335
+ category: options?.category,
336
+ context: {
337
+ requestRef,
338
+ data: options?.data
339
+ },
340
+ retryable: options?.retryable,
341
+ timestamp: new Date().toISOString(),
342
+ version: exports.PROTOCOL_VERSION
343
+ };
344
+ }
345
+ /**
346
+ * 创建心跳确认消息 (Gateway 急需)
347
+ */
348
+ static createHeartbeatAckMessage(sequence, clientId, clientTime, options) {
349
+ const now = new Date().toISOString();
350
+ const nowMs = Date.now();
351
+ // 如果提供了接收时间但没有 latency,自动计算处理延迟
352
+ const latency = options?.latency ||
353
+ (options?.heartbeatReceivedTime ? nowMs - options.heartbeatReceivedTime : undefined);
354
+ return {
355
+ type: MessageType.HEARTBEAT_ACK,
356
+ clientId: clientId || '',
357
+ sequence,
358
+ clientTime: clientTime || now, // 使用传入的客户端时间或当前时间
359
+ serverTime: now,
360
+ latency,
361
+ timestamp: now,
362
+ version: exports.PROTOCOL_VERSION
363
+ };
364
+ }
365
+ /**
366
+ * 创建注册确认消息 (Gateway 需要)
367
+ */
368
+ static createRegisterAckMessage(clientId, success, message, sessionId) {
369
+ return {
370
+ type: MessageType.REGISTER_ACK,
371
+ clientId,
372
+ success,
373
+ sessionId,
374
+ error: !success && message ? {
375
+ code: 'REGISTRATION_FAILED',
376
+ message
377
+ } : undefined,
378
+ timestamp: new Date().toISOString(),
379
+ version: exports.PROTOCOL_VERSION
380
+ };
381
+ }
382
+ /**
383
+ * 创建注销确认消息
384
+ */
385
+ static createUnregisterAckMessage(clientId, success) {
386
+ return {
387
+ type: MessageType.UNREGISTER_ACK,
388
+ clientId,
389
+ success,
390
+ timestamp: new Date().toISOString(),
391
+ version: exports.PROTOCOL_VERSION
392
+ };
393
+ }
394
+ }
395
+ exports.MessageFactory = MessageFactory;
396
+ // 导出常量
397
+ exports.PROTOCOL_VERSION = '1.0';
398
+ exports.DEFAULT_TIMEOUT = 10000;
399
+ exports.DEFAULT_PRIORITY = Priority.NORMAL;
400
+ // 导出强类型命令系统
401
+ __exportStar(require("./command-types"), exports);
402
+ __exportStar(require("./command-factory"), exports);
403
+ // 导出消息验证器
404
+ var message_validator_1 = require("./message-validator");
405
+ Object.defineProperty(exports, "MessageValidator", { enumerable: true, get: function () { return message_validator_1.MessageValidator; } });
406
+ // 导出协议工具类
407
+ var protocol_utils_1 = require("./protocol-utils");
408
+ Object.defineProperty(exports, "ProtocolUtils", { enumerable: true, get: function () { return protocol_utils_1.ProtocolUtils; } });
409
+ // 导出 Gateway 扩展 (暂时禁用,有编译错误)
410
+ // export * from './gateway-extensions';
411
+ // 导出 Edge 代理模式 (暂时禁用,有编译错误)
412
+ // export * from './edge-proxy';
413
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * 消息验证器 - 提供全面的消息验证功能
3
+ */
4
+ import { MessageType } from './index';
5
+ export interface ValidationResult {
6
+ valid: boolean;
7
+ errors: string[];
8
+ warnings?: string[];
9
+ }
10
+ interface ValidationSchema {
11
+ required: string[];
12
+ optional?: string[];
13
+ types: Record<string, string>;
14
+ validators?: Record<string, (value: any) => boolean>;
15
+ }
16
+ /**
17
+ * 消息验证器类
18
+ */
19
+ export declare class MessageValidator {
20
+ /**
21
+ * 通用验证方法,返回详细的验证结果
22
+ */
23
+ static validate(message: any): ValidationResult;
24
+ /**
25
+ * 验证消息基本结构
26
+ */
27
+ static validateStructure(message: any): boolean;
28
+ /**
29
+ * 验证命令消息
30
+ */
31
+ static validateCommandMessage(message: any): ValidationResult;
32
+ /**
33
+ * 验证程序消息
34
+ */
35
+ static validateProgramMessage(message: any): ValidationResult;
36
+ /**
37
+ * 验证进度更新消息
38
+ */
39
+ static validateProgressUpdate(message: any): ValidationResult;
40
+ /**
41
+ * 验证注册消息
42
+ */
43
+ static validateRegisterMessage(message: any): ValidationResult;
44
+ /**
45
+ * 验证心跳消息
46
+ */
47
+ static validateHeartbeatMessage(message: any): ValidationResult;
48
+ /**
49
+ * 验证错误消息
50
+ */
51
+ static validateErrorMessage(message: any): ValidationResult;
52
+ /**
53
+ * 验证消息类型
54
+ */
55
+ static isValidMessageType(type: string): boolean;
56
+ /**
57
+ * 验证客户端类型
58
+ */
59
+ static isValidClientType(clientType: string): boolean;
60
+ /**
61
+ * 验证优先级
62
+ */
63
+ static isValidPriority(priority: string): boolean;
64
+ /**
65
+ * 验证命令状态
66
+ */
67
+ static isValidCommandStatus(status: string): boolean;
68
+ /**
69
+ * 验证操作类型
70
+ */
71
+ static isValidOperationType(operationType: string): boolean;
72
+ /**
73
+ * 验证命令类型
74
+ */
75
+ static isValidCommandType(commandType: string): boolean;
76
+ /**
77
+ * 验证进度状态
78
+ */
79
+ static isValidProgressStatus(status: string): boolean;
80
+ /**
81
+ * 验证进度阶段
82
+ */
83
+ static isValidProgressPhase(phase: string): boolean;
84
+ /**
85
+ * 验证报告级别
86
+ */
87
+ static isValidReportLevel(level: string): boolean;
88
+ /**
89
+ * 验证程序类型
90
+ */
91
+ static isValidProgramType(type: string): boolean;
92
+ /**
93
+ * 验证程序方向
94
+ */
95
+ static isValidProgramDirection(direction: string): boolean;
96
+ /**
97
+ * 获取验证模式
98
+ */
99
+ static getValidationSchema(messageType: MessageType): ValidationSchema | null;
100
+ }
101
+ export {};
102
+ //# sourceMappingURL=message-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-validator.d.ts","sourceRoot":"","sources":["../src/message-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EAyBZ,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAGD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IA+C/C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAM/C;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IAoG7D;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IAmF7D;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IAsD7D;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IA4C9D;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IA+B/D;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB;IA8B3D;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI3D;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIvD;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI1D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI;CA+K9E"}