@hsuite/native-connect-angular 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.
- package/README.md +48 -0
- package/USAGE_EXAMPLES.md +476 -0
- package/assets/wallets/extension.svg +7 -0
- package/assets/wallets/hashpack.svg +6 -0
- package/assets/wallets/hsuite.svg +11 -0
- package/assets/wallets/kabila.svg +11 -0
- package/assets/wallets/walletconnect.svg +13 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +50 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +476 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lcov-report/lib/directives/index.html +146 -0
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lcov-report/lib/index.html +116 -0
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lcov-report/lib/models/index.html +131 -0
- package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lcov-report/lib/providers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lcov-report/lib/services/index.html +191 -0
- package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lcov-report/lib/transports/index.html +116 -0
- package/coverage/lcov-report/lib/utils/index.html +116 -0
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +19252 -0
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lib/components/account-selector/index.html +161 -0
- package/coverage/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lib/directives/index.html +146 -0
- package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lib/index.html +116 -0
- package/coverage/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lib/models/index.html +131 -0
- package/coverage/lib/models/provider-types.ts.html +577 -0
- package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lib/providers/index.html +146 -0
- package/coverage/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lib/services/index.html +191 -0
- package/coverage/lib/services/logger.service.ts.html +463 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lib/transports/index.html +116 -0
- package/coverage/lib/utils/index.html +116 -0
- package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/README.md +48 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
- package/dist/index.d.ts +6949 -0
- package/examples/minimal-connect.ts +178 -0
- package/examples/multi-protocol.ts +495 -0
- package/examples/transaction-signing.ts +361 -0
- package/jest.config.json +45 -0
- package/karma.conf.js +42 -0
- package/ng-package.json +20 -0
- package/package.json +60 -0
- package/src/index.ts +203 -0
- package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
- package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
- package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
- package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.component.html +135 -0
- package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
- package/src/lib/components/account-selector/account-selector.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.service.ts +501 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
- package/src/lib/directives/wallet-connected.directive.ts +195 -0
- package/src/lib/directives/wallet-context.directive.ts +154 -0
- package/src/lib/directives/wallet-events.directive.ts +232 -0
- package/src/lib/hsuite-wallet.module.ts +210 -0
- package/src/lib/models/connection-config.model.ts +65 -0
- package/src/lib/models/provider-types.ts +164 -0
- package/src/lib/models/unified-account.model.ts +76 -0
- package/src/lib/models/wallet-context.model.ts +121 -0
- package/src/lib/models/wallet-events.model.ts +158 -0
- package/src/lib/providers/base-wallet-provider.ts +351 -0
- package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
- package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
- package/src/lib/providers/hsuite-native/index.ts +8 -0
- package/src/lib/providers/hsuite-native-provider.ts +754 -0
- package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
- package/src/lib/providers/p2p-native/index.ts +30 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
- package/src/lib/providers/wallet-error-handler.ts +349 -0
- package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
- package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
- package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
- package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
- package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
- package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
- package/src/lib/providers/walletconnect/index.ts +33 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
- package/src/lib/services/logger.service.ts +126 -0
- package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
- package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
- package/src/lib/services/transaction-builders/index.ts +54 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
- package/src/lib/services/transaction.service.ts +346 -0
- package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
- package/src/lib/services/unified-wallet.service.ts +852 -0
- package/src/lib/services/wallet-context.service.ts +184 -0
- package/src/lib/services/wallet-event-bus.service.ts +186 -0
- package/src/lib/services/wallet-providers.service.ts +137 -0
- package/src/lib/transports/chrome-extension-transport.ts +246 -0
- package/src/lib/utils/index.ts +14 -0
- package/src/lib/utils/ledger-icons.util.ts +78 -0
- package/test/test-setup.ts +21 -0
- package/test-setup.ts +63 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +29 -0
- package/tsconfig.spec.json +15 -0
- package/vitest.config.ts +48 -0
package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html
ADDED
|
@@ -0,0 +1,904 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for lib/providers/walletconnect/core/walletconnect-session-store.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../../../index.html">All files</a> / <a href="index.html">lib/providers/walletconnect/core</a> walletconnect-session-store.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">79.12% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>216/273</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">71.42% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>10/14</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">57.14% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>8/14</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">79.12% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>216/273</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-yes">1x</span>
|
|
341
|
+
<span class="cline-any cline-yes">1x</span>
|
|
342
|
+
<span class="cline-any cline-yes">1x</span>
|
|
343
|
+
<span class="cline-any cline-yes">1x</span>
|
|
344
|
+
<span class="cline-any cline-yes">1x</span>
|
|
345
|
+
<span class="cline-any cline-yes">1x</span>
|
|
346
|
+
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
|
+
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
|
+
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<span class="cline-any cline-yes">1x</span>
|
|
359
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
|
+
<span class="cline-any cline-yes">1x</span>
|
|
362
|
+
<span class="cline-any cline-yes">1x</span>
|
|
363
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
|
+
<span class="cline-any cline-yes">1x</span>
|
|
365
|
+
<span class="cline-any cline-yes">1x</span>
|
|
366
|
+
<span class="cline-any cline-yes">1x</span>
|
|
367
|
+
<span class="cline-any cline-yes">1x</span>
|
|
368
|
+
<span class="cline-any cline-yes">1x</span>
|
|
369
|
+
<span class="cline-any cline-yes">1x</span>
|
|
370
|
+
<span class="cline-any cline-yes">1x</span>
|
|
371
|
+
<span class="cline-any cline-yes">1x</span>
|
|
372
|
+
<span class="cline-any cline-yes">1x</span>
|
|
373
|
+
<span class="cline-any cline-yes">1x</span>
|
|
374
|
+
<span class="cline-any cline-yes">1x</span>
|
|
375
|
+
<span class="cline-any cline-yes">1x</span>
|
|
376
|
+
<span class="cline-any cline-yes">1x</span>
|
|
377
|
+
<span class="cline-any cline-yes">1x</span>
|
|
378
|
+
<span class="cline-any cline-yes">1x</span>
|
|
379
|
+
<span class="cline-any cline-yes">1x</span>
|
|
380
|
+
<span class="cline-any cline-yes">1x</span>
|
|
381
|
+
<span class="cline-any cline-yes">1x</span>
|
|
382
|
+
<span class="cline-any cline-yes">1x</span>
|
|
383
|
+
<span class="cline-any cline-yes">1x</span>
|
|
384
|
+
<span class="cline-any cline-yes">1x</span>
|
|
385
|
+
<span class="cline-any cline-yes">1x</span>
|
|
386
|
+
<span class="cline-any cline-yes">1x</span>
|
|
387
|
+
<span class="cline-any cline-yes">1x</span>
|
|
388
|
+
<span class="cline-any cline-yes">1x</span>
|
|
389
|
+
<span class="cline-any cline-yes">1x</span>
|
|
390
|
+
<span class="cline-any cline-yes">1x</span>
|
|
391
|
+
<span class="cline-any cline-yes">1x</span>
|
|
392
|
+
<span class="cline-any cline-yes">1x</span>
|
|
393
|
+
<span class="cline-any cline-yes">1x</span>
|
|
394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
395
|
+
<span class="cline-any cline-yes">1x</span>
|
|
396
|
+
<span class="cline-any cline-yes">1x</span>
|
|
397
|
+
<span class="cline-any cline-yes">1x</span>
|
|
398
|
+
<span class="cline-any cline-yes">1x</span>
|
|
399
|
+
<span class="cline-any cline-yes">1x</span>
|
|
400
|
+
<span class="cline-any cline-yes">1x</span>
|
|
401
|
+
<span class="cline-any cline-yes">1x</span>
|
|
402
|
+
<span class="cline-any cline-yes">1x</span>
|
|
403
|
+
<span class="cline-any cline-yes">16x</span>
|
|
404
|
+
<span class="cline-any cline-yes">16x</span>
|
|
405
|
+
<span class="cline-any cline-yes">16x</span>
|
|
406
|
+
<span class="cline-any cline-yes">16x</span>
|
|
407
|
+
<span class="cline-any cline-yes">16x</span>
|
|
408
|
+
<span class="cline-any cline-yes">16x</span>
|
|
409
|
+
<span class="cline-any cline-yes">16x</span>
|
|
410
|
+
<span class="cline-any cline-yes">16x</span>
|
|
411
|
+
<span class="cline-any cline-yes">16x</span>
|
|
412
|
+
<span class="cline-any cline-yes">16x</span>
|
|
413
|
+
<span class="cline-any cline-yes">16x</span>
|
|
414
|
+
<span class="cline-any cline-yes">16x</span>
|
|
415
|
+
<span class="cline-any cline-yes">16x</span>
|
|
416
|
+
<span class="cline-any cline-yes">16x</span>
|
|
417
|
+
<span class="cline-any cline-yes">16x</span>
|
|
418
|
+
<span class="cline-any cline-yes">16x</span>
|
|
419
|
+
<span class="cline-any cline-yes">16x</span>
|
|
420
|
+
<span class="cline-any cline-yes">16x</span>
|
|
421
|
+
<span class="cline-any cline-yes">16x</span>
|
|
422
|
+
<span class="cline-any cline-yes">16x</span>
|
|
423
|
+
<span class="cline-any cline-yes">16x</span>
|
|
424
|
+
<span class="cline-any cline-yes">16x</span>
|
|
425
|
+
<span class="cline-any cline-yes">16x</span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
428
|
+
<span class="cline-any cline-yes">16x</span>
|
|
429
|
+
<span class="cline-any cline-yes">16x</span>
|
|
430
|
+
<span class="cline-any cline-yes">16x</span>
|
|
431
|
+
<span class="cline-any cline-yes">16x</span>
|
|
432
|
+
<span class="cline-any cline-yes">16x</span>
|
|
433
|
+
<span class="cline-any cline-yes">16x</span>
|
|
434
|
+
<span class="cline-any cline-yes">16x</span>
|
|
435
|
+
<span class="cline-any cline-yes">16x</span>
|
|
436
|
+
<span class="cline-any cline-yes">12x</span>
|
|
437
|
+
<span class="cline-any cline-yes">12x</span>
|
|
438
|
+
<span class="cline-any cline-yes">12x</span>
|
|
439
|
+
<span class="cline-any cline-yes">16x</span>
|
|
440
|
+
<span class="cline-any cline-yes">16x</span>
|
|
441
|
+
<span class="cline-any cline-yes">16x</span>
|
|
442
|
+
<span class="cline-any cline-yes">16x</span>
|
|
443
|
+
<span class="cline-any cline-yes">16x</span>
|
|
444
|
+
<span class="cline-any cline-yes">16x</span>
|
|
445
|
+
<span class="cline-any cline-yes">16x</span>
|
|
446
|
+
<span class="cline-any cline-yes">16x</span>
|
|
447
|
+
<span class="cline-any cline-no"> </span>
|
|
448
|
+
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-no"> </span>
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-yes">16x</span>
|
|
454
|
+
<span class="cline-any cline-yes">16x</span>
|
|
455
|
+
<span class="cline-any cline-yes">16x</span>
|
|
456
|
+
<span class="cline-any cline-yes">16x</span>
|
|
457
|
+
<span class="cline-any cline-yes">16x</span>
|
|
458
|
+
<span class="cline-any cline-yes">16x</span>
|
|
459
|
+
<span class="cline-any cline-yes">16x</span>
|
|
460
|
+
<span class="cline-any cline-no"> </span>
|
|
461
|
+
<span class="cline-any cline-no"> </span>
|
|
462
|
+
<span class="cline-any cline-yes">16x</span>
|
|
463
|
+
<span class="cline-any cline-yes">16x</span>
|
|
464
|
+
<span class="cline-any cline-yes">16x</span>
|
|
465
|
+
<span class="cline-any cline-yes">16x</span>
|
|
466
|
+
<span class="cline-any cline-yes">16x</span>
|
|
467
|
+
<span class="cline-any cline-yes">12x</span>
|
|
468
|
+
<span class="cline-any cline-yes">12x</span>
|
|
469
|
+
<span class="cline-any cline-yes">16x</span>
|
|
470
|
+
<span class="cline-any cline-yes">16x</span>
|
|
471
|
+
<span class="cline-any cline-yes">16x</span>
|
|
472
|
+
<span class="cline-any cline-yes">16x</span>
|
|
473
|
+
<span class="cline-any cline-yes">16x</span>
|
|
474
|
+
<span class="cline-any cline-yes">4x</span>
|
|
475
|
+
<span class="cline-any cline-yes">4x</span>
|
|
476
|
+
<span class="cline-any cline-yes">4x</span>
|
|
477
|
+
<span class="cline-any cline-yes">4x</span>
|
|
478
|
+
<span class="cline-any cline-yes">16x</span>
|
|
479
|
+
<span class="cline-any cline-yes">16x</span>
|
|
480
|
+
<span class="cline-any cline-yes">16x</span>
|
|
481
|
+
<span class="cline-any cline-yes">16x</span>
|
|
482
|
+
<span class="cline-any cline-yes">16x</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">4x</span>
|
|
486
|
+
<span class="cline-any cline-yes">4x</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-no"> </span>
|
|
495
|
+
<span class="cline-any cline-no"> </span>
|
|
496
|
+
<span class="cline-any cline-yes">16x</span>
|
|
497
|
+
<span class="cline-any cline-yes">16x</span>
|
|
498
|
+
<span class="cline-any cline-yes">16x</span>
|
|
499
|
+
<span class="cline-any cline-yes">16x</span>
|
|
500
|
+
<span class="cline-any cline-yes">16x</span>
|
|
501
|
+
<span class="cline-any cline-yes">16x</span>
|
|
502
|
+
<span class="cline-any cline-yes">16x</span>
|
|
503
|
+
<span class="cline-any cline-yes">16x</span>
|
|
504
|
+
<span class="cline-any cline-yes">16x</span>
|
|
505
|
+
<span class="cline-any cline-yes">16x</span>
|
|
506
|
+
<span class="cline-any cline-yes">16x</span>
|
|
507
|
+
<span class="cline-any cline-yes">12x</span>
|
|
508
|
+
<span class="cline-any cline-yes">12x</span>
|
|
509
|
+
<span class="cline-any cline-yes">12x</span>
|
|
510
|
+
<span class="cline-any cline-yes">12x</span>
|
|
511
|
+
<span class="cline-any cline-yes">16x</span>
|
|
512
|
+
<span class="cline-any cline-yes">16x</span>
|
|
513
|
+
<span class="cline-any cline-yes">16x</span>
|
|
514
|
+
<span class="cline-any cline-yes">16x</span>
|
|
515
|
+
<span class="cline-any cline-yes">16x</span>
|
|
516
|
+
<span class="cline-any cline-yes">16x</span>
|
|
517
|
+
<span class="cline-any cline-yes">12x</span>
|
|
518
|
+
<span class="cline-any cline-yes">12x</span>
|
|
519
|
+
<span class="cline-any cline-yes">12x</span>
|
|
520
|
+
<span class="cline-any cline-yes">12x</span>
|
|
521
|
+
<span class="cline-any cline-yes">12x</span>
|
|
522
|
+
<span class="cline-any cline-yes">12x</span>
|
|
523
|
+
<span class="cline-any cline-yes">12x</span>
|
|
524
|
+
<span class="cline-any cline-yes">12x</span>
|
|
525
|
+
<span class="cline-any cline-yes">12x</span>
|
|
526
|
+
<span class="cline-any cline-yes">12x</span>
|
|
527
|
+
<span class="cline-any cline-yes">12x</span>
|
|
528
|
+
<span class="cline-any cline-yes">12x</span>
|
|
529
|
+
<span class="cline-any cline-yes">16x</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">16x</span>
|
|
536
|
+
<span class="cline-any cline-yes">16x</span>
|
|
537
|
+
<span class="cline-any cline-yes">4x</span>
|
|
538
|
+
<span class="cline-any cline-yes">4x</span>
|
|
539
|
+
<span class="cline-any cline-yes">4x</span>
|
|
540
|
+
<span class="cline-any cline-yes">4x</span>
|
|
541
|
+
<span class="cline-any cline-yes">4x</span>
|
|
542
|
+
<span class="cline-any cline-yes">4x</span>
|
|
543
|
+
<span class="cline-any cline-yes">4x</span>
|
|
544
|
+
<span class="cline-any cline-yes">4x</span>
|
|
545
|
+
<span class="cline-any cline-yes">2x</span>
|
|
546
|
+
<span class="cline-any cline-yes">2x</span>
|
|
547
|
+
<span class="cline-any cline-no"> </span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
549
|
+
<span class="cline-any cline-no"> </span>
|
|
550
|
+
<span class="cline-any cline-no"> </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-yes">2x</span>
|
|
555
|
+
<span class="cline-any cline-yes">4x</span>
|
|
556
|
+
<span class="cline-any cline-yes">4x</span>
|
|
557
|
+
<span class="cline-any cline-yes">16x</span>
|
|
558
|
+
<span class="cline-any cline-yes">16x</span>
|
|
559
|
+
<span class="cline-any cline-yes">16x</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-no"> </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-no"> </span>
|
|
572
|
+
<span class="cline-any cline-no"> </span>
|
|
573
|
+
<span class="cline-any cline-no"> </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">16x</span>
|
|
578
|
+
<span class="cline-any cline-yes">16x</span>
|
|
579
|
+
<span class="cline-any cline-yes">16x</span>
|
|
580
|
+
<span class="cline-any cline-yes">16x</span>
|
|
581
|
+
<span class="cline-any cline-yes">16x</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-yes">16x</span>
|
|
612
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
613
|
+
* HSuite Native Connect
|
|
614
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
615
|
+
*
|
|
616
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
617
|
+
*
|
|
618
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
619
|
+
* visit https://hsuite.finance/licensing
|
|
620
|
+
*/
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* @file walletconnect-session-store.ts
|
|
624
|
+
* @description Session storage and management for WalletConnect provider
|
|
625
|
+
*
|
|
626
|
+
* Extracted from WalletConnectV2Provider to reduce file size and improve maintainability.
|
|
627
|
+
*
|
|
628
|
+
* Responsibilities:
|
|
629
|
+
* - Store and retrieve WalletConnect sessions
|
|
630
|
+
* - Generate unique session keys
|
|
631
|
+
* - Aggregate accounts across sessions
|
|
632
|
+
* - Find sessions by account address
|
|
633
|
+
*/
|
|
634
|
+
|
|
635
|
+
import { signal } from '@angular/core';
|
|
636
|
+
import { getLogger } from '@hsuite/native-connect-sdk';
|
|
637
|
+
|
|
638
|
+
import type { UnifiedAccount } from '../../../models/unified-account.model';
|
|
639
|
+
|
|
640
|
+
import type { IWalletConnectSigner } from './base-signer.interface';
|
|
641
|
+
|
|
642
|
+
const logger = getLogger().scoped?.('WCSessionStore'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Session data structure stored in the session store.
|
|
646
|
+
*/
|
|
647
|
+
export interface StoredSessionData {
|
|
648
|
+
/** Raw WalletConnect session object */
|
|
649
|
+
session: any;
|
|
650
|
+
/** Ledger identifier (hedera, xrpl) */
|
|
651
|
+
ledgerId: string;
|
|
652
|
+
/** Network identifier (hedera:testnet, xrpl:mainnet) */
|
|
653
|
+
networkId: string;
|
|
654
|
+
/**
|
|
655
|
+
* User's selected network from the connection modal.
|
|
656
|
+
* This is critical for respecting user intent - wallets may return accounts
|
|
657
|
+
* from multiple networks, but we should use the network the user selected.
|
|
658
|
+
*
|
|
659
|
+
* This value is set when connecting and persisted for session restoration.
|
|
660
|
+
* It takes precedence over the wallet-reported networkId for signing operations.
|
|
661
|
+
*/
|
|
662
|
+
userSelectedNetwork: string;
|
|
663
|
+
/** Signer instance for this ledger */
|
|
664
|
+
signer: IWalletConnectSigner;
|
|
665
|
+
/** Unified accounts parsed from session */
|
|
666
|
+
accounts: UnifiedAccount[];
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* WalletConnect Session Store
|
|
671
|
+
*
|
|
672
|
+
* Manages the in-memory storage of WalletConnect sessions.
|
|
673
|
+
* Provides utility methods for session lookup and aggregation.
|
|
674
|
+
*/
|
|
675
|
+
export class WalletConnectSessionStore {
|
|
676
|
+
/**
|
|
677
|
+
* Map of session key to session data.
|
|
678
|
+
* Session key format: wc-{ledger}-{network}-{topicPrefix}
|
|
679
|
+
*/
|
|
680
|
+
private readonly sessions = new Map<string, StoredSessionData>();
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* Aggregated accounts signal for reactive UI binding.
|
|
684
|
+
*/
|
|
685
|
+
private readonly _accounts = signal<UnifiedAccount[]>([]);
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* Read-only accounts signal.
|
|
689
|
+
*/
|
|
690
|
+
readonly accounts = this._accounts.asReadonly();
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Get a session by key.
|
|
694
|
+
*
|
|
695
|
+
* @param sessionKey - Unique session key
|
|
696
|
+
* @returns Session data or undefined
|
|
697
|
+
*/
|
|
698
|
+
<span class="fstat-no" title="function not covered" > getSession(sessionKey: string): StoredSessionData | undefined {</span>
|
|
699
|
+
<span class="cstat-no" title="statement not covered" > return this.sessions.get(sessionKey);</span>
|
|
700
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Store a session.
|
|
704
|
+
*
|
|
705
|
+
* @param sessionKey - Unique session key
|
|
706
|
+
* @param data - Session data to store
|
|
707
|
+
*/
|
|
708
|
+
setSession(sessionKey: string, data: StoredSessionData): void {
|
|
709
|
+
this.sessions.set(sessionKey, data);
|
|
710
|
+
logger.debug('Session stored', { sessionKey, accountCount: data.accounts.length });
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Delete a session by key.
|
|
715
|
+
*
|
|
716
|
+
* @param sessionKey - Session key to delete
|
|
717
|
+
* @returns true if session was deleted
|
|
718
|
+
*/
|
|
719
|
+
<span class="fstat-no" title="function not covered" > deleteSession(sessionKey: string): boolean {</span>
|
|
720
|
+
<span class="cstat-no" title="statement not covered" > const deleted = this.sessions.delete(sessionKey);</span>
|
|
721
|
+
<span class="cstat-no" title="statement not covered" > if (deleted) {</span>
|
|
722
|
+
<span class="cstat-no" title="statement not covered" > logger.debug('Session deleted', { sessionKey });</span>
|
|
723
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
724
|
+
<span class="cstat-no" title="statement not covered" > return deleted;</span>
|
|
725
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Check if a session exists.
|
|
729
|
+
*
|
|
730
|
+
* @param sessionKey - Session key to check
|
|
731
|
+
*/
|
|
732
|
+
<span class="fstat-no" title="function not covered" > hasSession(sessionKey: string): boolean {</span>
|
|
733
|
+
<span class="cstat-no" title="statement not covered" > return this.sessions.has(sessionKey);</span>
|
|
734
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Get the number of stored sessions.
|
|
738
|
+
*/
|
|
739
|
+
get size(): number {
|
|
740
|
+
return this.sessions.size;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* Clear all sessions.
|
|
745
|
+
*/
|
|
746
|
+
clear(): void {
|
|
747
|
+
this.sessions.clear();
|
|
748
|
+
this._accounts.set([]);
|
|
749
|
+
logger.debug('All sessions cleared');
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* Get all session entries.
|
|
754
|
+
*
|
|
755
|
+
* @returns Iterator of [sessionKey, sessionData] pairs
|
|
756
|
+
*/
|
|
757
|
+
entries(): IterableIterator<[string, StoredSessionData]> {
|
|
758
|
+
return this.sessions.entries();
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* Get all session values.
|
|
763
|
+
*
|
|
764
|
+
* @returns Iterator of session data
|
|
765
|
+
*/
|
|
766
|
+
<span class="fstat-no" title="function not covered" > values(): IterableIterator<StoredSessionData> {</span>
|
|
767
|
+
<span class="cstat-no" title="statement not covered" > return this.sessions.values();</span>
|
|
768
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Generate a unique session key for tracking multiple sessions.
|
|
772
|
+
* Format: wc-{ledger}-{network}-{topicPrefix}
|
|
773
|
+
*
|
|
774
|
+
* @param ledgerId - Ledger identifier (hedera, xrpl)
|
|
775
|
+
* @param networkId - Network identifier (hedera:testnet, xrpl:mainnet)
|
|
776
|
+
* @param topic - WalletConnect session topic (optional)
|
|
777
|
+
* @returns Unique session key
|
|
778
|
+
*/
|
|
779
|
+
generateSessionKey(ledgerId: string, networkId: string, topic?: string): string {
|
|
780
|
+
const topicPrefix = topic ? topic.substring(0, 8<span class="branch-0 cbranch-no" title="branch not covered" >) : Date.now().toString();</span>
|
|
781
|
+
const networkPart = networkId.split(':')[1<span class="branch-0 cbranch-no" title="branch not covered" >] || 'unknown';</span>
|
|
782
|
+
return `wc-${ledgerId}-${networkPart}-${topicPrefix}`;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Update the aggregated accounts signal from all sessions.
|
|
787
|
+
* Call this after session changes to keep accounts in sync.
|
|
788
|
+
*/
|
|
789
|
+
updateAggregatedAccounts(): void {
|
|
790
|
+
const allAccounts: UnifiedAccount[] = [];
|
|
791
|
+
|
|
792
|
+
for (const sessionData of this.sessions.values()) {
|
|
793
|
+
allAccounts.push(...sessionData.accounts);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
logger.debug('Aggregated accounts', {
|
|
797
|
+
sessionCount: this.sessions.size,
|
|
798
|
+
totalAccounts: allAccounts.length,
|
|
799
|
+
});
|
|
800
|
+
this._accounts.set(allAccounts);
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Find the session containing a specific account address.
|
|
805
|
+
*
|
|
806
|
+
* @param accountAddress - Account address to find
|
|
807
|
+
* @returns Session, signer, and network info, or undefined if not found
|
|
808
|
+
*/
|
|
809
|
+
findSessionByAccount(accountAddress: string):
|
|
810
|
+
| {
|
|
811
|
+
session: any;
|
|
812
|
+
signer: IWalletConnectSigner;
|
|
813
|
+
networkId: string;
|
|
814
|
+
userSelectedNetwork: string;
|
|
815
|
+
}
|
|
816
|
+
| undefined {
|
|
817
|
+
for (const sessionData of this.sessions.values()) {
|
|
818
|
+
const accountExists = sessionData.accounts.some((acc) => acc.address === accountAddress);
|
|
819
|
+
if (accountExists) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
820
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
821
|
+
<span class="cstat-no" title="statement not covered" > session: sessionData.session,</span>
|
|
822
|
+
<span class="cstat-no" title="statement not covered" > signer: sessionData.signer,</span>
|
|
823
|
+
<span class="cstat-no" title="statement not covered" > networkId: sessionData.networkId,</span>
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: sessionData.userSelectedNetwork,</span>
|
|
825
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
826
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
827
|
+
}
|
|
828
|
+
return undefined;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Find and remove a session by its WalletConnect topic.
|
|
833
|
+
*
|
|
834
|
+
* @param topic - WalletConnect session topic
|
|
835
|
+
* @returns Removed session data, or undefined if not found
|
|
836
|
+
*/
|
|
837
|
+
<span class="fstat-no" title="function not covered" > removeSessionByTopic(topic: string): { sessionKey: string; data: StoredSessionData } | undefined {</span>
|
|
838
|
+
<span class="cstat-no" title="statement not covered" > for (const [sessionKey, sessionData] of this.sessions.entries()) {</span>
|
|
839
|
+
<span class="cstat-no" title="statement not covered" > if (sessionData.session.topic === topic) {</span>
|
|
840
|
+
<span class="cstat-no" title="statement not covered" > this.sessions.delete(sessionKey);</span>
|
|
841
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Session removed by topic', { sessionKey, topic: topic.substring(0, 16) });</span>
|
|
842
|
+
<span class="cstat-no" title="statement not covered" > return { sessionKey, data: sessionData };</span>
|
|
843
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
844
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
845
|
+
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
846
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
847
|
+
|
|
848
|
+
/**
|
|
849
|
+
* Get all active sessions as an array.
|
|
850
|
+
* Useful for UI display.
|
|
851
|
+
*
|
|
852
|
+
* @returns Array of session information
|
|
853
|
+
*/
|
|
854
|
+
<span class="fstat-no" title="function not covered" > getActiveSessions(): Array<{</span>
|
|
855
|
+
<span class="cstat-no" title="statement not covered" > sessionKey: string;</span>
|
|
856
|
+
<span class="cstat-no" title="statement not covered" > ledgerId: string;</span>
|
|
857
|
+
<span class="cstat-no" title="statement not covered" > networkId: string;</span>
|
|
858
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: string;</span>
|
|
859
|
+
<span class="cstat-no" title="statement not covered" > accounts: UnifiedAccount[];</span>
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > topic: string;</span>
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > }> {</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > const sessions: Array<{</span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > sessionKey: string;</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > ledgerId: string;</span>
|
|
865
|
+
<span class="cstat-no" title="statement not covered" > networkId: string;</span>
|
|
866
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: string;</span>
|
|
867
|
+
<span class="cstat-no" title="statement not covered" > accounts: UnifiedAccount[];</span>
|
|
868
|
+
<span class="cstat-no" title="statement not covered" > topic: string;</span>
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > }> = [];</span>
|
|
870
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
871
|
+
<span class="cstat-no" title="statement not covered" > for (const [sessionKey, sessionData] of this.sessions.entries()) {</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > sessions.push({</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" > sessionKey,</span>
|
|
874
|
+
<span class="cstat-no" title="statement not covered" > ledgerId: sessionData.ledgerId,</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > networkId: sessionData.networkId,</span>
|
|
876
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: sessionData.userSelectedNetwork,</span>
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > accounts: sessionData.accounts,</span>
|
|
878
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionData.session.topic,</span>
|
|
879
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
880
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
881
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
882
|
+
<span class="cstat-no" title="statement not covered" > return sessions;</span>
|
|
883
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
884
|
+
}
|
|
885
|
+
</pre></td></tr></table></pre>
|
|
886
|
+
|
|
887
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
888
|
+
</div><!-- /wrapper -->
|
|
889
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
890
|
+
Code coverage generated by
|
|
891
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
892
|
+
at 2026-06-02T14:30:38.257Z
|
|
893
|
+
</div>
|
|
894
|
+
<script src="../../../../prettify.js"></script>
|
|
895
|
+
<script>
|
|
896
|
+
window.onload = function () {
|
|
897
|
+
prettyPrint();
|
|
898
|
+
};
|
|
899
|
+
</script>
|
|
900
|
+
<script src="../../../../sorter.js"></script>
|
|
901
|
+
<script src="../../../../block-navigation.js"></script>
|
|
902
|
+
</body>
|
|
903
|
+
</html>
|
|
904
|
+
|