@arkade-os/sdk 0.3.13 → 0.4.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +586 -54
- package/dist/cjs/asset/assetGroup.js +141 -0
- package/dist/cjs/asset/assetId.js +88 -0
- package/dist/cjs/asset/assetInput.js +204 -0
- package/dist/cjs/asset/assetOutput.js +159 -0
- package/dist/cjs/asset/assetRef.js +82 -0
- package/dist/cjs/asset/index.js +24 -0
- package/dist/cjs/asset/metadata.js +172 -0
- package/dist/cjs/asset/packet.js +164 -0
- package/dist/cjs/asset/types.js +25 -0
- package/dist/cjs/asset/utils.js +105 -0
- package/dist/cjs/bip322/index.js +270 -0
- package/dist/cjs/contracts/arkcontract.js +148 -0
- package/dist/cjs/contracts/contractManager.js +436 -0
- package/dist/cjs/contracts/contractWatcher.js +567 -0
- package/dist/cjs/contracts/handlers/default.js +85 -0
- package/dist/cjs/contracts/handlers/delegate.js +89 -0
- package/dist/cjs/contracts/handlers/helpers.js +105 -0
- package/dist/cjs/contracts/handlers/index.js +19 -0
- package/dist/cjs/contracts/handlers/registry.js +89 -0
- package/dist/cjs/contracts/handlers/vhtlc.js +193 -0
- package/dist/cjs/contracts/index.js +41 -0
- package/dist/cjs/contracts/types.js +2 -0
- package/dist/cjs/forfeit.js +12 -8
- package/dist/cjs/identity/index.js +1 -0
- package/dist/cjs/identity/seedIdentity.js +255 -0
- package/dist/cjs/index.js +72 -14
- package/dist/cjs/intent/index.js +47 -11
- package/dist/cjs/providers/ark.js +7 -0
- package/dist/cjs/providers/delegator.js +66 -0
- package/dist/cjs/providers/expoIndexer.js +5 -0
- package/dist/cjs/providers/indexer.js +68 -1
- package/dist/cjs/providers/utils.js +1 -0
- package/dist/cjs/repositories/contractRepository.js +0 -103
- package/dist/cjs/repositories/inMemory/contractRepository.js +55 -0
- package/dist/cjs/repositories/inMemory/walletRepository.js +80 -0
- package/dist/cjs/repositories/index.js +16 -0
- package/dist/cjs/repositories/indexedDB/contractRepository.js +187 -0
- package/dist/cjs/repositories/indexedDB/db.js +19 -0
- package/dist/cjs/repositories/indexedDB/manager.js +97 -0
- package/dist/cjs/repositories/indexedDB/schema.js +159 -0
- package/dist/cjs/repositories/indexedDB/walletRepository.js +338 -0
- package/dist/cjs/repositories/indexedDB/websqlAdapter.js +144 -0
- package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +127 -0
- package/dist/cjs/repositories/migrations/fromStorageAdapter.js +66 -0
- package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +180 -0
- package/dist/cjs/repositories/realm/contractRepository.js +120 -0
- package/dist/cjs/repositories/realm/index.js +9 -0
- package/dist/cjs/repositories/realm/schemas.js +108 -0
- package/dist/cjs/repositories/realm/types.js +7 -0
- package/dist/cjs/repositories/realm/walletRepository.js +273 -0
- package/dist/cjs/repositories/serialization.js +49 -0
- package/dist/cjs/repositories/sqlite/contractRepository.js +139 -0
- package/dist/cjs/repositories/sqlite/index.js +7 -0
- package/dist/cjs/repositories/sqlite/types.js +2 -0
- package/dist/cjs/repositories/sqlite/walletRepository.js +328 -0
- package/dist/cjs/repositories/walletRepository.js +0 -169
- package/dist/cjs/script/base.js +54 -0
- package/dist/cjs/script/delegate.js +49 -0
- package/dist/cjs/storage/asyncStorage.js +4 -1
- package/dist/cjs/storage/fileSystem.js +3 -0
- package/dist/cjs/storage/inMemory.js +3 -0
- package/dist/cjs/storage/indexedDB.js +5 -1
- package/dist/cjs/storage/localStorage.js +3 -0
- package/dist/cjs/utils/arkTransaction.js +16 -0
- package/dist/cjs/utils/transactionHistory.js +50 -0
- package/dist/cjs/wallet/asset-manager.js +338 -0
- package/dist/cjs/wallet/asset.js +117 -0
- package/dist/cjs/wallet/batch.js +1 -1
- package/dist/cjs/wallet/delegator.js +235 -0
- package/dist/cjs/wallet/expo/background.js +133 -0
- package/dist/cjs/wallet/expo/index.js +9 -0
- package/dist/cjs/wallet/expo/wallet.js +231 -0
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +568 -0
- package/dist/cjs/wallet/serviceWorker/wallet.js +383 -102
- package/dist/cjs/wallet/utils.js +58 -0
- package/dist/cjs/wallet/validation.js +151 -0
- package/dist/cjs/wallet/vtxo-manager.js +8 -1
- package/dist/cjs/wallet/wallet.js +702 -260
- package/dist/cjs/worker/browser/service-worker-manager.js +82 -0
- package/dist/cjs/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
- package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +78 -0
- package/dist/cjs/worker/expo/index.js +12 -0
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +61 -0
- package/dist/cjs/worker/expo/processors/index.js +6 -0
- package/dist/cjs/worker/expo/taskQueue.js +41 -0
- package/dist/cjs/worker/expo/taskRunner.js +57 -0
- package/dist/cjs/worker/messageBus.js +252 -0
- package/dist/esm/asset/assetGroup.js +137 -0
- package/dist/esm/asset/assetId.js +84 -0
- package/dist/esm/asset/assetInput.js +199 -0
- package/dist/esm/asset/assetOutput.js +154 -0
- package/dist/esm/asset/assetRef.js +78 -0
- package/dist/esm/asset/index.js +8 -0
- package/dist/esm/asset/metadata.js +167 -0
- package/dist/esm/asset/packet.js +159 -0
- package/dist/esm/asset/types.js +22 -0
- package/dist/esm/asset/utils.js +99 -0
- package/dist/esm/bip322/index.js +267 -0
- package/dist/esm/contracts/arkcontract.js +141 -0
- package/dist/esm/contracts/contractManager.js +432 -0
- package/dist/esm/contracts/contractWatcher.js +563 -0
- package/dist/esm/contracts/handlers/default.js +82 -0
- package/dist/esm/contracts/handlers/delegate.js +86 -0
- package/dist/esm/contracts/handlers/helpers.js +66 -0
- package/dist/esm/contracts/handlers/index.js +12 -0
- package/dist/esm/contracts/handlers/registry.js +86 -0
- package/dist/esm/contracts/handlers/vhtlc.js +190 -0
- package/dist/esm/contracts/index.js +13 -0
- package/dist/esm/contracts/types.js +1 -0
- package/dist/esm/forfeit.js +11 -8
- package/dist/esm/identity/index.js +1 -0
- package/dist/esm/identity/seedIdentity.js +249 -0
- package/dist/esm/index.js +28 -15
- package/dist/esm/intent/index.js +44 -9
- package/dist/esm/providers/ark.js +7 -0
- package/dist/esm/providers/delegator.js +62 -0
- package/dist/esm/providers/expoIndexer.js +5 -0
- package/dist/esm/providers/indexer.js +68 -1
- package/dist/esm/providers/utils.js +1 -0
- package/dist/esm/repositories/contractRepository.js +1 -101
- package/dist/esm/repositories/inMemory/contractRepository.js +51 -0
- package/dist/esm/repositories/inMemory/walletRepository.js +76 -0
- package/dist/esm/repositories/index.js +8 -0
- package/dist/esm/repositories/indexedDB/contractRepository.js +183 -0
- package/dist/esm/repositories/indexedDB/db.js +4 -0
- package/dist/esm/repositories/indexedDB/manager.js +92 -0
- package/dist/esm/repositories/indexedDB/schema.js +155 -0
- package/dist/esm/repositories/indexedDB/walletRepository.js +334 -0
- package/dist/esm/repositories/indexedDB/websqlAdapter.js +138 -0
- package/dist/esm/repositories/migrations/contractRepositoryImpl.js +121 -0
- package/dist/esm/repositories/migrations/fromStorageAdapter.js +58 -0
- package/dist/esm/repositories/migrations/walletRepositoryImpl.js +176 -0
- package/dist/esm/repositories/realm/contractRepository.js +116 -0
- package/dist/esm/repositories/realm/index.js +3 -0
- package/dist/esm/repositories/realm/schemas.js +105 -0
- package/dist/esm/repositories/realm/types.js +6 -0
- package/dist/esm/repositories/realm/walletRepository.js +269 -0
- package/dist/esm/repositories/serialization.js +40 -0
- package/dist/esm/repositories/sqlite/contractRepository.js +135 -0
- package/dist/esm/repositories/sqlite/index.js +2 -0
- package/dist/esm/repositories/sqlite/types.js +1 -0
- package/dist/esm/repositories/sqlite/walletRepository.js +324 -0
- package/dist/esm/repositories/walletRepository.js +1 -167
- package/dist/esm/script/base.js +21 -1
- package/dist/esm/script/delegate.js +46 -0
- package/dist/esm/storage/asyncStorage.js +4 -1
- package/dist/esm/storage/fileSystem.js +3 -0
- package/dist/esm/storage/inMemory.js +3 -0
- package/dist/esm/storage/indexedDB.js +5 -1
- package/dist/esm/storage/localStorage.js +3 -0
- package/dist/esm/utils/arkTransaction.js +15 -0
- package/dist/esm/utils/transactionHistory.js +50 -0
- package/dist/esm/wallet/asset-manager.js +333 -0
- package/dist/esm/wallet/asset.js +111 -0
- package/dist/esm/wallet/batch.js +1 -1
- package/dist/esm/wallet/delegator.js +231 -0
- package/dist/esm/wallet/expo/background.js +128 -0
- package/dist/esm/wallet/expo/index.js +2 -0
- package/dist/esm/wallet/expo/wallet.js +194 -0
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +564 -0
- package/dist/esm/wallet/serviceWorker/wallet.js +382 -101
- package/dist/esm/wallet/utils.js +54 -0
- package/dist/esm/wallet/validation.js +139 -0
- package/dist/esm/wallet/vtxo-manager.js +8 -1
- package/dist/esm/wallet/wallet.js +704 -229
- package/dist/esm/worker/browser/service-worker-manager.js +76 -0
- package/dist/esm/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
- package/dist/esm/worker/expo/asyncStorageTaskQueue.js +74 -0
- package/dist/esm/worker/expo/index.js +4 -0
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +58 -0
- package/dist/esm/worker/expo/processors/index.js +1 -0
- package/dist/esm/worker/expo/taskQueue.js +37 -0
- package/dist/esm/worker/expo/taskRunner.js +54 -0
- package/dist/esm/worker/messageBus.js +248 -0
- package/dist/types/asset/assetGroup.d.ts +28 -0
- package/dist/types/asset/assetId.d.ts +19 -0
- package/dist/types/asset/assetInput.d.ts +46 -0
- package/dist/types/asset/assetOutput.d.ts +39 -0
- package/dist/types/asset/assetRef.d.ts +25 -0
- package/dist/types/asset/index.d.ts +8 -0
- package/dist/types/asset/metadata.d.ts +37 -0
- package/dist/types/asset/packet.d.ts +27 -0
- package/dist/types/asset/types.d.ts +18 -0
- package/dist/types/asset/utils.d.ts +21 -0
- package/dist/types/bip322/index.d.ts +55 -0
- package/dist/types/contracts/arkcontract.d.ts +101 -0
- package/dist/types/contracts/contractManager.d.ts +331 -0
- package/dist/types/contracts/contractWatcher.d.ts +192 -0
- package/dist/types/contracts/handlers/default.d.ts +19 -0
- package/dist/types/contracts/handlers/delegate.d.ts +21 -0
- package/dist/types/contracts/handlers/helpers.d.ts +18 -0
- package/dist/types/contracts/handlers/index.d.ts +7 -0
- package/dist/types/contracts/handlers/registry.d.ts +65 -0
- package/dist/types/contracts/handlers/vhtlc.d.ts +32 -0
- package/dist/types/contracts/index.d.ts +14 -0
- package/dist/types/contracts/types.d.ts +222 -0
- package/dist/types/forfeit.d.ts +2 -1
- package/dist/types/identity/index.d.ts +1 -0
- package/dist/types/identity/seedIdentity.d.ts +128 -0
- package/dist/types/index.d.ts +22 -12
- package/dist/types/intent/index.d.ts +15 -1
- package/dist/types/providers/ark.d.ts +11 -2
- package/dist/types/providers/delegator.d.ts +29 -0
- package/dist/types/providers/indexer.d.ts +11 -1
- package/dist/types/repositories/contractRepository.d.ts +30 -19
- package/dist/types/repositories/inMemory/contractRepository.d.ts +17 -0
- package/dist/types/repositories/inMemory/walletRepository.d.ts +26 -0
- package/dist/types/repositories/index.d.ts +7 -0
- package/dist/types/repositories/indexedDB/contractRepository.d.ts +21 -0
- package/dist/types/repositories/indexedDB/db.d.ts +4 -0
- package/dist/types/repositories/indexedDB/manager.d.ts +22 -0
- package/dist/types/repositories/indexedDB/schema.d.ts +8 -0
- package/dist/types/repositories/indexedDB/walletRepository.d.ts +25 -0
- package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +49 -0
- package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +24 -0
- package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +19 -0
- package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +27 -0
- package/dist/types/repositories/realm/contractRepository.d.ts +24 -0
- package/dist/types/repositories/realm/index.d.ts +4 -0
- package/dist/types/repositories/realm/schemas.d.ts +208 -0
- package/dist/types/repositories/realm/types.d.ts +16 -0
- package/dist/types/repositories/realm/walletRepository.d.ts +31 -0
- package/dist/types/repositories/serialization.d.ts +40 -0
- package/dist/types/repositories/sqlite/contractRepository.d.ts +33 -0
- package/dist/types/repositories/sqlite/index.d.ts +3 -0
- package/dist/types/repositories/sqlite/types.d.ts +18 -0
- package/dist/types/repositories/sqlite/walletRepository.d.ts +40 -0
- package/dist/types/repositories/walletRepository.d.ts +13 -24
- package/dist/types/script/base.d.ts +1 -0
- package/dist/types/script/delegate.d.ts +36 -0
- package/dist/types/storage/asyncStorage.d.ts +4 -0
- package/dist/types/storage/fileSystem.d.ts +3 -0
- package/dist/types/storage/inMemory.d.ts +3 -0
- package/dist/types/storage/index.d.ts +3 -0
- package/dist/types/storage/indexedDB.d.ts +3 -0
- package/dist/types/storage/localStorage.d.ts +3 -0
- package/dist/types/utils/arkTransaction.d.ts +6 -0
- package/dist/types/wallet/asset-manager.d.ts +78 -0
- package/dist/types/wallet/asset.d.ts +21 -0
- package/dist/types/wallet/batch.d.ts +1 -1
- package/dist/types/wallet/delegator.d.ts +24 -0
- package/dist/types/wallet/expo/background.d.ts +66 -0
- package/dist/types/wallet/expo/index.d.ts +4 -0
- package/dist/types/wallet/expo/wallet.d.ts +97 -0
- package/dist/types/wallet/index.d.ts +75 -2
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +366 -0
- package/dist/types/wallet/serviceWorker/wallet.d.ts +20 -11
- package/dist/types/wallet/utils.d.ts +12 -1
- package/dist/types/wallet/validation.d.ts +24 -0
- package/dist/types/wallet/wallet.d.ts +111 -17
- package/dist/types/worker/browser/service-worker-manager.d.ts +21 -0
- package/dist/types/{wallet/serviceWorker → worker/browser}/utils.d.ts +2 -1
- package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +46 -0
- package/dist/types/worker/expo/index.d.ts +7 -0
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +14 -0
- package/dist/types/worker/expo/processors/index.d.ts +1 -0
- package/dist/types/worker/expo/taskQueue.d.ts +50 -0
- package/dist/types/worker/expo/taskRunner.d.ts +42 -0
- package/dist/types/worker/messageBus.d.ts +109 -0
- package/package.json +69 -11
- package/dist/cjs/wallet/serviceWorker/request.js +0 -78
- package/dist/cjs/wallet/serviceWorker/response.js +0 -222
- package/dist/cjs/wallet/serviceWorker/worker.js +0 -655
- package/dist/esm/wallet/serviceWorker/request.js +0 -75
- package/dist/esm/wallet/serviceWorker/response.js +0 -219
- package/dist/esm/wallet/serviceWorker/worker.js +0 -651
- package/dist/types/wallet/serviceWorker/request.d.ts +0 -74
- package/dist/types/wallet/serviceWorker/response.d.ts +0 -123
- package/dist/types/wallet/serviceWorker/worker.d.ts +0 -53
|
@@ -1,655 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/// <reference lib="webworker" />
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Worker = void 0;
|
|
5
|
-
const singleKey_1 = require("../../identity/singleKey");
|
|
6
|
-
const __1 = require("..");
|
|
7
|
-
const wallet_1 = require("../wallet");
|
|
8
|
-
const request_1 = require("./request");
|
|
9
|
-
const response_1 = require("./response");
|
|
10
|
-
const ark_1 = require("../../providers/ark");
|
|
11
|
-
const indexer_1 = require("../../providers/indexer");
|
|
12
|
-
const base_1 = require("@scure/base");
|
|
13
|
-
const indexedDB_1 = require("../../storage/indexedDB");
|
|
14
|
-
const walletRepository_1 = require("../../repositories/walletRepository");
|
|
15
|
-
const utils_1 = require("../utils");
|
|
16
|
-
const utils_2 = require("./utils");
|
|
17
|
-
class ReadonlyHandler {
|
|
18
|
-
constructor(wallet) {
|
|
19
|
-
this.wallet = wallet;
|
|
20
|
-
}
|
|
21
|
-
get offchainTapscript() {
|
|
22
|
-
return this.wallet.offchainTapscript;
|
|
23
|
-
}
|
|
24
|
-
get boardingTapscript() {
|
|
25
|
-
return this.wallet.boardingTapscript;
|
|
26
|
-
}
|
|
27
|
-
get onchainProvider() {
|
|
28
|
-
return this.wallet.onchainProvider;
|
|
29
|
-
}
|
|
30
|
-
get dustAmount() {
|
|
31
|
-
return this.wallet.dustAmount;
|
|
32
|
-
}
|
|
33
|
-
get identity() {
|
|
34
|
-
return this.wallet.identity;
|
|
35
|
-
}
|
|
36
|
-
notifyIncomingFunds(...args) {
|
|
37
|
-
return this.wallet.notifyIncomingFunds(...args);
|
|
38
|
-
}
|
|
39
|
-
getAddress() {
|
|
40
|
-
return this.wallet.getAddress();
|
|
41
|
-
}
|
|
42
|
-
getBoardingAddress() {
|
|
43
|
-
return this.wallet.getBoardingAddress();
|
|
44
|
-
}
|
|
45
|
-
getTransactionHistory() {
|
|
46
|
-
return this.wallet.getTransactionHistory();
|
|
47
|
-
}
|
|
48
|
-
async handleReload(_) {
|
|
49
|
-
const pending = await this.wallet.fetchPendingTxs();
|
|
50
|
-
return { pending, finalized: [] };
|
|
51
|
-
}
|
|
52
|
-
async handleSettle(..._) {
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
async handleSendBitcoin(..._) {
|
|
56
|
-
return undefined;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
class Handler extends ReadonlyHandler {
|
|
60
|
-
constructor(wallet) {
|
|
61
|
-
super(wallet);
|
|
62
|
-
this.wallet = wallet;
|
|
63
|
-
}
|
|
64
|
-
async handleReload(vtxos) {
|
|
65
|
-
return this.wallet.finalizePendingTxs(vtxos.filter((vtxo) => vtxo.virtualStatus.state !== "swept" &&
|
|
66
|
-
vtxo.virtualStatus.state !== "settled"));
|
|
67
|
-
}
|
|
68
|
-
async handleSettle(...args) {
|
|
69
|
-
return this.wallet.settle(...args);
|
|
70
|
-
}
|
|
71
|
-
async handleSendBitcoin(...args) {
|
|
72
|
-
return this.wallet.sendBitcoin(...args);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Worker is a class letting to interact with ServiceWorkerWallet and ServiceWorkerReadonlyWallet from
|
|
77
|
-
* the client; it aims to be run in a service worker context.
|
|
78
|
-
*
|
|
79
|
-
* The messages requiring a Wallet rather than a ReadonlyWallet result in no-op
|
|
80
|
-
* without errors.
|
|
81
|
-
*/
|
|
82
|
-
class Worker {
|
|
83
|
-
constructor(dbName = utils_2.DEFAULT_DB_NAME, dbVersion = 1, messageCallback = () => { }) {
|
|
84
|
-
this.dbName = dbName;
|
|
85
|
-
this.dbVersion = dbVersion;
|
|
86
|
-
this.messageCallback = messageCallback;
|
|
87
|
-
this.storage = new indexedDB_1.IndexedDBStorageAdapter(dbName, dbVersion);
|
|
88
|
-
this.walletRepository = new walletRepository_1.WalletRepositoryImpl(this.storage);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get spendable vtxos for the current wallet address
|
|
92
|
-
*/
|
|
93
|
-
async getSpendableVtxos() {
|
|
94
|
-
if (!this.handler)
|
|
95
|
-
return [];
|
|
96
|
-
const address = await this.handler.getAddress();
|
|
97
|
-
const allVtxos = await this.walletRepository.getVtxos(address);
|
|
98
|
-
return allVtxos.filter(__1.isSpendable);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Get swept vtxos for the current wallet address
|
|
102
|
-
*/
|
|
103
|
-
async getSweptVtxos() {
|
|
104
|
-
if (!this.handler)
|
|
105
|
-
return [];
|
|
106
|
-
const address = await this.handler.getAddress();
|
|
107
|
-
const allVtxos = await this.walletRepository.getVtxos(address);
|
|
108
|
-
return allVtxos.filter((vtxo) => vtxo.virtualStatus.state === "swept");
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Get all vtxos categorized by type
|
|
112
|
-
*/
|
|
113
|
-
async getAllVtxos() {
|
|
114
|
-
if (!this.handler)
|
|
115
|
-
return { spendable: [], spent: [] };
|
|
116
|
-
const address = await this.handler.getAddress();
|
|
117
|
-
const allVtxos = await this.walletRepository.getVtxos(address);
|
|
118
|
-
return {
|
|
119
|
-
spendable: allVtxos.filter(__1.isSpendable),
|
|
120
|
-
spent: allVtxos.filter((vtxo) => !(0, __1.isSpendable)(vtxo)),
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get all boarding utxos from wallet repository
|
|
125
|
-
*/
|
|
126
|
-
async getAllBoardingUtxos() {
|
|
127
|
-
if (!this.handler)
|
|
128
|
-
return [];
|
|
129
|
-
const address = await this.handler.getBoardingAddress();
|
|
130
|
-
return await this.walletRepository.getUtxos(address);
|
|
131
|
-
}
|
|
132
|
-
async start(withServiceWorkerUpdate = true) {
|
|
133
|
-
self.addEventListener("message", async (event) => {
|
|
134
|
-
await this.handleMessage(event);
|
|
135
|
-
});
|
|
136
|
-
if (withServiceWorkerUpdate) {
|
|
137
|
-
// activate service worker immediately
|
|
138
|
-
self.addEventListener("install", () => {
|
|
139
|
-
self.skipWaiting();
|
|
140
|
-
});
|
|
141
|
-
// take control of clients immediately
|
|
142
|
-
self.addEventListener("activate", () => {
|
|
143
|
-
self.clients.claim();
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async clear() {
|
|
148
|
-
if (this.incomingFundsSubscription)
|
|
149
|
-
this.incomingFundsSubscription();
|
|
150
|
-
// Clear storage - this replaces vtxoRepository.close()
|
|
151
|
-
await this.storage.clear();
|
|
152
|
-
// Reset in-memory caches by recreating the repository
|
|
153
|
-
this.walletRepository = new walletRepository_1.WalletRepositoryImpl(this.storage);
|
|
154
|
-
this.handler = undefined;
|
|
155
|
-
this.arkProvider = undefined;
|
|
156
|
-
this.indexerProvider = undefined;
|
|
157
|
-
}
|
|
158
|
-
async reload() {
|
|
159
|
-
await this.onWalletInitialized();
|
|
160
|
-
}
|
|
161
|
-
async onWalletInitialized() {
|
|
162
|
-
if (!this.handler ||
|
|
163
|
-
!this.arkProvider ||
|
|
164
|
-
!this.indexerProvider ||
|
|
165
|
-
!this.handler.offchainTapscript ||
|
|
166
|
-
!this.handler.boardingTapscript) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
// Get public key script and set the initial vtxos state
|
|
170
|
-
const script = base_1.hex.encode(this.handler.offchainTapscript.pkScript);
|
|
171
|
-
const response = await this.indexerProvider.getVtxos({
|
|
172
|
-
scripts: [script],
|
|
173
|
-
});
|
|
174
|
-
const vtxos = response.vtxos.map((vtxo) => (0, utils_1.extendVirtualCoin)(this.handler, vtxo));
|
|
175
|
-
try {
|
|
176
|
-
// recover pending transactions if possible
|
|
177
|
-
const { pending, finalized } = await this.handler.handleReload(vtxos);
|
|
178
|
-
console.info(`Recovered ${finalized.length}/${pending.length} pending transactions: ${finalized.join(", ")}`);
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
console.error("Error recovering pending transactions:", error);
|
|
182
|
-
}
|
|
183
|
-
// Get wallet address and save vtxos using unified repository
|
|
184
|
-
const address = await this.handler.getAddress();
|
|
185
|
-
await this.walletRepository.saveVtxos(address, vtxos);
|
|
186
|
-
// Fetch boarding utxos and save using unified repository
|
|
187
|
-
const boardingAddress = await this.handler.getBoardingAddress();
|
|
188
|
-
const coins = await this.handler.onchainProvider.getCoins(boardingAddress);
|
|
189
|
-
await this.walletRepository.saveUtxos(boardingAddress, coins.map((utxo) => (0, utils_1.extendCoin)(this.handler, utxo)));
|
|
190
|
-
// Get transaction history to cache boarding txs
|
|
191
|
-
const txs = await this.handler.getTransactionHistory();
|
|
192
|
-
if (txs)
|
|
193
|
-
await this.walletRepository.saveTransactions(address, txs);
|
|
194
|
-
// unsubscribe previous subscription if any
|
|
195
|
-
if (this.incomingFundsSubscription)
|
|
196
|
-
this.incomingFundsSubscription();
|
|
197
|
-
// subscribe for incoming funds and notify all clients when new funds arrive
|
|
198
|
-
this.incomingFundsSubscription = await this.handler.notifyIncomingFunds(async (funds) => {
|
|
199
|
-
if (funds.type === "vtxo") {
|
|
200
|
-
const newVtxos = funds.newVtxos.length > 0
|
|
201
|
-
? funds.newVtxos.map((vtxo) => (0, utils_1.extendVirtualCoin)(this.handler, vtxo))
|
|
202
|
-
: [];
|
|
203
|
-
const spentVtxos = funds.spentVtxos.length > 0
|
|
204
|
-
? funds.spentVtxos.map((vtxo) => (0, utils_1.extendVirtualCoin)(this.handler, vtxo))
|
|
205
|
-
: [];
|
|
206
|
-
if ([...newVtxos, ...spentVtxos].length === 0)
|
|
207
|
-
return;
|
|
208
|
-
// save vtxos using unified repository
|
|
209
|
-
await this.walletRepository.saveVtxos(address, [
|
|
210
|
-
...newVtxos,
|
|
211
|
-
...spentVtxos,
|
|
212
|
-
]);
|
|
213
|
-
// notify all clients about the vtxo update
|
|
214
|
-
await this.sendMessageToAllClients(response_1.Response.vtxoUpdate(newVtxos, spentVtxos));
|
|
215
|
-
}
|
|
216
|
-
if (funds.type === "utxo") {
|
|
217
|
-
const utxos = funds.coins.map((utxo) => (0, utils_1.extendCoin)(this.handler, utxo));
|
|
218
|
-
const boardingAddress = await this.handler?.getBoardingAddress();
|
|
219
|
-
// save utxos using unified repository
|
|
220
|
-
await this.walletRepository.clearUtxos(boardingAddress);
|
|
221
|
-
await this.walletRepository.saveUtxos(boardingAddress, utxos);
|
|
222
|
-
// notify all clients about the utxo update
|
|
223
|
-
await this.sendMessageToAllClients(response_1.Response.utxoUpdate(utxos));
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
async handleClear(event) {
|
|
228
|
-
await this.clear();
|
|
229
|
-
if (request_1.Request.isBase(event.data)) {
|
|
230
|
-
event.source?.postMessage(response_1.Response.clearResponse(event.data.id, true));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
async handleInitWallet(event) {
|
|
234
|
-
if (!request_1.Request.isInitWallet(event.data)) {
|
|
235
|
-
console.error("Invalid INIT_WALLET message format", event.data);
|
|
236
|
-
event.source?.postMessage(response_1.Response.error(event.data.id, "Invalid INIT_WALLET message format"));
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
const message = event.data;
|
|
240
|
-
const { arkServerPublicKey, arkServerUrl } = message;
|
|
241
|
-
this.arkProvider = new ark_1.RestArkProvider(arkServerUrl);
|
|
242
|
-
this.indexerProvider = new indexer_1.RestIndexerProvider(arkServerUrl);
|
|
243
|
-
try {
|
|
244
|
-
if ("privateKey" in message.key &&
|
|
245
|
-
typeof message.key.privateKey === "string") {
|
|
246
|
-
const { key: { privateKey }, } = message;
|
|
247
|
-
const identity = singleKey_1.SingleKey.fromHex(privateKey);
|
|
248
|
-
const wallet = await wallet_1.Wallet.create({
|
|
249
|
-
identity,
|
|
250
|
-
arkServerUrl,
|
|
251
|
-
arkServerPublicKey,
|
|
252
|
-
storage: this.storage, // Use unified storage for wallet too
|
|
253
|
-
});
|
|
254
|
-
this.handler = new Handler(wallet);
|
|
255
|
-
}
|
|
256
|
-
else if ("publicKey" in message.key &&
|
|
257
|
-
typeof message.key.publicKey === "string") {
|
|
258
|
-
const { key: { publicKey }, } = message;
|
|
259
|
-
const identity = singleKey_1.ReadonlySingleKey.fromPublicKey(base_1.hex.decode(publicKey));
|
|
260
|
-
const wallet = await wallet_1.ReadonlyWallet.create({
|
|
261
|
-
identity,
|
|
262
|
-
arkServerUrl,
|
|
263
|
-
arkServerPublicKey,
|
|
264
|
-
storage: this.storage, // Use unified storage for wallet too
|
|
265
|
-
});
|
|
266
|
-
this.handler = new ReadonlyHandler(wallet);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
const err = "Missing privateKey or publicKey in key object";
|
|
270
|
-
event.source?.postMessage(response_1.Response.error(message.id, err));
|
|
271
|
-
console.error(err);
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
catch (error) {
|
|
276
|
-
console.error("Error initializing wallet:", error);
|
|
277
|
-
const errorMessage = error instanceof Error
|
|
278
|
-
? error.message
|
|
279
|
-
: "Unknown error occurred";
|
|
280
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
event.source?.postMessage(response_1.Response.walletInitialized(message.id));
|
|
284
|
-
await this.onWalletInitialized();
|
|
285
|
-
}
|
|
286
|
-
async handleSettle(event) {
|
|
287
|
-
const message = event.data;
|
|
288
|
-
if (!request_1.Request.isSettle(message)) {
|
|
289
|
-
console.error("Invalid SETTLE message format", message);
|
|
290
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid SETTLE message format"));
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
try {
|
|
294
|
-
if (!this.handler) {
|
|
295
|
-
console.error("Wallet not initialized");
|
|
296
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
const txid = await this.handler.handleSettle(message.params, (e) => {
|
|
300
|
-
event.source?.postMessage(response_1.Response.settleEvent(message.id, e));
|
|
301
|
-
});
|
|
302
|
-
if (txid) {
|
|
303
|
-
event.source?.postMessage(response_1.Response.settleSuccess(message.id, txid));
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Operation not supported in readonly mode"));
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
catch (error) {
|
|
310
|
-
console.error("Error settling:", error);
|
|
311
|
-
const errorMessage = error instanceof Error
|
|
312
|
-
? error.message
|
|
313
|
-
: "Unknown error occurred";
|
|
314
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
async handleSendBitcoin(event) {
|
|
318
|
-
const message = event.data;
|
|
319
|
-
if (!request_1.Request.isSendBitcoin(message)) {
|
|
320
|
-
console.error("Invalid SEND_BITCOIN message format", message);
|
|
321
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid SEND_BITCOIN message format"));
|
|
322
|
-
return;
|
|
323
|
-
}
|
|
324
|
-
if (!this.handler) {
|
|
325
|
-
console.error("Wallet not initialized");
|
|
326
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
try {
|
|
330
|
-
const txid = await this.handler.handleSendBitcoin(message.params);
|
|
331
|
-
if (txid) {
|
|
332
|
-
event.source?.postMessage(response_1.Response.sendBitcoinSuccess(message.id, txid));
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Operation not supported in readonly mode"));
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
catch (error) {
|
|
339
|
-
console.error("Error sending bitcoin:", error);
|
|
340
|
-
const errorMessage = error instanceof Error
|
|
341
|
-
? error.message
|
|
342
|
-
: "Unknown error occurred";
|
|
343
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
async handleGetAddress(event) {
|
|
347
|
-
const message = event.data;
|
|
348
|
-
if (!request_1.Request.isGetAddress(message)) {
|
|
349
|
-
console.error("Invalid GET_ADDRESS message format", message);
|
|
350
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_ADDRESS message format"));
|
|
351
|
-
return;
|
|
352
|
-
}
|
|
353
|
-
if (!this.handler) {
|
|
354
|
-
console.error("Wallet not initialized");
|
|
355
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
try {
|
|
359
|
-
const address = await this.handler.getAddress();
|
|
360
|
-
event.source?.postMessage(response_1.Response.address(message.id, address));
|
|
361
|
-
}
|
|
362
|
-
catch (error) {
|
|
363
|
-
console.error("Error getting address:", error);
|
|
364
|
-
const errorMessage = error instanceof Error
|
|
365
|
-
? error.message
|
|
366
|
-
: "Unknown error occurred";
|
|
367
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
async handleGetBoardingAddress(event) {
|
|
371
|
-
const message = event.data;
|
|
372
|
-
if (!request_1.Request.isGetBoardingAddress(message)) {
|
|
373
|
-
console.error("Invalid GET_BOARDING_ADDRESS message format", message);
|
|
374
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_BOARDING_ADDRESS message format"));
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
if (!this.handler) {
|
|
378
|
-
console.error("Wallet not initialized");
|
|
379
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
try {
|
|
383
|
-
const address = await this.handler.getBoardingAddress();
|
|
384
|
-
event.source?.postMessage(response_1.Response.boardingAddress(message.id, address));
|
|
385
|
-
}
|
|
386
|
-
catch (error) {
|
|
387
|
-
console.error("Error getting boarding address:", error);
|
|
388
|
-
const errorMessage = error instanceof Error
|
|
389
|
-
? error.message
|
|
390
|
-
: "Unknown error occurred";
|
|
391
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
async handleGetBalance(event) {
|
|
395
|
-
const message = event.data;
|
|
396
|
-
if (!request_1.Request.isGetBalance(message)) {
|
|
397
|
-
console.error("Invalid GET_BALANCE message format", message);
|
|
398
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_BALANCE message format"));
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
if (!this.handler) {
|
|
402
|
-
console.error("Wallet not initialized");
|
|
403
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
try {
|
|
407
|
-
const [boardingUtxos, spendableVtxos, sweptVtxos] = await Promise.all([
|
|
408
|
-
this.getAllBoardingUtxos(),
|
|
409
|
-
this.getSpendableVtxos(),
|
|
410
|
-
this.getSweptVtxos(),
|
|
411
|
-
]);
|
|
412
|
-
// boarding
|
|
413
|
-
let confirmed = 0;
|
|
414
|
-
let unconfirmed = 0;
|
|
415
|
-
for (const utxo of boardingUtxos) {
|
|
416
|
-
if (utxo.status.confirmed) {
|
|
417
|
-
confirmed += utxo.value;
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
unconfirmed += utxo.value;
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
// offchain
|
|
424
|
-
let settled = 0;
|
|
425
|
-
let preconfirmed = 0;
|
|
426
|
-
let recoverable = 0;
|
|
427
|
-
for (const vtxo of spendableVtxos) {
|
|
428
|
-
if (vtxo.virtualStatus.state === "settled") {
|
|
429
|
-
settled += vtxo.value;
|
|
430
|
-
}
|
|
431
|
-
else if (vtxo.virtualStatus.state === "preconfirmed") {
|
|
432
|
-
preconfirmed += vtxo.value;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
for (const vtxo of sweptVtxos) {
|
|
436
|
-
if ((0, __1.isSpendable)(vtxo)) {
|
|
437
|
-
recoverable += vtxo.value;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
const totalBoarding = confirmed + unconfirmed;
|
|
441
|
-
const totalOffchain = settled + preconfirmed + recoverable;
|
|
442
|
-
event.source?.postMessage(response_1.Response.balance(message.id, {
|
|
443
|
-
boarding: {
|
|
444
|
-
confirmed,
|
|
445
|
-
unconfirmed,
|
|
446
|
-
total: totalBoarding,
|
|
447
|
-
},
|
|
448
|
-
settled,
|
|
449
|
-
preconfirmed,
|
|
450
|
-
available: settled + preconfirmed,
|
|
451
|
-
recoverable,
|
|
452
|
-
total: totalBoarding + totalOffchain,
|
|
453
|
-
}));
|
|
454
|
-
}
|
|
455
|
-
catch (error) {
|
|
456
|
-
console.error("Error getting balance:", error);
|
|
457
|
-
const errorMessage = error instanceof Error
|
|
458
|
-
? error.message
|
|
459
|
-
: "Unknown error occurred";
|
|
460
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
async handleGetVtxos(event) {
|
|
464
|
-
const message = event.data;
|
|
465
|
-
if (!request_1.Request.isGetVtxos(message)) {
|
|
466
|
-
console.error("Invalid GET_VTXOS message format", message);
|
|
467
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_VTXOS message format"));
|
|
468
|
-
return;
|
|
469
|
-
}
|
|
470
|
-
if (!this.handler) {
|
|
471
|
-
console.error("Wallet not initialized");
|
|
472
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
473
|
-
return;
|
|
474
|
-
}
|
|
475
|
-
try {
|
|
476
|
-
const vtxos = await this.getSpendableVtxos();
|
|
477
|
-
const dustAmount = this.handler.dustAmount;
|
|
478
|
-
const includeRecoverable = message.filter?.withRecoverable ?? false;
|
|
479
|
-
const filteredVtxos = includeRecoverable
|
|
480
|
-
? vtxos
|
|
481
|
-
: vtxos.filter((v) => {
|
|
482
|
-
if (dustAmount != null && (0, __1.isSubdust)(v, dustAmount)) {
|
|
483
|
-
return false;
|
|
484
|
-
}
|
|
485
|
-
if ((0, __1.isRecoverable)(v)) {
|
|
486
|
-
return false;
|
|
487
|
-
}
|
|
488
|
-
if ((0, __1.isExpired)(v)) {
|
|
489
|
-
return false;
|
|
490
|
-
}
|
|
491
|
-
return true;
|
|
492
|
-
});
|
|
493
|
-
event.source?.postMessage(response_1.Response.vtxos(message.id, filteredVtxos));
|
|
494
|
-
}
|
|
495
|
-
catch (error) {
|
|
496
|
-
console.error("Error getting vtxos:", error);
|
|
497
|
-
const errorMessage = error instanceof Error
|
|
498
|
-
? error.message
|
|
499
|
-
: "Unknown error occurred";
|
|
500
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
async handleGetBoardingUtxos(event) {
|
|
504
|
-
const message = event.data;
|
|
505
|
-
if (!request_1.Request.isGetBoardingUtxos(message)) {
|
|
506
|
-
console.error("Invalid GET_BOARDING_UTXOS message format", message);
|
|
507
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_BOARDING_UTXOS message format"));
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
if (!this.handler) {
|
|
511
|
-
console.error("Wallet not initialized");
|
|
512
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
try {
|
|
516
|
-
const boardingUtxos = await this.getAllBoardingUtxos();
|
|
517
|
-
event.source?.postMessage(response_1.Response.boardingUtxos(message.id, boardingUtxos));
|
|
518
|
-
}
|
|
519
|
-
catch (error) {
|
|
520
|
-
console.error("Error getting boarding utxos:", error);
|
|
521
|
-
const errorMessage = error instanceof Error
|
|
522
|
-
? error.message
|
|
523
|
-
: "Unknown error occurred";
|
|
524
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
async handleGetTransactionHistory(event) {
|
|
528
|
-
const message = event.data;
|
|
529
|
-
if (!request_1.Request.isGetTransactionHistory(message)) {
|
|
530
|
-
console.error("Invalid GET_TRANSACTION_HISTORY message format", message);
|
|
531
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_TRANSACTION_HISTORY message format"));
|
|
532
|
-
return;
|
|
533
|
-
}
|
|
534
|
-
if (!this.handler) {
|
|
535
|
-
console.error("Wallet not initialized");
|
|
536
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
try {
|
|
540
|
-
const txs = await this.handler.getTransactionHistory();
|
|
541
|
-
event.source?.postMessage(response_1.Response.transactionHistory(message.id, txs));
|
|
542
|
-
}
|
|
543
|
-
catch (error) {
|
|
544
|
-
console.error("Error getting transaction history:", error);
|
|
545
|
-
const errorMessage = error instanceof Error
|
|
546
|
-
? error.message
|
|
547
|
-
: "Unknown error occurred";
|
|
548
|
-
event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
async handleGetStatus(event) {
|
|
552
|
-
const message = event.data;
|
|
553
|
-
if (!request_1.Request.isGetStatus(message)) {
|
|
554
|
-
console.error("Invalid GET_STATUS message format", message);
|
|
555
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_STATUS message format"));
|
|
556
|
-
return;
|
|
557
|
-
}
|
|
558
|
-
const pubKey = this.handler
|
|
559
|
-
? await this.handler.identity.xOnlyPublicKey()
|
|
560
|
-
: undefined;
|
|
561
|
-
event.source?.postMessage(response_1.Response.walletStatus(message.id, this.handler !== undefined, pubKey));
|
|
562
|
-
}
|
|
563
|
-
async handleMessage(event) {
|
|
564
|
-
this.messageCallback(event);
|
|
565
|
-
const message = event.data;
|
|
566
|
-
if (!request_1.Request.isBase(message)) {
|
|
567
|
-
console.warn("Invalid message format", JSON.stringify(message));
|
|
568
|
-
// ignore invalid messages
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
switch (message.type) {
|
|
572
|
-
case "INIT_WALLET": {
|
|
573
|
-
await this.handleInitWallet(event);
|
|
574
|
-
break;
|
|
575
|
-
}
|
|
576
|
-
case "SETTLE": {
|
|
577
|
-
await this.handleSettle(event);
|
|
578
|
-
break;
|
|
579
|
-
}
|
|
580
|
-
case "SEND_BITCOIN": {
|
|
581
|
-
await this.handleSendBitcoin(event);
|
|
582
|
-
break;
|
|
583
|
-
}
|
|
584
|
-
case "GET_ADDRESS": {
|
|
585
|
-
await this.handleGetAddress(event);
|
|
586
|
-
break;
|
|
587
|
-
}
|
|
588
|
-
case "GET_BOARDING_ADDRESS": {
|
|
589
|
-
await this.handleGetBoardingAddress(event);
|
|
590
|
-
break;
|
|
591
|
-
}
|
|
592
|
-
case "GET_BALANCE": {
|
|
593
|
-
await this.handleGetBalance(event);
|
|
594
|
-
break;
|
|
595
|
-
}
|
|
596
|
-
case "GET_VTXOS": {
|
|
597
|
-
await this.handleGetVtxos(event);
|
|
598
|
-
break;
|
|
599
|
-
}
|
|
600
|
-
case "GET_BOARDING_UTXOS": {
|
|
601
|
-
await this.handleGetBoardingUtxos(event);
|
|
602
|
-
break;
|
|
603
|
-
}
|
|
604
|
-
case "GET_TRANSACTION_HISTORY": {
|
|
605
|
-
await this.handleGetTransactionHistory(event);
|
|
606
|
-
break;
|
|
607
|
-
}
|
|
608
|
-
case "GET_STATUS": {
|
|
609
|
-
await this.handleGetStatus(event);
|
|
610
|
-
break;
|
|
611
|
-
}
|
|
612
|
-
case "CLEAR": {
|
|
613
|
-
await this.handleClear(event);
|
|
614
|
-
break;
|
|
615
|
-
}
|
|
616
|
-
case "RELOAD_WALLET": {
|
|
617
|
-
await this.handleReloadWallet(event);
|
|
618
|
-
break;
|
|
619
|
-
}
|
|
620
|
-
default:
|
|
621
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Unknown message type"));
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
async sendMessageToAllClients(message) {
|
|
625
|
-
self.clients
|
|
626
|
-
.matchAll({ includeUncontrolled: true, type: "window" })
|
|
627
|
-
.then((clients) => {
|
|
628
|
-
clients.forEach((client) => {
|
|
629
|
-
client.postMessage(message);
|
|
630
|
-
});
|
|
631
|
-
});
|
|
632
|
-
}
|
|
633
|
-
async handleReloadWallet(event) {
|
|
634
|
-
const message = event.data;
|
|
635
|
-
if (!request_1.Request.isReloadWallet(message)) {
|
|
636
|
-
console.error("Invalid RELOAD_WALLET message format", message);
|
|
637
|
-
event.source?.postMessage(response_1.Response.error(message.id, "Invalid RELOAD_WALLET message format"));
|
|
638
|
-
return;
|
|
639
|
-
}
|
|
640
|
-
if (!this.handler) {
|
|
641
|
-
console.error("Wallet not initialized");
|
|
642
|
-
event.source?.postMessage(response_1.Response.walletReloaded(message.id, false));
|
|
643
|
-
return;
|
|
644
|
-
}
|
|
645
|
-
try {
|
|
646
|
-
await this.onWalletInitialized();
|
|
647
|
-
event.source?.postMessage(response_1.Response.walletReloaded(message.id, true));
|
|
648
|
-
}
|
|
649
|
-
catch (error) {
|
|
650
|
-
console.error("Error reloading wallet:", error);
|
|
651
|
-
event.source?.postMessage(response_1.Response.walletReloaded(message.id, false));
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
}
|
|
655
|
-
exports.Worker = Worker;
|