@hsuite/native-connect-client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +51 -0
  2. package/coverage/base.css +224 -0
  3. package/coverage/block-navigation.js +87 -0
  4. package/coverage/coverage-summary.json +10 -0
  5. package/coverage/favicon.png +0 -0
  6. package/coverage/index.html +161 -0
  7. package/coverage/lcov-report/base.css +224 -0
  8. package/coverage/lcov-report/block-navigation.js +87 -0
  9. package/coverage/lcov-report/favicon.png +0 -0
  10. package/coverage/lcov-report/index.html +161 -0
  11. package/coverage/lcov-report/prettify.css +1 -0
  12. package/coverage/lcov-report/prettify.js +2 -0
  13. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  14. package/coverage/lcov-report/sorter.js +210 -0
  15. package/coverage/lcov-report/src/handlers/index.html +146 -0
  16. package/coverage/lcov-report/src/handlers/session-handler.ts.html +223 -0
  17. package/coverage/lcov-report/src/handlers/signing-handler.ts.html +217 -0
  18. package/coverage/lcov-report/src/handlers/wallet-handler.ts.html +193 -0
  19. package/coverage/lcov-report/src/harness/index.html +116 -0
  20. package/coverage/lcov-report/src/harness/signing-harness.ts.html +352 -0
  21. package/coverage/lcov-report/src/index.html +146 -0
  22. package/coverage/lcov-report/src/memory-transport.ts.html +358 -0
  23. package/coverage/lcov-report/src/protocol/e2e-harness.ts.html +568 -0
  24. package/coverage/lcov-report/src/protocol/index.html +116 -0
  25. package/coverage/lcov-report/src/query-client.ts.html +277 -0
  26. package/coverage/lcov-report/src/reference-client.ts.html +691 -0
  27. package/coverage/lcov.info +981 -0
  28. package/coverage/prettify.css +1 -0
  29. package/coverage/prettify.js +2 -0
  30. package/coverage/sort-arrow-sprite.png +0 -0
  31. package/coverage/sorter.js +210 -0
  32. package/coverage/src/handlers/index.html +146 -0
  33. package/coverage/src/handlers/session-handler.ts.html +223 -0
  34. package/coverage/src/handlers/signing-handler.ts.html +217 -0
  35. package/coverage/src/handlers/wallet-handler.ts.html +193 -0
  36. package/coverage/src/harness/index.html +116 -0
  37. package/coverage/src/harness/signing-harness.ts.html +352 -0
  38. package/coverage/src/index.html +146 -0
  39. package/coverage/src/memory-transport.ts.html +358 -0
  40. package/coverage/src/protocol/e2e-harness.ts.html +568 -0
  41. package/coverage/src/protocol/index.html +116 -0
  42. package/coverage/src/query-client.ts.html +277 -0
  43. package/coverage/src/reference-client.ts.html +691 -0
  44. package/dist/handlers/session-handler.d.ts +22 -0
  45. package/dist/handlers/session-handler.d.ts.map +1 -0
  46. package/dist/handlers/session-handler.js +41 -0
  47. package/dist/handlers/session-handler.js.map +1 -0
  48. package/dist/handlers/signing-handler.d.ts +22 -0
  49. package/dist/handlers/signing-handler.d.ts.map +1 -0
  50. package/dist/handlers/signing-handler.js +39 -0
  51. package/dist/handlers/signing-handler.js.map +1 -0
  52. package/dist/handlers/wallet-handler.d.ts +22 -0
  53. package/dist/handlers/wallet-handler.d.ts.map +1 -0
  54. package/dist/handlers/wallet-handler.js +32 -0
  55. package/dist/handlers/wallet-handler.js.map +1 -0
  56. package/dist/harness/signing-harness.d.ts +47 -0
  57. package/dist/harness/signing-harness.d.ts.map +1 -0
  58. package/dist/harness/signing-harness.js +79 -0
  59. package/dist/harness/signing-harness.js.map +1 -0
  60. package/dist/index.d.ts +24 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +24 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/memory-transport-options.d.ts +27 -0
  65. package/dist/memory-transport-options.d.ts.map +1 -0
  66. package/dist/memory-transport-options.js +11 -0
  67. package/dist/memory-transport-options.js.map +1 -0
  68. package/dist/memory-transport.d.ts +55 -0
  69. package/dist/memory-transport.d.ts.map +1 -0
  70. package/dist/memory-transport.js +81 -0
  71. package/dist/memory-transport.js.map +1 -0
  72. package/dist/protocol/e2e-harness.d.ts +65 -0
  73. package/dist/protocol/e2e-harness.d.ts.map +1 -0
  74. package/dist/protocol/e2e-harness.js +130 -0
  75. package/dist/protocol/e2e-harness.js.map +1 -0
  76. package/dist/protocol/index.d.ts +22 -0
  77. package/dist/protocol/index.d.ts.map +1 -0
  78. package/dist/protocol/index.js +22 -0
  79. package/dist/protocol/index.js.map +1 -0
  80. package/dist/query-client.d.ts +41 -0
  81. package/dist/query-client.d.ts.map +1 -0
  82. package/dist/query-client.js +52 -0
  83. package/dist/query-client.js.map +1 -0
  84. package/dist/reference-client.d.ts +100 -0
  85. package/dist/reference-client.d.ts.map +1 -0
  86. package/dist/reference-client.js +149 -0
  87. package/dist/reference-client.js.map +1 -0
  88. package/package.json +46 -0
  89. package/src/handlers/session-handler.ts +46 -0
  90. package/src/handlers/signing-handler.ts +44 -0
  91. package/src/handlers/wallet-handler.ts +36 -0
  92. package/src/harness/signing-harness.ts +89 -0
  93. package/src/index.ts +24 -0
  94. package/src/memory-transport-options.ts +28 -0
  95. package/src/memory-transport.ts +91 -0
  96. package/src/protocol/e2e-harness.ts +161 -0
  97. package/src/protocol/index.ts +23 -0
  98. package/src/query-client.ts +64 -0
  99. package/src/reference-client.spec.ts +408 -0
  100. package/src/reference-client.ts +202 -0
  101. package/tests/e2e-harness.spec.ts +64 -0
  102. package/tests/realnet-session.spec.ts +303 -0
  103. package/tests/signing-harness.spec.ts +41 -0
  104. package/tsconfig.build.json +10 -0
  105. package/tsconfig.build.tsbuildinfo +1 -0
  106. package/tsconfig.json +17 -0
  107. package/vitest.config.ts +35 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Session lifecycle RPC handler registration for reference client.
