@dynamic-labs-wallet/forward-mpc-shared 0.1.0-alpha.6 → 0.1.0-alpha.7

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 (164) hide show
  1. package/dist/index.cjs +823 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +1030 -0
  4. package/dist/index.d.ts +1030 -9
  5. package/dist/index.js +768 -17
  6. package/dist/index.js.map +1 -1
  7. package/package.json +9 -7
  8. package/dist/attestation/index.d.ts +0 -1
  9. package/dist/attestation/index.d.ts.map +0 -1
  10. package/dist/attestation/index.js +0 -4
  11. package/dist/attestation/index.js.map +0 -1
  12. package/dist/codecs/DomainCodec.d.ts +0 -11
  13. package/dist/codecs/DomainCodec.d.ts.map +0 -1
  14. package/dist/codecs/DomainCodec.js +0 -25
  15. package/dist/codecs/DomainCodec.js.map +0 -1
  16. package/dist/codecs/EncryptedKeyshareCodec.d.ts +0 -11
  17. package/dist/codecs/EncryptedKeyshareCodec.d.ts.map +0 -1
  18. package/dist/codecs/EncryptedKeyshareCodec.js +0 -11
  19. package/dist/codecs/EncryptedKeyshareCodec.js.map +0 -1
  20. package/dist/codecs/Uint32ArrayCodec.d.ts +0 -3
  21. package/dist/codecs/Uint32ArrayCodec.d.ts.map +0 -1
  22. package/dist/codecs/Uint32ArrayCodec.js +0 -37
  23. package/dist/codecs/Uint32ArrayCodec.js.map +0 -1
  24. package/dist/codecs/Uint8ArrayCodec.d.ts +0 -3
  25. package/dist/codecs/Uint8ArrayCodec.d.ts.map +0 -1
  26. package/dist/codecs/Uint8ArrayCodec.js +0 -26
  27. package/dist/codecs/Uint8ArrayCodec.js.map +0 -1
  28. package/dist/codecs/Uint8ArrayOrHexCodec.d.ts +0 -3
  29. package/dist/codecs/Uint8ArrayOrHexCodec.d.ts.map +0 -1
  30. package/dist/codecs/Uint8ArrayOrHexCodec.js +0 -35
  31. package/dist/codecs/Uint8ArrayOrHexCodec.js.map +0 -1
  32. package/dist/codecs/WebSocketErrorCodec.d.ts +0 -15
  33. package/dist/codecs/WebSocketErrorCodec.d.ts.map +0 -1
  34. package/dist/codecs/WebSocketErrorCodec.js +0 -14
  35. package/dist/codecs/WebSocketErrorCodec.js.map +0 -1
  36. package/dist/codecs/index.d.ts +0 -4
  37. package/dist/codecs/index.d.ts.map +0 -1
  38. package/dist/codecs/index.js +0 -4
  39. package/dist/codecs/index.js.map +0 -1
  40. package/dist/constants/algorithms.d.ts +0 -56
  41. package/dist/constants/algorithms.d.ts.map +0 -1
  42. package/dist/constants/algorithms.js +0 -60
  43. package/dist/constants/algorithms.js.map +0 -1
  44. package/dist/constants/index.d.ts +0 -2
  45. package/dist/constants/index.d.ts.map +0 -1
  46. package/dist/constants/index.js +0 -2
  47. package/dist/constants/index.js.map +0 -1
  48. package/dist/crypto/decapsulate.d.ts +0 -2
  49. package/dist/crypto/decapsulate.d.ts.map +0 -1
  50. package/dist/crypto/decapsulate.js +0 -5
  51. package/dist/crypto/decapsulate.js.map +0 -1
  52. package/dist/crypto/encapsulate.d.ts +0 -5
  53. package/dist/crypto/encapsulate.d.ts.map +0 -1
  54. package/dist/crypto/encapsulate.js +0 -5
  55. package/dist/crypto/encapsulate.js.map +0 -1
  56. package/dist/crypto/generateKeypair.d.ts +0 -5
  57. package/dist/crypto/generateKeypair.d.ts.map +0 -1
  58. package/dist/crypto/generateKeypair.js +0 -17
  59. package/dist/crypto/generateKeypair.js.map +0 -1
  60. package/dist/crypto/index.d.ts +0 -6
  61. package/dist/crypto/index.d.ts.map +0 -1
  62. package/dist/crypto/index.js +0 -6
  63. package/dist/crypto/index.js.map +0 -1
  64. package/dist/crypto/keyDerivation.d.ts +0 -14
  65. package/dist/crypto/keyDerivation.d.ts.map +0 -1
  66. package/dist/crypto/keyDerivation.js +0 -21
  67. package/dist/crypto/keyDerivation.js.map +0 -1
  68. package/dist/crypto/keyshareEncryption.d.ts +0 -13
  69. package/dist/crypto/keyshareEncryption.d.ts.map +0 -1
  70. package/dist/crypto/keyshareEncryption.js +0 -39
  71. package/dist/crypto/keyshareEncryption.js.map +0 -1
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/messages/ConnectionAckV1Request.d.ts +0 -43
  74. package/dist/messages/ConnectionAckV1Request.d.ts.map +0 -1
  75. package/dist/messages/ConnectionAckV1Request.js +0 -17
  76. package/dist/messages/ConnectionAckV1Request.js.map +0 -1
  77. package/dist/messages/ConnectionAckV1Response.d.ts +0 -45
  78. package/dist/messages/ConnectionAckV1Response.d.ts.map +0 -1
  79. package/dist/messages/ConnectionAckV1Response.js +0 -18
  80. package/dist/messages/ConnectionAckV1Response.js.map +0 -1
  81. package/dist/messages/HandshakeV1Request.d.ts +0 -45
  82. package/dist/messages/HandshakeV1Request.d.ts.map +0 -1
  83. package/dist/messages/HandshakeV1Request.js +0 -28
  84. package/dist/messages/HandshakeV1Request.js.map +0 -1
  85. package/dist/messages/HandshakeV1Response.d.ts +0 -47
  86. package/dist/messages/HandshakeV1Response.d.ts.map +0 -1
  87. package/dist/messages/HandshakeV1Response.js +0 -20
  88. package/dist/messages/HandshakeV1Response.js.map +0 -1
  89. package/dist/messages/SignMessageV1Request.d.ts +0 -63
  90. package/dist/messages/SignMessageV1Request.d.ts.map +0 -1
  91. package/dist/messages/SignMessageV1Request.js +0 -42
  92. package/dist/messages/SignMessageV1Request.js.map +0 -1
  93. package/dist/messages/SignMessageV1Response.d.ts +0 -47
  94. package/dist/messages/SignMessageV1Response.d.ts.map +0 -1
  95. package/dist/messages/SignMessageV1Response.js +0 -28
  96. package/dist/messages/SignMessageV1Response.js.map +0 -1
  97. package/dist/messages/allMessages.d.ts +0 -259
  98. package/dist/messages/allMessages.d.ts.map +0 -1
  99. package/dist/messages/allMessages.js +0 -57
  100. package/dist/messages/allMessages.js.map +0 -1
  101. package/dist/messages/base.d.ts +0 -27
  102. package/dist/messages/base.d.ts.map +0 -1
  103. package/dist/messages/base.js +0 -12
  104. package/dist/messages/base.js.map +0 -1
  105. package/dist/messages/index.d.ts +0 -11
  106. package/dist/messages/index.d.ts.map +0 -1
  107. package/dist/messages/index.js +0 -14
  108. package/dist/messages/index.js.map +0 -1
  109. package/dist/messages/registry.d.ts +0 -136
  110. package/dist/messages/registry.d.ts.map +0 -1
  111. package/dist/messages/registry.js +0 -67
  112. package/dist/messages/registry.js.map +0 -1
  113. package/dist/messages/utils/StandardMessage.d.ts +0 -97
  114. package/dist/messages/utils/StandardMessage.d.ts.map +0 -1
  115. package/dist/messages/utils/StandardMessage.js +0 -98
  116. package/dist/messages/utils/StandardMessage.js.map +0 -1
  117. package/dist/messages/utils/encodingHelpers.d.ts +0 -20
  118. package/dist/messages/utils/encodingHelpers.d.ts.map +0 -1
  119. package/dist/messages/utils/encodingHelpers.js +0 -50
  120. package/dist/messages/utils/encodingHelpers.js.map +0 -1
  121. package/dist/messages/utils/index.d.ts +0 -4
  122. package/dist/messages/utils/index.d.ts.map +0 -1
  123. package/dist/messages/utils/index.js +0 -5
  124. package/dist/messages/utils/index.js.map +0 -1
  125. package/dist/messages/utils/schemaBuilder.d.ts +0 -19
  126. package/dist/messages/utils/schemaBuilder.d.ts.map +0 -1
  127. package/dist/messages/utils/schemaBuilder.js +0 -31
  128. package/dist/messages/utils/schemaBuilder.js.map +0 -1
  129. package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts +0 -20
  130. package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts.map +0 -1
  131. package/dist/signing/algorithms/BIP340SigningAlgorithm.js +0 -35
  132. package/dist/signing/algorithms/BIP340SigningAlgorithm.js.map +0 -1
  133. package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts +0 -20
  134. package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts.map +0 -1
  135. package/dist/signing/algorithms/EcdsaSigningAlgorithm.js +0 -43
  136. package/dist/signing/algorithms/EcdsaSigningAlgorithm.js.map +0 -1
  137. package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts +0 -18
  138. package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts.map +0 -1
  139. package/dist/signing/algorithms/Ed25519SigningAlgorithm.js +0 -34
  140. package/dist/signing/algorithms/Ed25519SigningAlgorithm.js.map +0 -1
  141. package/dist/signing/allAlgorithms.d.ts +0 -50
  142. package/dist/signing/allAlgorithms.d.ts.map +0 -1
  143. package/dist/signing/allAlgorithms.js +0 -59
  144. package/dist/signing/allAlgorithms.js.map +0 -1
  145. package/dist/signing/base.d.ts +0 -42
  146. package/dist/signing/base.d.ts.map +0 -1
  147. package/dist/signing/base.js +0 -6
  148. package/dist/signing/base.js.map +0 -1
  149. package/dist/signing/index.d.ts +0 -7
  150. package/dist/signing/index.d.ts.map +0 -1
  151. package/dist/signing/index.js +0 -9
  152. package/dist/signing/index.js.map +0 -1
  153. package/dist/signing/registry.d.ts +0 -26
  154. package/dist/signing/registry.d.ts.map +0 -1
  155. package/dist/signing/registry.js +0 -36
  156. package/dist/signing/registry.js.map +0 -1
  157. package/dist/types.d.ts +0 -42
  158. package/dist/types.d.ts.map +0 -1
  159. package/dist/types.js +0 -12
  160. package/dist/types.js.map +0 -1
  161. package/dist/utils/assertDefined.d.ts +0 -16
  162. package/dist/utils/assertDefined.d.ts.map +0 -1
  163. package/dist/utils/assertDefined.js +0 -27
  164. package/dist/utils/assertDefined.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/messages/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,QAAQ,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,MAAM,IAAI,KAAK,CAAC;IAEhB;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,8BAAsB,WAAW,CAAC,QAAQ,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CAC3D,YAAW,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;aAKE,IAAI,EAAE,QAAQ;IAHpD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC,SAAS,aAA6B,IAAI,EAAE,QAAQ;IAEpD,QAAQ,CAAC,MAAM,IAAI,KAAK;IAExB,OAAO,IAAI,QAAQ;CAGpB"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Abstract base class for all messages
