@glyphteck/veyl 0.74.2 → 0.75.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/dist/account.js +339 -609
- package/dist/accountprofiles.js +2 -2
- package/dist/cli.js +349 -619
- package/dist/index.js +349 -619
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5855,7 +5855,7 @@ var init_canonical = __esm(() => {
|
|
|
5855
5855
|
});
|
|
5856
5856
|
|
|
5857
5857
|
// ../../core/config.js
|
|
5858
|
-
var MS_PER_SECOND = 1000, MINUTE_MS, HOUR_MS, DAY_MS, KIB_BYTES = 1024, MIB_BYTES, SATS_PER_BITCOIN = 100000000n, USERNAME_MAX_CHARS = 12, PASSWORD_MIN_CHARS = 15, PASSWORD_MAX_CHARS = 64, PASSWORD_MAX_BYTES, ACCOUNT_CONNECTION_SLOW_MS, ACCOUNT_CONNECTION_UNAVAILABLE_MS, ACCOUNT_CONNECTION_RETRY_MIN_MS, ACCOUNT_CONNECTION_RETRY_MAX_MS, AUTOLOCK_MIN_MINUTES = 1, AUTOLOCK_MAX_MINUTES = 60, BTC_PRICE_FALLBACK = 80000, CHAT_MESSAGE_EDIT_WINDOW_MS, CHAT_SEND_CONNECTION_WAIT_MS, CALL_SPEAKING_THRESHOLD = 0.02, CALL_SPEAKING_HOLD_MS = 320, LOCAL_CACHE_WRITE_DELAY_MS = 350, LOCAL_MEDIA_CACHE_MAX_BYTES, LOCAL_MEDIA_CACHE_MAX_ITEMS = 1000, LOCAL_MEDIA_ACCESS_TOUCH_MIN_MS, LOCAL_PROFILE_CACHE_MAX_ITEMS = 500, LOCAL_PROFILE_CACHE_MAX_AGE_MS, LOCAL_CHAT_CACHE_MAX_ITEMS = 1000, LOCAL_CHAT_MESSAGE_CACHE_MAX_VISIBLE = 1000, LOCAL_CHAT_MESSAGE_CACHE_WRITE_DELAY_MS = 2500, LOCAL_AVATAR_CACHE_MAX_BYTES, LOCAL_AVATAR_CACHE_MAX_AGE_MS, AVATAR_IMAGE_MAX_BYTES, AVATAR_IMAGE_QUALITY_ATTEMPTS, CHAT_AVATAR_IMAGE_MAX_BYTES, CHAT_AVATAR_REF_MAX_CHARS = 256, CHAT_MESSAGE_FILE_CACHE_MAX_BYTES, IDLE_CALLBACK_MIN_TIMEOUT_MS = 50, ATTACHMENT_CACHE_IDLE_TIMEOUT_MS = 2500, ATTACHMENT_CACHE_FALLBACK_DELAY_MS = 250, CHAT_UNSAVED_TTL_DAYS = 21, CHAT_UNSAVED_TTL_MS, CHAT_AFTER_SEEN_MS, CHAT_MEDIA_TTL_DAYS, CHAT_MEDIA_TTL_MS, CHAT_UPLOAD_MAX_BYTES, CHAT_AUDIO_TRANSCODE_BITRATE_BPS = 128000, CHAT_VIDEO_TRANSCODE_VIDEO_BITRATE_BPS = 3000000, CHAT_VIDEO_TRANSCODE_AUDIO_BITRATE_BPS, CHAT_MESSAGE_BATCH_SIZE = 40, CHAT_MESSAGE_QUERY_MAX_DOCS = 120, CHAT_MESSAGE_MUTATION_MAX_ITEMS = 256, CHAT_TTL_CLIENT_DELETE_GRACE_MS, CHAT_BATCH_CLEANUP_IDLE_TIMEOUT_MS = 1500, CHAT_BATCH_CLEANUP_IDLE_DELAY_MS = 250, CHAT_LIST_PAGE_SIZE = 20, CHAT_ADMISSION_CACHE_PEERS = 1024, CHAT_LIST_LIVE_COUNT, CHAT_INBOX_PING_PAGE_SIZE = 25, CHAT_INBOX_DISCOVERY_PARALLEL_CHATS, CHAT_INBOX_SETTLEMENT_PARALLEL_CHATS = 4, CHAT_INBOX_CURSOR_OVERLAP_MS, CHAT_LIST_CACHE_WRITE_DELAY_MS = 1500, CHAT_LIST_SNAPSHOT_COALESCE_MS = 80, CHAT_LIST_COMPLETE_SYNC_DELAY_MS = 250, CHAT_LIST_LISTENER_RETRY_MS = 1000, CHAT_TOP_WARM_COUNT = 0, CHAT_EAGER_WARM_COUNT = 0, CHAT_WARM_DELAY_MS = 3000, CHAT_WARM_BATCH_SIZE, CHAT_MESSAGE_VIEW_CACHE_SIZE = 30, CHAT_MEDIA_WARM_MESSAGES_PER_CHAT, CHAT_MEDIA_WARM_START_DELAY_MS = 600, CHAT_MEDIA_WARM_STEP_DELAY_MS = 120, CHAT_MEDIA_WARM_TYPES, CHAT_MEDIA_WARM_MAX_BYTES = 0, CHAT_READ_WRITE_INTERVAL_MS, CHAT_READ_WRITE_MAX_WAIT_MS, CHAT_LIVE_PING_INTERVAL_MS, CHAT_LIVE_SWEEP_INTERVAL_MS, CHAT_LIVE_STALE_AFTER_MS, LIVE_RECONNECT_MIN_MS = 500, LIVE_RECONNECT_MAX_MS, LIVE_RECONNECT_STABLE_MS, LIVE_READY_TIMEOUT_MS, CHAT_LIVE_TYPING_IDLE_MS, CHAT_LIVE_TYPING_RENEW_MS, CHAT_LIVE_COMPOSITION_HANDOFF_MS, CHAT_LIVE_READ_SEND_INTERVAL_MS = 120, CHAT_LIVE_READ_SEND_MAX_WAIT_MS = 500, CHAT_LIVE_READ_WRITE_INTERVAL_MS, CHAT_LIVE_READ_WRITE_MAX_WAIT_MS, CHAT_SEND_QUEUE_RATE_LIMIT_COUNT = 12, CHAT_SEND_QUEUE_RATE_LIMIT_WINDOW_MS, CHAT_SETTINGS_BODY_MAX_BYTES, CHAT_TITLE_STATE_MAX_CHARS = 128, CHAT_MANIFEST_MAX_BYTES, CHAT_RECEIPT_MAX_MEMBERS = 32, CHAT_ORDINARY_DELIVERY_MAX_MEMBERS = 128, CHAT_MAX_MEMBERS = 256, CHAT_LARGE_GROUP_MENTION_MAX_TARGETS = 16, CHAT_MAX_TEXT_CHARS = 2048, CHAT_TITLE_INPUT_MAX_CHARS = 16, CHAT_MAX_REACTIONS, SEARCH_DEBOUNCE_MS = 300, SEARCH_USERNAME_LIMIT = 15, SEARCH_ROLE_LIMIT = 15, RECENT_PEER_REFRESH_LIMIT = 50, RECENT_PEER_REFRESH_DELAY_MS = 250, RECENT_PEER_REFRESH_THROTTLE_MS = 120, BAN_REFRESH_GRACE_MS = 50, REQUEST_MONEY_MAX_SATS, WALLET_TRANSFER_POLL_MS,
|
|
5858
|
+
var MS_PER_SECOND = 1000, MINUTE_MS, HOUR_MS, DAY_MS, KIB_BYTES = 1024, MIB_BYTES, SATS_PER_BITCOIN = 100000000n, USERNAME_MAX_CHARS = 12, PASSWORD_MIN_CHARS = 15, PASSWORD_MAX_CHARS = 64, PASSWORD_MAX_BYTES, ACCOUNT_CONNECTION_SLOW_MS, ACCOUNT_CONNECTION_UNAVAILABLE_MS, ACCOUNT_CONNECTION_RETRY_MIN_MS, ACCOUNT_CONNECTION_RETRY_MAX_MS, AUTOLOCK_MIN_MINUTES = 1, AUTOLOCK_MAX_MINUTES = 60, BTC_PRICE_FALLBACK = 80000, CHAT_MESSAGE_EDIT_WINDOW_MS, CHAT_SEND_CONNECTION_WAIT_MS, CALL_SPEAKING_THRESHOLD = 0.02, CALL_SPEAKING_HOLD_MS = 320, LOCAL_CACHE_WRITE_DELAY_MS = 350, LOCAL_MEDIA_CACHE_MAX_BYTES, LOCAL_MEDIA_CACHE_MAX_ITEMS = 1000, LOCAL_MEDIA_ACCESS_TOUCH_MIN_MS, LOCAL_PROFILE_CACHE_MAX_ITEMS = 500, LOCAL_PROFILE_CACHE_MAX_AGE_MS, LOCAL_CHAT_CACHE_MAX_ITEMS = 1000, LOCAL_CHAT_MESSAGE_CACHE_MAX_VISIBLE = 1000, LOCAL_CHAT_MESSAGE_CACHE_WRITE_DELAY_MS = 2500, LOCAL_AVATAR_CACHE_MAX_BYTES, LOCAL_AVATAR_CACHE_MAX_AGE_MS, AVATAR_IMAGE_MAX_BYTES, AVATAR_IMAGE_QUALITY_ATTEMPTS, CHAT_AVATAR_IMAGE_MAX_BYTES, CHAT_AVATAR_REF_MAX_CHARS = 256, CHAT_MESSAGE_FILE_CACHE_MAX_BYTES, IDLE_CALLBACK_MIN_TIMEOUT_MS = 50, ATTACHMENT_CACHE_IDLE_TIMEOUT_MS = 2500, ATTACHMENT_CACHE_FALLBACK_DELAY_MS = 250, CHAT_UNSAVED_TTL_DAYS = 21, CHAT_UNSAVED_TTL_MS, CHAT_AFTER_SEEN_MS, CHAT_MEDIA_TTL_DAYS, CHAT_MEDIA_TTL_MS, CHAT_UPLOAD_MAX_BYTES, CHAT_AUDIO_TRANSCODE_BITRATE_BPS = 128000, CHAT_VIDEO_TRANSCODE_VIDEO_BITRATE_BPS = 3000000, CHAT_VIDEO_TRANSCODE_AUDIO_BITRATE_BPS, CHAT_MESSAGE_BATCH_SIZE = 40, CHAT_MESSAGE_QUERY_MAX_DOCS = 120, CHAT_MESSAGE_MUTATION_MAX_ITEMS = 256, CHAT_TTL_CLIENT_DELETE_GRACE_MS, CHAT_BATCH_CLEANUP_IDLE_TIMEOUT_MS = 1500, CHAT_BATCH_CLEANUP_IDLE_DELAY_MS = 250, CHAT_LIST_PAGE_SIZE = 20, CHAT_ADMISSION_CACHE_PEERS = 1024, CHAT_LIST_LIVE_COUNT, CHAT_INBOX_PING_PAGE_SIZE = 25, CHAT_INBOX_DISCOVERY_PARALLEL_CHATS, CHAT_INBOX_SETTLEMENT_PARALLEL_CHATS = 4, CHAT_INBOX_CURSOR_OVERLAP_MS, CHAT_LIST_CACHE_WRITE_DELAY_MS = 1500, CHAT_LIST_SNAPSHOT_COALESCE_MS = 80, CHAT_LIST_COMPLETE_SYNC_DELAY_MS = 250, CHAT_LIST_LISTENER_RETRY_MS = 1000, CHAT_TOP_WARM_COUNT = 0, CHAT_EAGER_WARM_COUNT = 0, CHAT_WARM_DELAY_MS = 3000, CHAT_WARM_BATCH_SIZE, CHAT_MESSAGE_VIEW_CACHE_SIZE = 30, CHAT_MEDIA_WARM_MESSAGES_PER_CHAT, CHAT_MEDIA_WARM_START_DELAY_MS = 600, CHAT_MEDIA_WARM_STEP_DELAY_MS = 120, CHAT_MEDIA_WARM_TYPES, CHAT_MEDIA_WARM_MAX_BYTES = 0, CHAT_READ_WRITE_INTERVAL_MS, CHAT_READ_WRITE_MAX_WAIT_MS, CHAT_LIVE_PING_INTERVAL_MS, CHAT_LIVE_SWEEP_INTERVAL_MS, CHAT_LIVE_STALE_AFTER_MS, LIVE_RECONNECT_MIN_MS = 500, LIVE_RECONNECT_MAX_MS, LIVE_RECONNECT_STABLE_MS, LIVE_READY_TIMEOUT_MS, CHAT_LIVE_TYPING_IDLE_MS, CHAT_LIVE_TYPING_RENEW_MS, CHAT_LIVE_COMPOSITION_HANDOFF_MS, CHAT_LIVE_READ_SEND_INTERVAL_MS = 120, CHAT_LIVE_READ_SEND_MAX_WAIT_MS = 500, CHAT_LIVE_READ_WRITE_INTERVAL_MS, CHAT_LIVE_READ_WRITE_MAX_WAIT_MS, CHAT_SEND_QUEUE_RATE_LIMIT_COUNT = 12, CHAT_SEND_QUEUE_RATE_LIMIT_WINDOW_MS, CHAT_SETTINGS_BODY_MAX_BYTES, CHAT_TITLE_STATE_MAX_CHARS = 128, CHAT_MANIFEST_MAX_BYTES, CHAT_RECEIPT_MAX_MEMBERS = 32, CHAT_ORDINARY_DELIVERY_MAX_MEMBERS = 128, CHAT_MAX_MEMBERS = 256, CHAT_LARGE_GROUP_MENTION_MAX_TARGETS = 16, CHAT_MAX_TEXT_CHARS = 2048, CHAT_TITLE_INPUT_MAX_CHARS = 16, CHAT_MAX_REACTIONS, SEARCH_DEBOUNCE_MS = 300, SEARCH_USERNAME_LIMIT = 15, SEARCH_ROLE_LIMIT = 15, RECENT_PEER_REFRESH_LIMIT = 50, RECENT_PEER_REFRESH_DELAY_MS = 250, RECENT_PEER_REFRESH_THROTTLE_MS = 120, BAN_REFRESH_GRACE_MS = 50, REQUEST_MONEY_MAX_SATS, WALLET_TRANSFER_POLL_MS, WALLET_TRANSFER_REPAIR_MS, WALLET_CACHE_HYDRATE_DELAY_MS = 0, WALLET_BOOT_REFRESH_DELAY_MS = 500, WALLET_BOOT_CACHED_REFRESH_DELAY_MS = 2500, WALLET_REGTEST_DEPOSIT_CLAIM_POLL_MS, WALLET_MAINNET_DEPOSIT_CLAIM_POLL_MS, WALLET_BALANCE_EVENT_COALESCE_MS = 100, WALLET_INCOMING_UPDATE_COALESCE_MS = 250, WALLET_AUTO_CLAIM_MAX_FEE_SATS = 5000, WALLET_CLAIM_PAGE_SIZE = 100, WALLET_PENDING_TRANSFER_CLAIM_BATCH_SIZE = 50, WALLET_PENDING_TRANSFER_STATUS_BATCH_SIZE = 2, WALLET_PENDING_TRANSFER_COLD_REFRESH_BATCH_SIZE = 50, WALLET_PENDING_TRANSFER_COLD_REFRESH_INTERVAL_MS, WALLET_PENDING_TRANSFER_ADAPTIVE_BATCH_SMALL_QUEUE = 3, WALLET_PENDING_TRANSFER_ADAPTIVE_BATCH_LARGE_QUEUE = 10, WALLET_PENDING_TRANSFER_ADAPTIVE_BATCH_SMALL_SIZE = 2, WALLET_PENDING_TRANSFER_ADAPTIVE_BATCH_LARGE_SIZE = 3, WALLET_PENDING_TRANSFER_SLOW_CLAIM_MS, WALLET_PENDING_TRANSFER_CLAIM_COOLDOWN_MS, WALLET_SDK_BACKGROUND_QUIET_MS, WALLET_RECENT_TRANSFER_LIMIT = 100, WALLET_TRANSFER_PAGE_LIMIT = 100, WALLET_TRANSFER_FETCH_THROTTLE_MS = 150, WALLET_PENDING_TRANSFER_CLAIM_RETRY_MS, WALLET_SENT_TRANSFER_REFRESH_DELAY_MS, WALLET_PENDING_TRANSFER_BOOT_GRACE_MS, WALLET_PENDING_TRANSFER_HOT_AGE_MS, WALLET_PENDING_TRANSFER_WARM_AGE_MS, WALLET_PENDING_TRANSFER_WARM_RETRY_MS, WALLET_PENDING_TRANSFER_STALE_RETRY_MS, WALLET_PENDING_TRANSFER_STUCK_RETRY_MS, WALLET_PENDING_TRANSFER_DORMANT_RETRY_MS, WALLET_TRANSFER_CACHE_WRITE_DELAY_MS, BITCOIN_POLL_MS = 60000, BITCOIN_FETCH_TIMEOUT_MS = 8000, BITCOIN_FEES_MAX_AGE_MS;
|
|
5859
5859
|
var init_config = __esm(() => {
|
|
5860
5860
|
MINUTE_MS = 60 * MS_PER_SECOND;
|
|
5861
5861
|
HOUR_MS = 60 * MINUTE_MS;
|
|
@@ -5909,10 +5909,9 @@ var init_config = __esm(() => {
|
|
|
5909
5909
|
CHAT_MAX_REACTIONS = CHAT_MAX_MEMBERS;
|
|
5910
5910
|
REQUEST_MONEY_MAX_SATS = SATS_PER_BITCOIN * 100000n;
|
|
5911
5911
|
WALLET_TRANSFER_POLL_MS = 3 * MS_PER_SECOND;
|
|
5912
|
-
|
|
5912
|
+
WALLET_TRANSFER_REPAIR_MS = 30 * MS_PER_SECOND;
|
|
5913
5913
|
WALLET_REGTEST_DEPOSIT_CLAIM_POLL_MS = 20 * MS_PER_SECOND;
|
|
5914
5914
|
WALLET_MAINNET_DEPOSIT_CLAIM_POLL_MS = MINUTE_MS;
|
|
5915
|
-
WALLET_BALANCE_EVENT_COALESCE_MS = 2 * MS_PER_SECOND;
|
|
5916
5915
|
WALLET_PENDING_TRANSFER_COLD_REFRESH_INTERVAL_MS = 15 * MS_PER_SECOND;
|
|
5917
5916
|
WALLET_PENDING_TRANSFER_SLOW_CLAIM_MS = 4 * MS_PER_SECOND;
|
|
5918
5917
|
WALLET_PENDING_TRANSFER_CLAIM_COOLDOWN_MS = 15 * MS_PER_SECOND;
|
|
@@ -58733,56 +58732,25 @@ function createIncomingTransferClaims({ wallet, claim, batchSize = null, getTran
|
|
|
58733
58732
|
}
|
|
58734
58733
|
});
|
|
58735
58734
|
}
|
|
58736
|
-
async function
|
|
58737
|
-
if (!ids.length || typeof wallet?.transferService?.queryPendingTransfers !== "function") {
|
|
58738
|
-
return new Set;
|
|
58739
|
-
}
|
|
58740
|
-
const startedAt = Date.now();
|
|
58741
|
-
markDiag(diag, "wallet.pendingTxs.claim.verify.start", { count: ids.length });
|
|
58742
|
-
const requestedIds = new Set(ids);
|
|
58743
|
-
try {
|
|
58744
|
-
const page = await wallet.transferService.queryPendingTransfers.call(wallet.transferService, ids);
|
|
58745
|
-
const pendingTransfers = (Array.isArray(page?.transfers) ? page.transfers : []).filter((transfer) => requestedIds.has(String(transfer?.id || "")));
|
|
58746
|
-
markDone(diag, "wallet.pendingTxs.claim.verify", startedAt, { count: ids.length, pending: pendingTransfers.length });
|
|
58747
|
-
return new Set(pendingTransfers.map((transfer) => String(transfer?.id || "")).filter(Boolean));
|
|
58748
|
-
} catch (error) {
|
|
58749
|
-
markError(diag, "wallet.pendingTxs.claim.verify", startedAt, error, { count: ids.length });
|
|
58750
|
-
throw error;
|
|
58751
|
-
}
|
|
58752
|
-
}
|
|
58753
|
-
async function claimIncomingTransfersById(wallet, transfers = [], { onClaimed, emitClaimEvents = false, drainAll = true, diag } = {}) {
|
|
58735
|
+
async function claimIncomingTransfersById(wallet, transfers = [], { onClaimed, emitClaimEvents = false, diag } = {}) {
|
|
58754
58736
|
const ids = transferIds(transfers);
|
|
58755
|
-
if (!ids.length || typeof wallet?.transferService?.queryPendingTransfers !== "function" || typeof wallet?.
|
|
58737
|
+
if (!ids.length || typeof wallet?.transferService?.queryPendingTransfers !== "function" || typeof wallet?.claimTransfer !== "function") {
|
|
58756
58738
|
return [];
|
|
58757
58739
|
}
|
|
58758
58740
|
const requestedIds = new Set(ids);
|
|
58759
58741
|
const activeClaim = activeWalletClaims.get(wallet);
|
|
58760
58742
|
if (activeClaim) {
|
|
58761
|
-
const claimedIds = transferIds(await activeClaim).filter((id) => requestedIds.has(id));
|
|
58743
|
+
const claimedIds = transferIds(await activeClaim.catch(() => [])).filter((id) => requestedIds.has(id));
|
|
58762
58744
|
if (claimedIds.length) {
|
|
58763
58745
|
onClaimed?.(claimedIds);
|
|
58764
58746
|
}
|
|
58765
|
-
|
|
58747
|
+
const remaining = ids.filter((id) => !claimedIds.includes(id));
|
|
58748
|
+
if (!remaining.length)
|
|
58749
|
+
return claimedIds;
|
|
58750
|
+
const next = await claimIncomingTransfersById(wallet, remaining, { onClaimed, emitClaimEvents, diag });
|
|
58751
|
+
return [...claimedIds, ...next];
|
|
58766
58752
|
}
|
|
58767
58753
|
const claimPromise = (async () => {
|
|
58768
|
-
if (drainAll !== false && typeof wallet?.claimTransfers === "function") {
|
|
58769
|
-
const claimedIds2 = [];
|
|
58770
|
-
const claimStartedAt = Date.now();
|
|
58771
|
-
markDiag(diag, "wallet.pendingTxs.claim.sdk.start", { count: ids.length, mode: "all" });
|
|
58772
|
-
try {
|
|
58773
|
-
claimedIds2.push(...transferIds(await wallet.claimTransfers(undefined, emitClaimEvents === true)));
|
|
58774
|
-
markDone(diag, "wallet.pendingTxs.claim.sdk", claimStartedAt, { count: ids.length, mode: "all", claimed: claimedIds2.length });
|
|
58775
|
-
} catch (error) {
|
|
58776
|
-
markError(diag, "wallet.pendingTxs.claim.sdk", claimStartedAt, error, { count: ids.length, mode: "all" });
|
|
58777
|
-
}
|
|
58778
|
-
const pendingIds2 = await queryPendingTransferIds(wallet, ids, diag).catch(() => new Set);
|
|
58779
|
-
claimedIds2.push(...ids.filter((id) => !pendingIds2.has(id)));
|
|
58780
|
-
const uniqueClaimedIds = [...new Set(claimedIds2)];
|
|
58781
|
-
if (uniqueClaimedIds.length) {
|
|
58782
|
-
onClaimed?.(uniqueClaimedIds);
|
|
58783
|
-
}
|
|
58784
|
-
return uniqueClaimedIds;
|
|
58785
|
-
}
|
|
58786
58754
|
const queryStartedAt = Date.now();
|
|
58787
58755
|
markDiag(diag, "wallet.pendingTxs.claim.query.start", { count: ids.length });
|
|
58788
58756
|
let page;
|
|
@@ -58794,13 +58762,7 @@ async function claimIncomingTransfersById(wallet, transfers = [], { onClaimed, e
|
|
|
58794
58762
|
}
|
|
58795
58763
|
const pendingTransfers = (Array.isArray(page?.transfers) ? page.transfers : []).filter((transfer) => requestedIds.has(String(transfer?.id || "")));
|
|
58796
58764
|
markDone(diag, "wallet.pendingTxs.claim.query", queryStartedAt, { count: ids.length, pending: pendingTransfers.length });
|
|
58797
|
-
const pendingIds = new Set(pendingTransfers.map((transfer) => String(transfer?.id || "")).filter(Boolean));
|
|
58798
58765
|
const claimedIds = [];
|
|
58799
|
-
const alreadySettledIds = ids.filter((id) => !pendingIds.has(id));
|
|
58800
|
-
if (alreadySettledIds.length) {
|
|
58801
|
-
claimedIds.push(...alreadySettledIds);
|
|
58802
|
-
onClaimed?.(alreadySettledIds);
|
|
58803
|
-
}
|
|
58804
58766
|
for (const transfer of pendingTransfers) {
|
|
58805
58767
|
if (!isClaimablePendingTransfer(transfer)) {
|
|
58806
58768
|
continue;
|
|
@@ -58833,7 +58795,7 @@ async function claimIncomingTransfersById(wallet, transfers = [], { onClaimed, e
|
|
|
58833
58795
|
}
|
|
58834
58796
|
}
|
|
58835
58797
|
}
|
|
58836
|
-
async function claimPendingIncomingTransfers(wallet, { limit = WALLET_PENDING_TRANSFER_CLAIM_BATCH_SIZE, onClaimed, emitClaimEvents = false,
|
|
58798
|
+
async function claimPendingIncomingTransfers(wallet, { limit = WALLET_PENDING_TRANSFER_CLAIM_BATCH_SIZE, onClaimed, emitClaimEvents = false, diag } = {}) {
|
|
58837
58799
|
if (typeof wallet?.transferService?.queryPendingTransfers !== "function") {
|
|
58838
58800
|
return [];
|
|
58839
58801
|
}
|
|
@@ -58858,7 +58820,6 @@ async function claimPendingIncomingTransfers(wallet, { limit = WALLET_PENDING_TR
|
|
|
58858
58820
|
return claimIncomingTransfersById(wallet, pendingTransfers, {
|
|
58859
58821
|
onClaimed,
|
|
58860
58822
|
emitClaimEvents,
|
|
58861
|
-
drainAll,
|
|
58862
58823
|
diag
|
|
58863
58824
|
});
|
|
58864
58825
|
}
|
|
@@ -59121,7 +59082,7 @@ var init_deposits = __esm(() => {
|
|
|
59121
59082
|
});
|
|
59122
59083
|
|
|
59123
59084
|
// ../../core/wallet/claims.js
|
|
59124
|
-
function createDepositClaims({ wallet,
|
|
59085
|
+
function createDepositClaims({ wallet, diag }) {
|
|
59125
59086
|
let claimPromise = null;
|
|
59126
59087
|
let closed = false;
|
|
59127
59088
|
const claimDeposits = async () => {
|
|
@@ -59147,27 +59108,8 @@ function createDepositClaims({ wallet, updateWalletData, diag }) {
|
|
|
59147
59108
|
claimPromise = request2;
|
|
59148
59109
|
return request2;
|
|
59149
59110
|
};
|
|
59150
|
-
const refresh = async () => {
|
|
59151
|
-
const startedAt = Date.now();
|
|
59152
|
-
markDiag(diag, "wallet.refresh.start", {});
|
|
59153
|
-
const claimed = await claimDeposits();
|
|
59154
|
-
if (!closed) {
|
|
59155
|
-
await updateWalletData({ force: true, reason: "deposit-refresh" });
|
|
59156
|
-
}
|
|
59157
|
-
markDone(diag, "wallet.refresh", startedAt, { claimed: !!claimed });
|
|
59158
|
-
};
|
|
59159
|
-
const refreshClaims = async () => {
|
|
59160
|
-
const claimed = await claimDeposits();
|
|
59161
|
-
if (!claimed || closed) {
|
|
59162
|
-
return false;
|
|
59163
|
-
}
|
|
59164
|
-
await updateWalletData({ force: true, reason: "deposit-claim" });
|
|
59165
|
-
return true;
|
|
59166
|
-
};
|
|
59167
59111
|
return {
|
|
59168
59112
|
claimDeposits,
|
|
59169
|
-
refresh,
|
|
59170
|
-
refreshClaims,
|
|
59171
59113
|
close() {
|
|
59172
59114
|
closed = true;
|
|
59173
59115
|
claimPromise = null;
|
|
@@ -59382,7 +59324,7 @@ function createWalletData({ wallet, getBalance, getRecentTxs, diag }) {
|
|
|
59382
59324
|
tasks.push(getBalance());
|
|
59383
59325
|
}
|
|
59384
59326
|
if (currentRequest.transfers) {
|
|
59385
|
-
tasks.push(getRecentTxs({ force: currentRequest.force, reason: currentRequest.reason }));
|
|
59327
|
+
tasks.push(getRecentTxs({ force: currentRequest.force, reason: currentRequest.reason, includePending: false }));
|
|
59386
59328
|
}
|
|
59387
59329
|
await Promise.all(tasks);
|
|
59388
59330
|
markDone(diag, "wallet.update", startedAt, {
|
|
@@ -59417,353 +59359,240 @@ function createWalletData({ wallet, getBalance, getRecentTxs, diag }) {
|
|
|
59417
59359
|
};
|
|
59418
59360
|
return updateWalletData;
|
|
59419
59361
|
}
|
|
59420
|
-
function createWalletEvents({ wallet,
|
|
59421
|
-
|
|
59422
|
-
|
|
59423
|
-
|
|
59424
|
-
|
|
59425
|
-
|
|
59426
|
-
|
|
59427
|
-
|
|
59428
|
-
|
|
59429
|
-
|
|
59430
|
-
|
|
59431
|
-
|
|
59432
|
-
|
|
59433
|
-
|
|
59434
|
-
|
|
59435
|
-
|
|
59436
|
-
|
|
59437
|
-
}
|
|
59438
|
-
};
|
|
59439
|
-
const flushIncomingEvent = () => {
|
|
59440
|
-
incomingEvent.timer = null;
|
|
59441
|
-
const balance = incomingEvent.balance;
|
|
59442
|
-
incomingEvent.balance = null;
|
|
59443
|
-
if (balance != null) {
|
|
59444
|
-
setBalance(balance);
|
|
59445
|
-
}
|
|
59446
|
-
markDiag(diag, "wallet.events.incoming.flush", { hasBalance: balance != null });
|
|
59447
|
-
updateWalletData({ transfers: true, balance: false, reason: "incoming" });
|
|
59362
|
+
function createWalletEvents({ wallet, getTransferState, setTokenBalances, setSatsBalanceResult, reconcile, sync, diag }) {
|
|
59363
|
+
let closed = false;
|
|
59364
|
+
let balanceTimer = null;
|
|
59365
|
+
let claimTimer = null;
|
|
59366
|
+
let balanceValue = null;
|
|
59367
|
+
const claimedIds = new Set;
|
|
59368
|
+
const handleBalanceUpdate = (value) => {
|
|
59369
|
+
if (closed || !value || typeof value !== "object")
|
|
59370
|
+
return;
|
|
59371
|
+
balanceValue = value;
|
|
59372
|
+
if (balanceTimer)
|
|
59373
|
+
return;
|
|
59374
|
+
balanceTimer = setTimeout(() => {
|
|
59375
|
+
balanceTimer = null;
|
|
59376
|
+
if (!closed)
|
|
59377
|
+
setSatsBalanceResult(balanceValue);
|
|
59378
|
+
}, BALANCE_EVENT_COALESCE_MS);
|
|
59448
59379
|
};
|
|
59449
|
-
const
|
|
59450
|
-
|
|
59451
|
-
|
|
59452
|
-
|
|
59453
|
-
|
|
59454
|
-
|
|
59455
|
-
|
|
59456
|
-
|
|
59457
|
-
|
|
59458
|
-
|
|
59459
|
-
|
|
59460
|
-
|
|
59461
|
-
|
|
59462
|
-
|
|
59463
|
-
|
|
59464
|
-
|
|
59465
|
-
|
|
59466
|
-
|
|
59467
|
-
const unknownIds = ids.filter((id) => !completedIds.has(String(id)));
|
|
59468
|
-
if (unknownIds.length) {
|
|
59469
|
-
transferState.refreshPendingTransfers?.(unknownIds);
|
|
59470
|
-
}
|
|
59471
|
-
}
|
|
59380
|
+
const handleTransferClaimed = (id) => {
|
|
59381
|
+
if (closed || !id)
|
|
59382
|
+
return;
|
|
59383
|
+
claimedIds.add(String(id));
|
|
59384
|
+
if (claimTimer)
|
|
59385
|
+
return;
|
|
59386
|
+
claimTimer = setTimeout(() => {
|
|
59387
|
+
claimTimer = null;
|
|
59388
|
+
const ids = [...claimedIds];
|
|
59389
|
+
claimedIds.clear();
|
|
59390
|
+
if (closed)
|
|
59391
|
+
return;
|
|
59392
|
+
const transfers = getTransferState();
|
|
59393
|
+
transfers.markTransfersCompleted(ids);
|
|
59394
|
+
transfers.refreshPendingTransfers(ids).finally(sync);
|
|
59395
|
+
sync();
|
|
59396
|
+
markDiag(diag, "wallet.events.transfer.claimed.flush", { count: ids.length });
|
|
59397
|
+
}, INCOMING_UPDATE_COALESCE_MS);
|
|
59472
59398
|
};
|
|
59473
59399
|
const handleTokenBalanceUpdate = (event) => {
|
|
59474
|
-
if (event?.tokenBalances instanceof Map)
|
|
59400
|
+
if (!closed && event?.tokenBalances instanceof Map)
|
|
59475
59401
|
setTokenBalances(new Map(event.tokenBalances));
|
|
59476
|
-
}
|
|
59477
59402
|
};
|
|
59478
|
-
const
|
|
59479
|
-
if (!
|
|
59480
|
-
|
|
59481
|
-
}
|
|
59482
|
-
balanceEvent.value = nextSatsBalance;
|
|
59483
|
-
if (!balanceEvent.timer) {
|
|
59484
|
-
balanceEvent.timer = setTimeout(flushBalanceEvent, BALANCE_EVENT_COALESCE_MS);
|
|
59485
|
-
}
|
|
59403
|
+
const handleDepositConfirmed = () => {
|
|
59404
|
+
if (!closed)
|
|
59405
|
+
reconcile({ history: true, reason: "deposit-confirmed" });
|
|
59486
59406
|
};
|
|
59487
|
-
const
|
|
59488
|
-
if (
|
|
59489
|
-
|
|
59490
|
-
}
|
|
59491
|
-
if (!incomingEvent.timer) {
|
|
59492
|
-
incomingEvent.timer = setTimeout(flushIncomingEvent, INCOMING_UPDATE_COALESCE_MS);
|
|
59493
|
-
}
|
|
59407
|
+
const handleConnected = () => {
|
|
59408
|
+
if (!closed)
|
|
59409
|
+
reconcile({ history: true, pending: true, reason: "stream-connected" });
|
|
59494
59410
|
};
|
|
59495
|
-
const
|
|
59496
|
-
|
|
59497
|
-
claimedEvent.balance = updatedBalance;
|
|
59498
|
-
}
|
|
59499
|
-
if (transfer) {
|
|
59500
|
-
claimedEvent.transfers.push(transfer);
|
|
59501
|
-
} else if (transferId) {
|
|
59502
|
-
claimedEvent.ids.push(String(transferId));
|
|
59503
|
-
}
|
|
59504
|
-
if (!claimedEvent.timer) {
|
|
59505
|
-
claimedEvent.timer = setTimeout(flushClaimedEvent, INCOMING_UPDATE_COALESCE_MS);
|
|
59506
|
-
}
|
|
59411
|
+
const handleReconnecting = () => {
|
|
59412
|
+
markDiag(diag, "wallet.stream.reconnecting", {});
|
|
59507
59413
|
};
|
|
59508
|
-
const
|
|
59509
|
-
|
|
59414
|
+
const handlers = {
|
|
59415
|
+
[WALLET_EVENTS.balance]: handleBalanceUpdate,
|
|
59416
|
+
[WALLET_EVENTS.tokenBalance]: handleTokenBalanceUpdate,
|
|
59417
|
+
[WALLET_EVENTS.transferClaimed]: handleTransferClaimed,
|
|
59418
|
+
[WALLET_EVENTS.depositConfirmed]: handleDepositConfirmed,
|
|
59419
|
+
"stream:connected": handleConnected,
|
|
59420
|
+
"stream:reconnecting": handleReconnecting
|
|
59510
59421
|
};
|
|
59511
|
-
|
|
59512
|
-
|
|
59513
|
-
wallet.on(WALLET_EVENTS.depositConfirmed, handleDepositConfirmed);
|
|
59514
|
-
wallet.on(WALLET_EVENTS.transferClaimed, handleTransferClaimed);
|
|
59422
|
+
for (const [name2, handler] of Object.entries(handlers))
|
|
59423
|
+
wallet.on(name2, handler);
|
|
59515
59424
|
return {
|
|
59516
59425
|
close() {
|
|
59517
|
-
|
|
59518
|
-
|
|
59519
|
-
|
|
59520
|
-
|
|
59521
|
-
for (const
|
|
59522
|
-
|
|
59523
|
-
clearTimeout(event.timer);
|
|
59524
|
-
event.timer = null;
|
|
59525
|
-
}
|
|
59526
|
-
}
|
|
59426
|
+
closed = true;
|
|
59427
|
+
clearTimeout(balanceTimer);
|
|
59428
|
+
clearTimeout(claimTimer);
|
|
59429
|
+
claimedIds.clear();
|
|
59430
|
+
for (const [name2, handler] of Object.entries(handlers))
|
|
59431
|
+
wallet.off(name2, handler);
|
|
59527
59432
|
}
|
|
59528
59433
|
};
|
|
59529
59434
|
}
|
|
59530
|
-
function
|
|
59531
|
-
|
|
59532
|
-
|
|
59533
|
-
let
|
|
59534
|
-
let
|
|
59535
|
-
let activeRefreshLastAt = 0;
|
|
59536
|
-
let transferDiscoveryVisible = false;
|
|
59435
|
+
function createWalletReconciliation({ network, appState, getTransferState, updateWalletData, claimDeposits, deferBackgroundWork = null, backgroundSignal = null, diag }) {
|
|
59436
|
+
const waits = createOwnedWaits();
|
|
59437
|
+
const depositRate = getDepositClaimPollMs(network);
|
|
59438
|
+
let started = false;
|
|
59439
|
+
let starting = false;
|
|
59537
59440
|
let closed = false;
|
|
59538
|
-
|
|
59539
|
-
|
|
59540
|
-
|
|
59541
|
-
const
|
|
59542
|
-
const
|
|
59543
|
-
|
|
59544
|
-
|
|
59545
|
-
if (!hasFastActiveRefreshWork())
|
|
59546
|
-
return false;
|
|
59547
|
-
return hasActivePendingClaim() || !activeRefreshLastAt || Date.now() - activeRefreshLastAt >= activeRefreshPollMs;
|
|
59548
|
-
};
|
|
59549
|
-
const runActiveRefresh = (reason = "active-poll") => {
|
|
59550
|
-
if (closed || !wallet || !isActive()) {
|
|
59551
|
-
return Promise.resolve([]);
|
|
59552
|
-
}
|
|
59553
|
-
if (activeRefreshPromise) {
|
|
59554
|
-
return activeRefreshPromise;
|
|
59555
|
-
}
|
|
59556
|
-
const promise = (async () => {
|
|
59557
|
-
activeRefreshLastAt = Date.now();
|
|
59558
|
-
const transferState = getTransferState();
|
|
59559
|
-
const transfers = typeof transferState.claimPendingIncomingTransfers === "function" ? await transferState.claimPendingIncomingTransfers(reason) : [];
|
|
59560
|
-
const claimActive = hasActivePendingClaim();
|
|
59561
|
-
if (isTxReady() && typeof transferState.refreshPendingTransfers === "function" && !transferDiscoveryVisible && !claimActive) {
|
|
59562
|
-
transferState.refreshPendingTransfers(null, { cold: true, reason });
|
|
59563
|
-
}
|
|
59564
|
-
return transfers;
|
|
59565
|
-
})().finally(() => {
|
|
59566
|
-
if (activeRefreshPromise === promise) {
|
|
59567
|
-
activeRefreshPromise = null;
|
|
59568
|
-
}
|
|
59569
|
-
});
|
|
59570
|
-
activeRefreshPromise = promise;
|
|
59571
|
-
return promise;
|
|
59572
|
-
};
|
|
59573
|
-
const stopActiveRefreshPoll = () => {
|
|
59574
|
-
if (!activeRefreshInterval)
|
|
59575
|
-
return;
|
|
59576
|
-
clearInterval(activeRefreshInterval);
|
|
59577
|
-
activeRefreshInterval = null;
|
|
59441
|
+
let timer = null;
|
|
59442
|
+
let promise = null;
|
|
59443
|
+
let queued = null;
|
|
59444
|
+
const waiters = [];
|
|
59445
|
+
const finishWaiters = () => {
|
|
59446
|
+
for (const resolve of waiters.splice(0))
|
|
59447
|
+
resolve();
|
|
59578
59448
|
};
|
|
59579
|
-
|
|
59580
|
-
|
|
59581
|
-
|
|
59582
|
-
|
|
59583
|
-
|
|
59584
|
-
|
|
59585
|
-
|
|
59586
|
-
|
|
59449
|
+
let pendingAt = 0;
|
|
59450
|
+
let repairAt = 0;
|
|
59451
|
+
let depositAt = 0;
|
|
59452
|
+
const isActive = () => !appState?.currentState || appState.currentState === "active";
|
|
59453
|
+
const isOpen = () => !closed && !backgroundSignal?.aborted;
|
|
59454
|
+
const hasPending = () => {
|
|
59455
|
+
const state = getTransferState();
|
|
59456
|
+
return state.hasPendingTxs || state.hasRequestedTransfers();
|
|
59587
59457
|
};
|
|
59588
|
-
|
|
59589
|
-
|
|
59458
|
+
function sync() {
|
|
59459
|
+
clearTimeout(timer);
|
|
59460
|
+
timer = null;
|
|
59461
|
+
if (!isOpen() || !started || !isActive() || promise)
|
|
59590
59462
|
return;
|
|
59591
|
-
|
|
59592
|
-
|
|
59593
|
-
|
|
59594
|
-
|
|
59595
|
-
|
|
59596
|
-
|
|
59597
|
-
|
|
59598
|
-
|
|
59599
|
-
|
|
59600
|
-
|
|
59601
|
-
|
|
59602
|
-
|
|
59603
|
-
|
|
59604
|
-
}
|
|
59605
|
-
const
|
|
59606
|
-
|
|
59607
|
-
|
|
59463
|
+
const next = Math.min(repairAt, depositAt, hasPending() ? pendingAt : Infinity);
|
|
59464
|
+
timer = setTimeout(tick, Math.max(0, next - Date.now()));
|
|
59465
|
+
}
|
|
59466
|
+
function request2(options = {}) {
|
|
59467
|
+
if (!isOpen())
|
|
59468
|
+
return Promise.resolve();
|
|
59469
|
+
queued = {
|
|
59470
|
+
history: queued?.history || options.history === true,
|
|
59471
|
+
incoming: queued?.incoming || options.incoming === true,
|
|
59472
|
+
pending: queued?.pending || options.pending === true,
|
|
59473
|
+
deposits: queued?.deposits || options.deposits === true,
|
|
59474
|
+
forcePending: queued?.forcePending || options.pending === true && options.reason !== "scheduled",
|
|
59475
|
+
reason: queued?.reason && queued.reason !== options.reason ? "merged" : options.reason || "manual"
|
|
59476
|
+
};
|
|
59477
|
+
const result = new Promise((resolve) => waiters.push(resolve));
|
|
59478
|
+
if (!started || !isActive() || promise)
|
|
59479
|
+
return result;
|
|
59480
|
+
clearTimeout(timer);
|
|
59481
|
+
const run2 = async () => {
|
|
59482
|
+
while (queued && isOpen() && isActive()) {
|
|
59483
|
+
const work = queued;
|
|
59484
|
+
queued = null;
|
|
59485
|
+
const startedAt = Date.now();
|
|
59486
|
+
try {
|
|
59487
|
+
if (work.incoming) {
|
|
59488
|
+
repairAt = Date.now() + WALLET_TRANSFER_REPAIR_MS;
|
|
59489
|
+
await getTransferState().claimPendingIncomingTransfers(work.reason);
|
|
59490
|
+
}
|
|
59491
|
+
if (!isOpen())
|
|
59492
|
+
break;
|
|
59493
|
+
if (!isActive()) {
|
|
59494
|
+
request2(work);
|
|
59495
|
+
break;
|
|
59496
|
+
}
|
|
59497
|
+
if (work.deposits) {
|
|
59498
|
+
depositAt = Date.now() + depositRate;
|
|
59499
|
+
if (await claimDeposits())
|
|
59500
|
+
work.history = true;
|
|
59501
|
+
}
|
|
59502
|
+
if (!isOpen())
|
|
59503
|
+
break;
|
|
59504
|
+
if (!isActive()) {
|
|
59505
|
+
request2(work);
|
|
59506
|
+
break;
|
|
59507
|
+
}
|
|
59508
|
+
if (work.history)
|
|
59509
|
+
await updateWalletData({ force: true, reason: work.reason });
|
|
59510
|
+
if (!isOpen())
|
|
59511
|
+
break;
|
|
59512
|
+
if (!isActive()) {
|
|
59513
|
+
request2(work);
|
|
59514
|
+
break;
|
|
59515
|
+
}
|
|
59516
|
+
if (work.pending) {
|
|
59517
|
+
pendingAt = Date.now() + POLL_TXS_RATE;
|
|
59518
|
+
await getTransferState().refreshPendingTransfers(null, { force: work.forcePending, reason: work.reason });
|
|
59519
|
+
}
|
|
59520
|
+
if (!isOpen())
|
|
59521
|
+
break;
|
|
59522
|
+
if (!isActive()) {
|
|
59523
|
+
request2(work);
|
|
59524
|
+
break;
|
|
59525
|
+
}
|
|
59526
|
+
markDone(diag, "wallet.reconcile", startedAt, work);
|
|
59527
|
+
} catch (error) {
|
|
59528
|
+
markError(diag, "wallet.reconcile", startedAt, error, { reason: work.reason });
|
|
59529
|
+
}
|
|
59608
59530
|
}
|
|
59531
|
+
};
|
|
59532
|
+
const running = Promise.resolve().then(run2).finally(() => {
|
|
59533
|
+
if (promise === running)
|
|
59534
|
+
promise = null;
|
|
59535
|
+
if (!queued)
|
|
59536
|
+
finishWaiters();
|
|
59537
|
+
sync();
|
|
59609
59538
|
});
|
|
59610
|
-
|
|
59611
|
-
return
|
|
59612
|
-
}
|
|
59613
|
-
|
|
59614
|
-
|
|
59615
|
-
|
|
59616
|
-
|
|
59617
|
-
|
|
59618
|
-
|
|
59619
|
-
|
|
59620
|
-
|
|
59621
|
-
|
|
59622
|
-
|
|
59623
|
-
|
|
59624
|
-
|
|
59625
|
-
|
|
59626
|
-
|
|
59627
|
-
|
|
59628
|
-
|
|
59629
|
-
|
|
59630
|
-
};
|
|
59631
|
-
const sync = () => {
|
|
59632
|
-
if (closed || !wallet) {
|
|
59633
|
-
stopPoll();
|
|
59634
|
-
stopActiveRefreshPoll();
|
|
59635
|
-
return;
|
|
59636
|
-
}
|
|
59637
|
-
if (isActive() && hasFastActiveRefreshWork()) {
|
|
59638
|
-
startActiveRefreshPoll();
|
|
59639
|
-
} else {
|
|
59640
|
-
stopActiveRefreshPoll();
|
|
59641
|
-
}
|
|
59642
|
-
if (getTransferState().hasPendingTxs && isActive()) {
|
|
59643
|
-
startPoll();
|
|
59644
|
-
} else {
|
|
59645
|
-
stopPoll();
|
|
59539
|
+
promise = running;
|
|
59540
|
+
return result;
|
|
59541
|
+
}
|
|
59542
|
+
function tick() {
|
|
59543
|
+
timer = null;
|
|
59544
|
+
const now = Date.now();
|
|
59545
|
+
const incoming = now >= repairAt;
|
|
59546
|
+
const deposits = now >= depositAt;
|
|
59547
|
+
const pending = hasPending() && now >= pendingAt;
|
|
59548
|
+
if (incoming)
|
|
59549
|
+
repairAt = now + WALLET_TRANSFER_REPAIR_MS;
|
|
59550
|
+
if (deposits)
|
|
59551
|
+
depositAt = now + depositRate;
|
|
59552
|
+
if (pending)
|
|
59553
|
+
pendingAt = now + POLL_TXS_RATE;
|
|
59554
|
+
request2({ incoming, deposits, pending, reason: "scheduled" });
|
|
59555
|
+
}
|
|
59556
|
+
const subscription = appState?.addEventListener?.("change", (state) => {
|
|
59557
|
+
if (state === "active") {
|
|
59558
|
+
request2({ incoming: true, history: true, pending: true, deposits: true, reason: "resume" });
|
|
59646
59559
|
}
|
|
59647
|
-
};
|
|
59648
|
-
const setTransferDiscoveryVisible = (visible) => {
|
|
59649
|
-
const next = visible === true;
|
|
59650
|
-
if (transferDiscoveryVisible === next)
|
|
59651
|
-
return;
|
|
59652
|
-
transferDiscoveryVisible = next;
|
|
59653
|
-
if (next)
|
|
59654
|
-
activeRefreshLastAt = 0;
|
|
59655
59560
|
sync();
|
|
59656
|
-
};
|
|
59657
|
-
const appStateSubscription = appState?.addEventListener?.("change", (nextState2) => {
|
|
59658
|
-
if (nextState2 === "active") {
|
|
59659
|
-
runActiveRefresh("focus");
|
|
59660
|
-
startActiveRefreshPoll();
|
|
59661
|
-
if (getTransferState().hasPendingTxs) {
|
|
59662
|
-
startPoll();
|
|
59663
|
-
runPendingPoll();
|
|
59664
|
-
}
|
|
59665
|
-
refreshClaims();
|
|
59666
|
-
return;
|
|
59667
|
-
}
|
|
59668
|
-
stopPoll();
|
|
59669
|
-
stopActiveRefreshPoll();
|
|
59670
59561
|
});
|
|
59671
|
-
const depositClaimInterval = setInterval(() => {
|
|
59672
|
-
if (isActive()) {
|
|
59673
|
-
refreshClaims();
|
|
59674
|
-
}
|
|
59675
|
-
}, depositClaimRate);
|
|
59676
|
-
sync();
|
|
59677
59562
|
return {
|
|
59678
|
-
|
|
59679
|
-
|
|
59563
|
+
request: request2,
|
|
59564
|
+
refresh: () => request2({ incoming: true, history: true, pending: true, deposits: true, reason: "manual" }),
|
|
59680
59565
|
sync,
|
|
59681
|
-
|
|
59682
|
-
if (
|
|
59566
|
+
async start() {
|
|
59567
|
+
if (starting || !isOpen())
|
|
59683
59568
|
return;
|
|
59684
|
-
|
|
59685
|
-
|
|
59686
|
-
|
|
59687
|
-
|
|
59688
|
-
appStateSubscription?.remove?.();
|
|
59689
|
-
}
|
|
59690
|
-
};
|
|
59691
|
-
}
|
|
59692
|
-
function createWalletBoot({ wallet, getTransferState, getBalance, getRecentTxs, deferBackgroundWork = null, backgroundSignal = null, stopPoll, diag }) {
|
|
59693
|
-
let closed = false;
|
|
59694
|
-
const waits = createOwnedWaits();
|
|
59695
|
-
const boot = async () => {
|
|
59696
|
-
const startedAt = Date.now();
|
|
59697
|
-
markDiag(diag, "wallet.provider.boot.start", {});
|
|
59698
|
-
await waits.delay(BOOT_CACHE_DECISION_DELAY_MS);
|
|
59699
|
-
await waits.idle({ timeout: BOOT_REFRESH_DELAY_MS, delay: BOOT_REFRESH_DELAY_MS });
|
|
59700
|
-
if (closed) {
|
|
59701
|
-
markDone(diag, "wallet.provider.boot", startedAt, { cancelled: true });
|
|
59702
|
-
return;
|
|
59703
|
-
}
|
|
59704
|
-
const transferState = getTransferState();
|
|
59705
|
-
if (transferState.txReady) {
|
|
59706
|
-
const cachedTransferCount = transferState.transferCount;
|
|
59707
|
-
markDone(diag, "wallet.provider.boot", startedAt, {
|
|
59708
|
-
cancelled: false,
|
|
59709
|
-
cachedTxReady: true,
|
|
59710
|
-
deferredTxRefresh: true,
|
|
59711
|
-
deferredBalanceRefresh: true,
|
|
59712
|
-
firstTxCount: cachedTransferCount
|
|
59713
|
-
});
|
|
59714
|
-
await waits.delay(BOOT_CACHED_REFRESH_DELAY_MS);
|
|
59715
|
-
if (closed)
|
|
59569
|
+
starting = true;
|
|
59570
|
+
await waits.delay(BOOT_CACHE_DECISION_DELAY_MS);
|
|
59571
|
+
await waits.idle({ timeout: BOOT_REFRESH_DELAY_MS, delay: BOOT_REFRESH_DELAY_MS });
|
|
59572
|
+
if (!isOpen())
|
|
59716
59573
|
return;
|
|
59717
|
-
if (
|
|
59574
|
+
if (getTransferState().txReady)
|
|
59575
|
+
await waits.delay(BOOT_CACHED_REFRESH_DELAY_MS);
|
|
59576
|
+
if (!isOpen())
|
|
59577
|
+
return;
|
|
59578
|
+
if (deferBackgroundWork)
|
|
59718
59579
|
await deferBackgroundWork("wallet.boot.refresh", { signal: backgroundSignal });
|
|
59719
|
-
|
|
59720
|
-
await waits.idle({ timeout: BOOT_REFRESH_DELAY_MS, delay: BOOT_REFRESH_DELAY_MS });
|
|
59721
|
-
}
|
|
59722
|
-
if (closed)
|
|
59580
|
+
if (!isOpen())
|
|
59723
59581
|
return;
|
|
59724
|
-
|
|
59725
|
-
|
|
59726
|
-
|
|
59727
|
-
|
|
59728
|
-
|
|
59729
|
-
|
|
59730
|
-
|
|
59731
|
-
count: recent?.transfers?.length || 0
|
|
59732
|
-
});
|
|
59733
|
-
} catch (error) {
|
|
59734
|
-
markError(diag, "wallet.provider.boot.refresh", refreshStartedAt, error);
|
|
59735
|
-
}
|
|
59736
|
-
return;
|
|
59737
|
-
}
|
|
59738
|
-
if (typeof deferBackgroundWork === "function") {
|
|
59739
|
-
await deferBackgroundWork("wallet.boot.initial", { signal: backgroundSignal });
|
|
59740
|
-
}
|
|
59741
|
-
if (closed) {
|
|
59742
|
-
markDone(diag, "wallet.provider.boot", startedAt, { cancelled: true });
|
|
59743
|
-
return;
|
|
59744
|
-
}
|
|
59745
|
-
const [, firstTxPage] = await Promise.all([getBalance(), getRecentTxs({ reason: "boot", includePending: false })]);
|
|
59746
|
-
markDone(diag, "wallet.provider.boot", startedAt, {
|
|
59747
|
-
cancelled: closed,
|
|
59748
|
-
cachedTxReady: false,
|
|
59749
|
-
deferredTxRefresh: false,
|
|
59750
|
-
firstTxCount: firstTxPage?.transfers?.length || 0,
|
|
59751
|
-
firstTxHasMore: !!firstTxPage?.hasMore,
|
|
59752
|
-
cachedHistoryComplete: firstTxPage?.cachedHistoryComplete === true,
|
|
59753
|
-
reconcileCount: Array.isArray(firstTxPage?.reconcileIds) ? firstTxPage.reconcileIds.length : 0
|
|
59754
|
-
});
|
|
59755
|
-
};
|
|
59756
|
-
if (wallet) {
|
|
59757
|
-
boot();
|
|
59758
|
-
}
|
|
59759
|
-
return {
|
|
59582
|
+
started = true;
|
|
59583
|
+
const now = Date.now();
|
|
59584
|
+
pendingAt = now + POLL_TXS_RATE;
|
|
59585
|
+
repairAt = now + WALLET_TRANSFER_REPAIR_MS;
|
|
59586
|
+
depositAt = now + depositRate;
|
|
59587
|
+
await request2({ history: true, pending: true, reason: "boot" });
|
|
59588
|
+
},
|
|
59760
59589
|
close() {
|
|
59761
|
-
if (closed)
|
|
59762
|
-
return;
|
|
59763
59590
|
closed = true;
|
|
59591
|
+
queued = null;
|
|
59592
|
+
finishWaiters();
|
|
59764
59593
|
waits.close();
|
|
59765
|
-
|
|
59766
|
-
|
|
59594
|
+
clearTimeout(timer);
|
|
59595
|
+
subscription?.remove?.();
|
|
59767
59596
|
}
|
|
59768
59597
|
};
|
|
59769
59598
|
}
|
|
@@ -59789,13 +59618,12 @@ function createWalletReadyDiag({ wallet, getBalanceState, getTransferState, diag
|
|
|
59789
59618
|
}
|
|
59790
59619
|
};
|
|
59791
59620
|
}
|
|
59792
|
-
var POLL_TXS_RATE,
|
|
59621
|
+
var POLL_TXS_RATE, BOOT_REFRESH_DELAY_MS, BOOT_CACHED_REFRESH_DELAY_MS, BOOT_CACHE_DECISION_DELAY_MS, BALANCE_EVENT_COALESCE_MS, INCOMING_UPDATE_COALESCE_MS, WALLET_EVENTS;
|
|
59793
59622
|
var init_lifecycle = __esm(() => {
|
|
59794
59623
|
init_config();
|
|
59795
59624
|
init_network();
|
|
59796
59625
|
init_async();
|
|
59797
59626
|
POLL_TXS_RATE = WALLET_TRANSFER_POLL_MS;
|
|
59798
|
-
ACTIVE_TRANSFER_REFRESH_RATE = WALLET_ACTIVE_TRANSFER_REFRESH_MS;
|
|
59799
59627
|
BOOT_REFRESH_DELAY_MS = WALLET_BOOT_REFRESH_DELAY_MS;
|
|
59800
59628
|
BOOT_CACHED_REFRESH_DELAY_MS = WALLET_BOOT_CACHED_REFRESH_DELAY_MS;
|
|
59801
59629
|
BOOT_CACHE_DECISION_DELAY_MS = BOOT_REFRESH_DELAY_MS + Math.max(0, WALLET_CACHE_HYDRATE_DELAY_MS) + 250;
|
|
@@ -60251,18 +60079,6 @@ var init_privacy = __esm(() => {
|
|
|
60251
60079
|
PRIVACY_SYNC_DELAY_MS = WALLET_BOOT_CACHED_REFRESH_DELAY_MS * 2;
|
|
60252
60080
|
});
|
|
60253
60081
|
|
|
60254
|
-
// ../../core/wallet/history.js
|
|
60255
|
-
function transferPage(page, currentOffset, limit) {
|
|
60256
|
-
const transfers = Array.isArray(page?.transfers) ? page.transfers : [];
|
|
60257
|
-
const returnedOffset = Number(page?.offset);
|
|
60258
|
-
const nextOffset = Number.isFinite(returnedOffset) && returnedOffset > currentOffset ? returnedOffset : currentOffset + transfers.length;
|
|
60259
|
-
return {
|
|
60260
|
-
transfers,
|
|
60261
|
-
nextOffset,
|
|
60262
|
-
hasMore: transfers.length >= limit
|
|
60263
|
-
};
|
|
60264
|
-
}
|
|
60265
|
-
|
|
60266
60082
|
// ../../core/wallet/transferdata.js
|
|
60267
60083
|
function compareRecentTransfer(a, b) {
|
|
60268
60084
|
const delta = txCreatedMs(b) - txCreatedMs(a);
|
|
@@ -60403,16 +60219,6 @@ function getOldestTransferMs(transfers = []) {
|
|
|
60403
60219
|
}
|
|
60404
60220
|
return oldest;
|
|
60405
60221
|
}
|
|
60406
|
-
function getOldestAnyTransferMs(transfers = []) {
|
|
60407
|
-
let oldest = null;
|
|
60408
|
-
for (const tx of transfers) {
|
|
60409
|
-
const ms = txCreatedMs(tx);
|
|
60410
|
-
if (!ms)
|
|
60411
|
-
continue;
|
|
60412
|
-
oldest = oldest == null ? ms : Math.min(oldest, ms);
|
|
60413
|
-
}
|
|
60414
|
-
return oldest;
|
|
60415
|
-
}
|
|
60416
60222
|
function shouldReplaceTransfer(current, next) {
|
|
60417
60223
|
return isPendingTransfer(current) && (!isPendingTransfer(next) || current?.status !== next?.status || txUpdatedMs(next) > txUpdatedMs(current));
|
|
60418
60224
|
}
|
|
@@ -60706,14 +60512,6 @@ function reconciliationDue(owner, transfer, id, now) {
|
|
|
60706
60512
|
const retryMs = getPendingTransferRetryMs(transfer, ageMs, owner.unresolvedCount.get(id) || 0);
|
|
60707
60513
|
return retryMs <= 0 || now - lastAttemptAt >= retryMs;
|
|
60708
60514
|
}
|
|
60709
|
-
async function stillPendingTransferIds(wallet, ids = []) {
|
|
60710
|
-
const selectedIds = transferIds2(ids);
|
|
60711
|
-
if (!selectedIds.length || typeof wallet?.transferService?.queryPendingTransfers !== "function")
|
|
60712
|
-
return new Set;
|
|
60713
|
-
const requestedIds = new Set(selectedIds);
|
|
60714
|
-
const page = await wallet.transferService.queryPendingTransfers.call(wallet.transferService, selectedIds);
|
|
60715
|
-
return new Set((Array.isArray(page?.transfers) ? page.transfers : []).map((transfer) => String(transfer?.id || "")).filter((id) => id && requestedIds.has(id)));
|
|
60716
|
-
}
|
|
60717
60515
|
function normalizeCursor(owner, transfers = owner.snapshot.getTransfers()) {
|
|
60718
60516
|
const count = pendingTransferIds(transfers).length;
|
|
60719
60517
|
if (!count) {
|
|
@@ -60814,8 +60612,10 @@ async function refreshRequestedTransfers(owner, ids = []) {
|
|
|
60814
60612
|
const requestedIds = transferIds2(ids);
|
|
60815
60613
|
if (!requestedIds.length)
|
|
60816
60614
|
return [];
|
|
60817
|
-
for (const id of requestedIds)
|
|
60615
|
+
for (const id of requestedIds) {
|
|
60818
60616
|
owner.requestedIds.add(id);
|
|
60617
|
+
owner.hydrationDue.set(id, Date.now() + WALLET_TRANSFER_POLL_MS);
|
|
60618
|
+
}
|
|
60819
60619
|
if (owner.requestedPromise) {
|
|
60820
60620
|
markDiag(owner.diag, "wallet.pendingTxs.requested.queue", { count: requestedIds.length });
|
|
60821
60621
|
return owner.requestedPromise;
|
|
@@ -60823,56 +60623,44 @@ async function refreshRequestedTransfers(owner, ids = []) {
|
|
|
60823
60623
|
const run2 = async () => {
|
|
60824
60624
|
let latestTransfers = [];
|
|
60825
60625
|
while (isCurrentGeneration(owner, generation) && owner.requestedIds.size) {
|
|
60826
|
-
const batchIds = [...owner.requestedIds];
|
|
60827
|
-
|
|
60626
|
+
const batchIds = [...owner.requestedIds].slice(0, COLD_BATCH_SIZE);
|
|
60627
|
+
for (const id of batchIds)
|
|
60628
|
+
owner.requestedIds.delete(id);
|
|
60828
60629
|
const batchIdSet = new Set(batchIds);
|
|
60829
60630
|
const startedAt = Date.now();
|
|
60830
60631
|
markDiag(owner.diag, "wallet.pendingTxs.requested.start", { requested: batchIds.length });
|
|
60831
60632
|
try {
|
|
60832
60633
|
const baseTransfers = owner.snapshot.getTransfers();
|
|
60833
60634
|
const baseById = new Map(baseTransfers.map((transfer) => [String(transfer?.id || ""), transfer]));
|
|
60834
|
-
|
|
60835
|
-
let pageTransfers = [];
|
|
60836
|
-
let fetchedTransfers = await owner.reads.byIds(batchIds);
|
|
60837
|
-
if (!isCurrentGeneration(owner, generation))
|
|
60838
|
-
return [];
|
|
60839
|
-
if (!fetchedTransfers) {
|
|
60840
|
-
if (batchIds.length === 1) {
|
|
60841
|
-
const transfer = await owner.reads.byId(batchIds[0]);
|
|
60842
|
-
fetchedTransfers = transfer ? [transfer] : [];
|
|
60843
|
-
} else {
|
|
60844
|
-
const result = await owner.reads.recentPages(batchIds, baseTransfers);
|
|
60845
|
-
pages = result.pages;
|
|
60846
|
-
pageTransfers = result.transfers;
|
|
60847
|
-
fetchedTransfers = pageTransfers;
|
|
60848
|
-
}
|
|
60849
|
-
}
|
|
60635
|
+
const fetchedTransfers = await owner.reads.byIds(batchIds);
|
|
60850
60636
|
if (!isCurrentGeneration(owner, generation))
|
|
60851
60637
|
return [];
|
|
60852
|
-
const updates = fetchedTransfers.map((transfer) => {
|
|
60638
|
+
const updates = fetchedTransfers.filter((transfer) => batchIdSet.has(String(transfer?.id)) && transferBelongsToWallet(compactTransfer(transfer), owner.walletPK)).map((transfer) => {
|
|
60853
60639
|
const id = String(transfer?.id || "");
|
|
60854
60640
|
const current = id ? baseById.get(id) : null;
|
|
60855
60641
|
return current?.transferDirection && !transfer?.transferDirection ? { ...transfer, transferDirection: current.transferDirection } : transfer;
|
|
60856
60642
|
});
|
|
60857
60643
|
forgetResolvedFetched(owner, updates);
|
|
60858
|
-
const
|
|
60644
|
+
const currentTransfers = owner.snapshot.getTransfers();
|
|
60645
|
+
const nextTransfers = updates.length ? overlayPending(owner, mergeTransferPageForWallet(currentTransfers, updates, owner.walletPK, "append")) : currentTransfers;
|
|
60859
60646
|
const requestedTransfers = nextTransfers.filter((transfer) => batchIdSet.has(String(transfer?.id || "")));
|
|
60860
60647
|
const claimCandidates = owner.claims.candidates(pendingIncomingTransfers(requestedTransfers));
|
|
60861
60648
|
const resolvedIds = requestedTransfers.filter((transfer) => !isPendingTransfer(transfer)).map((transfer) => String(transfer.id));
|
|
60862
60649
|
forgetPending(owner, resolvedIds);
|
|
60863
|
-
if (nextTransfers !==
|
|
60650
|
+
if (nextTransfers !== currentTransfers) {
|
|
60864
60651
|
await owner.snapshot.commitConfirmed(requestedTransfers.filter((transfer) => !isPendingTransfer(transfer)), { position: "prepend" });
|
|
60865
60652
|
if (!isCurrentGeneration(owner, generation))
|
|
60866
60653
|
return [];
|
|
60867
|
-
owner.snapshot.replace(
|
|
60654
|
+
owner.snapshot.replace(mergeTransferPageForWallet(owner.snapshot.getTransfers(), updates, owner.walletPK, "append"));
|
|
60868
60655
|
owner.snapshot.setReady();
|
|
60869
60656
|
}
|
|
60657
|
+
for (const transfer of updates)
|
|
60658
|
+
owner.hydrationDue.delete(String(transfer.id));
|
|
60870
60659
|
if (claimCandidates.length)
|
|
60871
60660
|
owner.claims.enqueue(claimCandidates, "requested");
|
|
60872
60661
|
markDone(owner.diag, "wallet.pendingTxs.requested", startedAt, {
|
|
60873
60662
|
requested: batchIds.length,
|
|
60874
|
-
pages,
|
|
60875
|
-
pageCount: pageTransfers.length,
|
|
60663
|
+
pages: 0,
|
|
60876
60664
|
updateCount: updates.length,
|
|
60877
60665
|
found: requestedTransfers.length,
|
|
60878
60666
|
resolved: resolvedIds.length,
|
|
@@ -60897,7 +60685,7 @@ async function refreshRequestedTransfers(owner, ids = []) {
|
|
|
60897
60685
|
owner.requestedPromise = request2;
|
|
60898
60686
|
return request2;
|
|
60899
60687
|
}
|
|
60900
|
-
function planPendingReconciliation(owner, { startedAt, cold, reason }) {
|
|
60688
|
+
function planPendingReconciliation(owner, { startedAt, cold, reason, force }) {
|
|
60901
60689
|
const previousTransfers = owner.snapshot.getTransfers();
|
|
60902
60690
|
const pendingList = pendingTransfers(previousTransfers);
|
|
60903
60691
|
const pendingById = syncReconciliationAges(owner, pendingList, startedAt);
|
|
@@ -60909,11 +60697,13 @@ function planPendingReconciliation(owner, { startedAt, cold, reason }) {
|
|
|
60909
60697
|
const transfer = pendingById.get(id);
|
|
60910
60698
|
if (cold && transfer && isIncomingTransfer(transfer))
|
|
60911
60699
|
return false;
|
|
60700
|
+
if (force)
|
|
60701
|
+
return true;
|
|
60912
60702
|
if (bootGraceActive && transfer && !owner.rememberedIds.has(id) && !isIncomingTransfer(transfer))
|
|
60913
60703
|
return false;
|
|
60914
60704
|
return reconciliationDue(owner, transfer, id, startedAt);
|
|
60915
60705
|
});
|
|
60916
|
-
const limit = Math.min(cold ? COLD_BATCH_SIZE : STATUS_BATCH_SIZE, candidateIds.length);
|
|
60706
|
+
const limit = Math.min(cold || force ? COLD_BATCH_SIZE : STATUS_BATCH_SIZE, candidateIds.length);
|
|
60917
60707
|
const selectedIds = rotateIds(candidateIds, owner.cursor, limit);
|
|
60918
60708
|
if (candidateIds.length)
|
|
60919
60709
|
owner.cursor = (owner.cursor + selectedIds.length) % candidateIds.length;
|
|
@@ -60942,58 +60732,45 @@ async function readPendingReconciliation(owner, plan, generation) {
|
|
|
60942
60732
|
const baseTransfers = currentTransfers.length ? currentTransfers : plan.previousTransfers;
|
|
60943
60733
|
const baseById = new Map(baseTransfers.map((transfer) => [String(transfer?.id || ""), transfer]));
|
|
60944
60734
|
const resolvedIds = [];
|
|
60945
|
-
const completedOverlayIds = [];
|
|
60946
60735
|
const updates = [];
|
|
60947
|
-
let actualChecked = 0;
|
|
60948
60736
|
let unresolvedOutgoing = 0;
|
|
60949
60737
|
let maxUnresolvedCount = 0;
|
|
60950
|
-
|
|
60951
|
-
|
|
60952
|
-
|
|
60953
|
-
|
|
60954
|
-
|
|
60955
|
-
|
|
60956
|
-
|
|
60957
|
-
|
|
60958
|
-
|
|
60959
|
-
const
|
|
60960
|
-
|
|
60961
|
-
|
|
60962
|
-
|
|
60963
|
-
|
|
60964
|
-
|
|
60965
|
-
|
|
60966
|
-
|
|
60967
|
-
|
|
60968
|
-
|
|
60969
|
-
|
|
60970
|
-
updates.push(update);
|
|
60971
|
-
if (!isPendingTransfer(update)) {
|
|
60972
|
-
resolvedIds.push(id);
|
|
60973
|
-
owner.unresolvedCount.delete(id);
|
|
60974
|
-
} else {
|
|
60975
|
-
const count = (owner.unresolvedCount.get(id) || 0) + 1;
|
|
60976
|
-
owner.unresolvedCount.set(id, count);
|
|
60977
|
-
unresolvedOutgoing += 1;
|
|
60978
|
-
maxUnresolvedCount = Math.max(maxUnresolvedCount, count);
|
|
60979
|
-
}
|
|
60738
|
+
const fetched = await owner.reads.byIds(plan.selectedIds);
|
|
60739
|
+
if (!isCurrentGeneration(owner, generation))
|
|
60740
|
+
return null;
|
|
60741
|
+
const actualChecked = fetched.length;
|
|
60742
|
+
const selected = new Set(plan.selectedIds);
|
|
60743
|
+
for (const transfer of fetched) {
|
|
60744
|
+
const id = String(transfer?.id || "");
|
|
60745
|
+
if (!selected.has(id) || !transferBelongsToWallet(compactTransfer(transfer), owner.walletPK))
|
|
60746
|
+
continue;
|
|
60747
|
+
const current = baseById.get(id);
|
|
60748
|
+
const update = current?.transferDirection && !transfer?.transferDirection ? { ...transfer, transferDirection: current.transferDirection } : transfer;
|
|
60749
|
+
updates.push(update);
|
|
60750
|
+
if (!isPendingTransfer(update)) {
|
|
60751
|
+
resolvedIds.push(id);
|
|
60752
|
+
owner.unresolvedCount.delete(id);
|
|
60753
|
+
} else if (!isIncomingTransfer(update)) {
|
|
60754
|
+
const count = (owner.unresolvedCount.get(id) || 0) + 1;
|
|
60755
|
+
owner.unresolvedCount.set(id, count);
|
|
60756
|
+
unresolvedOutgoing += 1;
|
|
60757
|
+
maxUnresolvedCount = Math.max(maxUnresolvedCount, count);
|
|
60980
60758
|
}
|
|
60981
60759
|
}
|
|
60982
|
-
return {
|
|
60760
|
+
return { resolvedIds, updates, actualChecked, unresolvedOutgoing, maxUnresolvedCount };
|
|
60983
60761
|
}
|
|
60984
60762
|
async function commitPendingReconciliation(owner, plan, result, generation) {
|
|
60985
60763
|
if (!result || !isCurrentGeneration(owner, generation))
|
|
60986
60764
|
return null;
|
|
60987
|
-
|
|
60765
|
+
const current = owner.snapshot.getTransfers();
|
|
60766
|
+
const nextTransfers = result.updates.length ? overlayPending(owner, mergeTransferPageForWallet(current, result.updates, owner.walletPK, "append")) : current;
|
|
60988
60767
|
forgetPending(owner, result.resolvedIds);
|
|
60989
|
-
if (
|
|
60990
|
-
nextTransfers = markClaimedTransfersCompleted(nextTransfers, result.completedOverlayIds);
|
|
60991
|
-
if (nextTransfers !== result.baseTransfers) {
|
|
60768
|
+
if (nextTransfers !== current) {
|
|
60992
60769
|
const selectedIds = new Set(plan.selectedIds);
|
|
60993
60770
|
await owner.snapshot.commitConfirmed(nextTransfers.filter((transfer) => selectedIds.has(String(transfer?.id)) && !isPendingTransfer(transfer)), { position: "prepend" });
|
|
60994
60771
|
if (!isCurrentGeneration(owner, generation))
|
|
60995
60772
|
return null;
|
|
60996
|
-
owner.snapshot.replace(
|
|
60773
|
+
owner.snapshot.replace(mergeTransferPageForWallet(owner.snapshot.getTransfers(), result.updates, owner.walletPK, "append"));
|
|
60997
60774
|
owner.snapshot.setReady();
|
|
60998
60775
|
}
|
|
60999
60776
|
markDone(owner.diag, "wallet.pendingTxs.reconcile", plan.startedAt, {
|
|
@@ -61030,7 +60807,7 @@ async function reconcilePendingTransfers(owner, options = {}, generation = owner
|
|
|
61030
60807
|
}
|
|
61031
60808
|
if (cold)
|
|
61032
60809
|
owner.coldRefreshAt = startedAt;
|
|
61033
|
-
const plan = planPendingReconciliation(owner, { startedAt, cold, reason });
|
|
60810
|
+
const plan = planPendingReconciliation(owner, { startedAt, cold, reason, force: options.force === true });
|
|
61034
60811
|
if (!plan.selectedIds.length)
|
|
61035
60812
|
return [];
|
|
61036
60813
|
if (!await owner.waitForWork("pending-reconcile", plan.eagerOutgoing ? { waitForSdkQuiet: false, idleMs: 0 } : undefined) || !isCurrentGeneration(owner, generation))
|
|
@@ -61064,29 +60841,38 @@ function refreshPending(owner, ids = null, options = {}) {
|
|
|
61064
60841
|
const requestedIds = transferIds2(ids);
|
|
61065
60842
|
if (requestedIds.length)
|
|
61066
60843
|
return refreshRequestedTransfers(owner, requestedIds);
|
|
61067
|
-
if (owner.claims.isActive())
|
|
61068
|
-
return Promise.resolve([]);
|
|
61069
|
-
const queuedClaims = owner.claims.queuedCount();
|
|
61070
|
-
if (owner.isPendingQuery() || queuedClaims) {
|
|
61071
|
-
markDiag(owner.diag, "wallet.pendingTxs.reconcile.defer", {
|
|
61072
|
-
reason: owner.isPendingQuery() ? "pending-query" : "claim-queue",
|
|
61073
|
-
queued: queuedClaims
|
|
61074
|
-
});
|
|
61075
|
-
return Promise.resolve([]);
|
|
61076
|
-
}
|
|
61077
60844
|
if (owner.promise) {
|
|
61078
60845
|
owner.queuedAll = true;
|
|
60846
|
+
owner.queuedForce ||= options.force === true;
|
|
61079
60847
|
return owner.promise;
|
|
61080
60848
|
}
|
|
61081
|
-
const
|
|
60849
|
+
const run2 = async () => {
|
|
60850
|
+
const dueIds = [...owner.hydrationDue].filter(([, due]) => options.force === true || due <= Date.now()).map(([id]) => id);
|
|
60851
|
+
if (dueIds.length)
|
|
60852
|
+
await refreshRequestedTransfers(owner, dueIds);
|
|
60853
|
+
if (!isCurrentGeneration(owner, generation) || owner.claims.isActive())
|
|
60854
|
+
return [];
|
|
60855
|
+
const queuedClaims = owner.claims.queuedCount();
|
|
60856
|
+
if (owner.isPendingQuery() || queuedClaims) {
|
|
60857
|
+
markDiag(owner.diag, "wallet.pendingTxs.reconcile.defer", {
|
|
60858
|
+
reason: owner.isPendingQuery() ? "pending-query" : "claim-queue",
|
|
60859
|
+
queued: queuedClaims
|
|
60860
|
+
});
|
|
60861
|
+
return [];
|
|
60862
|
+
}
|
|
60863
|
+
return reconcilePendingTransfers(owner, options, generation);
|
|
60864
|
+
};
|
|
60865
|
+
const request2 = run2().finally(() => {
|
|
61082
60866
|
if (owner.promise === request2)
|
|
61083
60867
|
owner.promise = null;
|
|
61084
60868
|
if (!isCurrentGeneration(owner, generation))
|
|
61085
60869
|
return;
|
|
61086
60870
|
const queuedAll = owner.queuedAll;
|
|
60871
|
+
const force = owner.queuedForce;
|
|
61087
60872
|
owner.queuedAll = false;
|
|
60873
|
+
owner.queuedForce = false;
|
|
61088
60874
|
if (queuedAll)
|
|
61089
|
-
refreshPending(owner);
|
|
60875
|
+
refreshPending(owner, null, { force });
|
|
61090
60876
|
});
|
|
61091
60877
|
owner.promise = request2;
|
|
61092
60878
|
return request2;
|
|
@@ -61111,9 +60897,11 @@ function createPendingTransferReconciliation({ wallet, walletPK, outgoingSettleM
|
|
|
61111
60897
|
attemptAt: new Map,
|
|
61112
60898
|
unresolvedCount: new Map,
|
|
61113
60899
|
requestedIds: new Set,
|
|
60900
|
+
hydrationDue: new Map,
|
|
61114
60901
|
requestedPromise: null,
|
|
61115
60902
|
promise: null,
|
|
61116
60903
|
queuedAll: false,
|
|
60904
|
+
queuedForce: false,
|
|
61117
60905
|
cursor: 0,
|
|
61118
60906
|
coldRefreshAt: 0,
|
|
61119
60907
|
graceUntil: 0,
|
|
@@ -61126,9 +60914,11 @@ function createPendingTransferReconciliation({ wallet, walletPK, outgoingSettleM
|
|
|
61126
60914
|
owner.attemptAt.clear();
|
|
61127
60915
|
owner.unresolvedCount.clear();
|
|
61128
60916
|
owner.requestedIds.clear();
|
|
60917
|
+
owner.hydrationDue.clear();
|
|
61129
60918
|
owner.requestedPromise = null;
|
|
61130
60919
|
owner.promise = null;
|
|
61131
60920
|
owner.queuedAll = false;
|
|
60921
|
+
owner.queuedForce = false;
|
|
61132
60922
|
owner.cursor = 0;
|
|
61133
60923
|
owner.coldRefreshAt = 0;
|
|
61134
60924
|
owner.graceUntil = 0;
|
|
@@ -61144,6 +60934,7 @@ function createPendingTransferReconciliation({ wallet, walletPK, outgoingSettleM
|
|
|
61144
60934
|
startBootGrace() {
|
|
61145
60935
|
owner.graceUntil = Date.now() + WALLET_PENDING_TRANSFER_BOOT_GRACE_MS;
|
|
61146
60936
|
},
|
|
60937
|
+
hasRequestedTransfers: () => owner.hydrationDue.size > 0,
|
|
61147
60938
|
refresh: (ids, options) => refreshPending(owner, ids, options),
|
|
61148
60939
|
reset
|
|
61149
60940
|
});
|
|
@@ -61158,6 +60949,18 @@ var init_transferpending = __esm(() => {
|
|
|
61158
60949
|
COLD_REFRESH_INTERVAL_MS = Math.max(0, WALLET_PENDING_TRANSFER_COLD_REFRESH_INTERVAL_MS);
|
|
61159
60950
|
});
|
|
61160
60951
|
|
|
60952
|
+
// ../../core/wallet/history.js
|
|
60953
|
+
function transferPage(page, currentOffset, limit) {
|
|
60954
|
+
const transfers = Array.isArray(page?.transfers) ? page.transfers : [];
|
|
60955
|
+
const returnedOffset = Number(page?.offset);
|
|
60956
|
+
const nextOffset = Number.isFinite(returnedOffset) && returnedOffset > currentOffset ? returnedOffset : currentOffset + transfers.length;
|
|
60957
|
+
return {
|
|
60958
|
+
transfers,
|
|
60959
|
+
nextOffset,
|
|
60960
|
+
hasMore: transfers.length >= limit
|
|
60961
|
+
};
|
|
60962
|
+
}
|
|
60963
|
+
|
|
61161
60964
|
// ../../core/wallet/transferhistorysync.js
|
|
61162
60965
|
function isCurrentGeneration2(owner, generation) {
|
|
61163
60966
|
return owner.generation === generation && !owner.isClosed();
|
|
@@ -62735,72 +62538,16 @@ function createWalletTransferSession({ wallet, walletPK, claimIncomingTransfers,
|
|
|
62735
62538
|
}
|
|
62736
62539
|
return queueWalletFetch(() => wallet.getTransfer(String(transferId2)));
|
|
62737
62540
|
};
|
|
62738
|
-
const fetchTransfersByIds = async (ids
|
|
62541
|
+
const fetchTransfersByIds = async (ids) => {
|
|
62739
62542
|
const transferIds3 = uniqueIds(ids);
|
|
62740
|
-
if (!transferIds3.length)
|
|
62543
|
+
if (!transferIds3.length)
|
|
62741
62544
|
return [];
|
|
62742
|
-
}
|
|
62743
|
-
if (typeof wallet?.transferService?.getTransfersByIds !== "function") {
|
|
62744
|
-
if (!fallbackToSingles) {
|
|
62745
|
-
return null;
|
|
62746
|
-
}
|
|
62747
|
-
const transfers = [];
|
|
62748
|
-
for (const transferId2 of transferIds3) {
|
|
62749
|
-
const tx = await fetchTransferById(transferId2);
|
|
62750
|
-
if (tx) {
|
|
62751
|
-
transfers.push(tx);
|
|
62752
|
-
}
|
|
62753
|
-
}
|
|
62754
|
-
return transfers;
|
|
62755
|
-
}
|
|
62756
62545
|
return queueWalletFetch(async () => {
|
|
62757
|
-
const
|
|
62758
|
-
|
|
62759
|
-
|
|
62760
|
-
}
|
|
62761
|
-
return Array.isArray(fetched) ? fetched : [];
|
|
62546
|
+
const client = await wallet.connectionManager.createSparkClient(wallet.config.getCoordinatorAddress());
|
|
62547
|
+
const result = await client.query_transfers_by_id({ transferIds: transferIds3, network: wallet.config.getNetworkProto() });
|
|
62548
|
+
return wallet.constructTransfersWithUserRequest(result.transfers);
|
|
62762
62549
|
});
|
|
62763
62550
|
};
|
|
62764
|
-
const fetchRecentTransferPagesForIds = async (ids, baseTransfers = [], { maxPages = PENDING_TRANSFER_RECONCILE_MAX_PAGES, pageSize = PENDING_TRANSFER_RECONCILE_PAGE_SIZE } = {}) => {
|
|
62765
|
-
const requestedIds = uniqueIds(ids);
|
|
62766
|
-
if (!requestedIds.length) {
|
|
62767
|
-
return { transfers: [], foundIds: [], pages: 0, pageCount: 0 };
|
|
62768
|
-
}
|
|
62769
|
-
const requestedSet = new Set(requestedIds);
|
|
62770
|
-
const baseById = new Map(baseTransfers.map((tx) => [String(tx?.id || ""), tx]));
|
|
62771
|
-
const targetTransfers = requestedIds.map((id) => baseById.get(id)).filter(Boolean);
|
|
62772
|
-
const oldestTargetMs = getOldestAnyTransferMs(targetTransfers);
|
|
62773
|
-
const foundIds = new Set;
|
|
62774
|
-
const transfers = [];
|
|
62775
|
-
let offset = 0;
|
|
62776
|
-
let pages = 0;
|
|
62777
|
-
let pageCount = 0;
|
|
62778
|
-
while (pages < maxPages && foundIds.size < requestedSet.size) {
|
|
62779
|
-
const page = transferPage(await fetchTransfersPage(pageSize, offset), offset, pageSize);
|
|
62780
|
-
const pageTransfers = page.transfers;
|
|
62781
|
-
pages += 1;
|
|
62782
|
-
pageCount += pageTransfers.length;
|
|
62783
|
-
transfers.push(...pageTransfers);
|
|
62784
|
-
for (const tx of pageTransfers) {
|
|
62785
|
-
const id = String(tx?.id || "");
|
|
62786
|
-
if (requestedSet.has(id)) {
|
|
62787
|
-
foundIds.add(id);
|
|
62788
|
-
}
|
|
62789
|
-
}
|
|
62790
|
-
if (!page.hasMore) {
|
|
62791
|
-
break;
|
|
62792
|
-
}
|
|
62793
|
-
const oldestPageMs = getOldestAnyTransferMs(pageTransfers);
|
|
62794
|
-
if (oldestTargetMs != null && oldestPageMs != null && oldestPageMs < oldestTargetMs) {
|
|
62795
|
-
break;
|
|
62796
|
-
}
|
|
62797
|
-
if (page.nextOffset <= offset) {
|
|
62798
|
-
break;
|
|
62799
|
-
}
|
|
62800
|
-
offset = page.nextOffset;
|
|
62801
|
-
}
|
|
62802
|
-
return { transfers, foundIds: [...foundIds], pages, pageCount };
|
|
62803
|
-
};
|
|
62804
62551
|
const getPendingTransfersSnapshot = () => {
|
|
62805
62552
|
if (!wallet) {
|
|
62806
62553
|
return Promise.resolve([]);
|
|
@@ -62855,9 +62602,7 @@ function createWalletTransferSession({ wallet, walletPK, claimIncomingTransfers,
|
|
|
62855
62602
|
setReady: () => setTxReadyValue(true)
|
|
62856
62603
|
},
|
|
62857
62604
|
reads: {
|
|
62858
|
-
|
|
62859
|
-
byIds: fetchTransfersByIds,
|
|
62860
|
-
recentPages: fetchRecentTransferPagesForIds
|
|
62605
|
+
byIds: fetchTransfersByIds
|
|
62861
62606
|
},
|
|
62862
62607
|
claims: incomingClaims,
|
|
62863
62608
|
waitForWork: waitForBackgroundWorkSlot,
|
|
@@ -63050,6 +62795,7 @@ function createWalletTransferSession({ wallet, walletPK, claimIncomingTransfers,
|
|
|
63050
62795
|
serverHistoryComplete: historyComplete,
|
|
63051
62796
|
hasMoreTxs: !historyComplete,
|
|
63052
62797
|
hasPendingTxs,
|
|
62798
|
+
hasRequestedTransfers: pendingReconciliation.hasRequestedTransfers,
|
|
63053
62799
|
hasPendingIncomingTxs: pendingIncomingTransfers(transfers).length > 0,
|
|
63054
62800
|
beginSdkActivity,
|
|
63055
62801
|
getRecentTxs,
|
|
@@ -63095,7 +62841,7 @@ function createWalletTransferSession({ wallet, walletPK, claimIncomingTransfers,
|
|
|
63095
62841
|
}
|
|
63096
62842
|
};
|
|
63097
62843
|
}
|
|
63098
|
-
var TRANSFER_FETCH_THROTTLE_MS, PENDING_TRANSFER_QUERY_PAGE_SIZE,
|
|
62844
|
+
var TRANSFER_FETCH_THROTTLE_MS, PENDING_TRANSFER_QUERY_PAGE_SIZE, SDK_BACKGROUND_QUIET_MS, PENDING_TRANSFER_CLAIM_RETRY_MS, PENDING_TRANSFER_OUTGOING_SETTLE_MS;
|
|
63099
62845
|
var init_transfers = __esm(() => {
|
|
63100
62846
|
init_config();
|
|
63101
62847
|
init_async();
|
|
@@ -63107,7 +62853,6 @@ var init_transfers = __esm(() => {
|
|
|
63107
62853
|
init_transferdata();
|
|
63108
62854
|
TRANSFER_FETCH_THROTTLE_MS = WALLET_TRANSFER_FETCH_THROTTLE_MS;
|
|
63109
62855
|
PENDING_TRANSFER_QUERY_PAGE_SIZE = TRANSFER_PAGE_LIMIT;
|
|
63110
|
-
PENDING_TRANSFER_RECONCILE_PAGE_SIZE = TRANSFER_PAGE_LIMIT;
|
|
63111
62856
|
SDK_BACKGROUND_QUIET_MS = Math.max(0, WALLET_SDK_BACKGROUND_QUIET_MS);
|
|
63112
62857
|
PENDING_TRANSFER_CLAIM_RETRY_MS = WALLET_PENDING_TRANSFER_CLAIM_RETRY_MS;
|
|
63113
62858
|
PENDING_TRANSFER_OUTGOING_SETTLE_MS = PENDING_TRANSFER_CLAIM_RETRY_MS;
|
|
@@ -63160,7 +62905,6 @@ function createEmptyWalletSessionSnapshot(network, transferSnapshot = null, cach
|
|
|
63160
62905
|
isWalletDataReady: false,
|
|
63161
62906
|
isWalletDataLoaded: cachedDataReady || cachedBalance != null,
|
|
63162
62907
|
refresh: ASYNC_NOOP,
|
|
63163
|
-
setTransferDiscoveryVisible: NOOP5,
|
|
63164
62908
|
claimDeposits: ASYNC_FALSE,
|
|
63165
62909
|
getFundingAddress: ASYNC_NOOP,
|
|
63166
62910
|
preparePayment: WALLET_NOT_READY,
|
|
@@ -63193,7 +62937,6 @@ function createWalletSession({
|
|
|
63193
62937
|
network,
|
|
63194
62938
|
claimIncomingTransfers = null,
|
|
63195
62939
|
pendingClaimBatchSize = null,
|
|
63196
|
-
activeTransferRefreshMs = null,
|
|
63197
62940
|
eagerOutgoingStatusRefresh = false,
|
|
63198
62941
|
sentTransferRefreshDelayMs = null,
|
|
63199
62942
|
deferBackgroundWork = null,
|
|
@@ -63216,7 +62959,7 @@ function createWalletSession({
|
|
|
63216
62959
|
let publishedSnapshot = null;
|
|
63217
62960
|
const valueSubscriptions = createFieldSubscriptions(() => publishedSnapshot?.value);
|
|
63218
62961
|
const txSubscriptions = createFieldSubscriptions(() => publishedSnapshot?.txValue);
|
|
63219
|
-
let
|
|
62962
|
+
let reconciliation = null;
|
|
63220
62963
|
let readyDiag = null;
|
|
63221
62964
|
let refreshWalletBalance = null;
|
|
63222
62965
|
const transferSession = createWalletTransferSession({
|
|
@@ -63238,7 +62981,7 @@ function createWalletSession({
|
|
|
63238
62981
|
return;
|
|
63239
62982
|
const nextSnapshot = buildSnapshot();
|
|
63240
62983
|
readyDiag?.sync();
|
|
63241
|
-
|
|
62984
|
+
reconciliation?.sync();
|
|
63242
62985
|
if (publishedSnapshot && nextSnapshot.value === publishedSnapshot.value && nextSnapshot.txValue === publishedSnapshot.txValue) {
|
|
63243
62986
|
return;
|
|
63244
62987
|
}
|
|
@@ -63268,17 +63011,16 @@ function createWalletSession({
|
|
|
63268
63011
|
});
|
|
63269
63012
|
const claims = createDepositClaims({
|
|
63270
63013
|
wallet,
|
|
63271
|
-
updateWalletData,
|
|
63272
63014
|
diag
|
|
63273
63015
|
});
|
|
63274
|
-
|
|
63275
|
-
wallet,
|
|
63016
|
+
reconciliation = createWalletReconciliation({
|
|
63276
63017
|
network,
|
|
63277
63018
|
appState,
|
|
63278
63019
|
getTransferState,
|
|
63279
|
-
|
|
63280
|
-
|
|
63281
|
-
|
|
63020
|
+
updateWalletData,
|
|
63021
|
+
deferBackgroundWork,
|
|
63022
|
+
backgroundSignal: backgroundAbort.signal,
|
|
63023
|
+
claimDeposits: claims.claimDeposits,
|
|
63282
63024
|
diag
|
|
63283
63025
|
});
|
|
63284
63026
|
readyDiag = createWalletReadyDiag({
|
|
@@ -63289,9 +63031,9 @@ function createWalletSession({
|
|
|
63289
63031
|
});
|
|
63290
63032
|
const events = createWalletEvents({
|
|
63291
63033
|
wallet,
|
|
63292
|
-
updateWalletData,
|
|
63293
63034
|
getTransferState,
|
|
63294
|
-
|
|
63035
|
+
reconcile: reconciliation.request,
|
|
63036
|
+
sync: reconciliation.sync,
|
|
63295
63037
|
setTokenBalances: balance.setTokenBalances,
|
|
63296
63038
|
setSatsBalanceResult: balance.setSatsBalanceResult,
|
|
63297
63039
|
diag
|
|
@@ -63335,8 +63077,7 @@ function createWalletSession({
|
|
|
63335
63077
|
isBalanceLoading: balanceState.isBalanceLoading,
|
|
63336
63078
|
isWalletDataReady: true,
|
|
63337
63079
|
isWalletDataLoaded: balanceState.balanceReady || currentTransferState.txReady,
|
|
63338
|
-
refresh:
|
|
63339
|
-
setTransferDiscoveryVisible: polling.setTransferDiscoveryVisible,
|
|
63080
|
+
refresh: reconciliation.refresh,
|
|
63340
63081
|
claimDeposits: claims.claimDeposits,
|
|
63341
63082
|
getFundingAddress: funding.getFundingAddress,
|
|
63342
63083
|
preparePayment: mutationActions.preparePayment,
|
|
@@ -63368,17 +63109,8 @@ function createWalletSession({
|
|
|
63368
63109
|
const unsubscribeTransfers = transferSession.subscribe(publish);
|
|
63369
63110
|
publishedSnapshot = buildSnapshot();
|
|
63370
63111
|
readyDiag.sync();
|
|
63371
|
-
|
|
63372
|
-
|
|
63373
|
-
wallet,
|
|
63374
|
-
getTransferState,
|
|
63375
|
-
getBalance: balance.getBalance,
|
|
63376
|
-
getRecentTxs: transferState.getRecentTxs,
|
|
63377
|
-
deferBackgroundWork,
|
|
63378
|
-
backgroundSignal: backgroundAbort.signal,
|
|
63379
|
-
stopPoll: polling.stopPoll,
|
|
63380
|
-
diag
|
|
63381
|
-
});
|
|
63112
|
+
reconciliation.sync();
|
|
63113
|
+
reconciliation.start();
|
|
63382
63114
|
return {
|
|
63383
63115
|
wallet,
|
|
63384
63116
|
walletPK,
|
|
@@ -63402,9 +63134,8 @@ function createWalletSession({
|
|
|
63402
63134
|
return;
|
|
63403
63135
|
closed = true;
|
|
63404
63136
|
backgroundAbort.abort();
|
|
63405
|
-
boot.close();
|
|
63406
63137
|
events.close();
|
|
63407
|
-
|
|
63138
|
+
reconciliation.close();
|
|
63408
63139
|
privacy.close();
|
|
63409
63140
|
mutations.close();
|
|
63410
63141
|
payment.close();
|
|
@@ -63419,7 +63150,7 @@ function createWalletSession({
|
|
|
63419
63150
|
}
|
|
63420
63151
|
};
|
|
63421
63152
|
}
|
|
63422
|
-
var
|
|
63153
|
+
var ASYNC_NOOP = async () => null, ASYNC_FALSE = async () => false, EMPTY_COVERAGE = async () => ({ loaded: 0, historyComplete: false }), WALLET_NOT_READY = async () => {
|
|
63423
63154
|
throw new Error("wallet not ready");
|
|
63424
63155
|
};
|
|
63425
63156
|
var init_session7 = __esm(() => {
|
|
@@ -63920,8 +63651,8 @@ function createTxData({ transferStore, historyStore, diag = null, deferAggregati
|
|
|
63920
63651
|
let snapshot = null;
|
|
63921
63652
|
let observedStoreSnapshot = null;
|
|
63922
63653
|
let observedHistorySnapshot = null;
|
|
63923
|
-
let unsubscribeStore =
|
|
63924
|
-
let unsubscribeHistory =
|
|
63654
|
+
let unsubscribeStore = NOOP5;
|
|
63655
|
+
let unsubscribeHistory = NOOP5;
|
|
63925
63656
|
let closed = false;
|
|
63926
63657
|
function readCurrentAggregatedData(walletPK) {
|
|
63927
63658
|
const transfers = transferStore.getSnapshot().transfers;
|
|
@@ -64256,7 +63987,7 @@ function createTxData({ transferStore, historyStore, diag = null, deferAggregati
|
|
|
64256
63987
|
},
|
|
64257
63988
|
subscribe(listener) {
|
|
64258
63989
|
if (closed || typeof listener !== "function")
|
|
64259
|
-
return
|
|
63990
|
+
return NOOP5;
|
|
64260
63991
|
if (!listeners.size) {
|
|
64261
63992
|
if (!deferAggregation) {
|
|
64262
63993
|
unsubscribeStore = transferStore.subscribe(() => rebuild());
|
|
@@ -64276,8 +64007,8 @@ function createTxData({ transferStore, historyStore, diag = null, deferAggregati
|
|
|
64276
64007
|
return;
|
|
64277
64008
|
unsubscribeStore();
|
|
64278
64009
|
unsubscribeHistory();
|
|
64279
|
-
unsubscribeStore =
|
|
64280
|
-
unsubscribeHistory =
|
|
64010
|
+
unsubscribeStore = NOOP5;
|
|
64011
|
+
unsubscribeHistory = NOOP5;
|
|
64281
64012
|
};
|
|
64282
64013
|
},
|
|
64283
64014
|
setSources,
|
|
@@ -64287,8 +64018,8 @@ function createTxData({ transferStore, historyStore, diag = null, deferAggregati
|
|
|
64287
64018
|
closed = true;
|
|
64288
64019
|
unsubscribeStore();
|
|
64289
64020
|
unsubscribeHistory();
|
|
64290
|
-
unsubscribeStore =
|
|
64291
|
-
unsubscribeHistory =
|
|
64021
|
+
unsubscribeStore = NOOP5;
|
|
64022
|
+
unsubscribeHistory = NOOP5;
|
|
64292
64023
|
listeners.clear();
|
|
64293
64024
|
seriesCache.current.clear();
|
|
64294
64025
|
historySeriesCache.current.clear();
|
|
@@ -64416,7 +64147,7 @@ var byRecentTx = (a, b) => {
|
|
|
64416
64147
|
txById,
|
|
64417
64148
|
peerTxsByPK
|
|
64418
64149
|
};
|
|
64419
|
-
}, EMPTY_AGG, EMPTY_TXS2, EMPTY_PEER_DATA, RECENT_WALLET_PEER_SCAN_LIMIT, TX_SEARCH_DEFAULT_LIMIT = 5, TX_SEARCH_EXACT_MIN_LENGTH = 12,
|
|
64150
|
+
}, EMPTY_AGG, EMPTY_TXS2, EMPTY_PEER_DATA, RECENT_WALLET_PEER_SCAN_LIMIT, TX_SEARCH_DEFAULT_LIMIT = 5, TX_SEARCH_EXACT_MIN_LENGTH = 12, NOOP5 = () => {}, EMPTY_TX_DATA_SOURCES, TX_DATA_SOURCE_KEYS;
|
|
64420
64151
|
var init_txdata = __esm(() => {
|
|
64421
64152
|
init_config();
|
|
64422
64153
|
init_time();
|
|
@@ -64502,8 +64233,8 @@ function openWallet(options = {}) {
|
|
|
64502
64233
|
let cachedBalance = null;
|
|
64503
64234
|
let peerCache = { transfers: null, historyGeneration: -1, walletPK: "", value: {} };
|
|
64504
64235
|
let sessionOwner = null;
|
|
64505
|
-
let releaseSessionOwner =
|
|
64506
|
-
let stopSessionOwner =
|
|
64236
|
+
let releaseSessionOwner = NOOP6;
|
|
64237
|
+
let stopSessionOwner = NOOP6;
|
|
64507
64238
|
let snapshot = createEmptyWalletSessionSnapshot(initialNetwork, transferStore.getSnapshot(), null, historyStore.getSnapshot());
|
|
64508
64239
|
function syncTransactions() {
|
|
64509
64240
|
transactions.setSources({
|
|
@@ -64537,8 +64268,8 @@ function openWallet(options = {}) {
|
|
|
64537
64268
|
function detachSessionOwner() {
|
|
64538
64269
|
const stop = stopSessionOwner;
|
|
64539
64270
|
const release = releaseSessionOwner;
|
|
64540
|
-
stopSessionOwner =
|
|
64541
|
-
releaseSessionOwner =
|
|
64271
|
+
stopSessionOwner = NOOP6;
|
|
64272
|
+
releaseSessionOwner = NOOP6;
|
|
64542
64273
|
sessionOwner = null;
|
|
64543
64274
|
stop();
|
|
64544
64275
|
release();
|
|
@@ -64554,7 +64285,6 @@ function openWallet(options = {}) {
|
|
|
64554
64285
|
network: sources.network,
|
|
64555
64286
|
claimIncomingTransfers: options.claimIncomingTransfers || claimIncomingTransfersById,
|
|
64556
64287
|
pendingClaimBatchSize: options.pendingClaimBatchSize,
|
|
64557
|
-
activeTransferRefreshMs: options.activeTransferRefreshMs,
|
|
64558
64288
|
eagerOutgoingStatusRefresh: options.eagerOutgoingStatusRefresh === true,
|
|
64559
64289
|
sentTransferRefreshDelayMs: options.sentTransferRefreshDelayMs,
|
|
64560
64290
|
deferBackgroundWork: options.deferBackgroundWork || null,
|
|
@@ -64615,7 +64345,7 @@ function openWallet(options = {}) {
|
|
|
64615
64345
|
},
|
|
64616
64346
|
subscribe(listener) {
|
|
64617
64347
|
if (closed || typeof listener !== "function")
|
|
64618
|
-
return
|
|
64348
|
+
return NOOP6;
|
|
64619
64349
|
listeners.add(listener);
|
|
64620
64350
|
return () => listeners.delete(listener);
|
|
64621
64351
|
},
|
|
@@ -64673,7 +64403,7 @@ function openWallet(options = {}) {
|
|
|
64673
64403
|
};
|
|
64674
64404
|
return Object.freeze(wallet);
|
|
64675
64405
|
}
|
|
64676
|
-
var
|
|
64406
|
+
var NOOP6 = () => {}, ACTIVE_APP_STATE;
|
|
64677
64407
|
var init_wallet = __esm(() => {
|
|
64678
64408
|
init_localdata();
|
|
64679
64409
|
init_claiming();
|
|
@@ -64850,7 +64580,7 @@ function openAccount(options = {}) {
|
|
|
64850
64580
|
let closed = false;
|
|
64851
64581
|
let attempt = 0;
|
|
64852
64582
|
let foreground = true;
|
|
64853
|
-
let stopVault =
|
|
64583
|
+
let stopVault = NOOP7;
|
|
64854
64584
|
let syncingUser = false;
|
|
64855
64585
|
let closePromise = null;
|
|
64856
64586
|
let state;
|
|
@@ -64877,7 +64607,7 @@ function openAccount(options = {}) {
|
|
|
64877
64607
|
revokedUid = accountUid;
|
|
64878
64608
|
bootstrapGeneration += 1;
|
|
64879
64609
|
if (accountUid && options.bootstrapStorage) {
|
|
64880
|
-
bootstrapWriteTail = bootstrapWriteTail.catch(
|
|
64610
|
+
bootstrapWriteTail = bootstrapWriteTail.catch(NOOP7).then(() => options.bootstrapStorage.remove(accountUid));
|
|
64881
64611
|
bootstrapWriteTail.catch((error) => diag?.("account.bootstrap.remove.error", { code: error?.code || "" }));
|
|
64882
64612
|
}
|
|
64883
64613
|
let callback;
|
|
@@ -65263,7 +64993,7 @@ function openAccount(options = {}) {
|
|
|
65263
64993
|
}
|
|
65264
64994
|
function watchVault(uid) {
|
|
65265
64995
|
stopVault();
|
|
65266
|
-
stopVault =
|
|
64996
|
+
stopVault = NOOP7;
|
|
65267
64997
|
if (!uid)
|
|
65268
64998
|
return;
|
|
65269
64999
|
const startedAt = Date.now();
|
|
@@ -65341,11 +65071,11 @@ function openAccount(options = {}) {
|
|
|
65341
65071
|
bootstrapGeneration += 1;
|
|
65342
65072
|
lastBootstrap = "";
|
|
65343
65073
|
if (previousUid && !uid && options.bootstrapStorage) {
|
|
65344
|
-
bootstrapWriteTail = bootstrapWriteTail.catch(
|
|
65074
|
+
bootstrapWriteTail = bootstrapWriteTail.catch(NOOP7).then(() => options.bootstrapStorage.remove(previousUid));
|
|
65345
65075
|
bootstrapWriteTail.catch((error) => diag?.("account.bootstrap.remove.error", { code: error?.code || "" }));
|
|
65346
65076
|
}
|
|
65347
65077
|
stopVault();
|
|
65348
|
-
stopVault =
|
|
65078
|
+
stopVault = NOOP7;
|
|
65349
65079
|
closeSession({ notify: false });
|
|
65350
65080
|
user.setNetwork(defaultNetwork);
|
|
65351
65081
|
const currentUser = user.getSnapshot();
|
|
@@ -65410,7 +65140,7 @@ function openAccount(options = {}) {
|
|
|
65410
65140
|
lastBootstrap = serialized;
|
|
65411
65141
|
const uid = state.uid;
|
|
65412
65142
|
const generation = bootstrapGeneration;
|
|
65413
|
-
bootstrapWriteTail = bootstrapWriteTail.catch(
|
|
65143
|
+
bootstrapWriteTail = bootstrapWriteTail.catch(NOOP7).then(() => {
|
|
65414
65144
|
if (closed || generation !== bootstrapGeneration || state.uid !== uid)
|
|
65415
65145
|
return;
|
|
65416
65146
|
return options.bootstrapStorage.write(uid, value);
|
|
@@ -65835,7 +65565,7 @@ function openAccount(options = {}) {
|
|
|
65835
65565
|
getSnapshot: () => state,
|
|
65836
65566
|
subscribe(listener) {
|
|
65837
65567
|
if (typeof listener !== "function")
|
|
65838
|
-
return
|
|
65568
|
+
return NOOP7;
|
|
65839
65569
|
listeners.add(listener);
|
|
65840
65570
|
return () => listeners.delete(listener);
|
|
65841
65571
|
},
|
|
@@ -65854,7 +65584,7 @@ function openAccount(options = {}) {
|
|
|
65854
65584
|
close
|
|
65855
65585
|
});
|
|
65856
65586
|
}
|
|
65857
|
-
var
|
|
65587
|
+
var NOOP7 = () => {};
|
|
65858
65588
|
var init_account = __esm(() => {
|
|
65859
65589
|
init_session();
|
|
65860
65590
|
init_user();
|
|
@@ -76214,7 +75944,7 @@ var package_default;
|
|
|
76214
75944
|
var init_package2 = __esm(() => {
|
|
76215
75945
|
package_default = {
|
|
76216
75946
|
name: "veyl",
|
|
76217
|
-
version: "0.
|
|
75947
|
+
version: "0.75.1",
|
|
76218
75948
|
packageManager: "bun@1.4.0",
|
|
76219
75949
|
private: true,
|
|
76220
75950
|
license: "UNLICENSED",
|
|
@@ -100044,7 +99774,7 @@ var require_sender = __commonJS(function(exports, module) {
|
|
|
100044
99774
|
types: { isUint8Array }
|
|
100045
99775
|
} = __require("util");
|
|
100046
99776
|
var PerMessageDeflate = require_permessage_deflate();
|
|
100047
|
-
var { EMPTY_BUFFER: EMPTY_BUFFER3, kWebSocket, NOOP:
|
|
99777
|
+
var { EMPTY_BUFFER: EMPTY_BUFFER3, kWebSocket, NOOP: NOOP8 } = require_constants();
|
|
100048
99778
|
var { isBlob, isValidStatusCode } = require_validation();
|
|
100049
99779
|
var { mask: applyMask, toBuffer } = require_buffer_util();
|
|
100050
99780
|
var kByteLength = Symbol("kByteLength");
|
|
@@ -100069,7 +99799,7 @@ var require_sender = __commonJS(function(exports, module) {
|
|
|
100069
99799
|
this._bufferedBytes = 0;
|
|
100070
99800
|
this._queue = [];
|
|
100071
99801
|
this._state = DEFAULT;
|
|
100072
|
-
this.onerror =
|
|
99802
|
+
this.onerror = NOOP8;
|
|
100073
99803
|
this[kWebSocket] = undefined;
|
|
100074
99804
|
}
|
|
100075
99805
|
static frame(data, options) {
|
|
@@ -100734,7 +100464,7 @@ var require_websocket = __commonJS(function(exports, module) {
|
|
|
100734
100464
|
kListener,
|
|
100735
100465
|
kStatusCode,
|
|
100736
100466
|
kWebSocket,
|
|
100737
|
-
NOOP:
|
|
100467
|
+
NOOP: NOOP8
|
|
100738
100468
|
} = require_constants();
|
|
100739
100469
|
var {
|
|
100740
100470
|
EventTarget: { addEventListener, removeEventListener }
|
|
@@ -101415,7 +101145,7 @@ var require_websocket = __commonJS(function(exports, module) {
|
|
|
101415
101145
|
function receiverOnPing(data) {
|
|
101416
101146
|
const websocket = this[kWebSocket];
|
|
101417
101147
|
if (websocket._autoPong)
|
|
101418
|
-
websocket.pong(data, !this._isServer,
|
|
101148
|
+
websocket.pong(data, !this._isServer, NOOP8);
|
|
101419
101149
|
websocket.emit("ping", data);
|
|
101420
101150
|
}
|
|
101421
101151
|
function receiverOnPong(data) {
|
|
@@ -101475,7 +101205,7 @@ var require_websocket = __commonJS(function(exports, module) {
|
|
|
101475
101205
|
function socketOnError() {
|
|
101476
101206
|
const websocket = this[kWebSocket];
|
|
101477
101207
|
this.removeListener("error", socketOnError);
|
|
101478
|
-
this.on("error",
|
|
101208
|
+
this.on("error", NOOP8);
|
|
101479
101209
|
if (websocket) {
|
|
101480
101210
|
websocket._readyState = WebSocket2.CLOSING;
|
|
101481
101211
|
this.destroy();
|