@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.
- package/dist/index.cjs +823 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1030 -0
- package/dist/index.d.ts +1030 -9
- package/dist/index.js +768 -17
- package/dist/index.js.map +1 -1
- package/package.json +9 -7
- package/dist/attestation/index.d.ts +0 -1
- package/dist/attestation/index.d.ts.map +0 -1
- package/dist/attestation/index.js +0 -4
- package/dist/attestation/index.js.map +0 -1
- package/dist/codecs/DomainCodec.d.ts +0 -11
- package/dist/codecs/DomainCodec.d.ts.map +0 -1
- package/dist/codecs/DomainCodec.js +0 -25
- package/dist/codecs/DomainCodec.js.map +0 -1
- package/dist/codecs/EncryptedKeyshareCodec.d.ts +0 -11
- package/dist/codecs/EncryptedKeyshareCodec.d.ts.map +0 -1
- package/dist/codecs/EncryptedKeyshareCodec.js +0 -11
- package/dist/codecs/EncryptedKeyshareCodec.js.map +0 -1
- package/dist/codecs/Uint32ArrayCodec.d.ts +0 -3
- package/dist/codecs/Uint32ArrayCodec.d.ts.map +0 -1
- package/dist/codecs/Uint32ArrayCodec.js +0 -37
- package/dist/codecs/Uint32ArrayCodec.js.map +0 -1
- package/dist/codecs/Uint8ArrayCodec.d.ts +0 -3
- package/dist/codecs/Uint8ArrayCodec.d.ts.map +0 -1
- package/dist/codecs/Uint8ArrayCodec.js +0 -26
- package/dist/codecs/Uint8ArrayCodec.js.map +0 -1
- package/dist/codecs/Uint8ArrayOrHexCodec.d.ts +0 -3
- package/dist/codecs/Uint8ArrayOrHexCodec.d.ts.map +0 -1
- package/dist/codecs/Uint8ArrayOrHexCodec.js +0 -35
- package/dist/codecs/Uint8ArrayOrHexCodec.js.map +0 -1
- package/dist/codecs/WebSocketErrorCodec.d.ts +0 -15
- package/dist/codecs/WebSocketErrorCodec.d.ts.map +0 -1
- package/dist/codecs/WebSocketErrorCodec.js +0 -14
- package/dist/codecs/WebSocketErrorCodec.js.map +0 -1
- package/dist/codecs/index.d.ts +0 -4
- package/dist/codecs/index.d.ts.map +0 -1
- package/dist/codecs/index.js +0 -4
- package/dist/codecs/index.js.map +0 -1
- package/dist/constants/algorithms.d.ts +0 -56
- package/dist/constants/algorithms.d.ts.map +0 -1
- package/dist/constants/algorithms.js +0 -60
- package/dist/constants/algorithms.js.map +0 -1
- package/dist/constants/index.d.ts +0 -2
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -2
- package/dist/constants/index.js.map +0 -1
- package/dist/crypto/decapsulate.d.ts +0 -2
- package/dist/crypto/decapsulate.d.ts.map +0 -1
- package/dist/crypto/decapsulate.js +0 -5
- package/dist/crypto/decapsulate.js.map +0 -1
- package/dist/crypto/encapsulate.d.ts +0 -5
- package/dist/crypto/encapsulate.d.ts.map +0 -1
- package/dist/crypto/encapsulate.js +0 -5
- package/dist/crypto/encapsulate.js.map +0 -1
- package/dist/crypto/generateKeypair.d.ts +0 -5
- package/dist/crypto/generateKeypair.d.ts.map +0 -1
- package/dist/crypto/generateKeypair.js +0 -17
- package/dist/crypto/generateKeypair.js.map +0 -1
- package/dist/crypto/index.d.ts +0 -6
- package/dist/crypto/index.d.ts.map +0 -1
- package/dist/crypto/index.js +0 -6
- package/dist/crypto/index.js.map +0 -1
- package/dist/crypto/keyDerivation.d.ts +0 -14
- package/dist/crypto/keyDerivation.d.ts.map +0 -1
- package/dist/crypto/keyDerivation.js +0 -21
- package/dist/crypto/keyDerivation.js.map +0 -1
- package/dist/crypto/keyshareEncryption.d.ts +0 -13
- package/dist/crypto/keyshareEncryption.d.ts.map +0 -1
- package/dist/crypto/keyshareEncryption.js +0 -39
- package/dist/crypto/keyshareEncryption.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/messages/ConnectionAckV1Request.d.ts +0 -43
- package/dist/messages/ConnectionAckV1Request.d.ts.map +0 -1
- package/dist/messages/ConnectionAckV1Request.js +0 -17
- package/dist/messages/ConnectionAckV1Request.js.map +0 -1
- package/dist/messages/ConnectionAckV1Response.d.ts +0 -45
- package/dist/messages/ConnectionAckV1Response.d.ts.map +0 -1
- package/dist/messages/ConnectionAckV1Response.js +0 -18
- package/dist/messages/ConnectionAckV1Response.js.map +0 -1
- package/dist/messages/HandshakeV1Request.d.ts +0 -45
- package/dist/messages/HandshakeV1Request.d.ts.map +0 -1
- package/dist/messages/HandshakeV1Request.js +0 -28
- package/dist/messages/HandshakeV1Request.js.map +0 -1
- package/dist/messages/HandshakeV1Response.d.ts +0 -47
- package/dist/messages/HandshakeV1Response.d.ts.map +0 -1
- package/dist/messages/HandshakeV1Response.js +0 -20
- package/dist/messages/HandshakeV1Response.js.map +0 -1
- package/dist/messages/SignMessageV1Request.d.ts +0 -63
- package/dist/messages/SignMessageV1Request.d.ts.map +0 -1
- package/dist/messages/SignMessageV1Request.js +0 -42
- package/dist/messages/SignMessageV1Request.js.map +0 -1
- package/dist/messages/SignMessageV1Response.d.ts +0 -47
- package/dist/messages/SignMessageV1Response.d.ts.map +0 -1
- package/dist/messages/SignMessageV1Response.js +0 -28
- package/dist/messages/SignMessageV1Response.js.map +0 -1
- package/dist/messages/allMessages.d.ts +0 -259
- package/dist/messages/allMessages.d.ts.map +0 -1
- package/dist/messages/allMessages.js +0 -57
- package/dist/messages/allMessages.js.map +0 -1
- package/dist/messages/base.d.ts +0 -27
- package/dist/messages/base.d.ts.map +0 -1
- package/dist/messages/base.js +0 -12
- package/dist/messages/base.js.map +0 -1
- package/dist/messages/index.d.ts +0 -11
- package/dist/messages/index.d.ts.map +0 -1
- package/dist/messages/index.js +0 -14
- package/dist/messages/index.js.map +0 -1
- package/dist/messages/registry.d.ts +0 -136
- package/dist/messages/registry.d.ts.map +0 -1
- package/dist/messages/registry.js +0 -67
- package/dist/messages/registry.js.map +0 -1
- package/dist/messages/utils/StandardMessage.d.ts +0 -97
- package/dist/messages/utils/StandardMessage.d.ts.map +0 -1
- package/dist/messages/utils/StandardMessage.js +0 -98
- package/dist/messages/utils/StandardMessage.js.map +0 -1
- package/dist/messages/utils/encodingHelpers.d.ts +0 -20
- package/dist/messages/utils/encodingHelpers.d.ts.map +0 -1
- package/dist/messages/utils/encodingHelpers.js +0 -50
- package/dist/messages/utils/encodingHelpers.js.map +0 -1
- package/dist/messages/utils/index.d.ts +0 -4
- package/dist/messages/utils/index.d.ts.map +0 -1
- package/dist/messages/utils/index.js +0 -5
- package/dist/messages/utils/index.js.map +0 -1
- package/dist/messages/utils/schemaBuilder.d.ts +0 -19
- package/dist/messages/utils/schemaBuilder.d.ts.map +0 -1
- package/dist/messages/utils/schemaBuilder.js +0 -31
- package/dist/messages/utils/schemaBuilder.js.map +0 -1
- package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts +0 -20
- package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts.map +0 -1
- package/dist/signing/algorithms/BIP340SigningAlgorithm.js +0 -35
- package/dist/signing/algorithms/BIP340SigningAlgorithm.js.map +0 -1
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts +0 -20
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts.map +0 -1
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.js +0 -43
- package/dist/signing/algorithms/EcdsaSigningAlgorithm.js.map +0 -1
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts +0 -18
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts.map +0 -1
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.js +0 -34
- package/dist/signing/algorithms/Ed25519SigningAlgorithm.js.map +0 -1
- package/dist/signing/allAlgorithms.d.ts +0 -50
- package/dist/signing/allAlgorithms.d.ts.map +0 -1
- package/dist/signing/allAlgorithms.js +0 -59
- package/dist/signing/allAlgorithms.js.map +0 -1
- package/dist/signing/base.d.ts +0 -42
- package/dist/signing/base.d.ts.map +0 -1
- package/dist/signing/base.js +0 -6
- package/dist/signing/base.js.map +0 -1
- package/dist/signing/index.d.ts +0 -7
- package/dist/signing/index.d.ts.map +0 -1
- package/dist/signing/index.js +0 -9
- package/dist/signing/index.js.map +0 -1
- package/dist/signing/registry.d.ts +0 -26
- package/dist/signing/registry.d.ts.map +0 -1
- package/dist/signing/registry.js +0 -36
- package/dist/signing/registry.js.map +0 -1
- package/dist/types.d.ts +0 -42
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -12
- package/dist/types.js.map +0 -1
- package/dist/utils/assertDefined.d.ts +0 -16
- package/dist/utils/assertDefined.d.ts.map +0 -1
- package/dist/utils/assertDefined.js +0 -27
- 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"}
|
package/dist/messages/base.js
DELETED
|
@@ -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"]}
|
package/dist/messages/index.d.ts
DELETED
|
@@ -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"}
|
package/dist/messages/index.js
DELETED
|
@@ -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 +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 +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"}
|