@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
|
@@ -0,0 +1,982 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for lib/providers/walletconnect/core/walletconnect-signing-orchestrator.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-signing-orchestrator.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">59.53% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>178/299</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'>5/7</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">55.55% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>5/9</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">59.53% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>178/299</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>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a></td><td class="line-coverage quiet"><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">1x</span>
|
|
404
|
+
<span class="cline-any cline-yes">1x</span>
|
|
405
|
+
<span class="cline-any cline-yes">1x</span>
|
|
406
|
+
<span class="cline-any cline-yes">1x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">1x</span>
|
|
410
|
+
<span class="cline-any cline-yes">1x</span>
|
|
411
|
+
<span class="cline-any cline-yes">1x</span>
|
|
412
|
+
<span class="cline-any cline-yes">1x</span>
|
|
413
|
+
<span class="cline-any cline-yes">1x</span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-yes">1x</span>
|
|
418
|
+
<span class="cline-any cline-yes">1x</span>
|
|
419
|
+
<span class="cline-any cline-yes">1x</span>
|
|
420
|
+
<span class="cline-any cline-yes">1x</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-yes">16x</span>
|
|
427
|
+
<span class="cline-any cline-yes">16x</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">16x</span>
|
|
437
|
+
<span class="cline-any cline-yes">16x</span>
|
|
438
|
+
<span class="cline-any cline-yes">16x</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">2x</span>
|
|
444
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
|
+
<span class="cline-any cline-yes">2x</span>
|
|
446
|
+
<span class="cline-any cline-yes">2x</span>
|
|
447
|
+
<span class="cline-any cline-yes">2x</span>
|
|
448
|
+
<span class="cline-any cline-yes">2x</span>
|
|
449
|
+
<span class="cline-any cline-yes">2x</span>
|
|
450
|
+
<span class="cline-any cline-yes">2x</span>
|
|
451
|
+
<span class="cline-any cline-yes">2x</span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-yes">2x</span>
|
|
454
|
+
<span class="cline-any cline-yes">2x</span>
|
|
455
|
+
<span class="cline-any cline-yes">2x</span>
|
|
456
|
+
<span class="cline-any cline-yes">2x</span>
|
|
457
|
+
<span class="cline-any cline-yes">2x</span>
|
|
458
|
+
<span class="cline-any cline-yes">2x</span>
|
|
459
|
+
<span class="cline-any cline-yes">2x</span>
|
|
460
|
+
<span class="cline-any cline-yes">2x</span>
|
|
461
|
+
<span class="cline-any cline-yes">2x</span>
|
|
462
|
+
<span class="cline-any cline-yes">2x</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">16x</span>
|
|
468
|
+
<span class="cline-any cline-yes">16x</span>
|
|
469
|
+
<span class="cline-any cline-yes">16x</span>
|
|
470
|
+
<span class="cline-any cline-yes">2x</span>
|
|
471
|
+
<span class="cline-any cline-yes">2x</span>
|
|
472
|
+
<span class="cline-any cline-yes">2x</span>
|
|
473
|
+
<span class="cline-any cline-yes">2x</span>
|
|
474
|
+
<span class="cline-any cline-yes">2x</span>
|
|
475
|
+
<span class="cline-any cline-yes">2x</span>
|
|
476
|
+
<span class="cline-any cline-yes">2x</span>
|
|
477
|
+
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-yes">2x</span>
|
|
479
|
+
<span class="cline-any cline-yes">2x</span>
|
|
480
|
+
<span class="cline-any cline-yes">2x</span>
|
|
481
|
+
<span class="cline-any cline-yes">2x</span>
|
|
482
|
+
<span class="cline-any cline-yes">2x</span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</span>
|
|
484
|
+
<span class="cline-any cline-yes">2x</span>
|
|
485
|
+
<span class="cline-any cline-yes">2x</span>
|
|
486
|
+
<span class="cline-any cline-yes">2x</span>
|
|
487
|
+
<span class="cline-any cline-yes">2x</span>
|
|
488
|
+
<span class="cline-any cline-yes">2x</span>
|
|
489
|
+
<span class="cline-any cline-yes">2x</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">16x</span>
|
|
497
|
+
<span class="cline-any cline-no"> </span>
|
|
498
|
+
<span class="cline-any cline-no"> </span>
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-no"> </span>
|
|
501
|
+
<span class="cline-any cline-no"> </span>
|
|
502
|
+
<span class="cline-any cline-no"> </span>
|
|
503
|
+
<span class="cline-any cline-no"> </span>
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
505
|
+
<span class="cline-any cline-no"> </span>
|
|
506
|
+
<span class="cline-any cline-no"> </span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-no"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-no"> </span>
|
|
512
|
+
<span class="cline-any cline-no"> </span>
|
|
513
|
+
<span class="cline-any cline-no"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
515
|
+
<span class="cline-any cline-no"> </span>
|
|
516
|
+
<span class="cline-any cline-no"> </span>
|
|
517
|
+
<span class="cline-any cline-no"> </span>
|
|
518
|
+
<span class="cline-any cline-no"> </span>
|
|
519
|
+
<span class="cline-any cline-no"> </span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
521
|
+
<span class="cline-any cline-no"> </span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
531
|
+
<span class="cline-any cline-no"> </span>
|
|
532
|
+
<span class="cline-any cline-no"> </span>
|
|
533
|
+
<span class="cline-any cline-no"> </span>
|
|
534
|
+
<span class="cline-any cline-no"> </span>
|
|
535
|
+
<span class="cline-any cline-no"> </span>
|
|
536
|
+
<span class="cline-any cline-no"> </span>
|
|
537
|
+
<span class="cline-any cline-no"> </span>
|
|
538
|
+
<span class="cline-any cline-no"> </span>
|
|
539
|
+
<span class="cline-any cline-no"> </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-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-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-no"> </span>
|
|
561
|
+
<span class="cline-any cline-no"> </span>
|
|
562
|
+
<span class="cline-any cline-no"> </span>
|
|
563
|
+
<span class="cline-any cline-no"> </span>
|
|
564
|
+
<span class="cline-any cline-no"> </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-yes">16x</span>
|
|
570
|
+
<span class="cline-any cline-yes">16x</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">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-yes">16x</span>
|
|
583
|
+
<span class="cline-any cline-yes">16x</span>
|
|
584
|
+
<span class="cline-any cline-yes">16x</span>
|
|
585
|
+
<span class="cline-any cline-yes">16x</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-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-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">16x</span>
|
|
618
|
+
<span class="cline-any cline-yes">4x</span>
|
|
619
|
+
<span class="cline-any cline-yes">4x</span>
|
|
620
|
+
<span class="cline-any cline-yes">4x</span>
|
|
621
|
+
<span class="cline-any cline-yes">4x</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-yes">4x</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-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-yes">16x</span>
|
|
664
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
665
|
+
* HSuite Native Connect
|
|
666
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
667
|
+
*
|
|
668
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
669
|
+
*
|
|
670
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
671
|
+
* visit https://hsuite.finance/licensing
|
|
672
|
+
*/
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* @file walletconnect-signing-orchestrator.ts
|
|
676
|
+
* @description Signing orchestration for WalletConnect provider
|
|
677
|
+
*
|
|
678
|
+
* Handles:
|
|
679
|
+
* - Finding sessions for accounts
|
|
680
|
+
* - Session validation in WC SDK
|
|
681
|
+
* - Routing sign/submit requests to appropriate signers
|
|
682
|
+
*
|
|
683
|
+
* Extracted from WalletConnectV2Provider to reduce file size.
|
|
684
|
+
*/
|
|
685
|
+
|
|
686
|
+
import { getLogger } from '@hsuite/native-connect-sdk';
|
|
687
|
+
|
|
688
|
+
import type { WalletEventBus } from '../../../services/wallet-event-bus.service';
|
|
689
|
+
import type {
|
|
690
|
+
SignTransactionOptions,
|
|
691
|
+
SubmitTransactionOptions,
|
|
692
|
+
SignResult,
|
|
693
|
+
SubmitResult,
|
|
694
|
+
SignMessageOptions,
|
|
695
|
+
SignMessageResult,
|
|
696
|
+
} from '../../base-wallet-provider';
|
|
697
|
+
|
|
698
|
+
import type { WalletConnectClientManager } from './walletconnect-client-manager';
|
|
699
|
+
import type { WalletConnectSessionStore } from './walletconnect-session-store';
|
|
700
|
+
|
|
701
|
+
const logger = getLogger().scoped?.('WCSigningOrchestrator'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Signing orchestration configuration
|
|
705
|
+
*/
|
|
706
|
+
export interface SigningOrchestratorConfig {
|
|
707
|
+
providerId: string;
|
|
708
|
+
sessionStore: WalletConnectSessionStore;
|
|
709
|
+
clientManager: WalletConnectClientManager;
|
|
710
|
+
eventBus: WalletEventBus;
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Signing Orchestrator
|
|
715
|
+
*
|
|
716
|
+
* Routes signing requests to the appropriate session and signer.
|
|
717
|
+
* Handles session validation and error emission.
|
|
718
|
+
*/
|
|
719
|
+
export class WalletConnectSigningOrchestrator {
|
|
720
|
+
private readonly providerId: string;
|
|
721
|
+
private readonly sessionStore: WalletConnectSessionStore;
|
|
722
|
+
private readonly clientManager: WalletConnectClientManager;
|
|
723
|
+
private readonly eventBus: WalletEventBus;
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
*
|
|
727
|
+
* @param config
|
|
728
|
+
*/
|
|
729
|
+
constructor(config: SigningOrchestratorConfig) {
|
|
730
|
+
this.providerId = config.providerId;
|
|
731
|
+
this.sessionStore = config.sessionStore;
|
|
732
|
+
this.clientManager = config.clientManager;
|
|
733
|
+
this.eventBus = config.eventBus;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Sign a transaction without submitting.
|
|
738
|
+
* Uses the user's selected network from the session for the signing request.
|
|
739
|
+
* @param options
|
|
740
|
+
*/
|
|
741
|
+
async signTransaction(options: SignTransactionOptions): Promise<SignResult> {
|
|
742
|
+
const sessionInfo = this.findAndValidateSession(options.accountAddress, 'signTransaction');
|
|
743
|
+
|
|
744
|
+
// Use user's selected network from session, with fallback to options.networkId
|
|
745
|
+
const networkId = this.resolveNetworkId(sessionInfo, options.networkId);
|
|
746
|
+
|
|
747
|
+
logger.debug('Routing sign to signer', {
|
|
748
|
+
ledgerId: sessionInfo.signer.ledgerId,
|
|
749
|
+
topic: sessionInfo.session.topic.substring(0, 16) + '...',
|
|
750
|
+
networkId,
|
|
751
|
+
userSelectedNetwork: sessionInfo.userSelectedNetwork,
|
|
752
|
+
});
|
|
753
|
+
|
|
754
|
+
return sessionInfo.signer.signTransaction({
|
|
755
|
+
client: this.clientManager.getClient(),
|
|
756
|
+
topic: sessionInfo.session.topic,
|
|
757
|
+
accountAddress: options.accountAddress,
|
|
758
|
+
payload: options.payload,
|
|
759
|
+
networkId,
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Sign and submit a transaction.
|
|
765
|
+
* Uses the user's selected network from the session for the signing request.
|
|
766
|
+
* @param options
|
|
767
|
+
*/
|
|
768
|
+
async submitTransaction(options: SubmitTransactionOptions): Promise<SubmitResult> {
|
|
769
|
+
const sessionInfo = this.findAndValidateSession(options.accountAddress, 'submitTransaction');
|
|
770
|
+
|
|
771
|
+
// Use user's selected network from session, with fallback to options.networkId
|
|
772
|
+
const networkId = this.resolveNetworkId(sessionInfo, options.networkId);
|
|
773
|
+
|
|
774
|
+
logger.debug('Routing submit to signer', {
|
|
775
|
+
ledgerId: sessionInfo.signer.ledgerId,
|
|
776
|
+
topic: sessionInfo.session.topic.substring(0, 16) + '...',
|
|
777
|
+
networkId,
|
|
778
|
+
userSelectedNetwork: sessionInfo.userSelectedNetwork,
|
|
779
|
+
});
|
|
780
|
+
|
|
781
|
+
return sessionInfo.signer.submitTransaction({
|
|
782
|
+
client: this.clientManager.getClient(),
|
|
783
|
+
topic: sessionInfo.session.topic,
|
|
784
|
+
accountAddress: options.accountAddress,
|
|
785
|
+
payload: options.payload,
|
|
786
|
+
networkId,
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* Sign and execute a transaction (single wallet prompt).
|
|
792
|
+
* Uses the user's selected network from the session for the signing request.
|
|
793
|
+
* @param options
|
|
794
|
+
*/
|
|
795
|
+
<span class="fstat-no" title="function not covered" > async signAndExecuteTransaction(options: SubmitTransactionOptions): Promise<SubmitResult> {</span>
|
|
796
|
+
<span class="cstat-no" title="statement not covered" > const sessionInfo = this.findAndValidateSession(</span>
|
|
797
|
+
<span class="cstat-no" title="statement not covered" > options.accountAddress,</span>
|
|
798
|
+
<span class="cstat-no" title="statement not covered" > 'signAndExecuteTransaction',</span>
|
|
799
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
800
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
801
|
+
<span class="cstat-no" title="statement not covered" > // Use user's selected network from session, with fallback to options.networkId</span>
|
|
802
|
+
<span class="cstat-no" title="statement not covered" > const networkId = this.resolveNetworkId(sessionInfo, options.networkId);</span>
|
|
803
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
804
|
+
<span class="cstat-no" title="statement not covered" > logger.debug('Routing signAndExecute to signer', {</span>
|
|
805
|
+
<span class="cstat-no" title="statement not covered" > ledgerId: sessionInfo.signer.ledgerId,</span>
|
|
806
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic.substring(0, 16) + '...',</span>
|
|
807
|
+
<span class="cstat-no" title="statement not covered" > networkId,</span>
|
|
808
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: sessionInfo.userSelectedNetwork,</span>
|
|
809
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
810
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
811
|
+
<span class="cstat-no" title="statement not covered" > // Check if signer supports native signAndExecute</span>
|
|
812
|
+
<span class="cstat-no" title="statement not covered" > if (typeof sessionInfo.signer.signAndExecuteTransaction === 'function') {</span>
|
|
813
|
+
<span class="cstat-no" title="statement not covered" > return sessionInfo.signer.signAndExecuteTransaction({</span>
|
|
814
|
+
<span class="cstat-no" title="statement not covered" > client: this.clientManager.getClient(),</span>
|
|
815
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic,</span>
|
|
816
|
+
<span class="cstat-no" title="statement not covered" > accountAddress: options.accountAddress,</span>
|
|
817
|
+
<span class="cstat-no" title="statement not covered" > payload: options.payload,</span>
|
|
818
|
+
<span class="cstat-no" title="statement not covered" > networkId,</span>
|
|
819
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
820
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
821
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
822
|
+
<span class="cstat-no" title="statement not covered" > // Fallback: sign then submit</span>
|
|
823
|
+
<span class="cstat-no" title="statement not covered" > const signResult = await sessionInfo.signer.signTransaction({</span>
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > client: this.clientManager.getClient(),</span>
|
|
825
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic,</span>
|
|
826
|
+
<span class="cstat-no" title="statement not covered" > accountAddress: options.accountAddress,</span>
|
|
827
|
+
<span class="cstat-no" title="statement not covered" > payload: options.payload,</span>
|
|
828
|
+
<span class="cstat-no" title="statement not covered" > networkId,</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" > return sessionInfo.signer.submitTransaction({</span>
|
|
832
|
+
<span class="cstat-no" title="statement not covered" > client: this.clientManager.getClient(),</span>
|
|
833
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic,</span>
|
|
834
|
+
<span class="cstat-no" title="statement not covered" > accountAddress: options.accountAddress,</span>
|
|
835
|
+
<span class="cstat-no" title="statement not covered" > payload: signResult.signedPayload || options.payload,</span>
|
|
836
|
+
<span class="cstat-no" title="statement not covered" > networkId,</span>
|
|
837
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
838
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* Sign a message.
|
|
842
|
+
* Uses the user's selected network from the session for the signing request.
|
|
843
|
+
* @param options
|
|
844
|
+
*/
|
|
845
|
+
<span class="fstat-no" title="function not covered" > async signMessage(options: SignMessageOptions): Promise<SignMessageResult> {</span>
|
|
846
|
+
<span class="cstat-no" title="statement not covered" > const sessionInfo = this.findAndValidateSession(options.accountAddress, 'signMessage');</span>
|
|
847
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > // Use user's selected network from session, with fallback to options.networkId</span>
|
|
849
|
+
<span class="cstat-no" title="statement not covered" > const networkId = this.resolveNetworkId(sessionInfo, options.networkId);</span>
|
|
850
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
851
|
+
<span class="cstat-no" title="statement not covered" > logger.debug('Routing signMessage to signer', {</span>
|
|
852
|
+
<span class="cstat-no" title="statement not covered" > ledgerId: sessionInfo.signer.ledgerId,</span>
|
|
853
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic.substring(0, 16) + '...',</span>
|
|
854
|
+
<span class="cstat-no" title="statement not covered" > networkId,</span>
|
|
855
|
+
<span class="cstat-no" title="statement not covered" > userSelectedNetwork: sessionInfo.userSelectedNetwork,</span>
|
|
856
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
857
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
858
|
+
<span class="cstat-no" title="statement not covered" > return sessionInfo.signer.signMessage({</span>
|
|
859
|
+
<span class="cstat-no" title="statement not covered" > client: this.clientManager.getClient(),</span>
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic,</span>
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > accountAddress: options.accountAddress,</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > payload: '',</span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > networkId,</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > message: options.message,</span>
|
|
865
|
+
<span class="cstat-no" title="statement not covered" > encoding: options.encoding,</span>
|
|
866
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
867
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
868
|
+
|
|
869
|
+
/**
|
|
870
|
+
* Resolve the network ID to use for signing.
|
|
871
|
+
*
|
|
872
|
+
* Priority:
|
|
873
|
+
* 1. User's selected network from session (userSelectedNetwork)
|
|
874
|
+
* 2. Session's networkId
|
|
875
|
+
* 3. options.networkId from the caller
|
|
876
|
+
* 4. Empty string (let signer handle default)
|
|
877
|
+
*
|
|
878
|
+
* This ensures we always use the network the user selected when connecting,
|
|
879
|
+
* regardless of what the caller passes in.
|
|
880
|
+
*
|
|
881
|
+
* @param sessionInfo - Session info containing network selections
|
|
882
|
+
* @param sessionInfo.userSelectedNetwork
|
|
883
|
+
* @param optionsNetworkId - Network ID from caller options
|
|
884
|
+
* @param sessionInfo.networkId
|
|
885
|
+
* @returns Resolved network ID to use
|
|
886
|
+
*/
|
|
887
|
+
private <span class="fstat-no" title="function not covered" >resolveNetworkId(</span>
|
|
888
|
+
<span class="cstat-no" title="statement not covered" > sessionInfo: { userSelectedNetwork: string; networkId: string },</span>
|
|
889
|
+
<span class="cstat-no" title="statement not covered" > optionsNetworkId?: string,</span>
|
|
890
|
+
<span class="cstat-no" title="statement not covered" > ): string {</span>
|
|
891
|
+
<span class="cstat-no" title="statement not covered" > // Prefer user's selected network, then session network, then options</span>
|
|
892
|
+
<span class="cstat-no" title="statement not covered" > const resolvedNetwork =</span>
|
|
893
|
+
<span class="cstat-no" title="statement not covered" > sessionInfo.userSelectedNetwork || sessionInfo.networkId || optionsNetworkId || '';</span>
|
|
894
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
895
|
+
<span class="cstat-no" title="statement not covered" > // Log if there's a mismatch between options and session network</span>
|
|
896
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
897
|
+
<span class="cstat-no" title="statement not covered" > optionsNetworkId &&</span>
|
|
898
|
+
<span class="cstat-no" title="statement not covered" > sessionInfo.userSelectedNetwork &&</span>
|
|
899
|
+
<span class="cstat-no" title="statement not covered" > optionsNetworkId !== sessionInfo.userSelectedNetwork</span>
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
901
|
+
<span class="cstat-no" title="statement not covered" > logger.warn('Network mismatch: using session network over caller-provided network', {</span>
|
|
902
|
+
<span class="cstat-no" title="statement not covered" > callerNetwork: optionsNetworkId,</span>
|
|
903
|
+
<span class="cstat-no" title="statement not covered" > sessionNetwork: sessionInfo.userSelectedNetwork,</span>
|
|
904
|
+
<span class="cstat-no" title="statement not covered" > using: resolvedNetwork,</span>
|
|
905
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
906
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
907
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
908
|
+
<span class="cstat-no" title="statement not covered" > return resolvedNetwork;</span>
|
|
909
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* Find session for account and validate it exists in SDK.
|
|
913
|
+
* @param accountAddress
|
|
914
|
+
* @param context
|
|
915
|
+
*/
|
|
916
|
+
private findAndValidateSession(accountAddress: string, context: string) {
|
|
917
|
+
const sessionInfo = this.sessionStore.findSessionByAccount(accountAddress);
|
|
918
|
+
if (!sessionInfo) {
|
|
919
|
+
throw new Error(`No WalletConnect session found for account: ${accountAddress}`);
|
|
920
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
921
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
922
|
+
<span class="cstat-no" title="statement not covered" > // Validate session exists in WC SDK</span>
|
|
923
|
+
<span class="cstat-no" title="statement not covered" > if (!this.validateSessionInSdk(sessionInfo.session.topic)) {</span>
|
|
924
|
+
<span class="cstat-no" title="statement not covered" > logger.error('Session not found in WC SDK', {</span>
|
|
925
|
+
<span class="cstat-no" title="statement not covered" > topic: sessionInfo.session.topic.substring(0, 16) + '...',</span>
|
|
926
|
+
<span class="cstat-no" title="statement not covered" > account: accountAddress,</span>
|
|
927
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
928
|
+
<span class="cstat-no" title="statement not covered" > this.eventBus.providerError.emit({</span>
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > providerId: this.providerId,</span>
|
|
930
|
+
<span class="cstat-no" title="statement not covered" > error: new Error('WalletConnect session expired or disconnected. Please reconnect.'),</span>
|
|
931
|
+
<span class="cstat-no" title="statement not covered" > context,</span>
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > timestamp: Date.now(),</span>
|
|
933
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
934
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
935
|
+
<span class="cstat-no" title="statement not covered" > 'WalletConnect session expired or disconnected. Please reconnect your wallet.',</span>
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
937
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
938
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > return sessionInfo;</span>
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
/**
|
|
943
|
+
* Validate session exists in WC SDK storage.
|
|
944
|
+
* @param topic
|
|
945
|
+
*/
|
|
946
|
+
private <span class="fstat-no" title="function not covered" >validateSessionInSdk(topic: string): boolean {</span>
|
|
947
|
+
<span class="cstat-no" title="statement not covered" > if (!this.clientManager.isInitialized()) {</span>
|
|
948
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
949
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
950
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
951
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
952
|
+
<span class="cstat-no" title="statement not covered" > const session = this.clientManager.getSession(topic);</span>
|
|
953
|
+
<span class="cstat-no" title="statement not covered" > return !!session;</span>
|
|
954
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
955
|
+
<span class="cstat-no" title="statement not covered" > logger.warn('Session validation failed', {</span>
|
|
956
|
+
<span class="cstat-no" title="statement not covered" > topic: topic.substring(0, 16) + '...',</span>
|
|
957
|
+
<span class="cstat-no" title="statement not covered" > error: error instanceof Error ? error.message : String(error),</span>
|
|
958
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
959
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
960
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
961
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
962
|
+
}
|
|
963
|
+
</pre></td></tr></table></pre>
|
|
964
|
+
|
|
965
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
966
|
+
</div><!-- /wrapper -->
|
|
967
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
968
|
+
Code coverage generated by
|
|
969
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
970
|
+
at 2026-06-02T14:30:38.257Z
|
|
971
|
+
</div>
|
|
972
|
+
<script src="../../../../prettify.js"></script>
|
|
973
|
+
<script>
|
|
974
|
+
window.onload = function () {
|
|
975
|
+
prettyPrint();
|
|
976
|
+
};
|
|
977
|
+
</script>
|
|
978
|
+
<script src="../../../../sorter.js"></script>
|
|
979
|
+
<script src="../../../../block-navigation.js"></script>
|
|
980
|
+
</body>
|
|
981
|
+
</html>
|
|
982
|
+
|