@tezos-x/octez.connect-core 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE +19 -0
- package/README.md +9 -0
- package/dist/cjs/MockAnalytics.d.ts +4 -0
- package/dist/cjs/MockAnalytics.js +11 -0
- package/dist/cjs/MockAnalytics.js.map +1 -0
- package/dist/cjs/MockWindow.d.ts +14 -0
- package/dist/cjs/MockWindow.js +39 -0
- package/dist/cjs/MockWindow.js.map +1 -0
- package/dist/cjs/Serializer.d.ts +19 -0
- package/dist/cjs/Serializer.js +48 -0
- package/dist/cjs/Serializer.js.map +1 -0
- package/dist/cjs/clients/beacon-client/BeaconClient.d.ts +53 -0
- package/dist/cjs/clients/beacon-client/BeaconClient.js +111 -0
- package/dist/cjs/clients/beacon-client/BeaconClient.js.map +1 -0
- package/dist/cjs/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
- package/dist/cjs/clients/beacon-client/BeaconClientOptions.js +3 -0
- package/dist/cjs/clients/beacon-client/BeaconClientOptions.js.map +1 -0
- package/dist/cjs/clients/client/Client.d.ts +91 -0
- package/dist/cjs/clients/client/Client.js +241 -0
- package/dist/cjs/clients/client/Client.js.map +1 -0
- package/dist/cjs/clients/client/ClientOptions.d.ts +42 -0
- package/dist/cjs/clients/client/ClientOptions.js +3 -0
- package/dist/cjs/clients/client/ClientOptions.js.map +1 -0
- package/dist/cjs/constants.d.ts +4 -0
- package/dist/cjs/constants.js +8 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/debug.d.ts +2 -0
- package/dist/cjs/debug.js +17 -0
- package/dist/cjs/debug.js.map +1 -0
- package/dist/cjs/errors/AbortedBeaconError.d.ts +9 -0
- package/dist/cjs/errors/AbortedBeaconError.js +17 -0
- package/dist/cjs/errors/AbortedBeaconError.js.map +1 -0
- package/dist/cjs/errors/BeaconError.d.ts +15 -0
- package/dist/cjs/errors/BeaconError.js +19 -0
- package/dist/cjs/errors/BeaconError.js.map +1 -0
- package/dist/cjs/errors/BroadcastBeaconError.d.ts +9 -0
- package/dist/cjs/errors/BroadcastBeaconError.js +17 -0
- package/dist/cjs/errors/BroadcastBeaconError.js.map +1 -0
- package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
- package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
- package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
- package/dist/cjs/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
- package/dist/cjs/errors/NetworkNotSupportedBeaconError.js +17 -0
- package/dist/cjs/errors/NetworkNotSupportedBeaconError.js.map +1 -0
- package/dist/cjs/errors/NoAddressBeaconError.d.ts +9 -0
- package/dist/cjs/errors/NoAddressBeaconError.js +17 -0
- package/dist/cjs/errors/NoAddressBeaconError.js.map +1 -0
- package/dist/cjs/errors/NoPrivateKeyBeaconError.d.ts +9 -0
- package/dist/cjs/errors/NoPrivateKeyBeaconError.js +17 -0
- package/dist/cjs/errors/NoPrivateKeyBeaconError.js.map +1 -0
- package/dist/cjs/errors/NotGrantedBeaconError.d.ts +9 -0
- package/dist/cjs/errors/NotGrantedBeaconError.js +17 -0
- package/dist/cjs/errors/NotGrantedBeaconError.js.map +1 -0
- package/dist/cjs/errors/ParametersInvalidBeaconError.d.ts +9 -0
- package/dist/cjs/errors/ParametersInvalidBeaconError.js +17 -0
- package/dist/cjs/errors/ParametersInvalidBeaconError.js.map +1 -0
- package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
- package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js +17 -0
- package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
- package/dist/cjs/errors/TooManyOperationsBeaconError.d.ts +9 -0
- package/dist/cjs/errors/TooManyOperationsBeaconError.js +17 -0
- package/dist/cjs/errors/TooManyOperationsBeaconError.js.map +1 -0
- package/dist/cjs/errors/TransactionInvalidBeaconError.d.ts +14 -0
- package/dist/cjs/errors/TransactionInvalidBeaconError.js +22 -0
- package/dist/cjs/errors/TransactionInvalidBeaconError.js.map +1 -0
- package/dist/cjs/errors/UnknownBeaconError.d.ts +9 -0
- package/dist/cjs/errors/UnknownBeaconError.js +17 -0
- package/dist/cjs/errors/UnknownBeaconError.js.map +1 -0
- package/dist/cjs/errors/get-error.d.ts +8 -0
- package/dist/cjs/errors/get-error.js +53 -0
- package/dist/cjs/errors/get-error.js.map +1 -0
- package/dist/cjs/index.d.ts +53 -0
- package/dist/cjs/index.js +90 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/managers/AccountManager.d.ts +18 -0
- package/dist/cjs/managers/AccountManager.js +73 -0
- package/dist/cjs/managers/AccountManager.js.map +1 -0
- package/dist/cjs/managers/AppMetadataManager.d.ts +16 -0
- package/dist/cjs/managers/AppMetadataManager.js +57 -0
- package/dist/cjs/managers/AppMetadataManager.js.map +1 -0
- package/dist/cjs/managers/PeerManager.d.ts +18 -0
- package/dist/cjs/managers/PeerManager.js +61 -0
- package/dist/cjs/managers/PeerManager.js.map +1 -0
- package/dist/cjs/managers/PermissionManager.d.ts +17 -0
- package/dist/cjs/managers/PermissionManager.js +64 -0
- package/dist/cjs/managers/PermissionManager.js.map +1 -0
- package/dist/cjs/managers/PermissionValidator.d.ts +16 -0
- package/dist/cjs/managers/PermissionValidator.js +58 -0
- package/dist/cjs/managers/PermissionValidator.js.map +1 -0
- package/dist/cjs/managers/StorageManager.d.ts +18 -0
- package/dist/cjs/managers/StorageManager.js +72 -0
- package/dist/cjs/managers/StorageManager.js.map +1 -0
- package/dist/cjs/migrations/migrate-0.7.0.d.ts +20 -0
- package/dist/cjs/migrations/migrate-0.7.0.js +44 -0
- package/dist/cjs/migrations/migrate-0.7.0.js.map +1 -0
- package/dist/cjs/migrations/migrations.d.ts +2 -0
- package/dist/cjs/migrations/migrations.js +44 -0
- package/dist/cjs/migrations/migrations.js.map +1 -0
- package/dist/cjs/storage/ChromeStorage.d.ts +19 -0
- package/dist/cjs/storage/ChromeStorage.js +76 -0
- package/dist/cjs/storage/ChromeStorage.js.map +1 -0
- package/dist/cjs/storage/IndexedDBStorage.d.ts +65 -0
- package/dist/cjs/storage/IndexedDBStorage.js +230 -0
- package/dist/cjs/storage/IndexedDBStorage.js.map +1 -0
- package/dist/cjs/storage/LocalStorage.d.ts +21 -0
- package/dist/cjs/storage/LocalStorage.js +92 -0
- package/dist/cjs/storage/LocalStorage.js.map +1 -0
- package/dist/cjs/storage/StorageValidator.d.ts +12 -0
- package/dist/cjs/storage/StorageValidator.js +110 -0
- package/dist/cjs/storage/StorageValidator.js.map +1 -0
- package/dist/cjs/storage/WCStorage.d.ts +15 -0
- package/dist/cjs/storage/WCStorage.js +84 -0
- package/dist/cjs/storage/WCStorage.js.map +1 -0
- package/dist/cjs/storage/getStorage.d.ts +5 -0
- package/dist/cjs/storage/getStorage.js +34 -0
- package/dist/cjs/storage/getStorage.js.map +1 -0
- package/dist/cjs/transports/Transport.d.ts +85 -0
- package/dist/cjs/transports/Transport.js +171 -0
- package/dist/cjs/transports/Transport.js.map +1 -0
- package/dist/cjs/transports/clients/ClientEvents.d.ts +6 -0
- package/dist/cjs/transports/clients/ClientEvents.js +3 -0
- package/dist/cjs/transports/clients/ClientEvents.js.map +1 -0
- package/dist/cjs/transports/clients/CommunicationClient.d.ts +47 -0
- package/dist/cjs/transports/clients/CommunicationClient.js +86 -0
- package/dist/cjs/transports/clients/CommunicationClient.js.map +1 -0
- package/dist/cjs/transports/clients/MessageBasedClient.d.ts +56 -0
- package/dist/cjs/transports/clients/MessageBasedClient.js +109 -0
- package/dist/cjs/transports/clients/MessageBasedClient.js.map +1 -0
- package/dist/cjs/utils/Logger.d.ts +33 -0
- package/dist/cjs/utils/Logger.js +98 -0
- package/dist/cjs/utils/Logger.js.map +1 -0
- package/dist/cjs/utils/assert-never.d.ts +6 -0
- package/dist/cjs/utils/assert-never.js +14 -0
- package/dist/cjs/utils/assert-never.js.map +1 -0
- package/dist/cjs/utils/get-account-identifier.d.ts +10 -0
- package/dist/cjs/utils/get-account-identifier.js +36 -0
- package/dist/cjs/utils/get-account-identifier.js.map +1 -0
- package/dist/cjs/utils/get-sender-id.d.ts +8 -0
- package/dist/cjs/utils/get-sender-id.js +31 -0
- package/dist/cjs/utils/get-sender-id.js.map +1 -0
- package/dist/cjs/utils/multi-tab-channel.d.ts +17 -0
- package/dist/cjs/utils/multi-tab-channel.js +85 -0
- package/dist/cjs/utils/multi-tab-channel.js.map +1 -0
- package/dist/esm/MockAnalytics.d.ts +4 -0
- package/dist/esm/MockAnalytics.js +7 -0
- package/dist/esm/MockAnalytics.js.map +1 -0
- package/dist/esm/MockWindow.d.ts +14 -0
- package/dist/esm/MockWindow.js +35 -0
- package/dist/esm/MockWindow.js.map +1 -0
- package/dist/esm/Serializer.d.ts +19 -0
- package/dist/esm/Serializer.js +31 -0
- package/dist/esm/Serializer.js.map +1 -0
- package/dist/esm/clients/beacon-client/BeaconClient.d.ts +53 -0
- package/dist/esm/clients/beacon-client/BeaconClient.js +103 -0
- package/dist/esm/clients/beacon-client/BeaconClient.js.map +1 -0
- package/dist/esm/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
- package/dist/esm/clients/beacon-client/BeaconClientOptions.js +2 -0
- package/dist/esm/clients/beacon-client/BeaconClientOptions.js.map +1 -0
- package/dist/esm/clients/client/Client.d.ts +91 -0
- package/dist/esm/clients/client/Client.js +198 -0
- package/dist/esm/clients/client/Client.js.map +1 -0
- package/dist/esm/clients/client/ClientOptions.d.ts +42 -0
- package/dist/esm/clients/client/ClientOptions.js +2 -0
- package/dist/esm/clients/client/ClientOptions.js.map +1 -0
- package/dist/esm/constants.d.ts +4 -0
- package/dist/esm/constants.js +5 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/debug.d.ts +2 -0
- package/dist/esm/debug.js +12 -0
- package/dist/esm/debug.js.map +1 -0
- package/dist/esm/errors/AbortedBeaconError.d.ts +9 -0
- package/dist/esm/errors/AbortedBeaconError.js +13 -0
- package/dist/esm/errors/AbortedBeaconError.js.map +1 -0
- package/dist/esm/errors/BeaconError.d.ts +15 -0
- package/dist/esm/errors/BeaconError.js +17 -0
- package/dist/esm/errors/BeaconError.js.map +1 -0
- package/dist/esm/errors/BroadcastBeaconError.d.ts +9 -0
- package/dist/esm/errors/BroadcastBeaconError.js +13 -0
- package/dist/esm/errors/BroadcastBeaconError.js.map +1 -0
- package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
- package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
- package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
- package/dist/esm/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
- package/dist/esm/errors/NetworkNotSupportedBeaconError.js +13 -0
- package/dist/esm/errors/NetworkNotSupportedBeaconError.js.map +1 -0
- package/dist/esm/errors/NoAddressBeaconError.d.ts +9 -0
- package/dist/esm/errors/NoAddressBeaconError.js +13 -0
- package/dist/esm/errors/NoAddressBeaconError.js.map +1 -0
- package/dist/esm/errors/NoPrivateKeyBeaconError.d.ts +9 -0
- package/dist/esm/errors/NoPrivateKeyBeaconError.js +13 -0
- package/dist/esm/errors/NoPrivateKeyBeaconError.js.map +1 -0
- package/dist/esm/errors/NotGrantedBeaconError.d.ts +9 -0
- package/dist/esm/errors/NotGrantedBeaconError.js +13 -0
- package/dist/esm/errors/NotGrantedBeaconError.js.map +1 -0
- package/dist/esm/errors/ParametersInvalidBeaconError.d.ts +9 -0
- package/dist/esm/errors/ParametersInvalidBeaconError.js +13 -0
- package/dist/esm/errors/ParametersInvalidBeaconError.js.map +1 -0
- package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
- package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js +13 -0
- package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
- package/dist/esm/errors/TooManyOperationsBeaconError.d.ts +9 -0
- package/dist/esm/errors/TooManyOperationsBeaconError.js +13 -0
- package/dist/esm/errors/TooManyOperationsBeaconError.js.map +1 -0
- package/dist/esm/errors/TransactionInvalidBeaconError.d.ts +14 -0
- package/dist/esm/errors/TransactionInvalidBeaconError.js +19 -0
- package/dist/esm/errors/TransactionInvalidBeaconError.js.map +1 -0
- package/dist/esm/errors/UnknownBeaconError.d.ts +9 -0
- package/dist/esm/errors/UnknownBeaconError.js +13 -0
- package/dist/esm/errors/UnknownBeaconError.js.map +1 -0
- package/dist/esm/errors/get-error.d.ts +8 -0
- package/dist/esm/errors/get-error.js +49 -0
- package/dist/esm/errors/get-error.js.map +1 -0
- package/dist/esm/index.d.ts +53 -0
- package/dist/esm/index.js +67 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/managers/AccountManager.d.ts +18 -0
- package/dist/esm/managers/AccountManager.js +44 -0
- package/dist/esm/managers/AccountManager.js.map +1 -0
- package/dist/esm/managers/AppMetadataManager.d.ts +16 -0
- package/dist/esm/managers/AppMetadataManager.js +32 -0
- package/dist/esm/managers/AppMetadataManager.js.map +1 -0
- package/dist/esm/managers/PeerManager.d.ts +18 -0
- package/dist/esm/managers/PeerManager.js +34 -0
- package/dist/esm/managers/PeerManager.js.map +1 -0
- package/dist/esm/managers/PermissionManager.d.ts +17 -0
- package/dist/esm/managers/PermissionManager.js +37 -0
- package/dist/esm/managers/PermissionManager.js.map +1 -0
- package/dist/esm/managers/PermissionValidator.d.ts +16 -0
- package/dist/esm/managers/PermissionValidator.js +43 -0
- package/dist/esm/managers/PermissionValidator.js.map +1 -0
- package/dist/esm/managers/StorageManager.d.ts +18 -0
- package/dist/esm/managers/StorageManager.js +50 -0
- package/dist/esm/managers/StorageManager.js.map +1 -0
- package/dist/esm/migrations/migrate-0.7.0.d.ts +20 -0
- package/dist/esm/migrations/migrate-0.7.0.js +31 -0
- package/dist/esm/migrations/migrate-0.7.0.js.map +1 -0
- package/dist/esm/migrations/migrations.d.ts +2 -0
- package/dist/esm/migrations/migrations.js +31 -0
- package/dist/esm/migrations/migrations.js.map +1 -0
- package/dist/esm/storage/ChromeStorage.d.ts +19 -0
- package/dist/esm/storage/ChromeStorage.js +53 -0
- package/dist/esm/storage/ChromeStorage.js.map +1 -0
- package/dist/esm/storage/IndexedDBStorage.d.ts +65 -0
- package/dist/esm/storage/IndexedDBStorage.js +212 -0
- package/dist/esm/storage/IndexedDBStorage.js.map +1 -0
- package/dist/esm/storage/LocalStorage.d.ts +21 -0
- package/dist/esm/storage/LocalStorage.js +70 -0
- package/dist/esm/storage/LocalStorage.js.map +1 -0
- package/dist/esm/storage/StorageValidator.d.ts +12 -0
- package/dist/esm/storage/StorageValidator.js +96 -0
- package/dist/esm/storage/StorageValidator.js.map +1 -0
- package/dist/esm/storage/WCStorage.d.ts +15 -0
- package/dist/esm/storage/WCStorage.js +64 -0
- package/dist/esm/storage/WCStorage.js.map +1 -0
- package/dist/esm/storage/getStorage.d.ts +5 -0
- package/dist/esm/storage/getStorage.js +21 -0
- package/dist/esm/storage/getStorage.js.map +1 -0
- package/dist/esm/transports/Transport.d.ts +85 -0
- package/dist/esm/transports/Transport.js +149 -0
- package/dist/esm/transports/Transport.js.map +1 -0
- package/dist/esm/transports/clients/ClientEvents.d.ts +6 -0
- package/dist/esm/transports/clients/ClientEvents.js +2 -0
- package/dist/esm/transports/clients/ClientEvents.js.map +1 -0
- package/dist/esm/transports/clients/CommunicationClient.d.ts +47 -0
- package/dist/esm/transports/clients/CommunicationClient.js +63 -0
- package/dist/esm/transports/clients/CommunicationClient.js.map +1 -0
- package/dist/esm/transports/clients/MessageBasedClient.d.ts +56 -0
- package/dist/esm/transports/clients/MessageBasedClient.js +83 -0
- package/dist/esm/transports/clients/MessageBasedClient.js.map +1 -0
- package/dist/esm/utils/Logger.d.ts +33 -0
- package/dist/esm/utils/Logger.js +92 -0
- package/dist/esm/utils/Logger.js.map +1 -0
- package/dist/esm/utils/assert-never.d.ts +6 -0
- package/dist/esm/utils/assert-never.js +11 -0
- package/dist/esm/utils/assert-never.js.map +1 -0
- package/dist/esm/utils/get-account-identifier.d.ts +10 -0
- package/dist/esm/utils/get-account-identifier.js +23 -0
- package/dist/esm/utils/get-account-identifier.js.map +1 -0
- package/dist/esm/utils/get-sender-id.d.ts +8 -0
- package/dist/esm/utils/get-sender-id.js +18 -0
- package/dist/esm/utils/get-sender-id.js.map +1 -0
- package/dist/esm/utils/multi-tab-channel.d.ts +17 -0
- package/dist/esm/utils/multi-tab-channel.js +66 -0
- package/dist/esm/utils/multi-tab-channel.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BeaconMessage, PermissionEntity } from '@tezos-x/octez.connect-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internalapi
|
|
4
|
+
*
|
|
5
|
+
* The PermissionValidator is used to check if permissions for a certain message type have been given
|
|
6
|
+
*/
|
|
7
|
+
export declare class PermissionValidator {
|
|
8
|
+
/**
|
|
9
|
+
* Check if permissions were given for a certain message type.
|
|
10
|
+
*
|
|
11
|
+
* PermissionRequest and BroadcastRequest will always return true.
|
|
12
|
+
*
|
|
13
|
+
* @param message octez.connect message
|
|
14
|
+
*/
|
|
15
|
+
static hasPermission(message: BeaconMessage, getOne: (id: string) => Promise<PermissionEntity | undefined>, getAll: () => Promise<PermissionEntity[]>): Promise<boolean>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BeaconMessageType, PermissionScope } from '@tezos-x/octez.connect-types';
|
|
2
|
+
import { getAccountIdentifier } from '../utils/get-account-identifier';
|
|
3
|
+
/**
|
|
4
|
+
* @internalapi
|
|
5
|
+
*
|
|
6
|
+
* The PermissionValidator is used to check if permissions for a certain message type have been given
|
|
7
|
+
*/
|
|
8
|
+
export class PermissionValidator {
|
|
9
|
+
/**
|
|
10
|
+
* Check if permissions were given for a certain message type.
|
|
11
|
+
*
|
|
12
|
+
* PermissionRequest and BroadcastRequest will always return true.
|
|
13
|
+
*
|
|
14
|
+
* @param message octez.connect message
|
|
15
|
+
*/
|
|
16
|
+
static async hasPermission(message, getOne, getAll) {
|
|
17
|
+
switch (message.type) {
|
|
18
|
+
case BeaconMessageType.PermissionRequest:
|
|
19
|
+
case BeaconMessageType.BroadcastRequest: {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
case BeaconMessageType.OperationRequest: {
|
|
23
|
+
const accountIdentifier = await getAccountIdentifier(message.sourceAddress, message.network);
|
|
24
|
+
const permission = await getOne(accountIdentifier);
|
|
25
|
+
if (!permission) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return permission.scopes.includes(PermissionScope.OPERATION_REQUEST);
|
|
29
|
+
}
|
|
30
|
+
case BeaconMessageType.SignPayloadRequest: {
|
|
31
|
+
const permissions = await getAll();
|
|
32
|
+
const filteredPermissions = permissions.filter((permission) => permission.address === message.sourceAddress);
|
|
33
|
+
if (filteredPermissions.length === 0) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return filteredPermissions.some((permission) => permission.scopes.includes(PermissionScope.SIGN));
|
|
37
|
+
}
|
|
38
|
+
default:
|
|
39
|
+
throw new Error('Message not handled');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=PermissionValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionValidator.js","sourceRoot":"","sources":["../../../src/managers/PermissionValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,eAAe,EAEhB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,OAAsB,EACtB,MAA6D,EAC7D,MAAyC;QAEzC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;YACzC,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAA;YACb,CAAC;YACD,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,MAAM,iBAAiB,GAAW,MAAM,oBAAoB,CAC1D,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,OAAO,CAChB,CAAA;gBAED,MAAM,UAAU,GAAiC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAChF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;YACtE,CAAC;YACD,KAAK,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAuB,MAAM,MAAM,EAAE,CAAA;gBACtD,MAAM,mBAAmB,GAAuB,WAAW,CAAC,MAAM,CAChE,CAAC,UAA4B,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa,CAC/E,CAAA;gBAED,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAA4B,EAAE,EAAE,CAC/D,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CACjD,CAAA;YACH,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StorageKey, Storage, StorageKeyReturnType } from '@tezos-x/octez.connect-types';
|
|
2
|
+
/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */
|
|
3
|
+
export type ArrayElem<A> = A extends (infer Elem)[] ? Elem : never;
|
|
4
|
+
/**
|
|
5
|
+
* @internalapi
|
|
6
|
+
*
|
|
7
|
+
* The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.
|
|
8
|
+
*/
|
|
9
|
+
export declare class StorageManager<T extends StorageKey.ACCOUNTS | StorageKey.APP_METADATA_LIST | StorageKey.PERMISSION_LIST | StorageKey.TRANSPORT_P2P_PEERS_DAPP | StorageKey.TRANSPORT_P2P_PEERS_WALLET | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP> {
|
|
10
|
+
private readonly storage;
|
|
11
|
+
private readonly storageKey;
|
|
12
|
+
constructor(storage: Storage, storageKey: T);
|
|
13
|
+
getAll(): Promise<StorageKeyReturnType[T]>;
|
|
14
|
+
getOne(predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean): Promise<ArrayElem<StorageKeyReturnType[T]> | undefined>;
|
|
15
|
+
addOne(element: ArrayElem<StorageKeyReturnType[T]>, predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean, overwrite?: boolean): Promise<void>;
|
|
16
|
+
remove(predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean): Promise<void>;
|
|
17
|
+
removeAll(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* eslint-disable prefer-arrow/prefer-arrow-functions */
|
|
2
|
+
function fixArrayType(array) {
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
|
+
return array;
|
|
5
|
+
}
|
|
6
|
+
/* eslint-enable prefer-arrow/prefer-arrow-functions */
|
|
7
|
+
/**
|
|
8
|
+
* @internalapi
|
|
9
|
+
*
|
|
10
|
+
* The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.
|
|
11
|
+
*/
|
|
12
|
+
export class StorageManager {
|
|
13
|
+
storage;
|
|
14
|
+
storageKey;
|
|
15
|
+
constructor(storage, storageKey) {
|
|
16
|
+
this.storage = storage;
|
|
17
|
+
this.storageKey = storageKey;
|
|
18
|
+
}
|
|
19
|
+
async getAll() {
|
|
20
|
+
return (await this.storage.get(this.storageKey)) ?? [];
|
|
21
|
+
}
|
|
22
|
+
async getOne(predicate) {
|
|
23
|
+
const entities = await this.storage.get(this.storageKey);
|
|
24
|
+
return fixArrayType(entities).find(predicate);
|
|
25
|
+
}
|
|
26
|
+
async addOne(element, predicate, overwrite = true) {
|
|
27
|
+
const entities = await this.storage.get(this.storageKey);
|
|
28
|
+
if (!fixArrayType(entities).some(predicate)) {
|
|
29
|
+
fixArrayType(entities).push(element);
|
|
30
|
+
}
|
|
31
|
+
else if (overwrite) {
|
|
32
|
+
for (let i = 0; i < entities.length; i++) {
|
|
33
|
+
if (predicate(fixArrayType(entities)[i])) {
|
|
34
|
+
entities[i] = element;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return this.storage.set(this.storageKey, entities);
|
|
39
|
+
}
|
|
40
|
+
async remove(predicate) {
|
|
41
|
+
const entities = await this.storage.get(this.storageKey);
|
|
42
|
+
const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity));
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
return this.storage.set(this.storageKey, filteredEntities);
|
|
45
|
+
}
|
|
46
|
+
async removeAll() {
|
|
47
|
+
return this.storage.delete(this.storageKey);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=StorageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageManager.js","sourceRoot":"","sources":["../../../src/managers/StorageManager.ts"],"names":[],"mappings":"AAKA,wDAAwD;AACxD,SAAS,YAAY,CAAI,KAAQ;IAC/B,8DAA8D;IAC9D,OAAO,KAAY,CAAA;AACrB,CAAC;AACD,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAWR,OAAO,CAAS;IAChB,UAAU,CAAG;IAE9B,YAAY,OAAgB,EAAE,UAAa;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,SAAmE;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/C,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,OAA2C,EAC3C,SAAmE,EACnE,YAAqB,IAAI;QAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtC,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,SAAmE;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QAEtF,8DAA8D;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAuB,CAAC,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PermissionScope, AccountIdentifier, Origin, Network } from '@tezos-x/octez.connect-types';
|
|
2
|
+
export interface AccountInfoOld {
|
|
3
|
+
accountIdentifier: AccountIdentifier;
|
|
4
|
+
beaconId: string;
|
|
5
|
+
origin: {
|
|
6
|
+
type: Origin;
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
address: string;
|
|
10
|
+
pubkey: string;
|
|
11
|
+
network: Network;
|
|
12
|
+
scopes: PermissionScope[];
|
|
13
|
+
connectedAt: Date;
|
|
14
|
+
}
|
|
15
|
+
export interface P2PPairingRequestOld {
|
|
16
|
+
name: string;
|
|
17
|
+
pubKey: string;
|
|
18
|
+
relayServer: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const migrate_0_7_0: (storage: Storage) => Promise<void>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StorageKey } from '@tezos-x/octez.connect-types';
|
|
2
|
+
export const migrate_0_7_0 = async (storage) => {
|
|
3
|
+
// Migrate AccountInfo
|
|
4
|
+
const accountInfos = await storage.get(StorageKey.ACCOUNTS);
|
|
5
|
+
accountInfos.forEach((accountInfo) => {
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
const accountInfoOld = accountInfo;
|
|
8
|
+
// pubKey is now publicKey
|
|
9
|
+
if (accountInfoOld.pubkey) {
|
|
10
|
+
accountInfo.publicKey = accountInfoOld.pubkey;
|
|
11
|
+
delete accountInfoOld.pubkey;
|
|
12
|
+
}
|
|
13
|
+
// connectedAt is now a number
|
|
14
|
+
accountInfo.connectedAt = new Date(accountInfoOld.connectedAt).getTime();
|
|
15
|
+
});
|
|
16
|
+
await storage.set(StorageKey.ACCOUNTS, accountInfos);
|
|
17
|
+
// Migrate P2PPeers
|
|
18
|
+
const P2PPairingRequests = await storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP);
|
|
19
|
+
P2PPairingRequests.forEach((p2pPairInfo) => {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const P2PPairingRequestOld = p2pPairInfo;
|
|
22
|
+
// pubKey is now publicKey
|
|
23
|
+
if (P2PPairingRequestOld.pubKey) {
|
|
24
|
+
p2pPairInfo.publicKey = P2PPairingRequestOld.pubKey;
|
|
25
|
+
delete P2PPairingRequestOld.pubKey;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
await storage.set(StorageKey.TRANSPORT_P2P_PEERS_DAPP, P2PPairingRequests);
|
|
29
|
+
await storage.set(StorageKey.BEACON_SDK_VERSION, '0.7.0');
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=migrate-0.7.0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-0.7.0.js","sourceRoot":"","sources":["../../../src/migrations/migrate-0.7.0.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,UAAU,EAEX,MAAM,8BAA8B,CAAA;AAsBrC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAgB,EAAiB,EAAE;IACrE,sBAAsB;IACtB,MAAM,YAAY,GAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC1E,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACnC,8DAA8D;QAC9D,MAAM,cAAc,GAAmB,WAAkB,CAAA;QAEzD,0BAA0B;QAC1B,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,WAAW,CAAC,SAAS,GAAG,cAAc,CAAC,MAAM,CAAA;YAC7C,OAAQ,cAAsB,CAAC,MAAM,CAAA;QACvC,CAAC;QACD,8BAA8B;QAC9B,WAAW,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;IAC1E,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAEpD,mBAAmB;IACnB,MAAM,kBAAkB,GAAwB,MAAM,OAAO,CAAC,GAAG,CAC/D,UAAU,CAAC,wBAAwB,CACpC,CAAA;IACD,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACzC,8DAA8D;QAC9D,MAAM,oBAAoB,GAAyB,WAAkB,CAAA;QACrE,0BAA0B;QAC1B,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAChC,WAAW,CAAC,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAA;YACnD,OAAQ,oBAA4B,CAAC,MAAM,CAAA;QAC7C,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAA;IAE1E,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAC3D,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SDK_VERSION } from '../constants';
|
|
2
|
+
import { StorageKey } from '@tezos-x/octez.connect-types';
|
|
3
|
+
import { migrate_0_7_0 } from './migrate-0.7.0';
|
|
4
|
+
const migrations = [
|
|
5
|
+
['0.6.0', () => undefined],
|
|
6
|
+
['0.7.0', migrate_0_7_0]
|
|
7
|
+
];
|
|
8
|
+
// This is not used yet
|
|
9
|
+
export const migrate = async (storage) => {
|
|
10
|
+
const lastSdkVersion = await storage.get(StorageKey.BEACON_SDK_VERSION);
|
|
11
|
+
// Skip if we are on latest version
|
|
12
|
+
if (lastSdkVersion && lastSdkVersion === SDK_VERSION) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let addMigration = false;
|
|
16
|
+
for (const [version, migrationMethod] of migrations) {
|
|
17
|
+
if (version === lastSdkVersion) {
|
|
18
|
+
addMigration = true;
|
|
19
|
+
}
|
|
20
|
+
if (addMigration) {
|
|
21
|
+
try {
|
|
22
|
+
await migrationMethod(storage);
|
|
23
|
+
}
|
|
24
|
+
catch (migrationError) {
|
|
25
|
+
console.log(`Migration for ${version} failed!`, migrationError);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
await storage.set(StorageKey.BEACON_SDK_VERSION, SDK_VERSION);
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/migrations/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAW,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,UAAU,GAAyB;IACvC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;IAC1B,CAAC,OAAO,EAAE,aAAa,CAAC;CACzB,CAAA;AAED,uBAAuB;AACvB,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAiB,EAAE;IAC/D,MAAM,cAAc,GAAuB,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAE3F,mCAAmC;IACnC,IAAI,cAAc,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;QACrD,OAAM;IACR,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAA;IACxB,KAAK,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,UAAU,EAAE,CAAC;QACpD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,cAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,UAAU,EAAE,cAAc,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;AAC/D,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Storage, StorageKey, StorageKeyReturnType } from '@tezos-x/octez.connect-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internalapi
|
|
4
|
+
*
|
|
5
|
+
* A storage that can be used in chrome extensions
|
|
6
|
+
*/
|
|
7
|
+
export declare class ChromeStorage implements Storage {
|
|
8
|
+
static isSupported(): Promise<boolean>;
|
|
9
|
+
get<K extends StorageKey>(key: K): Promise<StorageKeyReturnType[K]>;
|
|
10
|
+
set<K extends StorageKey>(key: K, value: StorageKeyReturnType[K]): Promise<void>;
|
|
11
|
+
delete<K extends StorageKey>(key: K): Promise<void>;
|
|
12
|
+
subscribeToStorageChanged(_callback: (arg: {
|
|
13
|
+
eventType: 'storageCleared' | 'entryModified';
|
|
14
|
+
key: string | null;
|
|
15
|
+
oldValue: string | null;
|
|
16
|
+
newValue: string | null;
|
|
17
|
+
}) => {}): Promise<void>;
|
|
18
|
+
getPrefixedKey(key: string): string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { defaultValues } from '@tezos-x/octez.connect-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internalapi
|
|
4
|
+
*
|
|
5
|
+
* A storage that can be used in chrome extensions
|
|
6
|
+
*/
|
|
7
|
+
export class ChromeStorage {
|
|
8
|
+
static async isSupported() {
|
|
9
|
+
return (typeof window !== 'undefined' &&
|
|
10
|
+
typeof chrome !== 'undefined' &&
|
|
11
|
+
Boolean(chrome) &&
|
|
12
|
+
Boolean(chrome.runtime) &&
|
|
13
|
+
Boolean(chrome.runtime.id));
|
|
14
|
+
}
|
|
15
|
+
async get(key) {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
chrome.storage.local.get(null, (storageContent) => {
|
|
18
|
+
if (storageContent[key]) {
|
|
19
|
+
resolve(storageContent[key]);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (typeof defaultValues[key] === 'object') {
|
|
23
|
+
resolve(JSON.parse(JSON.stringify(defaultValues[key])));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
resolve(defaultValues[key]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async set(key, value) {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
chrome.storage.local.set({ [key]: value }, () => {
|
|
35
|
+
resolve();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async delete(key) {
|
|
40
|
+
return new Promise((resolve) => {
|
|
41
|
+
chrome.storage.local.set({ [key]: undefined }, () => {
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async subscribeToStorageChanged(_callback) {
|
|
47
|
+
// TODO
|
|
48
|
+
}
|
|
49
|
+
getPrefixedKey(key) {
|
|
50
|
+
return key;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ChromeStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChromeStorage.js","sourceRoot":"","sources":["../../../src/storage/ChromeStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEvG;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CAAC,WAAW;QAC7B,OAAO,CACL,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,CAAC,MAAM,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAC3B,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAuB,GAAM;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE;gBAChD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9B,CAAC;qBAAM,CAAC;oBACN,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC3C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBACzD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,GAAG,CAAuB,GAAM,EAAE,KAA8B;QAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC9C,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAuB,GAAM;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;gBAClD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACpC,SAKQ;QAER,OAAO;IACT,CAAC;IAEM,cAAc,CAAC,GAAW;QAC/B,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Storage, StorageKey, StorageKeyReturnType } from '@tezos-x/octez.connect-types';
|
|
2
|
+
export declare class IndexedDBStorage extends Storage {
|
|
3
|
+
private readonly dbName;
|
|
4
|
+
private readonly storeNames;
|
|
5
|
+
private db;
|
|
6
|
+
private isSupported;
|
|
7
|
+
/**
|
|
8
|
+
* @param dbName Name of the database.
|
|
9
|
+
* @param storeNames An array of object store names to create in the database.
|
|
10
|
+
* The first store in the array will be used as the default if none is specified.
|
|
11
|
+
*/
|
|
12
|
+
constructor(dbName?: string, storeNames?: string[]);
|
|
13
|
+
private isIndexedDBSupported;
|
|
14
|
+
private initDB;
|
|
15
|
+
/**
|
|
16
|
+
* Performs a transaction on the given object store.
|
|
17
|
+
* @param mode Transaction mode.
|
|
18
|
+
* @param storeName The name of the object store.
|
|
19
|
+
* @param operation The operation to perform with the object store.
|
|
20
|
+
*/
|
|
21
|
+
private transaction;
|
|
22
|
+
/**
|
|
23
|
+
* Retrieves a value by key from the specified object store.
|
|
24
|
+
* If no store is specified, the default (first in the list) is used.
|
|
25
|
+
*/
|
|
26
|
+
get<K extends StorageKey>(key: K, storeName?: string): Promise<StorageKeyReturnType[K]>;
|
|
27
|
+
get(key: string, storeName?: string): Promise<string | undefined>;
|
|
28
|
+
/**
|
|
29
|
+
* Stores a key/value pair in the specified object store.
|
|
30
|
+
*/
|
|
31
|
+
set<K extends StorageKey>(key: K, value: StorageKeyReturnType[K], storeName?: string): Promise<void>;
|
|
32
|
+
set(key: string, value: string, storeName?: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Deletes an entry by key from the specified object store.
|
|
35
|
+
*/
|
|
36
|
+
delete<K extends StorageKey>(key: K, storeName?: string): Promise<void>;
|
|
37
|
+
delete(key: string, storeName?: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves all values from the specified object store.
|
|
40
|
+
*/
|
|
41
|
+
getAll(storeName?: string): Promise<string[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Retrieves all keys from the specified object store.
|
|
44
|
+
*/
|
|
45
|
+
getAllKeys(storeName?: string): Promise<IDBValidKey[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Clears all entries from the specified object store.
|
|
48
|
+
*/
|
|
49
|
+
clearStore(storeName?: string): Promise<void>;
|
|
50
|
+
getPrefixedKey<K extends StorageKey>(key: K): string;
|
|
51
|
+
subscribeToStorageChanged(callback: (arg: {
|
|
52
|
+
eventType: 'storageCleared' | 'entryModified';
|
|
53
|
+
key: string | null;
|
|
54
|
+
oldValue: string | null;
|
|
55
|
+
newValue: string | null;
|
|
56
|
+
}) => {}): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Copies all key/value pairs from the source store into a target store.
|
|
59
|
+
* @param targetDBName Name of the target database.
|
|
60
|
+
* @param targetStoreName Name of the target object store.
|
|
61
|
+
* @param skipKeys Keys to skip.
|
|
62
|
+
* @param sourceStoreName (Optional) Source store name – defaults to the default store.
|
|
63
|
+
*/
|
|
64
|
+
fillStore(targetDBName: string, targetStoreName: string, skipKeys?: string[], sourceStoreName?: string): Promise<void>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { Storage } from '@tezos-x/octez.connect-types';
|
|
2
|
+
import { Logger } from '../utils/Logger';
|
|
3
|
+
const logger = new Logger('IndexedDBStorage');
|
|
4
|
+
export class IndexedDBStorage extends Storage {
|
|
5
|
+
dbName;
|
|
6
|
+
storeNames;
|
|
7
|
+
db = null;
|
|
8
|
+
isSupported = true;
|
|
9
|
+
/**
|
|
10
|
+
* @param dbName Name of the database.
|
|
11
|
+
* @param storeNames An array of object store names to create in the database.
|
|
12
|
+
* The first store in the array will be used as the default if none is specified.
|
|
13
|
+
*/
|
|
14
|
+
constructor(dbName = 'WALLET_CONNECT_V2_INDEXED_DB', storeNames = ['keyvaluestorage']) {
|
|
15
|
+
super();
|
|
16
|
+
this.dbName = dbName;
|
|
17
|
+
this.storeNames = storeNames;
|
|
18
|
+
this.initDB()
|
|
19
|
+
.then((db) => (this.db = db))
|
|
20
|
+
.catch((err) => logger.error(err.message));
|
|
21
|
+
}
|
|
22
|
+
isIndexedDBSupported() {
|
|
23
|
+
if (typeof window !== 'undefined' && 'indexedDB' in window) {
|
|
24
|
+
logger.log('isIndexedDBSupported', 'IndexedDB is supported in this browser.');
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
logger.error('isIndexedDBSupported', 'IndexedDB is not supported in this browser.');
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async initDB() {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
this.isSupported = this.isIndexedDBSupported();
|
|
35
|
+
if (!this.isSupported) {
|
|
36
|
+
reject('IndexedDB is not supported.');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const openRequest = indexedDB.open(this.dbName);
|
|
40
|
+
openRequest.onupgradeneeded = () => {
|
|
41
|
+
const db = openRequest.result;
|
|
42
|
+
// Create all required object stores
|
|
43
|
+
this.storeNames.forEach((storeName) => {
|
|
44
|
+
if (!db.objectStoreNames.contains(storeName)) {
|
|
45
|
+
db.createObjectStore(storeName);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
openRequest.onsuccess = (event) => {
|
|
50
|
+
const db = event.target.result;
|
|
51
|
+
// Check if all stores exist – if not, perform an upgrade.
|
|
52
|
+
const missingStores = this.storeNames.filter((storeName) => !db.objectStoreNames.contains(storeName));
|
|
53
|
+
if (missingStores.length > 0) {
|
|
54
|
+
db.close();
|
|
55
|
+
const newVersion = db.version + 1;
|
|
56
|
+
const upgradeRequest = indexedDB.open(this.dbName, newVersion);
|
|
57
|
+
upgradeRequest.onupgradeneeded = () => {
|
|
58
|
+
const upgradedDB = upgradeRequest.result;
|
|
59
|
+
missingStores.forEach((storeName) => {
|
|
60
|
+
if (!upgradedDB.objectStoreNames.contains(storeName)) {
|
|
61
|
+
upgradedDB.createObjectStore(storeName);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
upgradeRequest.onsuccess = (event) => {
|
|
66
|
+
this.db = event.target.result;
|
|
67
|
+
resolve(this.db);
|
|
68
|
+
};
|
|
69
|
+
upgradeRequest.onerror = (event) => reject(event.target.error);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.db = db;
|
|
73
|
+
resolve(db);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
openRequest.onerror = (event) => reject(event.target.error);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Performs a transaction on the given object store.
|
|
81
|
+
* @param mode Transaction mode.
|
|
82
|
+
* @param storeName The name of the object store.
|
|
83
|
+
* @param operation The operation to perform with the object store.
|
|
84
|
+
*/
|
|
85
|
+
async transaction(mode, storeName, operation) {
|
|
86
|
+
return new Promise((resolve, reject) => {
|
|
87
|
+
if (!this.isSupported) {
|
|
88
|
+
reject('IndexedDB is not supported.');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!this.db?.objectStoreNames.contains(storeName)) {
|
|
92
|
+
reject(`${storeName} not found. error: ${new Error().stack}`);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const transaction = this.db.transaction(storeName, mode);
|
|
96
|
+
const objectStore = transaction.objectStore(storeName);
|
|
97
|
+
operation(objectStore).then(resolve).catch(reject);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
get(key, storeName = this.storeNames[0]) {
|
|
101
|
+
return this.transaction('readonly', storeName, (store) => new Promise((resolve, reject) => {
|
|
102
|
+
const getRequest = store.get(key);
|
|
103
|
+
getRequest.onsuccess = () => resolve(getRequest.result);
|
|
104
|
+
getRequest.onerror = () => reject(getRequest.error);
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
set(key, value, storeName = this.storeNames[0]) {
|
|
108
|
+
return this.transaction('readwrite', storeName, (store) => new Promise((resolve, reject) => {
|
|
109
|
+
const putRequest = store.put(value, key);
|
|
110
|
+
putRequest.onsuccess = () => resolve();
|
|
111
|
+
putRequest.onerror = () => reject(putRequest.error);
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
delete(key, storeName = this.storeNames[0]) {
|
|
115
|
+
return this.transaction('readwrite', storeName, (store) => new Promise((resolve, reject) => {
|
|
116
|
+
const deleteRequest = store.delete(key);
|
|
117
|
+
deleteRequest.onsuccess = () => resolve();
|
|
118
|
+
deleteRequest.onerror = () => reject(deleteRequest.error);
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Retrieves all values from the specified object store.
|
|
123
|
+
*/
|
|
124
|
+
getAll(storeName) {
|
|
125
|
+
return this.transaction('readonly', storeName || this.storeNames[0], (store) => new Promise((resolve, reject) => {
|
|
126
|
+
const getAllRequest = store.getAll();
|
|
127
|
+
getAllRequest.onsuccess = () => resolve(getAllRequest.result);
|
|
128
|
+
getAllRequest.onerror = () => reject(getAllRequest.error);
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Retrieves all keys from the specified object store.
|
|
133
|
+
*/
|
|
134
|
+
getAllKeys(storeName) {
|
|
135
|
+
return this.transaction('readonly', storeName || this.storeNames[0], (store) => new Promise((resolve, reject) => {
|
|
136
|
+
const getAllKeysRequest = store.getAllKeys();
|
|
137
|
+
getAllKeysRequest.onsuccess = () => resolve(getAllKeysRequest.result);
|
|
138
|
+
getAllKeysRequest.onerror = () => reject(getAllKeysRequest.error);
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Clears all entries from the specified object store.
|
|
143
|
+
*/
|
|
144
|
+
clearStore(storeName) {
|
|
145
|
+
return this.transaction('readwrite', storeName || this.storeNames[0], (store) => new Promise((resolve, reject) => {
|
|
146
|
+
const clearRequest = store.clear();
|
|
147
|
+
clearRequest.onsuccess = () => resolve();
|
|
148
|
+
clearRequest.onerror = () => reject(clearRequest.error);
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
getPrefixedKey(key) {
|
|
152
|
+
logger.debug('getPrefixedKey', key);
|
|
153
|
+
throw new Error('Method not implemented.');
|
|
154
|
+
}
|
|
155
|
+
subscribeToStorageChanged(callback) {
|
|
156
|
+
logger.debug('subscribeToStorageEvent', callback);
|
|
157
|
+
throw new Error('Method not implemented.');
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Copies all key/value pairs from the source store into a target store.
|
|
161
|
+
* @param targetDBName Name of the target database.
|
|
162
|
+
* @param targetStoreName Name of the target object store.
|
|
163
|
+
* @param skipKeys Keys to skip.
|
|
164
|
+
* @param sourceStoreName (Optional) Source store name – defaults to the default store.
|
|
165
|
+
*/
|
|
166
|
+
async fillStore(targetDBName, targetStoreName, skipKeys = [], sourceStoreName = this.storeNames[0]) {
|
|
167
|
+
if (!this.isSupported) {
|
|
168
|
+
logger.error('fillStore', 'IndexedDB not supported.');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const targetDBRequest = indexedDB.open(targetDBName);
|
|
172
|
+
targetDBRequest.onerror = (event) => {
|
|
173
|
+
throw new Error(`Failed to open target database: ${event.target.error}`);
|
|
174
|
+
};
|
|
175
|
+
const targetDB = await new Promise((resolve, reject) => {
|
|
176
|
+
targetDBRequest.onsuccess = (event) => resolve(event.target.result);
|
|
177
|
+
targetDBRequest.onerror = (event) => reject(event.target.error);
|
|
178
|
+
});
|
|
179
|
+
// Copy items from the source store to the target store, skipping any specified keys.
|
|
180
|
+
await this.transaction('readonly', sourceStoreName, async (sourceStore) => {
|
|
181
|
+
const getAllRequest = sourceStore.getAll();
|
|
182
|
+
const getAllKeysRequest = sourceStore.getAllKeys();
|
|
183
|
+
getAllRequest.onsuccess = async () => {
|
|
184
|
+
getAllKeysRequest.onsuccess = async () => {
|
|
185
|
+
const items = getAllRequest.result;
|
|
186
|
+
const keys = getAllKeysRequest.result;
|
|
187
|
+
if (!targetDB.objectStoreNames.contains(targetStoreName)) {
|
|
188
|
+
logger.error(`${targetStoreName} not found. ${new Error().stack}`);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const targetTransaction = targetDB.transaction(targetStoreName, 'readwrite');
|
|
192
|
+
const targetStore = targetTransaction.objectStore(targetStoreName);
|
|
193
|
+
keys
|
|
194
|
+
.filter((key) => !skipKeys.includes(key.toString()))
|
|
195
|
+
.forEach((key, index) => {
|
|
196
|
+
targetStore.put(items[index], key);
|
|
197
|
+
});
|
|
198
|
+
targetTransaction.onerror = (event) => {
|
|
199
|
+
logger.error('Transaction error: ', event.target.error);
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
getAllKeysRequest.onerror = () => {
|
|
204
|
+
logger.error('Failed to getAllKeys from source:', getAllKeysRequest.error);
|
|
205
|
+
};
|
|
206
|
+
getAllRequest.onerror = () => {
|
|
207
|
+
logger.error('Failed to getAll from source:', getAllRequest.error);
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=IndexedDBStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDBStorage.js","sourceRoot":"","sources":["../../../src/storage/IndexedDBStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Storage, StorageKey, StorageKeyReturnType } from '@tezos-x/octez.connect-types';
|
|
2
|
+
/**
|
|
3
|
+
* @internalapi
|
|
4
|
+
*
|
|
5
|
+
* A storage that can be used in the browser
|
|
6
|
+
*/
|
|
7
|
+
export declare class LocalStorage extends Storage {
|
|
8
|
+
private readonly prefix?;
|
|
9
|
+
constructor(prefix?: string | undefined);
|
|
10
|
+
static isSupported(): Promise<boolean>;
|
|
11
|
+
get<K extends StorageKey>(key: K): Promise<StorageKeyReturnType[K]>;
|
|
12
|
+
set<K extends StorageKey>(key: K, value: StorageKeyReturnType[K]): Promise<void>;
|
|
13
|
+
delete<K extends StorageKey>(key: K): Promise<void>;
|
|
14
|
+
subscribeToStorageChanged(callback: (arg: {
|
|
15
|
+
eventType: 'storageCleared' | 'entryModified';
|
|
16
|
+
key: string | null;
|
|
17
|
+
oldValue: string | null;
|
|
18
|
+
newValue: string | null;
|
|
19
|
+
}) => {}): Promise<void>;
|
|
20
|
+
getPrefixedKey(key: string): string;
|
|
21
|
+
}
|