12
+ * Provides mock session request handling for testing dApp-wallet session flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/session-handler
15
+ */
16
+ import { RpcRouter } from '@hsuite/native-connect-sdk';
17
+ /**
18
+ * @description Register session lifecycle RPC handlers
19
+ * @param router - RPC router to register handlers on
20
+ */
21
+ export declare const registerSessionHandlers: (router: RpcRouter) => void;
22
+ //# sourceMappingURL=session-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/session-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAa,MAAM,4BAA4B,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,KAAG,IAqB3D,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Session lifecycle RPC handler registration for reference client.
12
+ * Provides mock session request handling for testing dApp-wallet session flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/session-handler
15
+ */
16
+ import { getLogger } from '@hsuite/native-connect-sdk';
17
+ import { SessionRequestSchema } from '@hsuite/native-connect-types';
18
+ /**
19
+ * @description Register session lifecycle RPC handlers
20
+ * @param router - RPC router to register handlers on
21
+ */
22
+ export const registerSessionHandlers = (router) => {
23
+ const logger = getLogger().scoped?.('ReferenceClient:SessionHandler') ?? getLogger();
24
+ router.register('session/request', async (params) => {
25
+ const request = SessionRequestSchema.parse(params);
26
+ logger.info('Session request received', {
27
+ appId: request.appId,
28
+ appName: request.appName,
29
+ permissions: request.permissions,
30
+ timestamp: request.timestamp,
31
+ });
32
+ return {
33
+ approved: true,
34
+ accounts: [],
35
+ metadata: request.metadata ?? {},
36
+ ledgerId: request.ledgerId,
37
+ networkId: request.networkId,
38
+ };
39
+ });
40
+ };
41
+ //# sourceMappingURL=session-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-handler.js","sourceRoot":"","sources":["../../src/handlers/session-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAa,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAiB,EAAQ,EAAE;IACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,gCAAgC,CAAC,IAAI,SAAS,EAAE,CAAC;IAErF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Mock signing RPC handler registration for reference client.
12
+ * Provides simulated signing responses for testing transaction signing flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/signing-handler
15
+ */
16
+ import { RpcRouter } from '@hsuite/native-connect-sdk';
17
+ /**
18
+ * @description Register mock signing handlers for testing
19
+ * @param router - RPC router to register handlers on
20
+ */
21
+ export declare const registerSigningHandlers: (router: RpcRouter) => void;
22
+ //# sourceMappingURL=signing-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/signing-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAa,MAAM,4BAA4B,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,KAAG,IAmB3D,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Mock signing RPC handler registration for reference client.
12
+ * Provides simulated signing responses for testing transaction signing flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/signing-handler
15
+ */
16
+ import { getLogger } from '@hsuite/native-connect-sdk';
17
+ import { SignPayloadSchema } from '@hsuite/native-connect-types';
18
+ /**
19
+ * @description Register mock signing handlers for testing
20
+ * @param router - RPC router to register handlers on
21
+ */
22
+ export const registerSigningHandlers = (router) => {
23
+ const logger = getLogger().scoped?.('ReferenceClient:SigningHandler') ?? getLogger();
24
+ router.register('ledger/sign', async (params) => {
25
+ const payload = SignPayloadSchema.parse(params);
26
+ logger.info('Simulated signing request', {
27
+ ledgerId: payload.ledgerId,
28
+ account: payload.accountAddress,
29
+ nonce: payload.nonce,
30
+ });
31
+ return {
32
+ signature: 'simulated-signature',
33
+ publicKey: payload.accountAddress,
34
+ payloadHash: 'hash',
35
+ algorithm: 'secp256k1',
36
+ };
37
+ });
38
+ };
39
+ //# sourceMappingURL=signing-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-handler.js","sourceRoot":"","sources":["../../src/handlers/signing-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAa,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAiB,EAAQ,EAAE;IACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,gCAAgC,CAAC,IAAI,SAAS,EAAE,CAAC;IAErF,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,qBAAqB;YAChC,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,WAAW;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Wallet RPC handler registration for reference client.
12
+ * Provides handlers for account and configuration query methods.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/wallet-handler
15
+ */
16
+ import { RpcRouter } from '@hsuite/native-connect-sdk';
17
+ /**
18
+ * @description Register wallet RPC handlers for account and config queries
19
+ * @param router - RPC router to register handlers on
20
+ */
21
+ export declare const registerWalletHandlers: (router: RpcRouter) => void;
22
+ //# sourceMappingURL=wallet-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/wallet-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAa,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,KAAG,IAY1D,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Wallet RPC handler registration for reference client.
12
+ * Provides handlers for account and configuration query methods.
13
+ *
14
+ * @module @hsuite/native-connect-client/handlers/wallet-handler
15
+ */
16
+ import { getLogger } from '@hsuite/native-connect-sdk';
17
+ /**
18
+ * @description Register wallet RPC handlers for account and config queries
19
+ * @param router - RPC router to register handlers on
20
+ */
21
+ export const registerWalletHandlers = (router) => {
22
+ const logger = getLogger().scoped?.('ReferenceClient:WalletHandler') ?? getLogger();
23
+ router.register('wallet/accounts', async () => {
24
+ logger.info('wallet/accounts requested');
25
+ return { accounts: [] };
26
+ });
27
+ router.register('wallet/get-config', async () => {
28
+ logger.info('wallet/get-config requested');
29
+ return { network: 'xrpl:testnet' };
30
+ });
31
+ };
32
+ //# sourceMappingURL=wallet-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-handler.js","sourceRoot":"","sources":["../../src/handlers/wallet-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAa,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAiB,EAAQ,EAAE;IAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,+BAA+B,CAAC,IAAI,SAAS,EAAE,CAAC;IAEpF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Test harness wiring reference client to in-memory transport.
12
+ * Provides complete RPC client/server setup for testing signing flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/harness/signing-harness
15
+ */
16
+ import { ReferenceClient } from '../reference-client';
17
+ import { RpcRouter } from '@hsuite/native-connect-sdk';
18
+ import type { RpcRequest, RpcResponse } from '@hsuite/native-connect-types';
19
+ /**
20
+ * @class SigningHarness
21
+ * @description Test harness wiring reference client to in-memory transport.
22
+ *
23
+ * Provides:
24
+ * - Complete RPC client/server setup for testing
25
+ * - Router-based request handling
26
+ * - Automatic transport wiring for bidirectional communication
27
+ */
28
+ export declare class SigningHarness {
29
+ private readonly router;
30
+ private readonly transport;
31
+ private readonly server;
32
+ private readonly client;
33
+ private readonly serverListener;
34
+ constructor(router: RpcRouter, onResponse?: (response: RpcResponse) => void);
35
+ get referenceClient(): ReferenceClient;
36
+ /**
37
+ * @description Send RPC request through harness
38
+ * @param request - RPC request payload
39
+ * @returns Promise resolving to RPC response
40
+ */
41
+ send(request: RpcRequest): Promise<RpcResponse>;
42
+ /**
43
+ * @description Cleanup harness resources
44
+ */
45
+ destroy(): void;
46
+ }
47
+ //# sourceMappingURL=signing-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-harness.d.ts","sourceRoot":"","sources":["../../src/harness/signing-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAa,SAAS,EAAY,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,8BAA8B,CAAC;AAEzF;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;gBAG9C,MAAM,EAAE,SAAS,EAClC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI;IA6B9C,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAIrD;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Test harness wiring reference client to in-memory transport.
12
+ * Provides complete RPC client/server setup for testing signing flows.
13
+ *
14
+ * @module @hsuite/native-connect-client/harness/signing-harness
15
+ */
16
+ import { ReferenceClient } from '../reference-client';
17
+ import { MemoryTransport } from '../memory-transport';
18
+ import { RpcServer, RpcCodec } from '@hsuite/native-connect-sdk';
19
+ /**
20
+ * @class SigningHarness
21
+ * @description Test harness wiring reference client to in-memory transport.
22
+ *
23
+ * Provides:
24
+ * - Complete RPC client/server setup for testing
25
+ * - Router-based request handling
26
+ * - Automatic transport wiring for bidirectional communication
27
+ */
28
+ export class SigningHarness {
29
+ router;
30
+ transport = new MemoryTransport();
31
+ server;
32
+ client;
33
+ serverListener;
34
+ constructor(router, onResponse) {
35
+ this.router = router;
36
+ this.server = new RpcServer({
37
+ codec: new RpcCodec(),
38
+ transport: {
39
+ send: (message) => this.transport.send(message, 'server'),
40
+ },
41
+ handler: (request) => this.router.handle(request),
42
+ });
43
+ this.serverListener = (envelope) => {
44
+ void this.server.handle(envelope);
45
+ };
46
+ this.transport.onServerMessage(this.serverListener);
47
+ this.client = new ReferenceClient({
48
+ transport: {
49
+ send: (message, from) => this.transport.send(message, from),
50
+ onMessage: (listener) => this.transport.onMessage(listener),
51
+ offMessage: (listener) => this.transport.offMessage(listener),
52
+ onServerMessage: (listener) => this.transport.onServerMessage(listener),
53
+ offServerMessage: (listener) => this.transport.offServerMessage(listener),
54
+ },
55
+ server: this.server,
56
+ timeoutMs: 2000,
57
+ onResponse,
58
+ });
59
+ }
60
+ get referenceClient() {
61
+ return this.client;
62
+ }
63
+ /**
64
+ * @description Send RPC request through harness
65
+ * @param request - RPC request payload
66
+ * @returns Promise resolving to RPC response
67
+ */
68
+ async send(request) {
69
+ return this.client.send({ ...request, timestamp: request.timestamp ?? Date.now() });
70
+ }
71
+ /**
72
+ * @description Cleanup harness resources
73
+ */
74
+ destroy() {
75
+ this.client.destroy();
76
+ this.transport.offServerMessage(this.serverListener);
77
+ }
78
+ }
79
+ //# sourceMappingURL=signing-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-harness.js","sourceRoot":"","sources":["../../src/harness/signing-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAa,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG5E;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IAON;IANF,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IAClC,MAAM,CAAY;IAClB,MAAM,CAAkB;IACxB,cAAc,CAAkC;IAEjE,YACmB,MAAiB,EAClC,UAA4C;QAD3B,WAAM,GAAN,MAAM,CAAW;QAGlC,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,KAAK,EAAE,IAAI,QAAQ,EAAE;YACrB,SAAS,EAAE;gBACT,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC1D;YACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,EAAE;YACjC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAChC,SAAS,EAAE;gBACT,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;gBAC3D,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC3D,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC7D,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACvE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;aAC1E;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI;YACf,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Public API for the HSuite Connect Client package.
12
+ * Reference client implementation for HSuite Wallet SDK providing developer-facing
13
+ * RPC client, in-memory transport for testing, handler registration utilities,
14
+ * and end-to-end testing harnesses.
15
+ *
16
+ * @module @hsuite/native-connect-client
17
+ * @packageDocumentation
18
+ */
19
+ export * from './reference-client';
20
+ export * from './query-client';
21
+ export * from './memory-transport';
22
+ export * from './protocol';
23
+ export { PostMessageTransport } from '@hsuite/native-connect-sdk';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Public API for the HSuite Connect Client package.
12
+ * Reference client implementation for HSuite Wallet SDK providing developer-facing
13
+ * RPC client, in-memory transport for testing, handler registration utilities,
14
+ * and end-to-end testing harnesses.
15
+ *
16
+ * @module @hsuite/native-connect-client
17
+ * @packageDocumentation
18
+ */
19
+ export * from './reference-client';
20
+ export * from './query-client';
21
+ export * from './memory-transport';
22
+ export * from './protocol';
23
+ export { PostMessageTransport } from '@hsuite/native-connect-sdk';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file Configuration options for MemoryTransport network simulation.
12
+ * Allows simulating real-world network conditions during testing.
13
+ *
14
+ * @module @hsuite/native-connect-client/memory-transport-options
15
+ */
16
+ /**
17
+ * @description Configuration options for MemoryTransport network simulation
18
+ * @property {number} [latencyMs] - Base network latency in milliseconds
19
+ * @property {number} [jitterMs] - Random jitter added to latency
20
+ * @property {number} [dropRate] - Probability (0-1) of message drop
21
+ */
22
+ export interface MemoryTransportOptions {
23
+ latencyMs?: number;
24
+ jitterMs?: number;
25
+ dropRate?: number;
26
+ }
27
+ //# sourceMappingURL=memory-transport-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-transport-options.d.ts","sourceRoot":"","sources":["../src/memory-transport-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=memory-transport-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-transport-options.js","sourceRoot":"","sources":["../src/memory-transport-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ import type { RpcEnvelope } from '@hsuite/native-connect-types';
11
+ /**
12
+ * @class MemoryTransport
13
+ * @description In-memory transport for testing RPC communication.
14
+ *
15
+ * Provides:
16
+ * - Synchronous message delivery between client and server emitters
17
+ * - Message isolation via deep cloning to prevent mutation
18
+ * - Pending promise queue for ordered delivery
19
+ */
20
+ export declare class MemoryTransport {
21
+ private readonly clientEmitter;
22
+ private readonly serverEmitter;
23
+ private pending;
24
+ /**
25
+ * @description Send message from client or server
26
+ * @param message - RPC envelope to send
27
+ * @param from - Origin of message (client or server)
28
+ */
29
+ send(message: RpcEnvelope, from?: 'client' | 'server'): Promise<void>;
30
+ /**
31
+ * @description Register listener for client-bound messages
32
+ * @param listener - Message callback
33
+ */
34
+ onMessage(listener: (message: RpcEnvelope) => void): void;
35
+ /**
36
+ * @description Unregister client message listener
37
+ * @param listener - Message callback to remove
38
+ */
39
+ offMessage(listener: (message: RpcEnvelope) => void): void;
40
+ /**
41
+ * @description Register listener for server-bound messages
42
+ * @param listener - Message callback
43
+ */
44
+ onServerMessage(listener: (message: RpcEnvelope) => void): void;
45
+ /**
46
+ * @description Unregister server message listener
47
+ * @param listener - Message callback to remove
48
+ */
49
+ offServerMessage(listener: (message: RpcEnvelope) => void): void;
50
+ /**
51
+ * @description Wait for all pending messages to be delivered
52
+ */
53
+ drain(): Promise<void>;
54
+ }
55
+ //# sourceMappingURL=memory-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-transport.d.ts","sourceRoot":"","sources":["../src/memory-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAMhE;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,OAAO,CAAqB;IAEpC;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,GAAE,QAAQ,GAAG,QAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASrF;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIzD;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAI/D;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIhE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * HSuite Native Connect
3
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
4
+ *
5
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
6
+ *
7
+ * This file is part of HSuite Native Connect. For commercial licensing,
8
+ * visit https://hsuite.finance/licensing
9
+ */
10
+ /**
11
+ * @file In-memory transport implementation for testing RPC communication.
12
+ * Provides isolated message delivery between client and server without network I/O.
13
+ *
14
+ * @module @hsuite/native-connect-client/memory-transport
15
+ */
16
+ import { EventEmitter } from 'eventemitter3';
17
+ function cloneEnvelope(envelope) {
18
+ return JSON.parse(JSON.stringify(envelope));
19
+ }
20
+ /**
21
+ * @class MemoryTransport
22
+ * @description In-memory transport for testing RPC communication.
23
+ *
24
+ * Provides:
25
+ * - Synchronous message delivery between client and server emitters
26
+ * - Message isolation via deep cloning to prevent mutation
27
+ * - Pending promise queue for ordered delivery
28
+ */
29
+ export class MemoryTransport {
30
+ clientEmitter = new EventEmitter();
31
+ serverEmitter = new EventEmitter();
32
+ pending = Promise.resolve();
33
+ /**
34
+ * @description Send message from client or server
35
+ * @param message - RPC envelope to send
36
+ * @param from - Origin of message (client or server)
37
+ */
38
+ async send(message, from = 'client') {
39
+ const cloned = cloneEnvelope(message);
40
+ this.pending = this.pending.then(() => {
41
+ const target = from === 'client' ? this.serverEmitter : this.clientEmitter;
42
+ target.emit('message', cloned);
43
+ });
44
+ await this.pending;
45
+ }
46
+ /**
47
+ * @description Register listener for client-bound messages
48
+ * @param listener - Message callback
49
+ */
50
+ onMessage(listener) {
51
+ this.clientEmitter.on('message', listener);
52
+ }
53
+ /**
54
+ * @description Unregister client message listener
55
+ * @param listener - Message callback to remove
56
+ */
57
+ offMessage(listener) {
58
+ this.clientEmitter.off('message', listener);
59
+ }
60
+ /**
61
+ * @description Register listener for server-bound messages
62
+ * @param listener - Message callback
63
+ */
64
+ onServerMessage(listener) {
65
+ this.serverEmitter.on('message', listener);
66
+ }
67
+ /**
68
+ * @description Unregister server message listener
69
+ * @param listener - Message callback to remove
70
+ */
71
+ offServerMessage(listener) {
72
+ this.serverEmitter.off('message', listener);
73
+ }
74
+ /**
75
+ * @description Wait for all pending messages to be delivered
76
+ */
77
+ async drain() {
78
+ await this.pending;
79
+ }
80
+ }
81
+ //# sourceMappingURL=memory-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-transport.js","sourceRoot":"","sources":["../src/memory-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,SAAS,aAAa,CAAC,QAAqB;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAgB,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAe;IACT,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;IAC5C,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEpC;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,OAA4B,QAAQ;QACnE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,QAAwC;QAChD,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,QAAwC;QACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,QAAwC;QACtD,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAwC;QACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACF"}