3
- */
4
- export class BaseMessage {
5
- constructor(data) {
6
- this.data = data;
7
- }
8
- getData() {
9
- return this.data;
10
- }
11
- }
12
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/messages/base.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,OAAgB,WAAW;IAM/B,YAAsC,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IAIxD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF","sourcesContent":["/**\n * Base interface for all messages\n */\nexport interface IMessage<TRuntime = any, TWire = any> {\n readonly type: string;\n readonly version: number;\n\n /**\n * Encode this message to wire format for transmission\n */\n encode(): TWire;\n\n /**\n * Get the runtime data of this message\n */\n getData(): TRuntime;\n}\n\n/**\n * Abstract base class for all messages\n */\nexport abstract class BaseMessage<TRuntime = any, TWire = any>\n implements IMessage<TRuntime, TWire>\n{\n abstract readonly type: string;\n abstract readonly version: number;\n\n protected constructor(public readonly data: TRuntime) {}\n\n abstract encode(): TWire;\n\n getData(): TRuntime {\n return this.data;\n }\n}\n"]}
@@ -1,11 +0,0 @@
1
- export * from './base';
2
- export * from './registry';
3
- export * from './HandshakeV1Request';
4
- export * from './HandshakeV1Response';
5
- export * from './SignMessageV1Request';
6
- export * from './SignMessageV1Response';
7
- export * from './ConnectionAckV1Request';
8
- export * from './ConnectionAckV1Response';
9
- export * from './allMessages';
10
- export { messageRegistry } from './registry';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAG3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -1,14 +0,0 @@
1
- // Export base classes and interfaces
2
- export * from './base';
3
- export * from './registry';
4
- // Export concrete message classes
5
- export * from './HandshakeV1Request';
6
- export * from './HandshakeV1Response';
7
- export * from './SignMessageV1Request';
8
- export * from './SignMessageV1Response';
9
- export * from './ConnectionAckV1Request';
10
- export * from './ConnectionAckV1Response';
11
- // Export Ultra-DRY message system
12
- export * from './allMessages';
13
- export { messageRegistry } from './registry';
14
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAE3B,kCAAkC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,kCAAkC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC","sourcesContent":["// Export base classes and interfaces\nexport * from './base';\nexport * from './registry';\n\n// Export concrete message classes\nexport * from './HandshakeV1Request';\nexport * from './HandshakeV1Response';\nexport * from './SignMessageV1Request';\nexport * from './SignMessageV1Response';\nexport * from './ConnectionAckV1Request';\nexport * from './ConnectionAckV1Response';\n\n// Export Ultra-DRY message system\nexport * from './allMessages';\nexport { messageRegistry } from './registry';\n"]}
@@ -1,136 +0,0 @@
1
- import { Either } from 'fp-ts/lib/Either';
2
- import { IMessage } from './base';
3
- /**
4
- * Ultra-DRY Message Registry - everything is derived, no registration needed
5
- */
6
- export declare class MessageRegistry {
7
- private static instance;
8
- private constructor();
9
- static getInstance(): MessageRegistry;
10
- /**
11
- * Get a message class by type and version (derived from single source)
12
- */
13
- getMessageClass(type: string, version: number): {
14
- new (data: import("./HandshakeV1Request").HandshakeRequestData): {
15
- readonly type: "handshake";
16
- readonly version: 1;
17
- encode(): import("./HandshakeV1Request").HandshakeRequestWire;
18
- readonly data: import("./HandshakeV1Request").HandshakeRequestData;
19
- getData(): import("./HandshakeV1Request").HandshakeRequestData;
20
- };
21
- readonly MESSAGE_TYPE: "handshake";
22
- readonly MESSAGE_VERSION: 1;
23
- readonly schema: import("io-ts").Type<any, any, unknown>;
24
- decode(wireData: unknown): Either<import("io-ts").Errors, {
25
- readonly type: "handshake";
26
- readonly version: 1;
27
- encode(): import("./HandshakeV1Request").HandshakeRequestWire;
28
- readonly data: import("./HandshakeV1Request").HandshakeRequestData;
29
- getData(): import("./HandshakeV1Request").HandshakeRequestData;
30
- }>;
31
- } | {
32
- new (data: import("./HandshakeV1Response").HandshakeResponseData): {
33
- readonly type: "handshake_response";
34
- readonly version: 1;
35
- encode(): any;
36
- readonly data: import("./HandshakeV1Response").HandshakeResponseData;
37
- getData(): import("./HandshakeV1Response").HandshakeResponseData;
38
- };
39
- readonly MESSAGE_TYPE: "handshake_response";
40
- readonly MESSAGE_VERSION: 1;
41
- readonly schema: import("io-ts").Type<any, any, unknown>;
42
- decode(wireData: unknown): Either<import("io-ts").Errors, {
43
- readonly type: "handshake_response";
44
- readonly version: 1;
45
- encode(): any;
46
- readonly data: import("./HandshakeV1Response").HandshakeResponseData;
47
- getData(): import("./HandshakeV1Response").HandshakeResponseData;
48
- }>;
49
- } | {
50
- new (data: import("./SignMessageV1Request").SignMessageRequestData): {
51
- readonly type: "signMessage";
52
- readonly version: 1;
53
- encode(): unknown;
54
- readonly data: import("./SignMessageV1Request").SignMessageRequestData;
55
- getData(): import("./SignMessageV1Request").SignMessageRequestData;
56
- };
57
- readonly MESSAGE_TYPE: "signMessage";
58
- readonly MESSAGE_VERSION: 1;
59
- readonly schema: import("io-ts").Type<any, any, unknown>;
60
- decode(wireData: unknown): Either<import("io-ts").Errors, {
61
- readonly type: "signMessage";
62
- readonly version: 1;
63
- encode(): unknown;
64
- readonly data: import("./SignMessageV1Request").SignMessageRequestData;
65
- getData(): import("./SignMessageV1Request").SignMessageRequestData;
66
- }>;
67
- } | {
68
- new (data: import("./SignMessageV1Response").SignMessageResponseData): {
69
- readonly type: "signMessage_response";
70
- readonly version: 1;
71
- encode(): import("./SignMessageV1Response").SignMessageResponseWire;
72
- readonly data: import("./SignMessageV1Response").SignMessageResponseData;
73
- getData(): import("./SignMessageV1Response").SignMessageResponseData;
74
- };
75
- readonly MESSAGE_TYPE: "signMessage_response";
76
- readonly MESSAGE_VERSION: 1;
77
- readonly schema: import("io-ts").Type<any, any, unknown>;
78
- decode(wireData: unknown): Either<import("io-ts").Errors, {
79
- readonly type: "signMessage_response";
80
- readonly version: 1;
81
- encode(): import("./SignMessageV1Response").SignMessageResponseWire;
82
- readonly data: import("./SignMessageV1Response").SignMessageResponseData;
83
- getData(): import("./SignMessageV1Response").SignMessageResponseData;
84
- }>;
85
- } | {
86
- new (data: import("./ConnectionAckV1Request").ConnectionAckRequestData): {
87
- readonly type: "connection_ack";
88
- readonly version: 1;
89
- encode(): any;
90
- readonly data: import("./ConnectionAckV1Request").ConnectionAckRequestData;
91
- getData(): import("./ConnectionAckV1Request").ConnectionAckRequestData;
92
- };
93
- readonly MESSAGE_TYPE: "connection_ack";
94
- readonly MESSAGE_VERSION: 1;
95
- readonly schema: import("io-ts").Type<any, any, unknown>;
96
- decode(wireData: unknown): Either<import("io-ts").Errors, {
97
- readonly type: "connection_ack";
98
- readonly version: 1;
99
- encode(): any;
100
- readonly data: import("./ConnectionAckV1Request").ConnectionAckRequestData;
101
- getData(): import("./ConnectionAckV1Request").ConnectionAckRequestData;
102
- }>;
103
- } | {
104
- new (data: import("./ConnectionAckV1Response").ConnectionAckResponseData): {
105
- readonly type: "connection_ack_response";
106
- readonly version: 1;
107
- encode(): any;
108
- readonly data: import("./ConnectionAckV1Response").ConnectionAckResponseData;
109
- getData(): import("./ConnectionAckV1Response").ConnectionAckResponseData;
110
- };
111
- readonly MESSAGE_TYPE: "connection_ack_response";
112
- readonly MESSAGE_VERSION: 1;
113
- readonly schema: import("io-ts").Type<any, any, unknown>;
114
- decode(wireData: unknown): Either<import("io-ts").Errors, {
115
- readonly type: "connection_ack_response";
116
- readonly version: 1;
117
- encode(): any;
118
- readonly data: import("./ConnectionAckV1Response").ConnectionAckResponseData;
119
- getData(): import("./ConnectionAckV1Response").ConnectionAckResponseData;
120
- }>;
121
- } | undefined;
122
- /**
123
- * Create a message instance from wire data (using derived message classes)
124
- */
125
- decode(wireData: any): Either<string, IMessage>;
126
- /**
127
- * Encode a message to wire format
128
- */
129
- encode(message: IMessage): any;
130
- /**
131
- * Get all registered message types (derived from single source)
132
- */
133
- getRegisteredTypes(): string[];
134
- }
135
- export declare const messageRegistry: MessageRegistry;
136
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/messages/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ7C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IA6B/C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,GAAG;IAI9B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;CAK/B;AAGD,eAAO,MAAM,eAAe,iBAAgC,CAAC"}
@@ -1,67 +0,0 @@
1
- import { isLeft } from 'fp-ts/lib/Either';
2
- import { getMessageClass, getAllSupportedMessages } from './allMessages';
3
- /**
4
- * Ultra-DRY Message Registry - everything is derived, no registration needed
5
- */
6
- export class MessageRegistry {
7
- constructor() { }
8
- static getInstance() {
9
- if (!MessageRegistry.instance) {
10
- MessageRegistry.instance = new MessageRegistry();
11
- }
12
- return MessageRegistry.instance;
13
- }
14
- /**
15
- * Get a message class by type and version (derived from single source)
16
- */
17
- getMessageClass(type, version) {
18
- try {
19
- return getMessageClass(type, version);
20
- }
21
- catch {
22
- return undefined;
23
- }
24
- }
25
- /**
26
- * Create a message instance from wire data (using derived message classes)
27
- */
28
- decode(wireData) {
29
- if (!wireData || typeof wireData !== 'object') {
30
- return { _tag: 'Left', left: 'Invalid wire data: must be an object' };
31
- }
32
- const { type, version } = wireData;
33
- if (!type || !version) {
34
- return {
35
- _tag: 'Left',
36
- left: 'Invalid wire data: missing type or version',
37
- };
38
- }
39
- const MessageClass = this.getMessageClass(type, version);
40
- if (!MessageClass) {
41
- return { _tag: 'Left', left: `Unknown message type: ${type}@${version}` };
42
- }
43
- const result = MessageClass.decode(wireData);
44
- if (isLeft(result)) {
45
- return {
46
- _tag: 'Left',
47
- left: `Decode error: ${result.left.map((e) => e.message).join(', ')}`,
48
- };
49
- }
50
- return { _tag: 'Right', right: result.right };
51
- }
52
- /**
53
- * Encode a message to wire format
54
- */
55
- encode(message) {
56
- return message.encode();
57
- }
58
- /**
59
- * Get all registered message types (derived from single source)
60
- */
61
- getRegisteredTypes() {
62
- return getAllSupportedMessages().map(({ type, version }) => `${type}@${version}`);
63
- }
64
- }
65
- // Export singleton instance
66
- export const messageRegistry = MessageRegistry.getInstance();
67
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/messages/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEzE;;GAEG;AACH,MAAM,OAAO,eAAe;IAG1B,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC9B,eAAe,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAY,EAAE,OAAe;QAC3C,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAa;QAClB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QACxE,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,4CAA4C;aACnD,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC;QAC5E,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACtE,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAiB;QACtB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,uBAAuB,EAAE,CAAC,GAAG,CAClC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAC5C,CAAC;IACJ,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC","sourcesContent":["import { Either, isLeft } from 'fp-ts/lib/Either';\nimport { IMessage } from './base';\nimport { getMessageClass, getAllSupportedMessages } from './allMessages';\n\n/**\n * Ultra-DRY Message Registry - everything is derived, no registration needed\n */\nexport class MessageRegistry {\n private static instance: MessageRegistry;\n\n private constructor() {}\n\n static getInstance(): MessageRegistry {\n if (!MessageRegistry.instance) {\n MessageRegistry.instance = new MessageRegistry();\n }\n return MessageRegistry.instance;\n }\n\n /**\n * Get a message class by type and version (derived from single source)\n */\n getMessageClass(type: string, version: number) {\n try {\n return getMessageClass(type, version);\n } catch {\n return undefined;\n }\n }\n\n /**\n * Create a message instance from wire data (using derived message classes)\n */\n decode(wireData: any): Either<string, IMessage> {\n if (!wireData || typeof wireData !== 'object') {\n return { _tag: 'Left', left: 'Invalid wire data: must be an object' };\n }\n\n const { type, version } = wireData;\n if (!type || !version) {\n return {\n _tag: 'Left',\n left: 'Invalid wire data: missing type or version',\n };\n }\n\n const MessageClass = this.getMessageClass(type, version);\n if (!MessageClass) {\n return { _tag: 'Left', left: `Unknown message type: ${type}@${version}` };\n }\n\n const result = MessageClass.decode(wireData);\n if (isLeft(result)) {\n return {\n _tag: 'Left',\n left: `Decode error: ${result.left.map((e) => e.message).join(', ')}`,\n };\n }\n\n return { _tag: 'Right', right: result.right };\n }\n\n /**\n * Encode a message to wire format\n */\n encode(message: IMessage): any {\n return message.encode();\n }\n\n /**\n * Get all registered message types (derived from single source)\n */\n getRegisteredTypes(): string[] {\n return getAllSupportedMessages().map(\n ({ type, version }) => `${type}@${version}`\n );\n }\n}\n\n// Export singleton instance\nexport const messageRegistry = MessageRegistry.getInstance();\n"]}
@@ -1,97 +0,0 @@
1
- import { Either } from 'fp-ts/lib/Either';
2
- import { Errors, Type } from 'io-ts';
3
- /**
4
- * Configuration for creating a standard message class
5
- */
6
- export interface StandardMessageConfig<TData, TWire, TType extends string, TVersion extends number> {
7
- messageType: TType;
8
- version: TVersion;
9
- schema: Type<any>;
10
- encodeData: (data: TData, type: TType, version: TVersion) => TWire;
11
- decodeData: (decoded: any) => TData;
12
- }
13
- /**
14
- * Standard message class factory - eliminates boilerplate
15
- * Creates a complete message class with encode/decode functionality
16
- */
17
- export declare function createStandardMessage<TData, TWire, TType extends string, TVersion extends number>(config: StandardMessageConfig<TData, TWire, TType, TVersion>): {
18
- new (data: TData): {
19
- readonly type: TType;
20
- readonly version: TVersion;
21
- encode(): TWire;
22
- readonly data: TData;
23
- getData(): TData;
24
- };
25
- readonly MESSAGE_TYPE: TType;
26
- readonly MESSAGE_VERSION: TVersion;
27
- readonly schema: Type<any, any, unknown>;
28
- decode(wireData: unknown): Either<Errors, {
29
- readonly type: TType;
30
- readonly version: TVersion;
31
- encode(): TWire;
32
- readonly data: TData;
33
- getData(): TData;
34
- }>;
35
- };
36
- /**
37
- * Type helper to extract the message class type from createStandardMessage
38
- */
39
- export type StandardMessageClass<TData, TWire, TType extends string, TVersion extends number> = ReturnType<typeof createStandardMessage<TData, TWire, TType, TVersion>>;
40
- /**
41
- * Simplified message factory for messages with identical runtime and wire formats
42
- */
43
- export declare function createSimpleMessage<TData, TType extends string, TVersion extends number>(config: {
44
- messageType: TType;
45
- version: TVersion;
46
- schema: Type<any>;
47
- }): {
48
- new (data: TData): {
49
- readonly type: TType;
50
- readonly version: TVersion;
51
- encode(): any;
52
- readonly data: TData;
53
- getData(): TData;
54
- };
55
- readonly MESSAGE_TYPE: TType;
56
- readonly MESSAGE_VERSION: TVersion;
57
- readonly schema: Type<any, any, unknown>;
58
- decode(wireData: unknown): Either<Errors, {
59
- readonly type: TType;
60
- readonly version: TVersion;
61
- encode(): any;
62
- readonly data: TData;
63
- getData(): TData;
64
- }>;
65
- };
66
- /**
67
- * Message factory with field transformations - eliminates encodeData/decodeData duplication
68
- */
69
- export declare function createMessageWithTransforms<TData, TWire = TData & {
70
- type: string;
71
- version: number;
72
- }, TType extends string = string, TVersion extends number = number>(config: {
73
- messageType: TType;
74
- version: TVersion;
75
- schema: Type<any>;
76
- transforms?: Record<string, (value: any) => any>;
77
- normalizers?: Partial<Record<keyof TData, (input: any) => any>>;
78
- }): {
79
- new (data: TData): {
80
- readonly type: TType;
81
- readonly version: TVersion;
82
- encode(): TWire;
83
- readonly data: TData;
84
- getData(): TData;
85
- };
86
- readonly MESSAGE_TYPE: TType;
87
- readonly MESSAGE_VERSION: TVersion;
88
- readonly schema: Type<any, any, unknown>;
89
- decode(wireData: unknown): Either<Errors, {
90
- readonly type: TType;
91
- readonly version: TVersion;
92
- encode(): TWire;
93
- readonly data: TData;
94
- getData(): TData;
95
- }>;
96
- };
97
- //# sourceMappingURL=StandardMessage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StandardMessage.d.ts","sourceRoot":"","sources":["../../../src/messages/utils/StandardMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAGrC;;GAEG;AACH,MAAM,WAAW,qBAAqB,CACpC,KAAK,EACL,KAAK,EACL,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM;IAEvB,WAAW,EAAE,KAAK,CAAC;IACnB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC;IACnE,UAAU,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EACL,KAAK,EACL,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,EACvB,MAAM,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;eAYxC,KAAK;;;kBAIb,KAAK;;;;;;;qBAIS,OAAO,GAAG,MAAM,CAAC,MAAM;;;kBAJrC,KAAK;;;MAIuD;EAezE;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAC9B,KAAK,EACL,KAAK,EACL,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,IACrB,UAAU,CAAC,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EACL,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,EACvB,MAAM,EAAE;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;CAAE;;;;;;;;;;;qBAlC1C,OAAO;;;;;;;EAkDlC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EACL,KAAK,GAAG,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACjD,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE;IACR,WAAW,EAAE,KAAK,CAAC;IACnB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;CACjE;;;;;;;;;;;qBAlE2B,OAAO;;;;;;;EAiHlC"}
@@ -1,98 +0,0 @@
1
- import { isLeft } from 'fp-ts/lib/Either';
2
- import { BaseMessage } from '../base';
3
- /**
4
- * Standard message class factory - eliminates boilerplate
5
- * Creates a complete message class with encode/decode functionality
6
- */
7
- export function createStandardMessage(config) {
8
- class StandardMessageClass extends BaseMessage {
9
- constructor(data) {
10
- super(data);
11
- this.type = config.messageType;
12
- this.version = config.version;
13
- }
14
- encode() {
15
- return config.encodeData(this.data, this.type, this.version);
16
- }
17
- static decode(wireData) {
18
- const result = config.schema.decode(wireData);
19
- if (isLeft(result)) {
20
- return result;
21
- }
22
- const decoded = result.right;
23
- return {
24
- _tag: 'Right',
25
- right: new StandardMessageClass(config.decodeData(decoded)),
26
- };
27
- }
28
- }
29
- StandardMessageClass.MESSAGE_TYPE = config.messageType;
30
- StandardMessageClass.MESSAGE_VERSION = config.version;
31
- StandardMessageClass.schema = config.schema;
32
- return StandardMessageClass;
33
- }
34
- /**
35
- * Simplified message factory for messages with identical runtime and wire formats
36
- */
37
- export function createSimpleMessage(config) {
38
- return createStandardMessage({
39
- messageType: config.messageType,
40
- version: config.version,
41
- schema: config.schema,
42
- encodeData: (data) => ({
43
- type: config.messageType,
44
- version: config.version,
45
- ...data,
46
- }),
47
- decodeData: (decoded) => {
48
- const { type, version, ...data } = decoded;
49
- return data;
50
- },
51
- });
52
- }
53
- /**
54
- * Message factory with field transformations - eliminates encodeData/decodeData duplication
55
- */
56
- export function createMessageWithTransforms(config) {
57
- return createStandardMessage({
58
- messageType: config.messageType,
59
- version: config.version,
60
- schema: config.schema,
61
- encodeData: (data) => {
62
- const encoded = {
63
- type: config.messageType,
64
- version: config.version,
65
- };
66
- // Apply field transformations
67
- const dataObj = data;
68
- for (const [key, value] of Object.entries(dataObj)) {
69
- if (value !== undefined) {
70
- const transform = config.transforms?.[key];
71
- encoded[key] = transform ? transform(value) : value;
72
- }
73
- }
74
- return encoded;
75
- },
76
- decodeData: (decoded) => {
77
- // Apply normalizers to convert wire format to runtime format
78
- const normalizedData = { ...decoded };
79
- if (config.normalizers) {
80
- for (const [key, normalizer] of Object.entries(config.normalizers)) {
81
- if (key in normalizedData &&
82
- normalizer &&
83
- typeof normalizer === 'function' &&
84
- normalizedData[key] !== undefined) {
85
- const normalizedValue = normalizer(normalizedData[key]);
86
- if (normalizedValue !== undefined) {
87
- normalizedData[key] = normalizedValue;
88
- }
89
- }
90
- }
91
- }
92
- // Remove type and version, return runtime data
93
- const { type, version, ...data } = normalizedData;
94
- return data;
95
- },
96
- });
97
- }
98
- //# sourceMappingURL=StandardMessage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StandardMessage.js","sourceRoot":"","sources":["../../../src/messages/utils/StandardMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, isLeft } from 'fp-ts/lib/Either';\nimport { Errors, Type } from 'io-ts';\nimport { BaseMessage, IMessage } from '../base';\n\n/**\n * Configuration for creating a standard message class\n */\nexport interface StandardMessageConfig<\n TData,\n TWire,\n TType extends string,\n TVersion extends number,\n> {\n messageType: TType;\n version: TVersion;\n schema: Type<any>;\n encodeData: (data: TData, type: TType, version: TVersion) => TWire;\n decodeData: (decoded: any) => TData;\n}\n\n/**\n * Standard message class factory - eliminates boilerplate\n * Creates a complete message class with encode/decode functionality\n */\nexport function createStandardMessage<\n TData,\n TWire,\n TType extends string,\n TVersion extends number,\n>(config: StandardMessageConfig<TData, TWire, TType, TVersion>) {\n class StandardMessageClass\n extends BaseMessage<TData, TWire>\n implements IMessage<TData, TWire>\n {\n static readonly MESSAGE_TYPE = config.messageType;\n static readonly MESSAGE_VERSION = config.version;\n static readonly schema = config.schema;\n\n readonly type = config.messageType;\n readonly version = config.version;\n\n constructor(data: TData) {\n super(data);\n }\n\n encode(): TWire {\n return config.encodeData(this.data, this.type, this.version);\n }\n\n static decode(wireData: unknown): Either<Errors, StandardMessageClass> {\n const result = config.schema.decode(wireData);\n if (isLeft(result)) {\n return result;\n }\n\n const decoded = result.right;\n return {\n _tag: 'Right',\n right: new StandardMessageClass(config.decodeData(decoded)),\n };\n }\n }\n\n return StandardMessageClass;\n}\n\n/**\n * Type helper to extract the message class type from createStandardMessage\n */\nexport type StandardMessageClass<\n TData,\n TWire,\n TType extends string,\n TVersion extends number,\n> = ReturnType<typeof createStandardMessage<TData, TWire, TType, TVersion>>;\n\n/**\n * Simplified message factory for messages with identical runtime and wire formats\n */\nexport function createSimpleMessage<\n TData,\n TType extends string,\n TVersion extends number,\n>(config: { messageType: TType; version: TVersion; schema: Type<any> }) {\n return createStandardMessage({\n messageType: config.messageType,\n version: config.version,\n schema: config.schema,\n encodeData: (data: TData) =>\n ({\n type: config.messageType,\n version: config.version,\n ...data,\n }) as any,\n decodeData: (decoded: any) => {\n const { type, version, ...data } = decoded;\n return data as TData;\n },\n });\n}\n\n/**\n * Message factory with field transformations - eliminates encodeData/decodeData duplication\n */\nexport function createMessageWithTransforms<\n TData,\n TWire = TData & { type: string; version: number },\n TType extends string = string,\n TVersion extends number = number,\n>(config: {\n messageType: TType;\n version: TVersion;\n schema: Type<any>;\n transforms?: Record<string, (value: any) => any>;\n normalizers?: Partial<Record<keyof TData, (input: any) => any>>;\n}) {\n return createStandardMessage({\n messageType: config.messageType,\n version: config.version,\n schema: config.schema,\n encodeData: (data: TData) => {\n const encoded: any = {\n type: config.messageType,\n version: config.version,\n };\n\n // Apply field transformations\n const dataObj = data as Record<string, any>;\n for (const [key, value] of Object.entries(dataObj)) {\n if (value !== undefined) {\n const transform = config.transforms?.[key];\n encoded[key] = transform ? transform(value) : value;\n }\n }\n\n return encoded as TWire;\n },\n decodeData: (decoded: any) => {\n // Apply normalizers to convert wire format to runtime format\n const normalizedData: any = { ...decoded };\n\n if (config.normalizers) {\n for (const [key, normalizer] of Object.entries(config.normalizers)) {\n if (\n key in normalizedData &&\n normalizer &&\n typeof normalizer === 'function' &&\n normalizedData[key] !== undefined\n ) {\n const normalizedValue = normalizer(normalizedData[key]);\n if (normalizedValue !== undefined) {\n normalizedData[key] = normalizedValue;\n }\n }\n }\n }\n\n // Remove type and version, return runtime data\n const { type, version, ...data } = normalizedData;\n return data as TData;\n },\n });\n}\n"]}
@@ -1,20 +0,0 @@
1
- /**
2
- * Standard encoder for simple messages
3
- * Creates basic encode function with type and version
4
- */
5
- export declare function createSimpleEncoder<TData, TWire>(messageType: string, version: number): (data: TData) => TWire;
6
- /**
7
- * Standard encoder for complex messages with codec transformations
8
- * Handles field transformations like Uint8Array -> hex string
9
- */
10
- export declare function createComplexEncoder<TData, TWire>(messageType: string, version: number, fieldTransforms?: Record<string, (value: any) => any>): (data: TData) => TWire;
11
- /**
12
- * Standard decoder with field extraction
13
- * Extracts runtime data from decoded wire format
14
- */
15
- export declare function createStandardDecoder<TData>(fieldExtractor: (decoded: any) => TData): (decoded: any) => TData;
16
- /**
17
- * Identity decoder for simple messages where wire format matches runtime format
18
- */
19
- export declare function createIdentityDecoder<TData>(): (decoded: any) => TData;
20
- //# sourceMappingURL=encodingHelpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encodingHelpers.d.ts","sourceRoot":"","sources":["../../../src/messages/utils/encodingHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAC9C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,IAEP,MAAM,KAAK,KAAG,KAAK,CAM5B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAM,IAEjD,MAAM,KAAK,KAAG,KAAK,CAiB5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EACzC,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,KAAK,IAE/B,SAAS,GAAG,KAAG,KAAK,CAC7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,KAAK,CAMtE"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Standard encoder for simple messages
3
- * Creates basic encode function with type and version
4
- */
5
- export function createSimpleEncoder(messageType, version) {
6
- return (data) => ({
7
- type: messageType,
8
- version,
9
- ...data,
10
- });
11
- }
12
- /**
13
- * Standard encoder for complex messages with codec transformations
14
- * Handles field transformations like Uint8Array -> hex string
15
- */
16
- export function createComplexEncoder(messageType, version, fieldTransforms = {}) {
17
- return (data) => {
18
- const encoded = {
19
- type: messageType,
20
- version,
21
- };
22
- // Apply field transformations
23
- for (const [key, value] of Object.entries(data)) {
24
- if (value !== undefined) {
25
- encoded[key] = fieldTransforms[key]
26
- ? fieldTransforms[key](value)
27
- : value;
28
- }
29
- }
30
- return encoded;
31
- };
32
- }
33
- /**
34
- * Standard decoder with field extraction
35
- * Extracts runtime data from decoded wire format
36
- */
37
- export function createStandardDecoder(fieldExtractor) {
38
- return (decoded) => fieldExtractor(decoded);
39
- }
40
- /**
41
- * Identity decoder for simple messages where wire format matches runtime format
42
- */
43
- export function createIdentityDecoder() {
44
- return (decoded) => {
45
- // Remove type and version fields, keep the rest
46
- const { type, version, ...data } = decoded;
47
- return data;
48
- };
49
- }
50
- //# sourceMappingURL=encodingHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encodingHelpers.js","sourceRoot":"","sources":["../../../src/messages/utils/encodingHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,OAAe;IAEf,OAAO,CAAC,IAAW,EAAS,EAAE,CAC5B,CAAC;QACC,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,GAAG,IAAI;KACR,CAAU,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,OAAe,EACf,kBAAuD,EAAE;IAEzD,OAAO,CAAC,IAAW,EAAS,EAAE;QAC5B,MAAM,OAAO,GAAQ;YACnB,IAAI,EAAE,WAAW;YACjB,OAAO;SACR,CAAC;QAEF,8BAA8B;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAW,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC;oBACjC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC7B,CAAC,CAAC,KAAK,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,OAAgB,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAuC;IAEvC,OAAO,CAAC,OAAY,EAAS,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,OAAY,EAAS,EAAE;QAC7B,gDAAgD;QAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC3C,OAAO,IAAa,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Standard encoder for simple messages\n * Creates basic encode function with type and version\n */\nexport function createSimpleEncoder<TData, TWire>(\n messageType: string,\n version: number\n) {\n return (data: TData): TWire =>\n ({\n type: messageType,\n version,\n ...data,\n }) as TWire;\n}\n\n/**\n * Standard encoder for complex messages with codec transformations\n * Handles field transformations like Uint8Array -> hex string\n */\nexport function createComplexEncoder<TData, TWire>(\n messageType: string,\n version: number,\n fieldTransforms: Record<string, (value: any) => any> = {}\n) {\n return (data: TData): TWire => {\n const encoded: any = {\n type: messageType,\n version,\n };\n\n // Apply field transformations\n for (const [key, value] of Object.entries(data as any)) {\n if (value !== undefined) {\n encoded[key] = fieldTransforms[key]\n ? fieldTransforms[key](value)\n : value;\n }\n }\n\n return encoded as TWire;\n };\n}\n\n/**\n * Standard decoder with field extraction\n * Extracts runtime data from decoded wire format\n */\nexport function createStandardDecoder<TData>(\n fieldExtractor: (decoded: any) => TData\n) {\n return (decoded: any): TData => fieldExtractor(decoded);\n}\n\n/**\n * Identity decoder for simple messages where wire format matches runtime format\n */\nexport function createIdentityDecoder<TData>(): (decoded: any) => TData {\n return (decoded: any): TData => {\n // Remove type and version fields, keep the rest\n const { type, version, ...data } = decoded;\n return data as TData;\n };\n}\n"]}
@@ -1,4 +0,0 @@
1
- export * from './schemaBuilder';
2
- export * from './encodingHelpers';
3
- export * from './StandardMessage';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -1,5 +0,0 @@
1
- // Export all message utilities
2
- export * from './schemaBuilder';
3
- export * from './encodingHelpers';
4
- export * from './StandardMessage';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/messages/utils/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["// Export all message utilities\nexport * from './schemaBuilder';\nexport * from './encodingHelpers';\nexport * from './StandardMessage';\n"]}
@@ -1,19 +0,0 @@
1
- import { Mixed, Type } from 'io-ts';
2
- /**
3
- * Build standard message schema with type and version
4
- * Eliminates duplication across all message schemas
5
- */
6
- export declare function buildMessageSchema<T extends string, V extends number>(messageType: T, version: V, additionalFields?: Record<string, any>, ...additionalSchemas: Mixed[]): Type<any>;
7
- /**
8
- * Message schema configuration interface
9
- */
10
- export interface MessageSchemaConfig<T extends string, V extends number> {
11
- type: T;
12
- version: V;
13
- fields: Record<string, any>;
14
- }
15
- /**
16
- * Create schema from configuration
17
- */
18
- export declare function createSchemaFromConfig<T extends string, V extends number>(config: MessageSchemaConfig<T, V>): Type<any>;
19
- //# sourceMappingURL=schemaBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemaBuilder.d.ts","sourceRoot":"","sources":["../../../src/messages/utils/schemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,EAAQ,IAAI,EAAE,MAAM,OAAO,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACnE,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,CAAC,EACV,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC1C,GAAG,iBAAiB,EAAE,KAAK,EAAE,GAC5B,IAAI,CAAC,GAAG,CAAC,CAqBX;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IACrE,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACvE,MAAM,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC,IAAI,CAAC,GAAG,CAAC,CAEX"}