@hsuite/native-connect-angular 2.1.0 → 2.1.1
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/coverage/coverage-summary.json +25 -21
- package/coverage/index.html +108 -108
- package/coverage/lcov-report/index.html +108 -108
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/index.html +5 -5
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +15 -15
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +84 -36
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/index.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lcov-report/lib/index.html +1 -1
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lcov-report/lib/models/index.html +7 -7
- package/coverage/lcov-report/lib/models/provider-types.ts.html +11 -5
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +20 -20
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +639 -636
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +19 -19
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/index.html +18 -18
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +22 -22
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +993 -993
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +65 -65
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +240 -240
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +559 -559
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +1108 -1105
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +493 -493
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +366 -366
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +730 -730
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +43 -43
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +234 -234
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +650 -650
- package/coverage/lcov-report/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lcov-report/lib/services/index.html +50 -20
- package/coverage/lcov-report/lib/services/logger.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lcov-report/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +155 -155
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +2156 -2156
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +58 -43
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1674 -1674
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +4 -4
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +3 -3
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +249 -249
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/index.html +1 -1
- package/coverage/lcov-report/lib/utils/index.html +36 -21
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lcov-report/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/coverage/lcov.info +8567 -6896
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/index.html +5 -5
- package/coverage/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lib/components/wallet-connect-button/index.html +1 -1
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/index.html +15 -15
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +84 -36
- package/coverage/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lib/directives/index.html +1 -1
- package/coverage/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lib/index.html +1 -1
- package/coverage/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lib/models/index.html +7 -7
- package/coverage/lib/models/provider-types.ts.html +11 -5
- package/coverage/lib/providers/base-wallet-provider.ts.html +20 -20
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +639 -636
- package/coverage/lib/providers/hsuite-native/index.html +19 -19
- package/coverage/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lib/providers/index.html +18 -18
- package/coverage/lib/providers/p2p-native/index.html +22 -22
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +993 -993
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/index.html +65 -65
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +240 -240
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +559 -559
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +1108 -1105
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +493 -493
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +366 -366
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +730 -730
- package/coverage/lib/providers/walletconnect/signers/index.html +43 -43
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +234 -234
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +650 -650
- package/coverage/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lib/services/index.html +50 -20
- package/coverage/lib/services/logger.service.ts.html +1 -1
- package/coverage/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +155 -155
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +2156 -2156
- package/coverage/lib/services/transaction-builders/index.html +58 -43
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1674 -1674
- package/coverage/lib/services/transaction.service.ts.html +4 -4
- package/coverage/lib/services/unified-wallet.service.ts.html +3 -3
- package/coverage/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lib/services/wallet-event-bus.service.ts.html +249 -249
- package/coverage/lib/services/wallet-providers.service.ts.html +1 -1
- package/coverage/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lib/transports/index.html +1 -1
- package/coverage/lib/utils/index.html +36 -21
- package/coverage/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +854 -308
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -1
- package/dist/index.d.ts +456 -30
- package/package.json +4 -4
- package/src/index.ts +26 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +8 -10
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +9 -9
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +34 -18
- package/src/lib/models/provider-types.ts +3 -1
- package/src/lib/models/unified-account.model.ts +4 -1
- package/src/lib/providers/hsuite-native/channel-client.service.ts +1 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +1 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +2 -1
- package/src/lib/services/hsuite-auth.interceptor.ts +159 -0
- package/src/lib/services/smart-session.service.ts +378 -0
- package/src/lib/services/transaction-builders/active-account-source.spec.ts +75 -0
- package/src/lib/services/transaction-builders/active-account-source.ts +55 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +4 -4
- package/src/lib/services/transaction-builders/index.ts +1 -0
- package/src/lib/services/transaction.service.ts +7 -3
- package/src/lib/services/unified-wallet.service.spec.ts +1 -1
- package/src/lib/services/unified-wallet.service.ts +2 -2
- package/src/lib/utils/index.ts +1 -0
- package/src/lib/utils/ledger-icons.util.ts +61 -30
- package/src/lib/utils/ledger-ui-registry.ts +197 -0
package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html
CHANGED
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">72.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>263/364</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">56% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>14/25</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">70.58% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>12/17</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">72.25% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>263/364</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -427,13 +427,266 @@
|
|
|
427
427
|
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
428
|
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
429
|
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
431
|
+
<span class="cline-any cline-yes">1x</span>
|
|
432
|
+
<span class="cline-any cline-yes">1x</span>
|
|
433
|
+
<span class="cline-any cline-yes">1x</span>
|
|
434
|
+
<span class="cline-any cline-yes">1x</span>
|
|
435
|
+
<span class="cline-any cline-yes">1x</span>
|
|
436
|
+
<span class="cline-any cline-yes">1x</span>
|
|
437
|
+
<span class="cline-any cline-yes">1x</span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
439
|
+
<span class="cline-any cline-yes">1x</span>
|
|
440
|
+
<span class="cline-any cline-yes">1x</span>
|
|
441
|
+
<span class="cline-any cline-yes">1x</span>
|
|
442
|
+
<span class="cline-any cline-yes">1x</span>
|
|
443
|
+
<span class="cline-any cline-yes">1x</span>
|
|
444
|
+
<span class="cline-any cline-yes">1x</span>
|
|
445
|
+
<span class="cline-any cline-yes">1x</span>
|
|
446
|
+
<span class="cline-any cline-yes">1x</span>
|
|
447
|
+
<span class="cline-any cline-yes">1x</span>
|
|
448
|
+
<span class="cline-any cline-yes">1x</span>
|
|
449
|
+
<span class="cline-any cline-yes">1x</span>
|
|
450
|
+
<span class="cline-any cline-yes">1x</span>
|
|
451
|
+
<span class="cline-any cline-yes">1x</span>
|
|
452
|
+
<span class="cline-any cline-yes">1x</span>
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
454
|
+
<span class="cline-any cline-yes">1x</span>
|
|
455
|
+
<span class="cline-any cline-yes">1x</span>
|
|
456
|
+
<span class="cline-any cline-yes">1x</span>
|
|
457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
458
|
+
<span class="cline-any cline-yes">1x</span>
|
|
459
|
+
<span class="cline-any cline-yes">1x</span>
|
|
460
|
+
<span class="cline-any cline-yes">1x</span>
|
|
461
|
+
<span class="cline-any cline-yes">1x</span>
|
|
462
|
+
<span class="cline-any cline-yes">1x</span>
|
|
463
|
+
<span class="cline-any cline-yes">1x</span>
|
|
464
|
+
<span class="cline-any cline-yes">1x</span>
|
|
465
|
+
<span class="cline-any cline-yes">1x</span>
|
|
466
|
+
<span class="cline-any cline-yes">1x</span>
|
|
467
|
+
<span class="cline-any cline-yes">1x</span>
|
|
468
|
+
<span class="cline-any cline-yes">1x</span>
|
|
469
|
+
<span class="cline-any cline-yes">1x</span>
|
|
470
|
+
<span class="cline-any cline-yes">1x</span>
|
|
471
|
+
<span class="cline-any cline-yes">1x</span>
|
|
472
|
+
<span class="cline-any cline-yes">1x</span>
|
|
473
|
+
<span class="cline-any cline-yes">1x</span>
|
|
474
|
+
<span class="cline-any cline-yes">1x</span>
|
|
475
|
+
<span class="cline-any cline-yes">1x</span>
|
|
476
|
+
<span class="cline-any cline-yes">1x</span>
|
|
477
|
+
<span class="cline-any cline-yes">1x</span>
|
|
478
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
|
+
<span class="cline-any cline-yes">1x</span>
|
|
480
|
+
<span class="cline-any cline-yes">1x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
|
+
<span class="cline-any cline-yes">16x</span>
|
|
484
|
+
<span class="cline-any cline-yes">16x</span>
|
|
485
|
+
<span class="cline-any cline-yes">16x</span>
|
|
486
|
+
<span class="cline-any cline-yes">16x</span>
|
|
487
|
+
<span class="cline-any cline-yes">16x</span>
|
|
488
|
+
<span class="cline-any cline-yes">16x</span>
|
|
489
|
+
<span class="cline-any cline-yes">16x</span>
|
|
490
|
+
<span class="cline-any cline-yes">16x</span>
|
|
491
|
+
<span class="cline-any cline-yes">16x</span>
|
|
492
|
+
<span class="cline-any cline-yes">16x</span>
|
|
493
|
+
<span class="cline-any cline-yes">16x</span>
|
|
494
|
+
<span class="cline-any cline-yes">16x</span>
|
|
495
|
+
<span class="cline-any cline-yes">16x</span>
|
|
496
|
+
<span class="cline-any cline-yes">13x</span>
|
|
497
|
+
<span class="cline-any cline-no"> </span>
|
|
498
|
+
<span class="cline-any cline-no"> </span>
|
|
499
|
+
<span class="cline-any cline-yes">13x</span>
|
|
500
|
+
<span class="cline-any cline-yes">13x</span>
|
|
501
|
+
<span class="cline-any cline-yes">13x</span>
|
|
502
|
+
<span class="cline-any cline-yes">13x</span>
|
|
503
|
+
<span class="cline-any cline-yes">13x</span>
|
|
504
|
+
<span class="cline-any cline-yes">13x</span>
|
|
505
|
+
<span class="cline-any cline-yes">13x</span>
|
|
506
|
+
<span class="cline-any cline-yes">13x</span>
|
|
507
|
+
<span class="cline-any cline-yes">13x</span>
|
|
508
|
+
<span class="cline-any cline-yes">13x</span>
|
|
509
|
+
<span class="cline-any cline-yes">13x</span>
|
|
510
|
+
<span class="cline-any cline-yes">13x</span>
|
|
511
|
+
<span class="cline-any cline-yes">13x</span>
|
|
512
|
+
<span class="cline-any cline-yes">12x</span>
|
|
513
|
+
<span class="cline-any cline-yes">12x</span>
|
|
514
|
+
<span class="cline-any cline-yes">12x</span>
|
|
515
|
+
<span class="cline-any cline-yes">12x</span>
|
|
516
|
+
<span class="cline-any cline-yes">12x</span>
|
|
517
|
+
<span class="cline-any cline-yes">12x</span>
|
|
518
|
+
<span class="cline-any cline-yes">13x</span>
|
|
519
|
+
<span class="cline-any cline-yes">16x</span>
|
|
520
|
+
<span class="cline-any cline-yes">16x</span>
|
|
521
|
+
<span class="cline-any cline-yes">16x</span>
|
|
522
|
+
<span class="cline-any cline-yes">16x</span>
|
|
523
|
+
<span class="cline-any cline-yes">16x</span>
|
|
524
|
+
<span class="cline-any cline-yes">16x</span>
|
|
525
|
+
<span class="cline-any cline-no"> </span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
528
|
+
<span class="cline-any cline-no"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-yes">16x</span>
|
|
531
|
+
<span class="cline-any cline-yes">16x</span>
|
|
532
|
+
<span class="cline-any cline-yes">16x</span>
|
|
533
|
+
<span class="cline-any cline-yes">16x</span>
|
|
534
|
+
<span class="cline-any cline-yes">16x</span>
|
|
535
|
+
<span class="cline-any cline-yes">32x</span>
|
|
536
|
+
<span class="cline-any cline-yes">32x</span>
|
|
537
|
+
<span class="cline-any cline-yes">16x</span>
|
|
538
|
+
<span class="cline-any cline-yes">16x</span>
|
|
539
|
+
<span class="cline-any cline-yes">16x</span>
|
|
540
|
+
<span class="cline-any cline-yes">16x</span>
|
|
541
|
+
<span class="cline-any cline-yes">16x</span>
|
|
542
|
+
<span class="cline-any cline-yes">16x</span>
|
|
543
|
+
<span class="cline-any cline-yes">16x</span>
|
|
544
|
+
<span class="cline-any cline-yes">16x</span>
|
|
545
|
+
<span class="cline-any cline-yes">16x</span>
|
|
546
|
+
<span class="cline-any cline-yes">16x</span>
|
|
547
|
+
<span class="cline-any cline-yes">16x</span>
|
|
548
|
+
<span class="cline-any cline-yes">16x</span>
|
|
549
|
+
<span class="cline-any cline-yes">16x</span>
|
|
550
|
+
<span class="cline-any cline-yes">16x</span>
|
|
551
|
+
<span class="cline-any cline-no"> </span>
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
553
|
+
<span class="cline-any cline-no"> </span>
|
|
554
|
+
<span class="cline-any cline-no"> </span>
|
|
555
|
+
<span class="cline-any cline-no"> </span>
|
|
556
|
+
<span class="cline-any cline-no"> </span>
|
|
557
|
+
<span class="cline-any cline-no"> </span>
|
|
558
|
+
<span class="cline-any cline-no"> </span>
|
|
559
|
+
<span class="cline-any cline-no"> </span>
|
|
560
|
+
<span class="cline-any cline-yes">16x</span>
|
|
561
|
+
<span class="cline-any cline-yes">16x</span>
|
|
562
|
+
<span class="cline-any cline-yes">16x</span>
|
|
563
|
+
<span class="cline-any cline-yes">16x</span>
|
|
564
|
+
<span class="cline-any cline-yes">16x</span>
|
|
565
|
+
<span class="cline-any cline-yes">16x</span>
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
567
|
+
<span class="cline-any cline-no"> </span>
|
|
568
|
+
<span class="cline-any cline-no"> </span>
|
|
569
|
+
<span class="cline-any cline-no"> </span>
|
|
570
|
+
<span class="cline-any cline-no"> </span>
|
|
571
|
+
<span class="cline-any cline-yes">16x</span>
|
|
572
|
+
<span class="cline-any cline-yes">16x</span>
|
|
573
|
+
<span class="cline-any cline-yes">16x</span>
|
|
574
|
+
<span class="cline-any cline-yes">16x</span>
|
|
575
|
+
<span class="cline-any cline-yes">16x</span>
|
|
576
|
+
<span class="cline-any cline-yes">16x</span>
|
|
577
|
+
<span class="cline-any cline-yes">12x</span>
|
|
578
|
+
<span class="cline-any cline-no"> </span>
|
|
579
|
+
<span class="cline-any cline-no"> </span>
|
|
580
|
+
<span class="cline-any cline-yes">12x</span>
|
|
581
|
+
<span class="cline-any cline-yes">12x</span>
|
|
582
|
+
<span class="cline-any cline-yes">12x</span>
|
|
583
|
+
<span class="cline-any cline-yes">12x</span>
|
|
584
|
+
<span class="cline-any cline-yes">12x</span>
|
|
585
|
+
<span class="cline-any cline-yes">12x</span>
|
|
586
|
+
<span class="cline-any cline-yes">16x</span>
|
|
587
|
+
<span class="cline-any cline-yes">16x</span>
|
|
588
|
+
<span class="cline-any cline-yes">16x</span>
|
|
589
|
+
<span class="cline-any cline-yes">16x</span>
|
|
590
|
+
<span class="cline-any cline-yes">16x</span>
|
|
591
|
+
<span class="cline-any cline-yes">16x</span>
|
|
592
|
+
<span class="cline-any cline-yes">16x</span>
|
|
593
|
+
<span class="cline-any cline-yes">12x</span>
|
|
594
|
+
<span class="cline-any cline-yes">12x</span>
|
|
595
|
+
<span class="cline-any cline-yes">12x</span>
|
|
596
|
+
<span class="cline-any cline-yes">12x</span>
|
|
597
|
+
<span class="cline-any cline-yes">12x</span>
|
|
598
|
+
<span class="cline-any cline-yes">12x</span>
|
|
599
|
+
<span class="cline-any cline-yes">16x</span>
|
|
600
|
+
<span class="cline-any cline-yes">16x</span>
|
|
601
|
+
<span class="cline-any cline-yes">16x</span>
|
|
602
|
+
<span class="cline-any cline-yes">16x</span>
|
|
603
|
+
<span class="cline-any cline-yes">16x</span>
|
|
604
|
+
<span class="cline-any cline-yes">17x</span>
|
|
605
|
+
<span class="cline-any cline-yes">16x</span>
|
|
606
|
+
<span class="cline-any cline-yes">16x</span>
|
|
607
|
+
<span class="cline-any cline-yes">17x</span>
|
|
608
|
+
<span class="cline-any cline-yes">16x</span>
|
|
609
|
+
<span class="cline-any cline-yes">16x</span>
|
|
610
|
+
<span class="cline-any cline-yes">16x</span>
|
|
611
|
+
<span class="cline-any cline-yes">16x</span>
|
|
612
|
+
<span class="cline-any cline-yes">16x</span>
|
|
613
|
+
<span class="cline-any cline-yes">16x</span>
|
|
614
|
+
<span class="cline-any cline-yes">16x</span>
|
|
615
|
+
<span class="cline-any cline-yes">16x</span>
|
|
616
|
+
<span class="cline-any cline-yes">16x</span>
|
|
617
|
+
<span class="cline-any cline-yes">12x</span>
|
|
618
|
+
<span class="cline-any cline-yes">12x</span>
|
|
619
|
+
<span class="cline-any cline-yes">12x</span>
|
|
620
|
+
<span class="cline-any cline-yes">12x</span>
|
|
621
|
+
<span class="cline-any cline-yes">12x</span>
|
|
622
|
+
<span class="cline-any cline-yes">12x</span>
|
|
623
|
+
<span class="cline-any cline-yes">12x</span>
|
|
431
624
|
<span class="cline-any cline-no"> </span>
|
|
432
625
|
<span class="cline-any cline-no"> </span>
|
|
626
|
+
<span class="cline-any cline-yes">12x</span>
|
|
627
|
+
<span class="cline-any cline-yes">12x</span>
|
|
628
|
+
<span class="cline-any cline-yes">12x</span>
|
|
629
|
+
<span class="cline-any cline-yes">12x</span>
|
|
630
|
+
<span class="cline-any cline-yes">12x</span>
|
|
631
|
+
<span class="cline-any cline-yes">12x</span>
|
|
632
|
+
<span class="cline-any cline-yes">12x</span>
|
|
633
|
+
<span class="cline-any cline-yes">12x</span>
|
|
634
|
+
<span class="cline-any cline-yes">12x</span>
|
|
635
|
+
<span class="cline-any cline-yes">12x</span>
|
|
636
|
+
<span class="cline-any cline-yes">12x</span>
|
|
637
|
+
<span class="cline-any cline-yes">12x</span>
|
|
638
|
+
<span class="cline-any cline-yes">12x</span>
|
|
639
|
+
<span class="cline-any cline-yes">12x</span>
|
|
640
|
+
<span class="cline-any cline-yes">12x</span>
|
|
641
|
+
<span class="cline-any cline-yes">12x</span>
|
|
642
|
+
<span class="cline-any cline-yes">16x</span>
|
|
643
|
+
<span class="cline-any cline-yes">16x</span>
|
|
644
|
+
<span class="cline-any cline-yes">16x</span>
|
|
645
|
+
<span class="cline-any cline-yes">16x</span>
|
|
646
|
+
<span class="cline-any cline-yes">16x</span>
|
|
647
|
+
<span class="cline-any cline-yes">16x</span>
|
|
648
|
+
<span class="cline-any cline-yes">16x</span>
|
|
649
|
+
<span class="cline-any cline-yes">16x</span>
|
|
650
|
+
<span class="cline-any cline-yes">16x</span>
|
|
651
|
+
<span class="cline-any cline-yes">4x</span>
|
|
433
652
|
<span class="cline-any cline-no"> </span>
|
|
434
653
|
<span class="cline-any cline-no"> </span>
|
|
654
|
+
<span class="cline-any cline-yes">4x</span>
|
|
655
|
+
<span class="cline-any cline-yes">4x</span>
|
|
656
|
+
<span class="cline-any cline-yes">4x</span>
|
|
657
|
+
<span class="cline-any cline-yes">4x</span>
|
|
658
|
+
<span class="cline-any cline-yes">4x</span>
|
|
659
|
+
<span class="cline-any cline-yes">16x</span>
|
|
660
|
+
<span class="cline-any cline-yes">16x</span>
|
|
661
|
+
<span class="cline-any cline-yes">16x</span>
|
|
662
|
+
<span class="cline-any cline-yes">16x</span>
|
|
663
|
+
<span class="cline-any cline-yes">16x</span>
|
|
664
|
+
<span class="cline-any cline-yes">16x</span>
|
|
665
|
+
<span class="cline-any cline-yes">16x</span>
|
|
666
|
+
<span class="cline-any cline-yes">12x</span>
|
|
435
667
|
<span class="cline-any cline-no"> </span>
|
|
436
668
|
<span class="cline-any cline-no"> </span>
|
|
669
|
+
<span class="cline-any cline-yes">12x</span>
|
|
670
|
+
<span class="cline-any cline-yes">12x</span>
|
|
671
|
+
<span class="cline-any cline-yes">16x</span>
|
|
672
|
+
<span class="cline-any cline-yes">16x</span>
|
|
673
|
+
<span class="cline-any cline-yes">16x</span>
|
|
674
|
+
<span class="cline-any cline-yes">16x</span>
|
|
675
|
+
<span class="cline-any cline-yes">16x</span>
|
|
676
|
+
<span class="cline-any cline-yes">16x</span>
|
|
677
|
+
<span class="cline-any cline-yes">16x</span>
|
|
678
|
+
<span class="cline-any cline-yes">16x</span>
|
|
679
|
+
<span class="cline-any cline-yes">16x</span>
|
|
680
|
+
<span class="cline-any cline-yes">16x</span>
|
|
681
|
+
<span class="cline-any cline-yes">16x</span>
|
|
682
|
+
<span class="cline-any cline-yes">16x</span>
|
|
683
|
+
<span class="cline-any cline-yes">16x</span>
|
|
684
|
+
<span class="cline-any cline-yes">16x</span>
|
|
685
|
+
<span class="cline-any cline-yes">16x</span>
|
|
686
|
+
<span class="cline-any cline-yes">16x</span>
|
|
687
|
+
<span class="cline-any cline-yes">16x</span>
|
|
688
|
+
<span class="cline-any cline-yes">16x</span>
|
|
689
|
+
<span class="cline-any cline-yes">16x</span>
|
|
437
690
|
<span class="cline-any cline-no"> </span>
|
|
438
691
|
<span class="cline-any cline-no"> </span>
|
|
439
692
|
<span class="cline-any cline-no"> </span>
|
|
@@ -494,424 +747,171 @@
|
|
|
494
747
|
<span class="cline-any cline-no"> </span>
|
|
495
748
|
<span class="cline-any cline-no"> </span>
|
|
496
749
|
<span class="cline-any cline-no"> </span>
|
|
750
|
+
<span class="cline-any cline-yes">16x</span>
|
|
751
|
+
<span class="cline-any cline-yes">16x</span>
|
|
752
|
+
<span class="cline-any cline-yes">16x</span>
|
|
753
|
+
<span class="cline-any cline-yes">16x</span>
|
|
754
|
+
<span class="cline-any cline-yes">16x</span>
|
|
755
|
+
<span class="cline-any cline-yes">16x</span>
|
|
756
|
+
<span class="cline-any cline-yes">16x</span>
|
|
757
|
+
<span class="cline-any cline-yes">16x</span>
|
|
758
|
+
<span class="cline-any cline-yes">16x</span>
|
|
759
|
+
<span class="cline-any cline-yes">16x</span>
|
|
760
|
+
<span class="cline-any cline-yes">16x</span>
|
|
761
|
+
<span class="cline-any cline-yes">16x</span>
|
|
497
762
|
<span class="cline-any cline-no"> </span>
|
|
498
763
|
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-yes">16x</span>
|
|
765
|
+
<span class="cline-any cline-yes">16x</span>
|
|
766
|
+
<span class="cline-any cline-yes">16x</span>
|
|
767
|
+
<span class="cline-any cline-yes">16x</span>
|
|
768
|
+
<span class="cline-any cline-yes">13x</span>
|
|
769
|
+
<span class="cline-any cline-yes">13x</span>
|
|
770
|
+
<span class="cline-any cline-yes">13x</span>
|
|
499
771
|
<span class="cline-any cline-no"> </span>
|
|
500
772
|
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-yes">13x</span>
|
|
774
|
+
<span class="cline-any cline-yes">16x</span>
|
|
775
|
+
<span class="cline-any cline-yes">16x</span>
|
|
776
|
+
<span class="cline-any cline-yes">16x</span>
|
|
777
|
+
<span class="cline-any cline-yes">16x</span>
|
|
778
|
+
<span class="cline-any cline-yes">16x</span>
|
|
501
779
|
<span class="cline-any cline-no"> </span>
|
|
502
780
|
<span class="cline-any cline-no"> </span>
|
|
781
|
+
<span class="cline-any cline-yes">16x</span>
|
|
782
|
+
<span class="cline-any cline-yes">16x</span>
|
|
783
|
+
<span class="cline-any cline-yes">16x</span>
|
|
784
|
+
<span class="cline-any cline-yes">16x</span>
|
|
785
|
+
<span class="cline-any cline-yes">16x</span>
|
|
786
|
+
<span class="cline-any cline-yes">16x</span>
|
|
503
787
|
<span class="cline-any cline-no"> </span>
|
|
504
788
|
<span class="cline-any cline-no"> </span>
|
|
505
789
|
<span class="cline-any cline-no"> </span>
|
|
506
790
|
<span class="cline-any cline-no"> </span>
|
|
507
791
|
<span class="cline-any cline-no"> </span>
|
|
508
792
|
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-
|
|
510
|
-
<span class="cline-any cline-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
<span class="
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
<span class="
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
|
-
<span class="cline-any cline-no"> </span>
|
|
580
|
-
<span class="cline-any cline-no"> </span>
|
|
581
|
-
<span class="cline-any cline-no"> </span>
|
|
582
|
-
<span class="cline-any cline-no"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-no"> </span>
|
|
587
|
-
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-no"> </span>
|
|
589
|
-
<span class="cline-any cline-no"> </span>
|
|
590
|
-
<span class="cline-any cline-no"> </span>
|
|
591
|
-
<span class="cline-any cline-no"> </span>
|
|
592
|
-
<span class="cline-any cline-no"> </span>
|
|
593
|
-
<span class="cline-any cline-no"> </span>
|
|
594
|
-
<span class="cline-any cline-no"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-no"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-no"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
|
-
<span class="cline-any cline-no"> </span>
|
|
601
|
-
<span class="cline-any cline-no"> </span>
|
|
602
|
-
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-no"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-no"> </span>
|
|
607
|
-
<span class="cline-any cline-no"> </span>
|
|
608
|
-
<span class="cline-any cline-no"> </span>
|
|
609
|
-
<span class="cline-any cline-no"> </span>
|
|
610
|
-
<span class="cline-any cline-no"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-no"> </span>
|
|
613
|
-
<span class="cline-any cline-no"> </span>
|
|
614
|
-
<span class="cline-any cline-no"> </span>
|
|
615
|
-
<span class="cline-any cline-no"> </span>
|
|
616
|
-
<span class="cline-any cline-no"> </span>
|
|
617
|
-
<span class="cline-any cline-no"> </span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-no"> </span>
|
|
620
|
-
<span class="cline-any cline-no"> </span>
|
|
621
|
-
<span class="cline-any cline-no"> </span>
|
|
622
|
-
<span class="cline-any cline-no"> </span>
|
|
623
|
-
<span class="cline-any cline-no"> </span>
|
|
624
|
-
<span class="cline-any cline-no"> </span>
|
|
625
|
-
<span class="cline-any cline-no"> </span>
|
|
626
|
-
<span class="cline-any cline-no"> </span>
|
|
627
|
-
<span class="cline-any cline-no"> </span>
|
|
628
|
-
<span class="cline-any cline-no"> </span>
|
|
629
|
-
<span class="cline-any cline-no"> </span>
|
|
630
|
-
<span class="cline-any cline-no"> </span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
|
-
<span class="cline-any cline-no"> </span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-no"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
|
-
<span class="cline-any cline-no"> </span>
|
|
638
|
-
<span class="cline-any cline-no"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-no"> </span>
|
|
643
|
-
<span class="cline-any cline-no"> </span>
|
|
644
|
-
<span class="cline-any cline-no"> </span>
|
|
645
|
-
<span class="cline-any cline-no"> </span>
|
|
646
|
-
<span class="cline-any cline-no"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
|
-
<span class="cline-any cline-no"> </span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-no"> </span>
|
|
651
|
-
<span class="cline-any cline-no"> </span>
|
|
652
|
-
<span class="cline-any cline-no"> </span>
|
|
653
|
-
<span class="cline-any cline-no"> </span>
|
|
654
|
-
<span class="cline-any cline-no"> </span>
|
|
655
|
-
<span class="cline-any cline-no"> </span>
|
|
656
|
-
<span class="cline-any cline-no"> </span>
|
|
657
|
-
<span class="cline-any cline-no"> </span>
|
|
658
|
-
<span class="cline-any cline-no"> </span>
|
|
659
|
-
<span class="cline-any cline-no"> </span>
|
|
660
|
-
<span class="cline-any cline-no"> </span>
|
|
661
|
-
<span class="cline-any cline-no"> </span>
|
|
662
|
-
<span class="cline-any cline-no"> </span>
|
|
663
|
-
<span class="cline-any cline-no"> </span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-no"> </span>
|
|
666
|
-
<span class="cline-any cline-no"> </span>
|
|
667
|
-
<span class="cline-any cline-no"> </span>
|
|
668
|
-
<span class="cline-any cline-no"> </span>
|
|
669
|
-
<span class="cline-any cline-no"> </span>
|
|
670
|
-
<span class="cline-any cline-no"> </span>
|
|
671
|
-
<span class="cline-any cline-no"> </span>
|
|
672
|
-
<span class="cline-any cline-no"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-no"> </span>
|
|
675
|
-
<span class="cline-any cline-no"> </span>
|
|
676
|
-
<span class="cline-any cline-no"> </span>
|
|
677
|
-
<span class="cline-any cline-no"> </span>
|
|
678
|
-
<span class="cline-any cline-no"> </span>
|
|
679
|
-
<span class="cline-any cline-no"> </span>
|
|
680
|
-
<span class="cline-any cline-no"> </span>
|
|
681
|
-
<span class="cline-any cline-no"> </span>
|
|
682
|
-
<span class="cline-any cline-no"> </span>
|
|
683
|
-
<span class="cline-any cline-no"> </span>
|
|
684
|
-
<span class="cline-any cline-no"> </span>
|
|
685
|
-
<span class="cline-any cline-no"> </span>
|
|
686
|
-
<span class="cline-any cline-no"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
|
-
<span class="cline-any cline-no"> </span>
|
|
691
|
-
<span class="cline-any cline-no"> </span>
|
|
692
|
-
<span class="cline-any cline-no"> </span>
|
|
693
|
-
<span class="cline-any cline-no"> </span>
|
|
694
|
-
<span class="cline-any cline-no"> </span>
|
|
695
|
-
<span class="cline-any cline-no"> </span>
|
|
696
|
-
<span class="cline-any cline-no"> </span>
|
|
697
|
-
<span class="cline-any cline-no"> </span>
|
|
698
|
-
<span class="cline-any cline-no"> </span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
|
-
<span class="cline-any cline-no"> </span>
|
|
701
|
-
<span class="cline-any cline-no"> </span>
|
|
702
|
-
<span class="cline-any cline-no"> </span>
|
|
703
|
-
<span class="cline-any cline-no"> </span>
|
|
704
|
-
<span class="cline-any cline-no"> </span>
|
|
705
|
-
<span class="cline-any cline-no"> </span>
|
|
706
|
-
<span class="cline-any cline-no"> </span>
|
|
707
|
-
<span class="cline-any cline-no"> </span>
|
|
708
|
-
<span class="cline-any cline-no"> </span>
|
|
709
|
-
<span class="cline-any cline-no"> </span>
|
|
710
|
-
<span class="cline-any cline-no"> </span>
|
|
711
|
-
<span class="cline-any cline-no"> </span>
|
|
712
|
-
<span class="cline-any cline-no"> </span>
|
|
713
|
-
<span class="cline-any cline-no"> </span>
|
|
714
|
-
<span class="cline-any cline-no"> </span>
|
|
715
|
-
<span class="cline-any cline-no"> </span>
|
|
716
|
-
<span class="cline-any cline-no"> </span>
|
|
717
|
-
<span class="cline-any cline-no"> </span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
|
-
<span class="cline-any cline-no"> </span>
|
|
720
|
-
<span class="cline-any cline-no"> </span>
|
|
721
|
-
<span class="cline-any cline-no"> </span>
|
|
722
|
-
<span class="cline-any cline-no"> </span>
|
|
723
|
-
<span class="cline-any cline-no"> </span>
|
|
724
|
-
<span class="cline-any cline-no"> </span>
|
|
725
|
-
<span class="cline-any cline-no"> </span>
|
|
726
|
-
<span class="cline-any cline-no"> </span>
|
|
727
|
-
<span class="cline-any cline-no"> </span>
|
|
728
|
-
<span class="cline-any cline-no"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-no"> </span>
|
|
731
|
-
<span class="cline-any cline-no"> </span>
|
|
732
|
-
<span class="cline-any cline-no"> </span>
|
|
733
|
-
<span class="cline-any cline-no"> </span>
|
|
734
|
-
<span class="cline-any cline-no"> </span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
|
-
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-no"> </span>
|
|
738
|
-
<span class="cline-any cline-no"> </span>
|
|
739
|
-
<span class="cline-any cline-no"> </span>
|
|
740
|
-
<span class="cline-any cline-no"> </span>
|
|
741
|
-
<span class="cline-any cline-no"> </span>
|
|
742
|
-
<span class="cline-any cline-no"> </span>
|
|
743
|
-
<span class="cline-any cline-no"> </span>
|
|
744
|
-
<span class="cline-any cline-no"> </span>
|
|
745
|
-
<span class="cline-any cline-no"> </span>
|
|
746
|
-
<span class="cline-any cline-no"> </span>
|
|
747
|
-
<span class="cline-any cline-no"> </span>
|
|
748
|
-
<span class="cline-any cline-no"> </span>
|
|
749
|
-
<span class="cline-any cline-no"> </span>
|
|
750
|
-
<span class="cline-any cline-no"> </span>
|
|
751
|
-
<span class="cline-any cline-no"> </span>
|
|
752
|
-
<span class="cline-any cline-no"> </span>
|
|
753
|
-
<span class="cline-any cline-no"> </span>
|
|
754
|
-
<span class="cline-any cline-no"> </span>
|
|
755
|
-
<span class="cline-any cline-no"> </span>
|
|
756
|
-
<span class="cline-any cline-no"> </span>
|
|
757
|
-
<span class="cline-any cline-no"> </span>
|
|
758
|
-
<span class="cline-any cline-no"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-no"> </span>
|
|
762
|
-
<span class="cline-any cline-no"> </span>
|
|
763
|
-
<span class="cline-any cline-no"> </span>
|
|
764
|
-
<span class="cline-any cline-no"> </span>
|
|
765
|
-
<span class="cline-any cline-no"> </span>
|
|
766
|
-
<span class="cline-any cline-no"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-no"> </span>
|
|
769
|
-
<span class="cline-any cline-no"> </span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-no"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-no"> </span>
|
|
775
|
-
<span class="cline-any cline-no"> </span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-no"> </span>
|
|
778
|
-
<span class="cline-any cline-no"> </span>
|
|
779
|
-
<span class="cline-any cline-no"> </span>
|
|
780
|
-
<span class="cline-any cline-no"> </span>
|
|
781
|
-
<span class="cline-any cline-no"> </span>
|
|
782
|
-
<span class="cline-any cline-no"> </span>
|
|
783
|
-
<span class="cline-any cline-no"> </span>
|
|
784
|
-
<span class="cline-any cline-no"> </span>
|
|
785
|
-
<span class="cline-any cline-no"> </span>
|
|
786
|
-
<span class="cline-any cline-no"> </span>
|
|
787
|
-
<span class="cline-any cline-no"> </span>
|
|
788
|
-
<span class="cline-any cline-no"> </span>
|
|
789
|
-
<span class="cline-any cline-no"> </span>
|
|
790
|
-
<span class="cline-any cline-no"> </span>
|
|
791
|
-
<span class="cline-any cline-no"> </span>
|
|
792
|
-
<span class="cline-any cline-no"> </span>
|
|
793
|
-
<span class="cline-any cline-no"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/**<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
|
|
796
|
-
<span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
|
|
797
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
798
|
-
<span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
|
|
799
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
800
|
-
<span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
|
|
801
|
-
<span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
|
|
802
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
803
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
804
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
805
|
-
<span class="cstat-no" title="statement not covered" > * @file walletconnect-client-manager.ts</span>
|
|
806
|
-
<span class="cstat-no" title="statement not covered" > * @description WalletConnect SignClient lifecycle management</span>
|
|
807
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
808
|
-
<span class="cstat-no" title="statement not covered" > * Handles:</span>
|
|
809
|
-
<span class="cstat-no" title="statement not covered" > * - SignClient initialization with projectId</span>
|
|
810
|
-
<span class="cstat-no" title="statement not covered" > * - Client reuse across multiple connections</span>
|
|
811
|
-
<span class="cstat-no" title="statement not covered" > * - Session restoration from IndexedDB</span>
|
|
812
|
-
<span class="cstat-no" title="statement not covered" > * - Event listener registration</span>
|
|
813
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" > * Extracted from WalletConnectV2Provider to reduce file size.</span>
|
|
815
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
816
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
817
|
-
<span class="cstat-no" title="statement not covered" >import { getLogger } from '@hsuite/native-connect-sdk';</span>
|
|
818
|
-
<span class="cstat-no" title="statement not covered" >import { WalletConnectModal } from '@walletconnect/modal';</span>
|
|
819
|
-
<span class="cstat-no" title="statement not covered" >import SignClient from '@walletconnect/sign-client';</span>
|
|
820
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
821
|
-
<span class="cstat-no" title="statement not covered" >import { SessionHealthManager } from './session-health';</span>
|
|
822
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
823
|
-
<span class="cstat-no" title="statement not covered" >const logger = getLogger().scoped?.('WCClientManager') ?? getLogger();</span>
|
|
824
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
825
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > * Storage key for persisted projectId</span>
|
|
827
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
828
|
-
<span class="cstat-no" title="statement not covered" >const STORAGE_KEY_PROJECT_ID = 'hsuite.walletconnect.projectId';</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
830
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
831
|
-
<span class="cstat-no" title="statement not covered" > * WalletConnect app metadata</span>
|
|
832
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
833
|
-
<span class="cstat-no" title="statement not covered" >export interface WCAppMetadata {</span>
|
|
834
|
-
<span class="cstat-no" title="statement not covered" > name: string;</span>
|
|
835
|
-
<span class="cstat-no" title="statement not covered" > description: string;</span>
|
|
836
|
-
<span class="cstat-no" title="statement not covered" > url: string;</span>
|
|
837
|
-
<span class="cstat-no" title="statement not covered" > icons: string[];</span>
|
|
838
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
839
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
840
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
841
|
-
<span class="cstat-no" title="statement not covered" > * WalletConnect Client Manager</span>
|
|
842
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
843
|
-
<span class="cstat-no" title="statement not covered" > * Manages the SignClient instance lifecycle.</span>
|
|
844
|
-
<span class="cstat-no" title="statement not covered" > * Handles initialization, session restoration, and cleanup.</span>
|
|
845
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
846
|
-
<span class="cstat-no" title="statement not covered" >export class WalletConnectClientManager {</span>
|
|
847
|
-
<span class="cstat-no" title="statement not covered" > private client?: SignClient;</span>
|
|
848
|
-
<span class="cstat-no" title="statement not covered" > private modal?: WalletConnectModal;</span>
|
|
849
|
-
<span class="cstat-no" title="statement not covered" > private projectId?: string;</span>
|
|
850
|
-
<span class="cstat-no" title="statement not covered" > private sessionHealth?: SessionHealthManager;</span>
|
|
851
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
852
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
853
|
-
<span class="cstat-no" title="statement not covered" > * Initialize or return existing SignClient.</span>
|
|
854
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
855
|
-
<span class="cstat-no" title="statement not covered" > * @param projectId - WalletConnect Cloud project ID</span>
|
|
856
|
-
<span class="cstat-no" title="statement not covered" > * @param metadata - App metadata for wallet display</span>
|
|
857
|
-
<span class="cstat-no" title="statement not covered" > * @returns Initialized SignClient instance</span>
|
|
858
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
859
|
-
<span class="cstat-no" title="statement not covered" > async initialize(projectId: string, metadata: WCAppMetadata): Promise<SignClient> {</span>
|
|
860
|
-
<span class="cstat-no" title="statement not covered" > if (this.client && this.projectId === projectId) {</span>
|
|
793
|
+
<span class="cline-any cline-yes">16x</span>
|
|
794
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
795
|
+
* HSuite Native Connect
|
|
796
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
797
|
+
*
|
|
798
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
799
|
+
*
|
|
800
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
801
|
+
* visit https://hsuite.finance/licensing
|
|
802
|
+
*/
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* @file walletconnect-client-manager.ts
|
|
806
|
+
* @description WalletConnect SignClient lifecycle management
|
|
807
|
+
*
|
|
808
|
+
* Handles:
|
|
809
|
+
* - SignClient initialization with projectId
|
|
810
|
+
* - Client reuse across multiple connections
|
|
811
|
+
* - Session restoration from IndexedDB
|
|
812
|
+
* - Event listener registration
|
|
813
|
+
*
|
|
814
|
+
* Extracted from WalletConnectV2Provider to reduce file size.
|
|
815
|
+
*/
|
|
816
|
+
|
|
817
|
+
import { getLogger } from '@hsuite/native-connect-sdk';
|
|
818
|
+
import { WalletConnectModal } from '@walletconnect/modal';
|
|
819
|
+
import SignClient from '@walletconnect/sign-client';
|
|
820
|
+
|
|
821
|
+
import { SessionHealthManager } from './session-health';
|
|
822
|
+
|
|
823
|
+
const logger = getLogger().scoped?.('WCClientManager'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Storage key for persisted projectId
|
|
827
|
+
*/
|
|
828
|
+
const STORAGE_KEY_PROJECT_ID = 'hsuite.walletconnect.projectId';
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* WalletConnect app metadata
|
|
832
|
+
*/
|
|
833
|
+
export interface WCAppMetadata {
|
|
834
|
+
name: string;
|
|
835
|
+
description: string;
|
|
836
|
+
url: string;
|
|
837
|
+
icons: string[];
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* WalletConnect Client Manager
|
|
842
|
+
*
|
|
843
|
+
* Manages the SignClient instance lifecycle.
|
|
844
|
+
* Handles initialization, session restoration, and cleanup.
|
|
845
|
+
*/
|
|
846
|
+
export class WalletConnectClientManager {
|
|
847
|
+
private client?: SignClient;
|
|
848
|
+
private modal?: WalletConnectModal;
|
|
849
|
+
private projectId?: string;
|
|
850
|
+
private sessionHealth?: SessionHealthManager;
|
|
851
|
+
|
|
852
|
+
/**
|
|
853
|
+
* Initialize or return existing SignClient.
|
|
854
|
+
*
|
|
855
|
+
* @param projectId - WalletConnect Cloud project ID
|
|
856
|
+
* @param metadata - App metadata for wallet display
|
|
857
|
+
* @returns Initialized SignClient instance
|
|
858
|
+
*/
|
|
859
|
+
async initialize(projectId: string, metadata: WCAppMetadata): Promise<SignClient> {
|
|
860
|
+
if (this.<span class="branch-0 cbranch-no" title="branch not covered" >client && this.projectId === projectId) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
|
861
861
|
<span class="cstat-no" title="statement not covered" > return this.client;</span>
|
|
862
862
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
<span class="
|
|
863
|
+
|
|
864
|
+
logger.debug('Initializing SignClient', { projectId: projectId.substring(0, 8) });
|
|
865
|
+
|
|
866
|
+
// Store projectId for session restoration
|
|
867
|
+
this.projectId = projectId;
|
|
868
|
+
this.persistProjectId(projectId);
|
|
869
|
+
|
|
870
|
+
// Use 'fatal' logger to suppress pino noise from WalletConnect SDK
|
|
871
|
+
this.client = await SignClient.init({
|
|
872
|
+
projectId,
|
|
873
|
+
logger: 'fatal',
|
|
874
|
+
metadata,
|
|
875
|
+
});
|
|
876
|
+
|
|
877
|
+
// Initialize session health manager for relay subscription management
|
|
878
|
+
this.sessionHealth = new SessionHealthManager(this.client);
|
|
879
|
+
|
|
880
|
+
logger.info('SignClient initialized with session health manager');
|
|
881
|
+
return this.client;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Get the current client instance.
|
|
886
|
+
* @throws Error if not initialized
|
|
887
|
+
*/
|
|
888
|
+
<span class="fstat-no" title="function not covered" > getClient(): SignClient {</span>
|
|
889
889
|
<span class="cstat-no" title="statement not covered" > if (!this.client) {</span>
|
|
890
890
|
<span class="cstat-no" title="statement not covered" > throw new Error('WalletConnect client not initialized');</span>
|
|
891
891
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
892
892
|
<span class="cstat-no" title="statement not covered" > return this.client;</span>
|
|
893
893
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
<span class="
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* Check if client is initialized.
|
|
897
|
+
*/
|
|
898
|
+
isInitialized(): boolean {
|
|
899
|
+
return !!this.client;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
/**
|
|
903
|
+
* Restore client from stored projectId.
|
|
904
|
+
* Used for session restoration on page reload.
|
|
905
|
+
*
|
|
906
|
+
* @param metadata - App metadata
|
|
907
|
+
* @returns Client if restoration succeeded, undefined otherwise
|
|
908
|
+
*/
|
|
909
|
+
async restoreClient(metadata: WCAppMetadata): Promise<SignClient | undefined> {
|
|
910
|
+
const storedProjectId = this.getStoredProjectId();
|
|
911
|
+
if (!storedProjectId) {
|
|
912
|
+
logger.debug('No stored projectId, skipping client restoration');
|
|
913
|
+
return undefined;
|
|
914
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
915
915
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
916
916
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
917
917
|
<span class="cstat-no" title="statement not covered" > return await this.initialize(storedProjectId, metadata);</span>
|
|
@@ -921,136 +921,136 @@
|
|
|
921
921
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
922
922
|
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
923
923
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
<span class="
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Get all active sessions from the client.
|
|
928
|
+
*/
|
|
929
|
+
<span class="fstat-no" title="function not covered" > getActiveSessions(): any[] {</span>
|
|
930
930
|
<span class="cstat-no" title="statement not covered" > if (!this.client) {</span>
|
|
931
931
|
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
932
932
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
933
933
|
<span class="cstat-no" title="statement not covered" > return this.client.session.getAll();</span>
|
|
934
934
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
<span class="
|
|
942
|
-
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
943
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
944
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
945
|
-
<span class="cstat-no" title="statement not covered" > return this.client.session.get(topic);</span>
|
|
946
|
-
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* Get a specific session by topic.
|
|
938
|
+
* @param topic
|
|
939
|
+
*/
|
|
940
|
+
getSession(topic: string): any | undefined {
|
|
941
|
+
if (!this.client) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
947
942
|
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
948
943
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
944
|
+
try {
|
|
945
|
+
return this.client.session.get(topic);
|
|
946
|
+
} catch {
|
|
947
|
+
return undefined;
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* Create and return a modal for QR code display.
|
|
953
|
+
* @param projectId
|
|
954
|
+
* @param chains
|
|
955
|
+
*/
|
|
956
|
+
createModal(projectId: string, chains: string[]): WalletConnectModal {
|
|
957
|
+
this.modal = new WalletConnectModal({
|
|
958
|
+
projectId,
|
|
959
|
+
chains,
|
|
960
|
+
});
|
|
961
|
+
return this.modal;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
/**
|
|
965
|
+
* Close the modal if open.
|
|
966
|
+
*/
|
|
967
|
+
closeModal(): void {
|
|
968
|
+
if (this.modal) {
|
|
969
|
+
this.modal.closeModal();
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* Connect to wallet and get session.
|
|
975
|
+
*
|
|
976
|
+
* @param optionalNamespaces - Namespace configuration
|
|
977
|
+
* @param sessionProperties - Optional session properties (e.g., preferredNetwork)
|
|
978
|
+
* @returns URI and approval promise
|
|
979
|
+
*/
|
|
980
|
+
async connect(
|
|
981
|
+
optionalNamespaces: Record<string, any>,
|
|
982
|
+
sessionProperties?: Record<string, string>,
|
|
983
|
+
): Promise<{
|
|
984
|
+
uri?: string;
|
|
985
|
+
approval: () => Promise<any>;
|
|
986
|
+
}> {
|
|
987
|
+
if (!this.client) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
988
988
|
<span class="cstat-no" title="statement not covered" > throw new Error('Client not initialized');</span>
|
|
989
989
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
<span class="
|
|
990
|
+
|
|
991
|
+
const connectParams: any = { optionalNamespaces };
|
|
992
|
+
|
|
993
|
+
// Add session properties if provided
|
|
994
|
+
// This allows passing metadata like preferredNetwork to the wallet
|
|
995
|
+
if (sessionProperties) {
|
|
996
|
+
connectParams.sessionProperties = sessionProperties;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
logger.debug('Connecting with params', {
|
|
1000
|
+
namespaces: Object.keys(optionalNamespaces),
|
|
1001
|
+
hasSessionProperties: !!sessionProperties,
|
|
1002
|
+
});
|
|
1003
|
+
|
|
1004
|
+
return this.client.connect(connectParams);
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* Disconnect a session.
|
|
1009
|
+
* @param topic
|
|
1010
|
+
* @param reason
|
|
1011
|
+
* @param reason.code
|
|
1012
|
+
* @param reason.message
|
|
1013
|
+
*/
|
|
1014
|
+
async disconnect(topic: string, reason?: { code: number; message: string }): Promise<void> {
|
|
1015
|
+
if (!this.client) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1016
1016
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1017
1017
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
<span class="
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
<span class="
|
|
1018
|
+
await this.client.disconnect({
|
|
1019
|
+
topic,
|
|
1020
|
+
reason: <span class="branch-0 cbranch-no" title="branch not covered" >reason || { code: 6000, message: 'User disconnected' },</span>
|
|
1021
|
+
});
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
/**
|
|
1025
|
+
* Register event listener on the client.
|
|
1026
|
+
* @param event
|
|
1027
|
+
* @param handler
|
|
1028
|
+
*/
|
|
1029
|
+
on(event: string, handler: (event: any) => void): void {
|
|
1030
|
+
if (!this.client) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1031
1031
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1032
1032
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
<span class="
|
|
1033
|
+
(this.client as any).on(event, handler);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
/**
|
|
1037
|
+
* Send a request to a session.
|
|
1038
|
+
*
|
|
1039
|
+
* Features:
|
|
1040
|
+
* - Automatically ensures session health by pinging before the request
|
|
1041
|
+
* - Runs keep-alive pings during long-running requests (e.g., transaction approval)
|
|
1042
|
+
* - Prevents stale relay subscription issues that cause empty error objects
|
|
1043
|
+
*
|
|
1044
|
+
* @param params - Request parameters including topic, chainId, and request data
|
|
1045
|
+
* @param params.expiry - Optional expiry time in seconds (default: 300)
|
|
1046
|
+
* @param params.topic
|
|
1047
|
+
* @param params.chainId
|
|
1048
|
+
* @param params.request
|
|
1049
|
+
* @param params.request.method
|
|
1050
|
+
* @param params.request.params
|
|
1051
|
+
* @returns Promise resolving to the request result
|
|
1052
|
+
*/
|
|
1053
|
+
<span class="fstat-no" title="function not covered" > async request<T = unknown>(params: {</span>
|
|
1054
1054
|
<span class="cstat-no" title="statement not covered" > topic: string;</span>
|
|
1055
1055
|
<span class="cstat-no" title="statement not covered" > chainId: string;</span>
|
|
1056
1056
|
<span class="cstat-no" title="statement not covered" > request: { method: string; params: unknown };</span>
|
|
@@ -1111,50 +1111,50 @@
|
|
|
1111
1111
|
<span class="cstat-no" title="statement not covered" > stopKeepAlive();</span>
|
|
1112
1112
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1113
1113
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
<span class="
|
|
1114
|
+
|
|
1115
|
+
/**
|
|
1116
|
+
* Get the session health manager for advanced operations.
|
|
1117
|
+
*
|
|
1118
|
+
* Use this if you need to:
|
|
1119
|
+
* - Force refresh a subscription
|
|
1120
|
+
* - Clear ping cache
|
|
1121
|
+
* - Access health manager directly
|
|
1122
|
+
*
|
|
1123
|
+
* @returns SessionHealthManager instance or undefined if not initialized
|
|
1124
|
+
*/
|
|
1125
|
+
<span class="fstat-no" title="function not covered" > getSessionHealthManager(): SessionHealthManager | undefined {</span>
|
|
1126
1126
|
<span class="cstat-no" title="statement not covered" > return this.sessionHealth;</span>
|
|
1127
1127
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
<span class="
|
|
1128
|
+
|
|
1129
|
+
// ========== STORAGE ==========
|
|
1130
|
+
|
|
1131
|
+
private persistProjectId(projectId: string): void {
|
|
1132
|
+
try {
|
|
1133
|
+
window.localStorage?.setItem(STORAGE_KEY_PROJECT_ID, projectId);
|
|
1134
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > } catch {</span>
|
|
1135
1135
|
<span class="cstat-no" title="statement not covered" > logger.warn('Failed to persist projectId');</span>
|
|
1136
1136
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
<span class="
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
private getStoredProjectId(): string | null {
|
|
1140
|
+
try {
|
|
1141
|
+
return window.localStorage?.getItem(STORAGE_KEY_PROJECT_ID) ?? null;
|
|
1142
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > } catch {</span>
|
|
1143
1143
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1144
1144
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
<span class="
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
/**
|
|
1148
|
+
* Clear stored projectId.
|
|
1149
|
+
*/
|
|
1150
|
+
<span class="fstat-no" title="function not covered" > clearStoredProjectId(): void {</span>
|
|
1151
1151
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1152
1152
|
<span class="cstat-no" title="statement not covered" > window.localStorage?.removeItem(STORAGE_KEY_PROJECT_ID);</span>
|
|
1153
1153
|
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
1154
1154
|
<span class="cstat-no" title="statement not covered" > // Ignore</span>
|
|
1155
1155
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1156
1156
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1157
|
-
|
|
1157
|
+
}
|
|
1158
1158
|
</pre></td></tr></table></pre>
|
|
1159
1159
|
|
|
1160
1160
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -1162,7 +1162,7 @@
|
|
|
1162
1162
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1163
1163
|
Code coverage generated by
|
|
1164
1164
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1165
|
-
at 2026-06-
|
|
1165
|
+
at 2026-06-27T21:00:37.138Z
|
|
1166
1166
|
</div>
|
|
1167
1167
|
<script src="../../../../prettify.js"></script>
|
|
1168
1168
|
<script>
|