@tezos-x/octez.connect-dapp 4.8.4 → 4.8.6
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 +41 -0
- package/dist/cjs/dapp-client/DAppClient.d.ts +113 -4
- package/dist/cjs/dapp-client/DAppClient.js +962 -373
- package/dist/cjs/dapp-client/DAppClient.js.map +1 -1
- package/dist/cjs/dapp-client/DAppClientOptions.d.ts +17 -0
- package/dist/cjs/dapp-client/DAppClientOptions.js.map +1 -1
- package/dist/cjs/events.d.ts +27 -2
- package/dist/cjs/events.js +9 -5
- package/dist/cjs/events.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/get-instance.js +3 -0
- package/dist/cjs/utils/get-instance.js.map +1 -1
- package/dist/esm/dapp-client/DAppClient.d.ts +113 -4
- package/dist/esm/dapp-client/DAppClient.js +968 -368
- package/dist/esm/dapp-client/DAppClient.js.map +1 -1
- package/dist/esm/dapp-client/DAppClientOptions.d.ts +17 -0
- package/dist/esm/dapp-client/DAppClientOptions.js.map +1 -1
- package/dist/esm/events.d.ts +27 -2
- package/dist/esm/events.js +6 -3
- package/dist/esm/events.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/get-instance.js +3 -0
- package/dist/esm/utils/get-instance.js.map +1 -1
- package/dist/octez.connect.dapp.min.js +1 -1
- package/package.json +9 -9
|
@@ -97,6 +97,18 @@ export interface DAppClientOptions {
|
|
|
97
97
|
*/
|
|
98
98
|
relayUrl?: string;
|
|
99
99
|
}>;
|
|
100
|
+
/**
|
|
101
|
+
* Disable the WalletConnect transport entirely (Enabled by Default).
|
|
102
|
+
*
|
|
103
|
+
* When `true`, the WalletConnect transport is neither constructed nor listened to, and
|
|
104
|
+
* `walletConnectPeerInfo` is omitted from the pairing (`PAIR_INIT`) event. Use this in
|
|
105
|
+
* environments where the WalletConnect provider cannot run — notably a Firefox MV3
|
|
106
|
+
* content-script compartment, where cross-compartment ("Xray") wrappers break the
|
|
107
|
+
* provider (`this.provider.request is not a function`, `a.entries() is not iterable`).
|
|
108
|
+
*
|
|
109
|
+
* Leaving this unset preserves the default behavior (WalletConnect enabled).
|
|
110
|
+
*/
|
|
111
|
+
disableWalletConnect?: boolean;
|
|
100
112
|
/**
|
|
101
113
|
* The analytics instance that will be used by the SDK
|
|
102
114
|
*/
|
|
@@ -113,5 +125,10 @@ export interface DAppClientOptions {
|
|
|
113
125
|
* Enable metrics tracking (Disabled by Default)
|
|
114
126
|
*/
|
|
115
127
|
enableMetrics?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Maximum time in milliseconds to wait for a wallet acknowledge or response before rejecting
|
|
130
|
+
* the request. Set to 0 or a negative value to disable request timeouts.
|
|
131
|
+
*/
|
|
132
|
+
requestTimeoutMs?: number;
|
|
116
133
|
}
|
|
117
134
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DAppClientOptions.js","sourceRoot":"","sources":["../../../src/dapp-client/DAppClientOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events'\nimport { BlockExplorer } from '../utils/block-explorer'\nimport {\n Storage,\n NetworkType,\n ColorMode,\n NodeDistributions,\n AnalyticsInterface,\n Network\n} from '@tezos-x/octez.connect-types'\n\ntype RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>\n }[Keys]\n\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string\n\n /**\n * Description of the application\n */\n description?: string\n\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string\n\n /**\n * A URL to the website of the application\n */\n appUrl?: string\n\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage\n\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n }\n\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean\n\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions\n\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer\n\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network\n\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType\n\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode\n\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string\n\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record<string, Record<string | number, string>>\n\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string\n\n /**\n * The relay server to connect to\n */\n relayUrl?: string\n }>\n\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface\n\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[]\n\n /**\n * Automatically switch between apps on Mobile Devices (Enabled by Default)\n */\n enableAppSwitching?: boolean\n\n /**\n * Enable metrics tracking (Disabled by Default)\n */\n enableMetrics?: boolean\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DAppClientOptions.js","sourceRoot":"","sources":["../../../src/dapp-client/DAppClientOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events'\nimport { BlockExplorer } from '../utils/block-explorer'\nimport {\n Storage,\n NetworkType,\n ColorMode,\n NodeDistributions,\n AnalyticsInterface,\n Network\n} from '@tezos-x/octez.connect-types'\n\ntype RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>\n }[Keys]\n\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string\n\n /**\n * Description of the application\n */\n description?: string\n\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string\n\n /**\n * A URL to the website of the application\n */\n appUrl?: string\n\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage\n\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n }\n\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean\n\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions\n\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer\n\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network\n\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType\n\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode\n\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string\n\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record<string, Record<string | number, string>>\n\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string\n\n /**\n * The relay server to connect to\n */\n relayUrl?: string\n }>\n\n /**\n * Disable the WalletConnect transport entirely (Enabled by Default).\n *\n * When `true`, the WalletConnect transport is neither constructed nor listened to, and\n * `walletConnectPeerInfo` is omitted from the pairing (`PAIR_INIT`) event. Use this in\n * environments where the WalletConnect provider cannot run — notably a Firefox MV3\n * content-script compartment, where cross-compartment (\"Xray\") wrappers break the\n * provider (`this.provider.request is not a function`, `a.entries() is not iterable`).\n *\n * Leaving this unset preserves the default behavior (WalletConnect enabled).\n */\n disableWalletConnect?: boolean\n\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface\n\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[]\n\n /**\n * Automatically switch between apps on Mobile Devices (Enabled by Default)\n */\n enableAppSwitching?: boolean\n\n /**\n * Enable metrics tracking (Disabled by Default)\n */\n enableMetrics?: boolean\n\n /**\n * Maximum time in milliseconds to wait for a wallet acknowledge or response before rejecting\n * the request. Set to 0 or a negative value to disable request timeouts.\n */\n requestTimeoutMs?: number\n}\n"]}
|
package/dist/cjs/events.d.ts
CHANGED
|
@@ -46,6 +46,31 @@ export declare enum BeaconEvent {
|
|
|
46
46
|
export interface ExtraInfo {
|
|
47
47
|
resetCallback?(): Promise<void>;
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Reason Beacon deactivated invalid persisted active-account state during dApp
|
|
51
|
+
* startup.
|
|
52
|
+
*
|
|
53
|
+
* - `missing_active_account`: `beacon:active-account` pointed at an account
|
|
54
|
+
* identifier that was not present in Beacon's persisted account list.
|
|
55
|
+
* - `invalid_active_account_storage`: Beacon could not read or parse the
|
|
56
|
+
* persisted active-account/account storage needed to restore the account.
|
|
57
|
+
* - `storage_validation_failed`: Beacon restored an active account, but a later
|
|
58
|
+
* storage validation pass still found invalid persisted session state.
|
|
59
|
+
*/
|
|
60
|
+
export type InvalidAccountDeactivatedReason = 'missing_active_account' | 'invalid_active_account_storage' | 'storage_validation_failed';
|
|
61
|
+
/**
|
|
62
|
+
* Payload emitted with {@link BeaconEvent.INVALID_ACCOUNT_DEACTIVATED}.
|
|
63
|
+
*
|
|
64
|
+
* Beacon emits this object when it deactivates invalid active-account state.
|
|
65
|
+
* The event type also accepts `undefined` so listeners and direct emitters
|
|
66
|
+
* written against earlier Beacon versions remain source-compatible.
|
|
67
|
+
*/
|
|
68
|
+
export interface InvalidAccountDeactivatedEvent {
|
|
69
|
+
/**
|
|
70
|
+
* Machine-readable reason for the deactivation.
|
|
71
|
+
*/
|
|
72
|
+
reason: InvalidAccountDeactivatedReason;
|
|
73
|
+
}
|
|
49
74
|
interface RequestSentInfo {
|
|
50
75
|
extraInfo: ExtraInfo;
|
|
51
76
|
walletInfo: WalletInfo;
|
|
@@ -137,7 +162,7 @@ export interface BeaconEventType {
|
|
|
137
162
|
[BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport;
|
|
138
163
|
[BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined;
|
|
139
164
|
[BeaconEvent.GENERIC_ERROR]: string;
|
|
140
|
-
[BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: undefined;
|
|
165
|
+
[BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: InvalidAccountDeactivatedEvent | undefined;
|
|
141
166
|
[BeaconEvent.SHOW_PREPARE]: {
|
|
142
167
|
walletInfo?: WalletInfo;
|
|
143
168
|
};
|
|
@@ -145,7 +170,7 @@ export interface BeaconEventType {
|
|
|
145
170
|
[BeaconEvent.PAIR_INIT]: {
|
|
146
171
|
p2pPeerInfo: Promise<string>;
|
|
147
172
|
postmessagePeerInfo: Promise<string>;
|
|
148
|
-
walletConnectPeerInfo
|
|
173
|
+
walletConnectPeerInfo?: PromiseLike<string>;
|
|
149
174
|
networkType: NetworkType;
|
|
150
175
|
abortedHandler?(): void;
|
|
151
176
|
disclaimerText?: string;
|
package/dist/cjs/events.js
CHANGED
|
@@ -13,7 +13,6 @@ exports.BeaconEventHandler = exports.defaultEventCallbacks = exports.BeaconEvent
|
|
|
13
13
|
const octez_connect_ui_1 = require("@tezos-x/octez.connect-ui");
|
|
14
14
|
const octez_connect_types_1 = require("@tezos-x/octez.connect-types");
|
|
15
15
|
const octez_connect_core_1 = require("@tezos-x/octez.connect-core");
|
|
16
|
-
const octez_connect_ui_2 = require("@tezos-x/octez.connect-ui");
|
|
17
16
|
const shorten_string_1 = require("./utils/shorten-string");
|
|
18
17
|
const logger = new octez_connect_core_1.Logger('octez.connectEvents');
|
|
19
18
|
const SUCCESS_TIMER = 5 * 1000;
|
|
@@ -71,8 +70,8 @@ const showSentToast = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
71
70
|
const actions = [];
|
|
72
71
|
if (data.walletInfo.deeplink) {
|
|
73
72
|
if (data.walletInfo.type === 'web' ||
|
|
74
|
-
(data.walletInfo.type === 'mobile' && (0,
|
|
75
|
-
(data.walletInfo.type === 'desktop' && !(0,
|
|
73
|
+
(data.walletInfo.type === 'mobile' && (0, octez_connect_ui_1.isMobile)(window)) ||
|
|
74
|
+
(data.walletInfo.type === 'desktop' && !(0, octez_connect_ui_1.isMobile)(window))) {
|
|
76
75
|
const link = data.walletInfo.deeplink;
|
|
77
76
|
openWalletAction = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
77
|
const a = document.createElement('a');
|
|
@@ -112,7 +111,7 @@ const showSentToast = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
112
111
|
body: `Request sent to\u00A0 {{wallet}}`,
|
|
113
112
|
walletInfo: data.walletInfo,
|
|
114
113
|
state: 'loading',
|
|
115
|
-
timer: (0,
|
|
114
|
+
timer: (0, octez_connect_ui_1.isMobileOS)(window) ? SUCCESS_TIMER : 0,
|
|
116
115
|
actions,
|
|
117
116
|
openWalletAction
|
|
118
117
|
});
|
|
@@ -163,7 +162,12 @@ const showInvalidActiveAccountState = () => __awaiter(void 0, void 0, void 0, fu
|
|
|
163
162
|
/**
|
|
164
163
|
* Show an "account deactivated" error alert
|
|
165
164
|
*/
|
|
166
|
-
const showInvalidAccountDeactivated = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
165
|
+
const showInvalidAccountDeactivated = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
166
|
+
var _a;
|
|
167
|
+
logger.log('showInvalidAccountDeactivated', (_a = data === null || data === void 0 ? void 0 : data.reason) !== null && _a !== void 0 ? _a : 'unknown');
|
|
168
|
+
if ((data === null || data === void 0 ? void 0 : data.reason) === 'missing_active_account') {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
167
171
|
yield (0, octez_connect_ui_1.openAlert)({
|
|
168
172
|
title: 'Error',
|
|
169
173
|
body: `Your session has expired. Please pair with your wallet again.`
|
package/dist/cjs/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n closeAlert,\n openAlert,\n openBugReport,\n AlertButton,\n AlertConfig,\n closeToast,\n openToast,\n ToastAction\n} from '@tezos-x/octez.connect-ui'\nimport {\n BeaconErrorType,\n ExtendedPostMessagePairingResponse,\n ExtendedP2PPairingResponse,\n AccountInfo,\n ErrorResponse,\n PermissionResponseOutput,\n OperationResponseOutput,\n BroadcastResponseOutput,\n SignPayloadResponseOutput,\n Network,\n ConnectionContext,\n NetworkType,\n AcknowledgeResponse,\n WalletInfo,\n ExtendedWalletConnectPairingResponse,\n AnalyticsInterface,\n ProofOfEventChallengeResponseOutput,\n SimulatedProofOfEventChallengeResponseOutput\n} from '@tezos-x/octez.connect-types'\nimport {\n UnknownBeaconError,\n Transport,\n Logger,\n getError\n // EncryptPayloadResponseOutput,\n // EncryptionOperation\n} from '@tezos-x/octez.connect-core'\nimport { isMobile, isMobileOS } from '@tezos-x/octez.connect-ui'\nimport { BlockExplorer } from './utils/block-explorer'\nimport { shortenString } from './utils/shorten-string'\n\nconst logger = new Logger('octez.connectEvents')\n\nconst SUCCESS_TIMER: number = 5 * 1000\n\ntype RPCError = {\n kind: string\n id: string\n contract_handle?: string\n location?: number\n with?: {\n string?: string\n int?: number\n }\n}\n/**\n * The different events that can be emitted by the octez.connect-sdk\n */\nexport enum BeaconEvent {\n PERMISSION_REQUEST_SENT = 'PERMISSION_REQUEST_SENT',\n PERMISSION_REQUEST_SUCCESS = 'PERMISSION_REQUEST_SUCCESS',\n PERMISSION_REQUEST_ERROR = 'PERMISSION_REQUEST_ERROR',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR',\n OPERATION_REQUEST_SENT = 'OPERATION_REQUEST_SENT',\n OPERATION_REQUEST_SUCCESS = 'OPERATION_REQUEST_SUCCESS',\n OPERATION_REQUEST_ERROR = 'OPERATION_REQUEST_ERROR',\n SIGN_REQUEST_SENT = 'SIGN_REQUEST_SENT',\n SIGN_REQUEST_SUCCESS = 'SIGN_REQUEST_SUCCESS',\n SIGN_REQUEST_ERROR = 'SIGN_REQUEST_ERROR',\n BLOCKCHAIN_REQUEST_SUCCESS = 'BLOCKCHAIN_REQUEST_SUCCESS',\n // TODO: ENCRYPTION\n // ENCRYPT_REQUEST_SENT = 'ENCRYPT_REQUEST_SENT',\n // ENCRYPT_REQUEST_SUCCESS = 'ENCRYPT_REQUEST_SUCCESS',\n // ENCRYPT_REQUEST_ERROR = 'ENCRYPT_REQUEST_ERROR',\n BROADCAST_REQUEST_SENT = 'BROADCAST_REQUEST_SENT',\n BROADCAST_REQUEST_SUCCESS = 'BROADCAST_REQUEST_SUCCESS',\n BROADCAST_REQUEST_ERROR = 'BROADCAST_REQUEST_ERROR',\n ACKNOWLEDGE_RECEIVED = 'ACKNOWLEDGE_RECEIVED',\n\n LOCAL_RATE_LIMIT_REACHED = 'LOCAL_RATE_LIMIT_REACHED',\n\n NO_PERMISSIONS = 'NO_PERMISSIONS',\n\n ACTIVE_ACCOUNT_SET = 'ACTIVE_ACCOUNT_SET',\n\n ACTIVE_TRANSPORT_SET = 'ACTIVE_TRANSPORT_SET',\n\n SHOW_PREPARE = 'SHOW_PREPARE',\n HIDE_UI = 'HIDE_UI',\n INVALID_ACTIVE_ACCOUNT_STATE = 'INVALID_ACTIVE_ACCOUNT_STATE',\n INVALID_ACCOUNT_DEACTIVATED = 'INVALID_ACCOUNT_DEACTIVATED',\n PAIR_INIT = 'PAIR_INIT',\n PAIR_SUCCESS = 'PAIR_SUCCESS',\n CHANNEL_CLOSED = 'CHANNEL_CLOSED',\n GENERIC_ERROR = 'GENERIC_ERROR',\n OPEN_BUG_REPORT = 'OPEN_BUG_REPORT',\n RELAYER_ERROR = 'RELAYER_ERROR',\n\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n UNKNOWN = 'UNKNOWN'\n}\n\nexport interface ExtraInfo {\n resetCallback?(): Promise<void>\n}\n\ninterface RequestSentInfo {\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n}\n\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: PermissionResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: ProofOfEventChallengeResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: SimulatedProofOfEventChallengeResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n }\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: OperationResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n errorMessages: Record<string, Record<string | number, string>>\n }\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIGN_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: RequestSentInfo\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: {\n // output: EncryptPayloadResponseOutput\n // connectionContext: ConnectionContext\n // walletInfo: WalletInfo\n // }\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: RequestSentInfo\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network\n output: BroadcastResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n }\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined\n [BeaconEvent.NO_PERMISSIONS]: undefined\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined\n [BeaconEvent.GENERIC_ERROR]: string\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: undefined\n [BeaconEvent.SHOW_PREPARE]: { walletInfo?: WalletInfo }\n [BeaconEvent.HIDE_UI]: ('alert' | 'toast')[] | undefined\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: Promise<string>\n postmessagePeerInfo: Promise<string>\n walletConnectPeerInfo: Promise<string>\n networkType: NetworkType\n abortedHandler?(): void\n disclaimerText?: string\n analytics: AnalyticsInterface\n featuredWallets?: string[]\n substratePairing?: boolean\n }\n [BeaconEvent.PAIR_SUCCESS]:\n | ExtendedPostMessagePairingResponse\n | ExtendedP2PPairingResponse\n | ExtendedWalletConnectPairingResponse\n [BeaconEvent.CHANNEL_CLOSED]: string\n [BeaconEvent.INTERNAL_ERROR]: { text: string; buttons?: AlertButton[] }\n [BeaconEvent.OPEN_BUG_REPORT]: undefined\n [BeaconEvent.RELAYER_ERROR]: undefined\n [BeaconEvent.UNKNOWN]: undefined\n}\n\n/**\n * Show a \"Request sent\" toast\n */\nconst showSentToast = async (data: RequestSentInfo): Promise<void> => {\n let openWalletAction\n const actions: ToastAction[] = []\n if (data.walletInfo.deeplink) {\n if (\n data.walletInfo.type === 'web' ||\n (data.walletInfo.type === 'mobile' && isMobile(window)) ||\n (data.walletInfo.type === 'desktop' && !isMobile(window))\n ) {\n const link = data.walletInfo.deeplink\n openWalletAction = async (): Promise<void> => {\n const a = document.createElement('a')\n a.setAttribute('rel', 'noopener')\n a.setAttribute('href', link)\n a.setAttribute('target', '_blank')\n a.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }))\n }\n }\n }\n actions.push({\n text: `No answer from your wallet received yet. Please make sure the wallet is open.`,\n isBold: true\n })\n actions.push({\n text: 'Wallet not receiving request?',\n actionText: 'Reset Connection',\n actionCallback: async (): Promise<void> => {\n closeToast()\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const resetCallback = data.extraInfo.resetCallback\n if (resetCallback) {\n logger.log('showSentToast', 'resetCallback invoked')\n await resetCallback()\n }\n }\n })\n actions.push({\n text: 'Do you wish to report a bug?',\n actionText: 'Open',\n actionCallback: async (): Promise<void> => {\n closeToast()\n openBugReport()\n }\n })\n\n openToast({\n body: `Request sent to\\u00A0 {{wallet}}`,\n walletInfo: data.walletInfo,\n state: 'loading',\n timer: isMobileOS(window) ? SUCCESS_TIMER : 0,\n actions,\n openWalletAction\n })\n}\n\nconst showAcknowledgedToast = async (data: {\n message: AcknowledgeResponse\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n}): Promise<void> => {\n openToast({\n body: 'Awaiting confirmation in\\u00A0 {{wallet}}',\n state: 'acknowledge',\n walletInfo: data.walletInfo\n })\n}\n\nconst showPrepare = async (data: { walletInfo?: WalletInfo }): Promise<void> => {\n const text = data.walletInfo\n ? `Preparing Request for\\u00A0 {{wallet}}...`\n : 'Preparing Request...'\n openToast({\n body: text,\n state: 'prepare',\n walletInfo: data.walletInfo\n })\n}\n\nconst hideUI = (elements?: ('alert' | 'toast')[]) => {\n if (elements?.includes('alert')) {\n closeAlert()\n }\n\n if (elements?.includes('toast') || !elements) {\n closeToast()\n }\n}\n\n/**\n * Show a \"No Permission\" alert\n */\nconst showNoPermissionAlert = async (): Promise<void> => {\n openAlert({\n title: 'No Permission',\n body: 'Please allow the wallet to handle this type of request.'\n })\n}\n\n/**\n * Show an \"Invalid state\" alert\n */\nconst showInvalidActiveAccountState = async (): Promise<void> => {\n openAlert({\n title: 'Invalid state',\n body: `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET.`\n })\n}\n\n/**\n * Show an \"account deactivated\" error alert\n */\nconst showInvalidAccountDeactivated = async (): Promise<void> => {\n await openAlert({\n title: 'Error',\n body: `Your session has expired. Please pair with your wallet again.`\n })\n}\n\n/**\n * Show an \"Invalid state\" alert\n */\nconst showGenericErrorAlert = async (errorMessage: string): Promise<void> => {\n openAlert({\n title: `${errorMessage}`,\n body: 'Please try again. If this problem persists please send us a bug report.',\n buttons: [\n {\n label: 'Send Report',\n type: 'primary',\n onClick: () => openBugReport()\n }\n ] as any\n })\n}\n\n/**\n * Show an error toast\n *\n * @param beaconError The beacon error\n */\nconst showErrorToast = async (\n response: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n errorMessages?: Record<string, Record<string | number, string>>\n },\n buttons?: AlertButton[]\n): Promise<void> => {\n const error = response.errorResponse.errorType\n ? getError(response.errorResponse.errorType, response.errorResponse.errorData)\n : new UnknownBeaconError()\n\n const actions: ToastAction[] = [\n {\n text: error.title,\n isBold: true\n }\n ]\n\n if (\n response.errorResponse.errorType === BeaconErrorType.TRANSACTION_INVALID_ERROR &&\n response.errorResponse.errorData\n ) {\n const err: RPCError[] = response.errorResponse.errorData\n const errorMessages = response.errorMessages\n\n let hasHumandReadableError = false\n\n if (err[0]?.contract_handle && errorMessages && errorMessages?.[err[0].contract_handle]) {\n const errCode = err[1]?.with?.int ?? err[1]?.with?.string\n const contractErrors = errorMessages?.[err[0].contract_handle]\n if (errCode && contractErrors?.[errCode]) {\n actions.push({\n text: contractErrors?.[errCode],\n isBold: true\n })\n hasHumandReadableError = true\n }\n }\n\n if (!hasHumandReadableError) {\n actions.push({\n text: error.description\n })\n }\n\n actions.push({\n text: '',\n actionText: 'Show Details',\n actionCallback: async (): Promise<void> => {\n closeToast()\n openAlert({\n title: error.title,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n body: error.fullDescription.description,\n data: error.fullDescription.data,\n buttons\n })\n }\n })\n }\n\n openToast({\n body: `{{wallet}}\\u00A0 has returned an error`,\n timer:\n response.errorResponse.errorType === BeaconErrorType.ABORTED_ERROR\n ? SUCCESS_TIMER\n : undefined,\n state: 'finished',\n walletInfo: response.walletInfo,\n actions\n })\n}\n\n/**\n * Show a rate limit reached toast\n */\nconst showRateLimitReached = async (): Promise<void> => {\n openAlert({\n title: 'Error',\n body: 'Rate limit reached. Please slow down',\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 3000\n })\n}\n\n/**\n * Show a \"connection successful\" alert for 1.5 seconds\n */\nconst showExtensionConnectedAlert = () => {\n closeAlert()\n}\n\nconst showBugReportForm = async () => {\n await openBugReport()\n}\n\nconst showRelayerErrorAlert = async (): Promise<void> => {\n openAlert({\n title: 'Error',\n body: `Failed to connect to the relayer. Please check that your system time is synchronized with the current time and reload the page.`,\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 1500\n })\n}\n\n/**\n * Show a \"channel closed\" alert for 1.5 seconds\n */\nconst showChannelClosedAlert = async (): Promise<void> => {\n // openAlert({\n // title: 'Channel closed',\n // body: `Your peer has closed the connection.`,\n // buttons: [{ text: 'Done', style: 'outline' }],\n // timer: 1500\n // })\n}\n\nconst showInternalErrorAlert = async (\n data: BeaconEventType[BeaconEvent.INTERNAL_ERROR]\n): Promise<void> => {\n const buttons: AlertButton[] = [...(data.buttons ?? [])]\n\n buttons.push({ text: 'Done', style: 'outline' })\n\n const alertConfig: AlertConfig = {\n title: 'Internal Error',\n body: data.text,\n buttons\n }\n openAlert(alertConfig)\n}\n\n/**\n * Show a connect alert with QR code\n *\n * @param data The data that is emitted by the PAIR_INIT event\n */\nconst showPairAlert = async (data: BeaconEventType[BeaconEvent.PAIR_INIT]): Promise<void> => {\n logger.log('showPairAlert')\n const alertConfig: AlertConfig = {\n title: 'Choose your preferred wallet',\n body: `<p></p>`,\n pairingPayload: {\n p2pSyncCode: data.p2pPeerInfo,\n walletConnectSyncCode: data.walletConnectPeerInfo,\n postmessageSyncCode: data.postmessagePeerInfo,\n networkType: data.networkType\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n closeButtonCallback: data.abortedHandler,\n disclaimerText: data.disclaimerText,\n analytics: data.analytics,\n featuredWallets: data.featuredWallets,\n substratePairing: data.substratePairing\n }\n openAlert(alertConfig)\n}\n\n/**\n * Show a \"Permission Granted\" alert\n *\n * @param data The data that is emitted by the PERMISSION_REQUEST_SUCCESS event\n */\nconst showPermissionSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.PERMISSION_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n const actions: any[] = [\n {\n text: 'Address',\n actionText: shortenString(output.address),\n isBold: true\n }\n ]\n\n if ((output.network.type as any) !== 'substrate') {\n actions.push({\n text: 'Network',\n actionText: `${output.network.type}`\n })\n actions.push({\n text: 'Permissions',\n actionText: output.scopes.join(', ')\n })\n }\n\n openToast({\n body: `{{wallet}}\\u00A0 has granted permission`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions\n })\n}\n\nconst showProofOfEventChallengeSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 has ${output.isAccepted ? 'accepted' : 'refused'} the challenge`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: output.isAccepted\n ? [\n {\n text: `Payload hash: ${output.payloadHash}`,\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.payloadHash).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n : []\n })\n}\n\nconst showSimulatedProofOfEventChallengeSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n openToast({\n body: !output.errorMessage\n ? `{{wallet}}\\u00A0 has returned the list of operation`\n : `{{wallet}}\\u00A0 has returned an error`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: !output.errorMessage\n ? [\n {\n text: 'Operation list',\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.operationsList).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n : [{ text: 'Error message', actionText: output.errorMessage }]\n })\n}\n\n/**\n * Show an \"Operation Broadcasted\" alert\n *\n * @param data The data that is emitted by the OPERATION_REQUEST_SUCCESS event\n */\nconst showOperationSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.OPERATION_REQUEST_SUCCESS]\n): Promise<void> => {\n const { account, output, blockExplorer } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 successfully submitted operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: shortenString(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: async (): Promise<void> => {\n const link: string = await blockExplorer.getTransactionLink(\n output.transactionHash,\n account.network\n )\n window.open(link, '_blank', 'noopener')\n closeToast()\n }\n }\n ]\n })\n}\n\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the SIGN_REQUEST_SUCCESS event\n */\nconst showSignSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.SIGN_REQUEST_SUCCESS]\n): Promise<void> => {\n const output = data.output\n openToast({\n body: `{{wallet}}\\u00A0 successfully signed payload`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `Signature: ${shortenString(output.signature)}`,\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.signature).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n })\n}\n\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the ENCRYPT_REQUEST_SUCCESS event\n */\n// TODO: ENCRYPTION\n// const showEncryptSuccessAlert = async (\n// data: BeaconEventType[BeaconEvent.ENCRYPT_REQUEST_SUCCESS]\n// ): Promise<void> => {\n// const output = data.output\n// openToast({\n// body: `{{wallet}}\\u00A0 successfully ${\n// data.output.cryptoOperation === EncryptionOperation.ENCRYPT ? 'encrypted' : 'decrypted'\n// } payload`,\n// timer: SUCCESS_TIMER,\n// state: 'finished',\n// walletInfo: data.walletInfo,\n// actions: [\n// {\n// text: `Payload: <strong>${shortenString(output.payload)}</strong>`,\n// actionText: 'Copy to clipboard',\n// actionCallback: async (): Promise<void> => {\n// navigator.clipboard.writeText(output.payload).then(\n// () => {\n// logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n// },\n// (err) => {\n// logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n// }\n// )\n// closeToast()\n// }\n// }\n// ]\n// })\n// }\n\nconst showBlockchainRequestSuccessToast = async (\n data: BeaconEventType[BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]\n): Promise<void> => {\n openToast({\n body: `{{wallet}}\\u00A0 request successfully executed`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo\n })\n}\n\n/**\n * Show a \"Broadcasted\" alert\n *\n * @param data The data that is emitted by the BROADCAST_REQUEST_SUCCESS event\n */\nconst showBroadcastSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.BROADCAST_REQUEST_SUCCESS]\n): Promise<void> => {\n const { network, output, blockExplorer } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 successfully injected operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: shortenString(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: async (): Promise<void> => {\n const link: string = await blockExplorer.getTransactionLink(\n output.transactionHash,\n network\n )\n window.open(link, '_blank', 'noopener')\n closeToast()\n }\n }\n ]\n })\n}\n\nconst emptyHandler = (): BeaconEventHandlerFunction => async (): Promise<void> => {\n //\n}\n\nexport type BeaconEventHandlerFunction<T = unknown> = (\n data: T,\n eventCallback?: AlertButton[]\n) => void | Promise<void>\n\n/**\n * The default event handlers\n */\nexport const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction<BeaconEventType[key]>\n} = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: showPermissionSuccessAlert,\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: showProofOfEventChallengeSuccessAlert,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]:\n showSimulatedProofOfEventChallengeSuccessAlert,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.OPERATION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: showOperationSuccessAlert,\n [BeaconEvent.OPERATION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIGN_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: showSignSuccessAlert,\n [BeaconEvent.SIGN_REQUEST_ERROR]: showErrorToast,\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: showSentToast,\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: showEncryptSuccessAlert,\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.BROADCAST_REQUEST_SENT]: showSentToast,\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: showBroadcastSuccessAlert,\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: showAcknowledgedToast,\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: showRateLimitReached,\n [BeaconEvent.NO_PERMISSIONS]: showNoPermissionAlert,\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: emptyHandler(),\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: emptyHandler(),\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: showInvalidActiveAccountState,\n [BeaconEvent.GENERIC_ERROR]: showGenericErrorAlert,\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: showInvalidAccountDeactivated,\n [BeaconEvent.SHOW_PREPARE]: showPrepare,\n [BeaconEvent.HIDE_UI]: hideUI,\n [BeaconEvent.PAIR_INIT]: showPairAlert,\n [BeaconEvent.PAIR_SUCCESS]: showExtensionConnectedAlert,\n [BeaconEvent.OPEN_BUG_REPORT]: showBugReportForm,\n [BeaconEvent.RELAYER_ERROR]: showRelayerErrorAlert,\n [BeaconEvent.CHANNEL_CLOSED]: showChannelClosedAlert,\n [BeaconEvent.INTERNAL_ERROR]: showInternalErrorAlert,\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: showBlockchainRequestSuccessToast,\n [BeaconEvent.UNKNOWN]: emptyHandler()\n}\n\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport class BeaconEventHandler {\n private readonly callbackMap: {\n [key in BeaconEvent]: BeaconEventHandlerFunction<any>[] // TODO: Fix type\n } = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: [defaultEventCallbacks.PERMISSION_REQUEST_SENT],\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: [defaultEventCallbacks.PERMISSION_REQUEST_SUCCESS],\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: [defaultEventCallbacks.PERMISSION_REQUEST_ERROR],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [\n defaultEventCallbacks.PERMISSION_REQUEST_SENT\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [\n defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [\n defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n ],\n [BeaconEvent.OPERATION_REQUEST_SENT]: [defaultEventCallbacks.OPERATION_REQUEST_SENT],\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: [defaultEventCallbacks.OPERATION_REQUEST_SUCCESS],\n [BeaconEvent.OPERATION_REQUEST_ERROR]: [defaultEventCallbacks.OPERATION_REQUEST_ERROR],\n [BeaconEvent.SIGN_REQUEST_SENT]: [defaultEventCallbacks.SIGN_REQUEST_SENT],\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: [defaultEventCallbacks.SIGN_REQUEST_SUCCESS],\n [BeaconEvent.SIGN_REQUEST_ERROR]: [defaultEventCallbacks.SIGN_REQUEST_ERROR],\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: [defaultEventCallbacks.ENCRYPT_REQUEST_SENT],\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: [defaultEventCallbacks.ENCRYPT_REQUEST_SUCCESS],\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: [defaultEventCallbacks.ENCRYPT_REQUEST_ERROR],\n [BeaconEvent.BROADCAST_REQUEST_SENT]: [defaultEventCallbacks.BROADCAST_REQUEST_SENT],\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: [defaultEventCallbacks.BROADCAST_REQUEST_SUCCESS],\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: [defaultEventCallbacks.BROADCAST_REQUEST_ERROR],\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: [defaultEventCallbacks.BLOCKCHAIN_REQUEST_SUCCESS],\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: [defaultEventCallbacks.ACKNOWLEDGE_RECEIVED],\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: [defaultEventCallbacks.LOCAL_RATE_LIMIT_REACHED],\n [BeaconEvent.NO_PERMISSIONS]: [defaultEventCallbacks.NO_PERMISSIONS],\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: [defaultEventCallbacks.ACTIVE_ACCOUNT_SET],\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: [defaultEventCallbacks.ACTIVE_TRANSPORT_SET],\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: [\n defaultEventCallbacks.INVALID_ACTIVE_ACCOUNT_STATE\n ],\n [BeaconEvent.GENERIC_ERROR]: [showGenericErrorAlert],\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: [defaultEventCallbacks.INVALID_ACCOUNT_DEACTIVATED],\n [BeaconEvent.SHOW_PREPARE]: [defaultEventCallbacks.SHOW_PREPARE],\n [BeaconEvent.HIDE_UI]: [defaultEventCallbacks.HIDE_UI],\n [BeaconEvent.PAIR_INIT]: [defaultEventCallbacks.PAIR_INIT],\n [BeaconEvent.PAIR_SUCCESS]: [defaultEventCallbacks.PAIR_SUCCESS],\n [BeaconEvent.OPEN_BUG_REPORT]: [showBugReportForm],\n [BeaconEvent.CHANNEL_CLOSED]: [defaultEventCallbacks.CHANNEL_CLOSED],\n [BeaconEvent.INTERNAL_ERROR]: [defaultEventCallbacks.INTERNAL_ERROR],\n [BeaconEvent.RELAYER_ERROR]: [defaultEventCallbacks.RELAYER_ERROR],\n [BeaconEvent.UNKNOWN]: [defaultEventCallbacks.UNKNOWN]\n }\n constructor(\n eventsToOverride: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n } = {},\n overrideAll?: boolean\n ) {\n if (overrideAll) {\n this.setAllHandlers()\n }\n this.overrideDefaults(eventsToOverride)\n }\n\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n public async on<K extends BeaconEvent>(\n event: K,\n eventCallback: BeaconEventHandlerFunction<BeaconEventType[K]>\n ): Promise<void> {\n const listeners = this.callbackMap[event] || []\n listeners.push(eventCallback)\n this.callbackMap[event] = listeners\n }\n\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n public async emit<K extends BeaconEvent>(\n event: K,\n data?: BeaconEventType[K],\n eventCallback?: AlertButton[]\n ): Promise<void> {\n const listeners = this.callbackMap[event]\n if (listeners && listeners.length > 0) {\n listeners.forEach(async (listener: BeaconEventHandlerFunction) => {\n try {\n await listener(data, eventCallback)\n } catch (listenerError) {\n logger.error(`error handling event ${event}`, listenerError)\n }\n })\n }\n }\n\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults(eventsToOverride: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n }): void {\n Object.keys(eventsToOverride).forEach((untypedEvent: string) => {\n const eventType: BeaconEvent = untypedEvent as BeaconEvent\n const event = eventsToOverride[eventType]\n if (event) {\n this.callbackMap[eventType] = [event.handler]\n }\n })\n }\n\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers(handler?: BeaconEventHandlerFunction): void {\n Object.keys(this.callbackMap).forEach((untypedEvent: string) => {\n const eventType: BeaconEvent = untypedEvent as BeaconEvent\n this.callbackMap[eventType] = []\n if (handler) {\n this.callbackMap[eventType].push(handler)\n } else {\n this.callbackMap[eventType].push((...data) => {\n logger.log(untypedEvent, ...data)\n })\n }\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAWkC;AAClC,sEAmBqC;AACrC,oEAOoC;AAEpC,2DAAsD;AAEtD,MAAM,MAAM,GAAG,IAAI,2BAAM,CAAC,qBAAqB,CAAC,CAAA;AAEhD,MAAM,aAAa,GAAW,CAAC,GAAG,IAAI,CAAA;AAYtC;;GAEG;AACH,IAAY,WA+CX;AA/CD,WAAY,WAAW;IACrB,kEAAmD,CAAA;IACnD,wEAAyD,CAAA;IACzD,oEAAqD,CAAA;IACrD,8FAA+E,CAAA;IAC/E,oGAAqF,CAAA;IACrF,gGAAiF,CAAA;IACjF,kHAAmG,CAAA;IACnG,wHAAyG,CAAA;IACzG,oHAAqG,CAAA;IACrG,gEAAiD,CAAA;IACjD,sEAAuD,CAAA;IACvD,kEAAmD,CAAA;IACnD,sDAAuC,CAAA;IACvC,4DAA6C,CAAA;IAC7C,wDAAyC,CAAA;IACzC,wEAAyD,CAAA;IACzD,mBAAmB;IACnB,iDAAiD;IACjD,uDAAuD;IACvD,mDAAmD;IACnD,gEAAiD,CAAA;IACjD,sEAAuD,CAAA;IACvD,kEAAmD,CAAA;IACnD,4DAA6C,CAAA;IAE7C,oEAAqD,CAAA;IAErD,gDAAiC,CAAA;IAEjC,wDAAyC,CAAA;IAEzC,4DAA6C,CAAA;IAE7C,4CAA6B,CAAA;IAC7B,kCAAmB,CAAA;IACnB,4EAA6D,CAAA;IAC7D,0EAA2D,CAAA;IAC3D,sCAAuB,CAAA;IACvB,4CAA6B,CAAA;IAC7B,gDAAiC,CAAA;IACjC,8CAA+B,CAAA;IAC/B,kDAAmC,CAAA;IACnC,8CAA+B,CAAA;IAE/B,gDAAiC,CAAA;IACjC,kCAAmB,CAAA;AACrB,CAAC,EA/CW,WAAW,2BAAX,WAAW,QA+CtB;AAyJD;;GAEG;AACH,MAAM,aAAa,GAAG,CAAO,IAAqB,EAAiB,EAAE;IACnE,IAAI,gBAAgB,CAAA;IACpB,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC7B,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK;YAC9B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAA,2BAAQ,EAAC,MAAM,CAAC,CAAC;YACvD,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAA,2BAAQ,EAAC,MAAM,CAAC,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAA;YACrC,gBAAgB,GAAG,GAAwB,EAAE;gBAC3C,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBACrC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBACjC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC5B,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBAClC,CAAC,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAC7F,CAAC,CAAA,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,+EAA+E;QACrF,MAAM,EAAE,IAAI;KACb,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,kBAAkB;QAC9B,cAAc,EAAE,GAAwB,EAAE;YACxC,IAAA,6BAAU,GAAE,CAAA;YACZ,6DAA6D;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA;YAClD,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAA;gBACpD,MAAM,aAAa,EAAE,CAAA;YACvB,CAAC;QACH,CAAC,CAAA;KACF,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,GAAwB,EAAE;YACxC,IAAA,6BAAU,GAAE,CAAA;YACZ,IAAA,gCAAa,GAAE,CAAA;QACjB,CAAC,CAAA;KACF,CAAC,CAAA;IAEF,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,kCAAkC;QACxC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAA,6BAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAO,IAIpC,EAAiB,EAAE;IAClB,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,2CAA2C;QACjD,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,WAAW,GAAG,CAAO,IAAiC,EAAiB,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU;QAC1B,CAAC,CAAC,2CAA2C;QAC7C,CAAC,CAAC,sBAAsB,CAAA;IAC1B,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,QAAgC,EAAE,EAAE;IAClD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,IAAA,6BAAU,GAAE,CAAA;IACd,CAAC;IAED,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,OAAO,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAA,6BAAU,GAAE,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,GAAwB,EAAE;IACtD,IAAA,4BAAS,EAAC;QACR,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,yDAAyD;KAChE,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,6BAA6B,GAAG,GAAwB,EAAE;IAC9D,IAAA,4BAAS,EAAC;QACR,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,+GAA+G;KACtH,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,6BAA6B,GAAG,CACpC,IAAqC,EACtB,EAAE;;IACjB,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,SAAS,CAAC,CAAA;IAEtE,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,wBAAwB,EAAE,CAAC;QAC9C,OAAM;IACR,CAAC;IAED,MAAM,IAAA,4BAAS,EAAC;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,+DAA+D;KACtE,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAO,YAAoB,EAAiB,EAAE;IAC1E,IAAA,4BAAS,EAAC;QACR,KAAK,EAAE,GAAG,YAAY,EAAE;QACxB,IAAI,EAAE,yEAAyE;QAC/E,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,gCAAa,GAAE;aAC/B;SACK;KACT,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,cAAc,GAAG,CACrB,QAIC,EACD,OAAuB,EACR,EAAE;;IACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS;QAC5C,CAAC,CAAC,IAAA,6BAAQ,EAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC9E,CAAC,CAAC,IAAI,uCAAkB,EAAE,CAAA;IAE5B,MAAM,OAAO,GAAkB;QAC7B;YACE,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI;SACb;KACF,CAAA;IAED,IACE,QAAQ,CAAC,aAAa,CAAC,SAAS,KAAK,qCAAe,CAAC,yBAAyB;QAC9E,QAAQ,CAAC,aAAa,CAAC,SAAS,EAChC,CAAC;QACD,MAAM,GAAG,GAAe,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAA;QACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAA;QAE5C,IAAI,sBAAsB,GAAG,KAAK,CAAA;QAElC,IAAI,CAAA,MAAA,GAAG,CAAC,CAAC,CAAC,0CAAE,eAAe,KAAI,aAAa,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA,EAAE,CAAC;YACxF,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,CAAC,CAAC,0CAAE,IAAI,0CAAE,GAAG,mCAAI,MAAA,MAAA,GAAG,CAAC,CAAC,CAAC,0CAAE,IAAI,0CAAE,MAAM,CAAA;YACzD,MAAM,cAAc,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;YAC9D,IAAI,OAAO,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,OAAO,CAAC,CAAA,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,OAAO,CAAC;oBAC/B,MAAM,EAAE,IAAI;iBACb,CAAC,CAAA;gBACF,sBAAsB,GAAG,IAAI,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,KAAK,CAAC,WAAW;aACxB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,cAAc;YAC1B,cAAc,EAAE,GAAwB,EAAE;gBACxC,IAAA,6BAAU,GAAE,CAAA;gBACZ,IAAA,4BAAS,EAAC;oBACR,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,6DAA6D;oBAC7D,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW;oBACvC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI;oBAChC,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC,CAAA;SACF,CAAC,CAAA;IACJ,CAAC;IAED,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,wCAAwC;QAC9C,KAAK,EACH,QAAQ,CAAC,aAAa,CAAC,SAAS,KAAK,qCAAe,CAAC,aAAa;YAChE,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,oBAAoB,GAAG,GAAwB,EAAE;IACrD,IAAA,4BAAS,EAAC;QACR,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7C,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,2BAA2B,GAAG,GAAG,EAAE;IACvC,IAAA,6BAAU,GAAE,CAAA;AACd,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,GAAS,EAAE;IACnC,MAAM,IAAA,gCAAa,GAAE,CAAA;AACvB,CAAC,CAAA,CAAA;AAED,MAAM,qBAAqB,GAAG,GAAwB,EAAE;IACtD,IAAA,4BAAS,EAAC;QACR,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,iIAAiI;QACvI,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7C,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;GAEG;AACH,MAAM,sBAAsB,GAAG,GAAwB,EAAE;IACvD,cAAc;IACd,6BAA6B;IAC7B,kDAAkD;IAClD,mDAAmD;IACnD,gBAAgB;IAChB,KAAK;AACP,CAAC,CAAA,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC7B,IAAiD,EAClC,EAAE;;IACjB,MAAM,OAAO,GAAkB,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,CAAA;IAExD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAEhD,MAAM,WAAW,GAAgB;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;KACR,CAAA;IACD,IAAA,4BAAS,EAAC,WAAW,CAAC,CAAA;AACxB,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAO,IAA4C,EAAiB,EAAE;IAC1F,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC3B,MAAM,WAAW,GAAgB;QAC/B,KAAK,EAAE,8BAA8B;QACrC,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACd,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B;QACD,6DAA6D;QAC7D,mBAAmB,EAAE,IAAI,CAAC,cAAc;QACxC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAA;IACD,IAAA,4BAAS,EAAC,WAAW,CAAC,CAAA;AACxB,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CACjC,IAA6D,EAC9C,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAEvB,MAAM,OAAO,GAAU;QACrB;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,IAAA,8BAAa,EAAC,MAAM,CAAC,OAAO,CAAC;YACzC,MAAM,EAAE,IAAI;SACb;KACF,CAAA;IAED,IAAK,MAAM,CAAC,OAAO,CAAC,IAAY,KAAK,WAAW,EAAE,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;SACrC,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC;IAED,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,UAAU;QACjB,OAAO;KACR,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,qCAAqC,GAAG,CAC5C,IAA2E,EAC5D,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAEvB,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,wBAAwB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,gBAAgB;QACxF,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,MAAM,CAAC,UAAU;YACxB,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,iBAAiB,MAAM,CAAC,WAAW,EAAE;oBAC3C,UAAU,EAAE,mBAAmB;oBAC/B,cAAc,EAAE,GAAwB,EAAE;wBACxC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACpD,GAAG,EAAE;4BACH,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,sCAAsC,CAAC,CAAA;wBAC5E,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;4BACN,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAA;wBACjF,CAAC,CACF,CAAA;wBACD,IAAA,6BAAU,GAAE,CAAA;oBACd,CAAC,CAAA;iBACF;aACF;YACH,CAAC,CAAC,EAAE;KACP,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,8CAA8C,GAAG,CACrD,IAAqF,EACtE,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAEvB,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY;YACxB,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,wCAAwC;QAC5C,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,CAAC,MAAM,CAAC,YAAY;YAC3B,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,mBAAmB;oBAC/B,cAAc,EAAE,GAAwB,EAAE;wBACxC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CACvD,GAAG,EAAE;4BACH,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,sCAAsC,CAAC,CAAA;wBAC5E,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;4BACN,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAA;wBACjF,CAAC,CACF,CAAA;wBACD,IAAA,6BAAU,GAAE,CAAA;oBACd,CAAC,CAAA;iBACF;aACF;YACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;KACjE,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAChC,IAA4D,EAC7C,EAAE;IACjB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAE/C,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,mDAAmD;QACzD,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAA,8BAAa,EAAC,MAAM,CAAC,eAAe,CAAC;gBAC3C,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,oBAAoB;gBAChC,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,GAAwB,EAAE;oBACxC,MAAM,IAAI,GAAW,MAAM,aAAa,CAAC,kBAAkB,CACzD,MAAM,CAAC,eAAe,EACtB,OAAO,CAAC,OAAO,CAChB,CAAA;oBACD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;oBACvC,IAAA,6BAAU,GAAE,CAAA;gBACd,CAAC,CAAA;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAC3B,IAAuD,EACxC,EAAE;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,8CAA8C;QACpD,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,cAAc,IAAA,8BAAa,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACrD,UAAU,EAAE,mBAAmB;gBAC/B,cAAc,EAAE,GAAwB,EAAE;oBACxC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAClD,GAAG,EAAE;wBACH,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,sCAAsC,CAAC,CAAA;oBAC5E,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;wBACN,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAA;oBACjF,CAAC,CACF,CAAA;oBACD,IAAA,6BAAU,GAAE,CAAA;gBACd,CAAC,CAAA;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,mBAAmB;AACnB,0CAA0C;AAC1C,+DAA+D;AAC/D,wBAAwB;AACxB,+BAA+B;AAC/B,gBAAgB;AAChB,8CAA8C;AAC9C,gGAAgG;AAChG,kBAAkB;AAClB,4BAA4B;AAC5B,yBAAyB;AACzB,mCAAmC;AACnC,iBAAiB;AACjB,UAAU;AACV,8EAA8E;AAC9E,2CAA2C;AAC3C,uDAAuD;AACvD,gEAAgE;AAChE,sBAAsB;AACtB,2FAA2F;AAC3F,iBAAiB;AACjB,yBAAyB;AACzB,gGAAgG;AAChG,gBAAgB;AAChB,cAAc;AACd,yBAAyB;AACzB,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,OAAO;AACP,IAAI;AAEJ,MAAM,iCAAiC,GAAG,CACxC,IAA6D,EAC9C,EAAE;IACjB,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,gDAAgD;QACtD,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAChC,IAA4D,EAC7C,EAAE;IACjB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAE/C,IAAA,4BAAS,EAAC;QACR,IAAI,EAAE,kDAAkD;QACxD,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAA,8BAAa,EAAC,MAAM,CAAC,eAAe,CAAC;gBAC3C,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,oBAAoB;gBAChC,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,GAAwB,EAAE;oBACxC,MAAM,IAAI,GAAW,MAAM,aAAa,CAAC,kBAAkB,CACzD,MAAM,CAAC,eAAe,EACtB,OAAO,CACR,CAAA;oBACD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;oBACvC,IAAA,6BAAU,GAAE,CAAA;gBACd,CAAC,CAAA;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAED,MAAM,YAAY,GAAG,GAA+B,EAAE,CAAC,GAAwB,EAAE;IAC/E,EAAE;AACJ,CAAC,CAAA,CAAA;AAOD;;GAEG;AACU,QAAA,qBAAqB,GAE9B;IACF,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,aAAa;IACpD,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,0BAA0B;IACpE,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,cAAc;IACtD,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE,aAAa;IAClE,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,qCAAqC;IAC7F,CAAC,WAAW,CAAC,sCAAsC,CAAC,EAAE,cAAc;IACpE,CAAC,WAAW,CAAC,+CAA+C,CAAC,EAAE,aAAa;IAC5E,CAAC,WAAW,CAAC,kDAAkD,CAAC,EAC9D,8CAA8C;IAChD,CAAC,WAAW,CAAC,gDAAgD,CAAC,EAAE,cAAc;IAC9E,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,aAAa;IACnD,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,yBAAyB;IAClE,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,cAAc;IACrD,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,aAAa;IAC9C,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,oBAAoB;IACxD,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,cAAc;IAChD,mBAAmB;IACnB,qDAAqD;IACrD,kEAAkE;IAClE,uDAAuD;IACvD,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,aAAa;IACnD,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,yBAAyB;IAClE,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,cAAc;IACrD,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,qBAAqB;IACzD,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,oBAAoB;IAC5D,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,qBAAqB;IACnD,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE;IAChD,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE;IAClD,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,6BAA6B;IACzE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,qBAAqB;IAClD,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,6BAA6B;IACxE,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,WAAW;IACvC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAC7B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,aAAa;IACtC,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,2BAA2B;IACvD,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,iBAAiB;IAChD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,qBAAqB;IAClD,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,sBAAsB;IACpD,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,sBAAsB;IACpD,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,iCAAiC;IAC3E,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE;CACtC,CAAA;AAED;;;;GAIG;AACH,MAAa,kBAAkB;IA2D7B,YACE,mBAII,EAAE,EACN,WAAqB;QAhEN,gBAAW,GAExB;YACF,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,6BAAqB,CAAC,uBAAuB,CAAC;YACtF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,CAAC,6BAAqB,CAAC,0BAA0B,CAAC;YAC5F,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,CAAC,6BAAqB,CAAC,wBAAwB,CAAC;YACxF,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE;gBACnD,6BAAqB,CAAC,uBAAuB;aAC9C;YACD,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE;gBACtD,6BAAqB,CAAC,wCAAwC;aAC/D;YACD,CAAC,WAAW,CAAC,sCAAsC,CAAC,EAAE;gBACpD,6BAAqB,CAAC,sCAAsC;aAC7D;YACD,CAAC,WAAW,CAAC,+CAA+C,CAAC,EAAE;gBAC7D,6BAAqB,CAAC,+CAA+C;aACtE;YACD,CAAC,WAAW,CAAC,kDAAkD,CAAC,EAAE;gBAChE,6BAAqB,CAAC,kDAAkD;aACzE;YACD,CAAC,WAAW,CAAC,gDAAgD,CAAC,EAAE;gBAC9D,6BAAqB,CAAC,gDAAgD;aACvE;YACD,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC,6BAAqB,CAAC,sBAAsB,CAAC;YACpF,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAAC,6BAAqB,CAAC,yBAAyB,CAAC;YAC1F,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,6BAAqB,CAAC,uBAAuB,CAAC;YACtF,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,6BAAqB,CAAC,iBAAiB,CAAC;YAC1E,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC,6BAAqB,CAAC,oBAAoB,CAAC;YAChF,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,6BAAqB,CAAC,kBAAkB,CAAC;YAC5E,mBAAmB;YACnB,oFAAoF;YACpF,0FAA0F;YAC1F,sFAAsF;YACtF,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC,6BAAqB,CAAC,sBAAsB,CAAC;YACpF,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAAC,6BAAqB,CAAC,yBAAyB,CAAC;YAC1F,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,6BAAqB,CAAC,uBAAuB,CAAC;YACtF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,CAAC,6BAAqB,CAAC,0BAA0B,CAAC;YAC5F,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC,6BAAqB,CAAC,oBAAoB,CAAC;YAChF,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,CAAC,6BAAqB,CAAC,wBAAwB,CAAC;YACxF,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,6BAAqB,CAAC,cAAc,CAAC;YACpE,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,6BAAqB,CAAC,kBAAkB,CAAC;YAC5E,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC,6BAAqB,CAAC,oBAAoB,CAAC;YAChF,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE;gBAC1C,6BAAqB,CAAC,4BAA4B;aACnD;YACD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC;YACpD,CAAC,WAAW,CAAC,2BAA2B,CAAC,EAAE,CAAC,6BAAqB,CAAC,2BAA2B,CAAC;YAC9F,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,6BAAqB,CAAC,YAAY,CAAC;YAChE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,6BAAqB,CAAC,OAAO,CAAC;YACtD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,6BAAqB,CAAC,SAAS,CAAC;YAC1D,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,6BAAqB,CAAC,YAAY,CAAC;YAChE,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,iBAAiB,CAAC;YAClD,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,6BAAqB,CAAC,cAAc,CAAC;YACpE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,6BAAqB,CAAC,cAAc,CAAC;YACpE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,6BAAqB,CAAC,aAAa,CAAC;YAClE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,6BAAqB,CAAC,OAAO,CAAC;SACvD,CAAA;QASC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACzC,CAAC;IAED;;;;;OAKG;IACU,EAAE,CACb,KAAQ,EACR,aAA6D;;YAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAC/C,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;QACrC,CAAC;KAAA;IAED;;;;;OAKG;IACU,IAAI,CACf,KAAQ,EACR,IAAyB,EACzB,aAA6B;;YAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACzC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,SAAS,CAAC,OAAO,CAAC,CAAO,QAAoC,EAAE,EAAE;oBAC/D,IAAI,CAAC;wBACH,MAAM,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;oBACrC,CAAC;oBAAC,OAAO,aAAa,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,EAAE,aAAa,CAAC,CAAA;oBAC9D,CAAC;gBACH,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KAAA;IAED;;;;OAIG;IACK,gBAAgB,CAAC,gBAIxB;QACC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,EAAE;YAC7D,MAAM,SAAS,GAAgB,YAA2B,CAAA;YAC1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAoC;QACzD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,EAAE;YAC7D,MAAM,SAAS,GAAgB,YAA2B,CAAA;YAC1D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;oBAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAlJD,gDAkJC","sourcesContent":["import {\n closeAlert,\n openAlert,\n openBugReport,\n AlertButton,\n AlertConfig,\n closeToast,\n openToast,\n ToastAction,\n isMobile,\n isMobileOS\n} from '@tezos-x/octez.connect-ui'\nimport {\n BeaconErrorType,\n ExtendedPostMessagePairingResponse,\n ExtendedP2PPairingResponse,\n AccountInfo,\n ErrorResponse,\n PermissionResponseOutput,\n OperationResponseOutput,\n BroadcastResponseOutput,\n SignPayloadResponseOutput,\n Network,\n ConnectionContext,\n NetworkType,\n AcknowledgeResponse,\n WalletInfo,\n ExtendedWalletConnectPairingResponse,\n AnalyticsInterface,\n ProofOfEventChallengeResponseOutput,\n SimulatedProofOfEventChallengeResponseOutput\n} from '@tezos-x/octez.connect-types'\nimport {\n UnknownBeaconError,\n Transport,\n Logger,\n getError\n // EncryptPayloadResponseOutput,\n // EncryptionOperation\n} from '@tezos-x/octez.connect-core'\nimport { BlockExplorer } from './utils/block-explorer'\nimport { shortenString } from './utils/shorten-string'\n\nconst logger = new Logger('octez.connectEvents')\n\nconst SUCCESS_TIMER: number = 5 * 1000\n\ntype RPCError = {\n kind: string\n id: string\n contract_handle?: string\n location?: number\n with?: {\n string?: string\n int?: number\n }\n}\n/**\n * The different events that can be emitted by the octez.connect-sdk\n */\nexport enum BeaconEvent {\n PERMISSION_REQUEST_SENT = 'PERMISSION_REQUEST_SENT',\n PERMISSION_REQUEST_SUCCESS = 'PERMISSION_REQUEST_SUCCESS',\n PERMISSION_REQUEST_ERROR = 'PERMISSION_REQUEST_ERROR',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS',\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS',\n SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = 'SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR',\n OPERATION_REQUEST_SENT = 'OPERATION_REQUEST_SENT',\n OPERATION_REQUEST_SUCCESS = 'OPERATION_REQUEST_SUCCESS',\n OPERATION_REQUEST_ERROR = 'OPERATION_REQUEST_ERROR',\n SIGN_REQUEST_SENT = 'SIGN_REQUEST_SENT',\n SIGN_REQUEST_SUCCESS = 'SIGN_REQUEST_SUCCESS',\n SIGN_REQUEST_ERROR = 'SIGN_REQUEST_ERROR',\n BLOCKCHAIN_REQUEST_SUCCESS = 'BLOCKCHAIN_REQUEST_SUCCESS',\n // TODO: ENCRYPTION\n // ENCRYPT_REQUEST_SENT = 'ENCRYPT_REQUEST_SENT',\n // ENCRYPT_REQUEST_SUCCESS = 'ENCRYPT_REQUEST_SUCCESS',\n // ENCRYPT_REQUEST_ERROR = 'ENCRYPT_REQUEST_ERROR',\n BROADCAST_REQUEST_SENT = 'BROADCAST_REQUEST_SENT',\n BROADCAST_REQUEST_SUCCESS = 'BROADCAST_REQUEST_SUCCESS',\n BROADCAST_REQUEST_ERROR = 'BROADCAST_REQUEST_ERROR',\n ACKNOWLEDGE_RECEIVED = 'ACKNOWLEDGE_RECEIVED',\n\n LOCAL_RATE_LIMIT_REACHED = 'LOCAL_RATE_LIMIT_REACHED',\n\n NO_PERMISSIONS = 'NO_PERMISSIONS',\n\n ACTIVE_ACCOUNT_SET = 'ACTIVE_ACCOUNT_SET',\n\n ACTIVE_TRANSPORT_SET = 'ACTIVE_TRANSPORT_SET',\n\n SHOW_PREPARE = 'SHOW_PREPARE',\n HIDE_UI = 'HIDE_UI',\n INVALID_ACTIVE_ACCOUNT_STATE = 'INVALID_ACTIVE_ACCOUNT_STATE',\n INVALID_ACCOUNT_DEACTIVATED = 'INVALID_ACCOUNT_DEACTIVATED',\n PAIR_INIT = 'PAIR_INIT',\n PAIR_SUCCESS = 'PAIR_SUCCESS',\n CHANNEL_CLOSED = 'CHANNEL_CLOSED',\n GENERIC_ERROR = 'GENERIC_ERROR',\n OPEN_BUG_REPORT = 'OPEN_BUG_REPORT',\n RELAYER_ERROR = 'RELAYER_ERROR',\n\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n UNKNOWN = 'UNKNOWN'\n}\n\nexport interface ExtraInfo {\n resetCallback?(): Promise<void>\n}\n\n/**\n * Reason Beacon deactivated invalid persisted active-account state during dApp\n * startup.\n *\n * - `missing_active_account`: `beacon:active-account` pointed at an account\n * identifier that was not present in Beacon's persisted account list.\n * - `invalid_active_account_storage`: Beacon could not read or parse the\n * persisted active-account/account storage needed to restore the account.\n * - `storage_validation_failed`: Beacon restored an active account, but a later\n * storage validation pass still found invalid persisted session state.\n */\nexport type InvalidAccountDeactivatedReason =\n | 'missing_active_account'\n | 'invalid_active_account_storage'\n | 'storage_validation_failed'\n\n/**\n * Payload emitted with {@link BeaconEvent.INVALID_ACCOUNT_DEACTIVATED}.\n *\n * Beacon emits this object when it deactivates invalid active-account state.\n * The event type also accepts `undefined` so listeners and direct emitters\n * written against earlier Beacon versions remain source-compatible.\n */\nexport interface InvalidAccountDeactivatedEvent {\n /**\n * Machine-readable reason for the deactivation.\n */\n reason: InvalidAccountDeactivatedReason\n}\n\ninterface RequestSentInfo {\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n}\n\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: PermissionResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: ProofOfEventChallengeResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: SimulatedProofOfEventChallengeResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n }\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo\n output: OperationResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n errorMessages: Record<string, Record<string | number, string>>\n }\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.SIGN_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: RequestSentInfo\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: {\n // output: EncryptPayloadResponseOutput\n // connectionContext: ConnectionContext\n // walletInfo: WalletInfo\n // }\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: RequestSentInfo\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network\n output: BroadcastResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: { errorResponse: ErrorResponse; walletInfo: WalletInfo }\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n }\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined\n [BeaconEvent.NO_PERMISSIONS]: undefined\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined\n [BeaconEvent.GENERIC_ERROR]: string\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: InvalidAccountDeactivatedEvent | undefined\n [BeaconEvent.SHOW_PREPARE]: { walletInfo?: WalletInfo }\n [BeaconEvent.HIDE_UI]: ('alert' | 'toast')[] | undefined\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: Promise<string>\n postmessagePeerInfo: Promise<string>\n // Optional: omitted when the WalletConnect transport is disabled (disableWalletConnect).\n walletConnectPeerInfo?: PromiseLike<string>\n networkType: NetworkType\n abortedHandler?(): void\n disclaimerText?: string\n analytics: AnalyticsInterface\n featuredWallets?: string[]\n substratePairing?: boolean\n }\n [BeaconEvent.PAIR_SUCCESS]:\n | ExtendedPostMessagePairingResponse\n | ExtendedP2PPairingResponse\n | ExtendedWalletConnectPairingResponse\n [BeaconEvent.CHANNEL_CLOSED]: string\n [BeaconEvent.INTERNAL_ERROR]: { text: string; buttons?: AlertButton[] }\n [BeaconEvent.OPEN_BUG_REPORT]: undefined\n [BeaconEvent.RELAYER_ERROR]: undefined\n [BeaconEvent.UNKNOWN]: undefined\n}\n\n/**\n * Show a \"Request sent\" toast\n */\nconst showSentToast = async (data: RequestSentInfo): Promise<void> => {\n let openWalletAction\n const actions: ToastAction[] = []\n if (data.walletInfo.deeplink) {\n if (\n data.walletInfo.type === 'web' ||\n (data.walletInfo.type === 'mobile' && isMobile(window)) ||\n (data.walletInfo.type === 'desktop' && !isMobile(window))\n ) {\n const link = data.walletInfo.deeplink\n openWalletAction = async (): Promise<void> => {\n const a = document.createElement('a')\n a.setAttribute('rel', 'noopener')\n a.setAttribute('href', link)\n a.setAttribute('target', '_blank')\n a.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }))\n }\n }\n }\n actions.push({\n text: `No answer from your wallet received yet. Please make sure the wallet is open.`,\n isBold: true\n })\n actions.push({\n text: 'Wallet not receiving request?',\n actionText: 'Reset Connection',\n actionCallback: async (): Promise<void> => {\n closeToast()\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const resetCallback = data.extraInfo.resetCallback\n if (resetCallback) {\n logger.log('showSentToast', 'resetCallback invoked')\n await resetCallback()\n }\n }\n })\n actions.push({\n text: 'Do you wish to report a bug?',\n actionText: 'Open',\n actionCallback: async (): Promise<void> => {\n closeToast()\n openBugReport()\n }\n })\n\n openToast({\n body: `Request sent to\\u00A0 {{wallet}}`,\n walletInfo: data.walletInfo,\n state: 'loading',\n timer: isMobileOS(window) ? SUCCESS_TIMER : 0,\n actions,\n openWalletAction\n })\n}\n\nconst showAcknowledgedToast = async (data: {\n message: AcknowledgeResponse\n extraInfo: ExtraInfo\n walletInfo: WalletInfo\n}): Promise<void> => {\n openToast({\n body: 'Awaiting confirmation in\\u00A0 {{wallet}}',\n state: 'acknowledge',\n walletInfo: data.walletInfo\n })\n}\n\nconst showPrepare = async (data: { walletInfo?: WalletInfo }): Promise<void> => {\n const text = data.walletInfo\n ? `Preparing Request for\\u00A0 {{wallet}}...`\n : 'Preparing Request...'\n openToast({\n body: text,\n state: 'prepare',\n walletInfo: data.walletInfo\n })\n}\n\nconst hideUI = (elements?: ('alert' | 'toast')[]) => {\n if (elements?.includes('alert')) {\n closeAlert()\n }\n\n if (elements?.includes('toast') || !elements) {\n closeToast()\n }\n}\n\n/**\n * Show a \"No Permission\" alert\n */\nconst showNoPermissionAlert = async (): Promise<void> => {\n openAlert({\n title: 'No Permission',\n body: 'Please allow the wallet to handle this type of request.'\n })\n}\n\n/**\n * Show an \"Invalid state\" alert\n */\nconst showInvalidActiveAccountState = async (): Promise<void> => {\n openAlert({\n title: 'Invalid state',\n body: `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET.`\n })\n}\n\n/**\n * Show an \"account deactivated\" error alert\n */\nconst showInvalidAccountDeactivated = async (\n data?: InvalidAccountDeactivatedEvent\n): Promise<void> => {\n logger.log('showInvalidAccountDeactivated', data?.reason ?? 'unknown')\n\n if (data?.reason === 'missing_active_account') {\n return\n }\n\n await openAlert({\n title: 'Error',\n body: `Your session has expired. Please pair with your wallet again.`\n })\n}\n\n/**\n * Show an \"Invalid state\" alert\n */\nconst showGenericErrorAlert = async (errorMessage: string): Promise<void> => {\n openAlert({\n title: `${errorMessage}`,\n body: 'Please try again. If this problem persists please send us a bug report.',\n buttons: [\n {\n label: 'Send Report',\n type: 'primary',\n onClick: () => openBugReport()\n }\n ] as any\n })\n}\n\n/**\n * Show an error toast\n *\n * @param beaconError The beacon error\n */\nconst showErrorToast = async (\n response: {\n errorResponse: ErrorResponse\n walletInfo: WalletInfo\n errorMessages?: Record<string, Record<string | number, string>>\n },\n buttons?: AlertButton[]\n): Promise<void> => {\n const error = response.errorResponse.errorType\n ? getError(response.errorResponse.errorType, response.errorResponse.errorData)\n : new UnknownBeaconError()\n\n const actions: ToastAction[] = [\n {\n text: error.title,\n isBold: true\n }\n ]\n\n if (\n response.errorResponse.errorType === BeaconErrorType.TRANSACTION_INVALID_ERROR &&\n response.errorResponse.errorData\n ) {\n const err: RPCError[] = response.errorResponse.errorData\n const errorMessages = response.errorMessages\n\n let hasHumandReadableError = false\n\n if (err[0]?.contract_handle && errorMessages && errorMessages?.[err[0].contract_handle]) {\n const errCode = err[1]?.with?.int ?? err[1]?.with?.string\n const contractErrors = errorMessages?.[err[0].contract_handle]\n if (errCode && contractErrors?.[errCode]) {\n actions.push({\n text: contractErrors?.[errCode],\n isBold: true\n })\n hasHumandReadableError = true\n }\n }\n\n if (!hasHumandReadableError) {\n actions.push({\n text: error.description\n })\n }\n\n actions.push({\n text: '',\n actionText: 'Show Details',\n actionCallback: async (): Promise<void> => {\n closeToast()\n openAlert({\n title: error.title,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n body: error.fullDescription.description,\n data: error.fullDescription.data,\n buttons\n })\n }\n })\n }\n\n openToast({\n body: `{{wallet}}\\u00A0 has returned an error`,\n timer:\n response.errorResponse.errorType === BeaconErrorType.ABORTED_ERROR\n ? SUCCESS_TIMER\n : undefined,\n state: 'finished',\n walletInfo: response.walletInfo,\n actions\n })\n}\n\n/**\n * Show a rate limit reached toast\n */\nconst showRateLimitReached = async (): Promise<void> => {\n openAlert({\n title: 'Error',\n body: 'Rate limit reached. Please slow down',\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 3000\n })\n}\n\n/**\n * Show a \"connection successful\" alert for 1.5 seconds\n */\nconst showExtensionConnectedAlert = () => {\n closeAlert()\n}\n\nconst showBugReportForm = async () => {\n await openBugReport()\n}\n\nconst showRelayerErrorAlert = async (): Promise<void> => {\n openAlert({\n title: 'Error',\n body: `Failed to connect to the relayer. Please check that your system time is synchronized with the current time and reload the page.`,\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 1500\n })\n}\n\n/**\n * Show a \"channel closed\" alert for 1.5 seconds\n */\nconst showChannelClosedAlert = async (): Promise<void> => {\n // openAlert({\n // title: 'Channel closed',\n // body: `Your peer has closed the connection.`,\n // buttons: [{ text: 'Done', style: 'outline' }],\n // timer: 1500\n // })\n}\n\nconst showInternalErrorAlert = async (\n data: BeaconEventType[BeaconEvent.INTERNAL_ERROR]\n): Promise<void> => {\n const buttons: AlertButton[] = [...(data.buttons ?? [])]\n\n buttons.push({ text: 'Done', style: 'outline' })\n\n const alertConfig: AlertConfig = {\n title: 'Internal Error',\n body: data.text,\n buttons\n }\n openAlert(alertConfig)\n}\n\n/**\n * Show a connect alert with QR code\n *\n * @param data The data that is emitted by the PAIR_INIT event\n */\nconst showPairAlert = async (data: BeaconEventType[BeaconEvent.PAIR_INIT]): Promise<void> => {\n logger.log('showPairAlert')\n const alertConfig: AlertConfig = {\n title: 'Choose your preferred wallet',\n body: `<p></p>`,\n pairingPayload: {\n p2pSyncCode: data.p2pPeerInfo,\n walletConnectSyncCode: data.walletConnectPeerInfo,\n postmessageSyncCode: data.postmessagePeerInfo,\n networkType: data.networkType\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n closeButtonCallback: data.abortedHandler,\n disclaimerText: data.disclaimerText,\n analytics: data.analytics,\n featuredWallets: data.featuredWallets,\n substratePairing: data.substratePairing\n }\n openAlert(alertConfig)\n}\n\n/**\n * Show a \"Permission Granted\" alert\n *\n * @param data The data that is emitted by the PERMISSION_REQUEST_SUCCESS event\n */\nconst showPermissionSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.PERMISSION_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n const actions: any[] = [\n {\n text: 'Address',\n actionText: shortenString(output.address),\n isBold: true\n }\n ]\n\n if ((output.network.type as any) !== 'substrate') {\n actions.push({\n text: 'Network',\n actionText: `${output.network.type}`\n })\n actions.push({\n text: 'Permissions',\n actionText: output.scopes.join(', ')\n })\n }\n\n openToast({\n body: `{{wallet}}\\u00A0 has granted permission`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions\n })\n}\n\nconst showProofOfEventChallengeSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 has ${output.isAccepted ? 'accepted' : 'refused'} the challenge`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: output.isAccepted\n ? [\n {\n text: `Payload hash: ${output.payloadHash}`,\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.payloadHash).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n : []\n })\n}\n\nconst showSimulatedProofOfEventChallengeSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]\n): Promise<void> => {\n const { output } = data\n\n openToast({\n body: !output.errorMessage\n ? `{{wallet}}\\u00A0 has returned the list of operation`\n : `{{wallet}}\\u00A0 has returned an error`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: !output.errorMessage\n ? [\n {\n text: 'Operation list',\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.operationsList).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n : [{ text: 'Error message', actionText: output.errorMessage }]\n })\n}\n\n/**\n * Show an \"Operation Broadcasted\" alert\n *\n * @param data The data that is emitted by the OPERATION_REQUEST_SUCCESS event\n */\nconst showOperationSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.OPERATION_REQUEST_SUCCESS]\n): Promise<void> => {\n const { account, output, blockExplorer } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 successfully submitted operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: shortenString(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: async (): Promise<void> => {\n const link: string = await blockExplorer.getTransactionLink(\n output.transactionHash,\n account.network\n )\n window.open(link, '_blank', 'noopener')\n closeToast()\n }\n }\n ]\n })\n}\n\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the SIGN_REQUEST_SUCCESS event\n */\nconst showSignSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.SIGN_REQUEST_SUCCESS]\n): Promise<void> => {\n const output = data.output\n openToast({\n body: `{{wallet}}\\u00A0 successfully signed payload`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `Signature: ${shortenString(output.signature)}`,\n actionText: 'Copy to clipboard',\n actionCallback: async (): Promise<void> => {\n navigator.clipboard.writeText(output.signature).then(\n () => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n },\n (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n }\n )\n closeToast()\n }\n }\n ]\n })\n}\n\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the ENCRYPT_REQUEST_SUCCESS event\n */\n// TODO: ENCRYPTION\n// const showEncryptSuccessAlert = async (\n// data: BeaconEventType[BeaconEvent.ENCRYPT_REQUEST_SUCCESS]\n// ): Promise<void> => {\n// const output = data.output\n// openToast({\n// body: `{{wallet}}\\u00A0 successfully ${\n// data.output.cryptoOperation === EncryptionOperation.ENCRYPT ? 'encrypted' : 'decrypted'\n// } payload`,\n// timer: SUCCESS_TIMER,\n// state: 'finished',\n// walletInfo: data.walletInfo,\n// actions: [\n// {\n// text: `Payload: <strong>${shortenString(output.payload)}</strong>`,\n// actionText: 'Copy to clipboard',\n// actionCallback: async (): Promise<void> => {\n// navigator.clipboard.writeText(output.payload).then(\n// () => {\n// logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n// },\n// (err) => {\n// logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n// }\n// )\n// closeToast()\n// }\n// }\n// ]\n// })\n// }\n\nconst showBlockchainRequestSuccessToast = async (\n data: BeaconEventType[BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]\n): Promise<void> => {\n openToast({\n body: `{{wallet}}\\u00A0 request successfully executed`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo\n })\n}\n\n/**\n * Show a \"Broadcasted\" alert\n *\n * @param data The data that is emitted by the BROADCAST_REQUEST_SUCCESS event\n */\nconst showBroadcastSuccessAlert = async (\n data: BeaconEventType[BeaconEvent.BROADCAST_REQUEST_SUCCESS]\n): Promise<void> => {\n const { network, output, blockExplorer } = data\n\n openToast({\n body: `{{wallet}}\\u00A0 successfully injected operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: shortenString(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: async (): Promise<void> => {\n const link: string = await blockExplorer.getTransactionLink(\n output.transactionHash,\n network\n )\n window.open(link, '_blank', 'noopener')\n closeToast()\n }\n }\n ]\n })\n}\n\nconst emptyHandler = (): BeaconEventHandlerFunction => async (): Promise<void> => {\n //\n}\n\nexport type BeaconEventHandlerFunction<T = unknown> = (\n data: T,\n eventCallback?: AlertButton[]\n) => void | Promise<void>\n\n/**\n * The default event handlers\n */\nexport const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction<BeaconEventType[key]>\n} = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: showPermissionSuccessAlert,\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: showProofOfEventChallengeSuccessAlert,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]:\n showSimulatedProofOfEventChallengeSuccessAlert,\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.OPERATION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: showOperationSuccessAlert,\n [BeaconEvent.OPERATION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIGN_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: showSignSuccessAlert,\n [BeaconEvent.SIGN_REQUEST_ERROR]: showErrorToast,\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: showSentToast,\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: showEncryptSuccessAlert,\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.BROADCAST_REQUEST_SENT]: showSentToast,\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: showBroadcastSuccessAlert,\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: showAcknowledgedToast,\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: showRateLimitReached,\n [BeaconEvent.NO_PERMISSIONS]: showNoPermissionAlert,\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: emptyHandler(),\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: emptyHandler(),\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: showInvalidActiveAccountState,\n [BeaconEvent.GENERIC_ERROR]: showGenericErrorAlert,\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: showInvalidAccountDeactivated,\n [BeaconEvent.SHOW_PREPARE]: showPrepare,\n [BeaconEvent.HIDE_UI]: hideUI,\n [BeaconEvent.PAIR_INIT]: showPairAlert,\n [BeaconEvent.PAIR_SUCCESS]: showExtensionConnectedAlert,\n [BeaconEvent.OPEN_BUG_REPORT]: showBugReportForm,\n [BeaconEvent.RELAYER_ERROR]: showRelayerErrorAlert,\n [BeaconEvent.CHANNEL_CLOSED]: showChannelClosedAlert,\n [BeaconEvent.INTERNAL_ERROR]: showInternalErrorAlert,\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: showBlockchainRequestSuccessToast,\n [BeaconEvent.UNKNOWN]: emptyHandler()\n}\n\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport class BeaconEventHandler {\n private readonly callbackMap: {\n [key in BeaconEvent]: BeaconEventHandlerFunction<any>[] // TODO: Fix type\n } = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: [defaultEventCallbacks.PERMISSION_REQUEST_SENT],\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: [defaultEventCallbacks.PERMISSION_REQUEST_SUCCESS],\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: [defaultEventCallbacks.PERMISSION_REQUEST_ERROR],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [\n defaultEventCallbacks.PERMISSION_REQUEST_SENT\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [\n defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [\n defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\n ],\n [BeaconEvent.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [\n defaultEventCallbacks.SIMULATED_PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n ],\n [BeaconEvent.OPERATION_REQUEST_SENT]: [defaultEventCallbacks.OPERATION_REQUEST_SENT],\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: [defaultEventCallbacks.OPERATION_REQUEST_SUCCESS],\n [BeaconEvent.OPERATION_REQUEST_ERROR]: [defaultEventCallbacks.OPERATION_REQUEST_ERROR],\n [BeaconEvent.SIGN_REQUEST_SENT]: [defaultEventCallbacks.SIGN_REQUEST_SENT],\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: [defaultEventCallbacks.SIGN_REQUEST_SUCCESS],\n [BeaconEvent.SIGN_REQUEST_ERROR]: [defaultEventCallbacks.SIGN_REQUEST_ERROR],\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: [defaultEventCallbacks.ENCRYPT_REQUEST_SENT],\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: [defaultEventCallbacks.ENCRYPT_REQUEST_SUCCESS],\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: [defaultEventCallbacks.ENCRYPT_REQUEST_ERROR],\n [BeaconEvent.BROADCAST_REQUEST_SENT]: [defaultEventCallbacks.BROADCAST_REQUEST_SENT],\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: [defaultEventCallbacks.BROADCAST_REQUEST_SUCCESS],\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: [defaultEventCallbacks.BROADCAST_REQUEST_ERROR],\n [BeaconEvent.BLOCKCHAIN_REQUEST_SUCCESS]: [defaultEventCallbacks.BLOCKCHAIN_REQUEST_SUCCESS],\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: [defaultEventCallbacks.ACKNOWLEDGE_RECEIVED],\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: [defaultEventCallbacks.LOCAL_RATE_LIMIT_REACHED],\n [BeaconEvent.NO_PERMISSIONS]: [defaultEventCallbacks.NO_PERMISSIONS],\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: [defaultEventCallbacks.ACTIVE_ACCOUNT_SET],\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: [defaultEventCallbacks.ACTIVE_TRANSPORT_SET],\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: [\n defaultEventCallbacks.INVALID_ACTIVE_ACCOUNT_STATE\n ],\n [BeaconEvent.GENERIC_ERROR]: [showGenericErrorAlert],\n [BeaconEvent.INVALID_ACCOUNT_DEACTIVATED]: [defaultEventCallbacks.INVALID_ACCOUNT_DEACTIVATED],\n [BeaconEvent.SHOW_PREPARE]: [defaultEventCallbacks.SHOW_PREPARE],\n [BeaconEvent.HIDE_UI]: [defaultEventCallbacks.HIDE_UI],\n [BeaconEvent.PAIR_INIT]: [defaultEventCallbacks.PAIR_INIT],\n [BeaconEvent.PAIR_SUCCESS]: [defaultEventCallbacks.PAIR_SUCCESS],\n [BeaconEvent.OPEN_BUG_REPORT]: [showBugReportForm],\n [BeaconEvent.CHANNEL_CLOSED]: [defaultEventCallbacks.CHANNEL_CLOSED],\n [BeaconEvent.INTERNAL_ERROR]: [defaultEventCallbacks.INTERNAL_ERROR],\n [BeaconEvent.RELAYER_ERROR]: [defaultEventCallbacks.RELAYER_ERROR],\n [BeaconEvent.UNKNOWN]: [defaultEventCallbacks.UNKNOWN]\n }\n constructor(\n eventsToOverride: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n } = {},\n overrideAll?: boolean\n ) {\n if (overrideAll) {\n this.setAllHandlers()\n }\n this.overrideDefaults(eventsToOverride)\n }\n\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n public async on<K extends BeaconEvent>(\n event: K,\n eventCallback: BeaconEventHandlerFunction<BeaconEventType[K]>\n ): Promise<void> {\n const listeners = this.callbackMap[event] || []\n listeners.push(eventCallback)\n this.callbackMap[event] = listeners\n }\n\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n public async emit<K extends BeaconEvent>(\n event: K,\n data?: BeaconEventType[K],\n eventCallback?: AlertButton[]\n ): Promise<void> {\n const listeners = this.callbackMap[event]\n if (listeners && listeners.length > 0) {\n listeners.forEach(async (listener: BeaconEventHandlerFunction) => {\n try {\n await listener(data, eventCallback)\n } catch (listenerError) {\n logger.error(`error handling event ${event}`, listenerError)\n }\n })\n }\n }\n\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults(eventsToOverride: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction<BeaconEventType[key]>\n }\n }): void {\n Object.keys(eventsToOverride).forEach((untypedEvent: string) => {\n const eventType: BeaconEvent = untypedEvent as BeaconEvent\n const event = eventsToOverride[eventType]\n if (event) {\n this.callbackMap[eventType] = [event.handler]\n }\n })\n }\n\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers(handler?: BeaconEventHandlerFunction): void {\n Object.keys(this.callbackMap).forEach((untypedEvent: string) => {\n const eventType: BeaconEvent = untypedEvent as BeaconEvent\n this.callbackMap[eventType] = []\n if (handler) {\n this.callbackMap[eventType].push(handler)\n } else {\n this.callbackMap[eventType].push((...data) => {\n logger.log(untypedEvent, ...data)\n })\n }\n })\n }\n}\n"]}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -4,12 +4,14 @@ export * from '@tezos-x/octez.connect-transport-postmessage';
|
|
|
4
4
|
export * from '@tezos-x/octez.connect-types';
|
|
5
5
|
export * from '@tezos-x/octez.connect-utils';
|
|
6
6
|
export * from '@tezos-x/octez.connect-ui';
|
|
7
|
-
import { DAppClient } from './dapp-client/DAppClient';
|
|
7
|
+
import { DAppClient, type DAppClientDisconnectOptions, type DAppClientRemoveAllPeersOptions } from './dapp-client/DAppClient';
|
|
8
8
|
import { DAppClientOptions } from './dapp-client/DAppClientOptions';
|
|
9
|
-
import { BeaconEvent, BeaconEventHandler, defaultEventCallbacks } from './events';
|
|
9
|
+
import { BeaconEvent, BeaconEventHandler, defaultEventCallbacks, type BeaconEventType, type InvalidAccountDeactivatedEvent, type InvalidAccountDeactivatedReason } from './events';
|
|
10
10
|
import { BlockExplorer } from './utils/block-explorer';
|
|
11
11
|
import { TzktBlockExplorer } from './utils/tzkt-blockexplorer';
|
|
12
12
|
import { getDAppClientInstance } from './utils/get-instance';
|
|
13
13
|
export { DAppClient, DAppClientOptions, getDAppClientInstance };
|
|
14
|
+
export type { DAppClientDisconnectOptions, DAppClientRemoveAllPeersOptions };
|
|
14
15
|
export { BeaconEvent, BeaconEventHandler, defaultEventCallbacks };
|
|
16
|
+
export type { BeaconEventType, InvalidAccountDeactivatedEvent, InvalidAccountDeactivatedReason };
|
|
15
17
|
export { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer };
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,0EAAuD;AACvD,+EAA4D;AAC5D,+DAA4C;AAC5C,+DAA4C;AAC5C,4DAAyC;AAEzC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,0EAAuD;AACvD,+EAA4D;AAC5D,+DAA4C;AAC5C,+DAA4C;AAC5C,4DAAyC;AAEzC,yDAIiC;AAcxB,2FAjBP,uBAAU,OAiBO;AAZnB,qCAOiB;AASR,4FAfP,oBAAW,OAeO;AAAE,mGAdpB,2BAAkB,OAcoB;AAAE,sGAbxC,8BAAqB,OAawC;AAR/D,2DAAsD;AAgB7C,8FAhBA,8BAAa,OAgBA;AAftB,mEAA8D;AAetC,kGAff,sCAAiB,OAee;AAAuB,sGAfvD,sCAAiB,OAe2D;AAdrF,uDAA4D;AAEpB,sGAF/B,oCAAqB,OAE+B","sourcesContent":["export * from '@tezos-x/octez.connect-core'\nexport * from '@tezos-x/octez.connect-transport-matrix'\nexport * from '@tezos-x/octez.connect-transport-postmessage'\nexport * from '@tezos-x/octez.connect-types'\nexport * from '@tezos-x/octez.connect-utils'\nexport * from '@tezos-x/octez.connect-ui'\n\nimport {\n DAppClient,\n type DAppClientDisconnectOptions,\n type DAppClientRemoveAllPeersOptions\n} from './dapp-client/DAppClient'\nimport { DAppClientOptions } from './dapp-client/DAppClientOptions'\nimport {\n BeaconEvent,\n BeaconEventHandler,\n defaultEventCallbacks,\n type BeaconEventType,\n type InvalidAccountDeactivatedEvent,\n type InvalidAccountDeactivatedReason\n} from './events'\nimport { BlockExplorer } from './utils/block-explorer'\nimport { TzktBlockExplorer } from './utils/tzkt-blockexplorer'\nimport { getDAppClientInstance } from './utils/get-instance'\n\nexport { DAppClient, DAppClientOptions, getDAppClientInstance }\nexport type { DAppClientDisconnectOptions, DAppClientRemoveAllPeersOptions }\n\n// Events\nexport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks }\nexport type {\n BeaconEventType,\n InvalidAccountDeactivatedEvent,\n InvalidAccountDeactivatedReason\n}\n\n// BlockExplorer\nexport { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer }\n"]}
|
|
@@ -7,6 +7,9 @@ const logger = new octez_connect_core_1.Logger('DAppClient');
|
|
|
7
7
|
let _instance;
|
|
8
8
|
/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless "reset" is set */
|
|
9
9
|
const getDAppClientInstance = (config, reset) => {
|
|
10
|
+
if (_instance === null || _instance === void 0 ? void 0 : _instance.isDestroyed()) {
|
|
11
|
+
_instance = undefined;
|
|
12
|
+
}
|
|
10
13
|
if (_instance && reset) {
|
|
11
14
|
// sync API — kick off cleanup but surface failures rather than swallow.
|
|
12
15
|
_instance.disconnect().catch((error) => logger.error('getDAppClientInstance', 'disconnect on reset failed', error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-instance.js","sourceRoot":"","sources":["../../../src/utils/get-instance.ts"],"names":[],"mappings":";;;AAAA,oEAAoD;AACpD,0DAAsD;AAGtD,MAAM,MAAM,GAAG,IAAI,2BAAM,CAAC,YAAY,CAAC,CAAA;AAEvC,IAAI,SAAiC,CAAA;AAErC,yKAAyK;AAClK,MAAM,qBAAqB,GAAG,CAAC,MAAyB,EAAE,KAAe,EAAc,EAAE;IAC9F,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,wEAAwE;QACxE,SAAS,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAA;QACnH,SAAS,GAAG,SAAS,CAAA;IACvB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"get-instance.js","sourceRoot":"","sources":["../../../src/utils/get-instance.ts"],"names":[],"mappings":";;;AAAA,oEAAoD;AACpD,0DAAsD;AAGtD,MAAM,MAAM,GAAG,IAAI,2BAAM,CAAC,YAAY,CAAC,CAAA;AAEvC,IAAI,SAAiC,CAAA;AAErC,yKAAyK;AAClK,MAAM,qBAAqB,GAAG,CAAC,MAAyB,EAAE,KAAe,EAAc,EAAE;IAC9F,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,EAAE,EAAE,CAAC;QAC7B,SAAS,GAAG,SAAS,CAAA;IACvB,CAAC;IAED,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,wEAAwE;QACxE,SAAS,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAA;QACnH,SAAS,GAAG,SAAS,CAAA;IACvB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AApBY,QAAA,qBAAqB,yBAoBjC","sourcesContent":["import { Logger } from '@tezos-x/octez.connect-core'\nimport { DAppClient } from '../dapp-client/DAppClient'\nimport { DAppClientOptions } from '../dapp-client/DAppClientOptions'\n\nconst logger = new Logger('DAppClient')\n\nlet _instance: DAppClient | undefined\n\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless \"reset\" is set */\nexport const getDAppClientInstance = (config: DAppClientOptions, reset?: boolean): DAppClient => {\n if (_instance?.isDestroyed()) {\n _instance = undefined\n }\n\n if (_instance && reset) {\n // sync API — kick off cleanup but surface failures rather than swallow.\n _instance.disconnect().catch((error) => logger.error('getDAppClientInstance', 'disconnect on reset failed', error))\n _instance = undefined\n }\n\n if (_instance) {\n return _instance\n }\n\n if (!_instance) {\n _instance = new DAppClient(config)\n }\n\n return _instance\n}\n"]}
|