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