@ghostlytools/cli 1.3.1 → 1.3.2
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/assets/{api-TiB5QSG9.js → api-SYPJgFRU.js} +2 -2
- package/dist/assets/{api-Dq2QXQDk.js → api-aup3Amud.js} +9 -9
- package/dist/assets/{api-Dq2QXQDk.js.map → api-aup3Amud.js.map} +1 -1
- package/dist/assets/{apiKit-CA2x5GJF.js → apiKit-DYkVEs6r.js} +25 -29
- package/dist/assets/apiKit-DYkVEs6r.js.map +1 -0
- package/dist/assets/{apps-C-T8jeji.js → apps-DcZKu29s.js} +1 -1
- package/dist/assets/{apps-BxV9i_Y4.js → apps-Rbk2HHXb.js} +2 -2
- package/dist/assets/{apps-BxV9i_Y4.js.map → apps-Rbk2HHXb.js.map} +1 -1
- package/dist/assets/{arkade-C_qDmHnm.js → arkade-CuWlNnCz.js} +4 -4
- package/dist/assets/arkade-CuWlNnCz.js.map +1 -0
- package/dist/assets/{backup-CnMN2oUK.js → backup-CJWLDHuS.js} +4 -4
- package/dist/assets/{backup-CnMN2oUK.js.map → backup-CJWLDHuS.js.map} +1 -1
- package/dist/assets/{backup-Bugnn3Ue.js → backup-CSMw2GHv.js} +1 -1
- package/dist/assets/bark_ffi_wasm_bg-EY2uc0Bx.js.map +1 -1
- package/dist/assets/buttons-CGRqZ7z0.js +2 -0
- package/dist/assets/{buttons-CvNBzh2S.js → buttons-QEnAGWoC.js} +3 -3
- package/dist/assets/{buttons-CvNBzh2S.js.map → buttons-QEnAGWoC.js.map} +1 -1
- package/dist/assets/{envelope-WjingYSc.js → envelope-K27mzoyu.js} +2 -2
- package/dist/assets/{envelope-WjingYSc.js.map → envelope-K27mzoyu.js.map} +1 -1
- package/dist/assets/fedimint_client_wasm_bg-BtHHlFpp.js.map +1 -1
- package/dist/assets/{groupFiles-IEUW3DQz.js → groupFiles-DHTrTA4I.js} +43 -16
- package/dist/assets/groupFiles-DHTrTA4I.js.map +1 -0
- package/dist/assets/{host-CWt-jtqz.js → host-C7hA-Za7.js} +102 -34
- package/dist/assets/host-C7hA-Za7.js.map +1 -0
- package/dist/assets/{hyperdhtRelay-CPYwSLLS.js → hyperdhtRelay-BVoWY2ua.js} +2 -2
- package/dist/assets/{hyperdhtRelay-CPYwSLLS.js.map → hyperdhtRelay-BVoWY2ua.js.map} +1 -1
- package/dist/assets/{irohWeb-4oChIOIp.js → irohWeb-BJPk9bMn.js} +2 -2
- package/dist/assets/{irohWeb-4oChIOIp.js.map → irohWeb-BJPk9bMn.js.map} +1 -1
- package/dist/assets/{main-DbqcdShN.js → main-DC8cUkDx.js} +14 -14
- package/dist/assets/{main-DbqcdShN.js.map → main-DC8cUkDx.js.map} +1 -1
- package/dist/assets/{mainline-ZkiOnevs.js → mainline-CxbxpoU4.js} +2 -2
- package/dist/assets/{mainline-ZkiOnevs.js.map → mainline-CxbxpoU4.js.map} +1 -1
- package/dist/assets/{networkReason-CetKkTPo.js → networkReason-D42iNuUB.js} +2 -2
- package/dist/assets/{networkReason-CetKkTPo.js.map → networkReason-D42iNuUB.js.map} +1 -1
- package/dist/assets/{nwc-CgkqyvsE.js → nwc-Cm4sYgLv.js} +3 -3
- package/dist/assets/{nwc-CgkqyvsE.js.map → nwc-Cm4sYgLv.js.map} +1 -1
- package/dist/assets/{nwcProvider-4eVz_8HP.js → nwcProvider-0D7vdPDd.js} +2 -2
- package/dist/assets/{nwcProvider-4eVz_8HP.js.map → nwcProvider-0D7vdPDd.js.map} +1 -1
- package/dist/assets/{registry-OBJBnHVQ.js → registry-CLolR0kM.js} +1 -1
- package/dist/assets/{registry-DlAKO0Fy.js → registry-CVdSZW5l.js} +3 -3
- package/dist/assets/{registry-DlAKO0Fy.js.map → registry-CVdSZW5l.js.map} +1 -1
- package/dist/assets/{resolve-CouHhCpJ.js → resolve-BnlEajYz.js} +2 -2
- package/dist/assets/{resolve-CouHhCpJ.js.map → resolve-BnlEajYz.js.map} +1 -1
- package/dist/assets/{server-Ss0gJ-nw.js → server-CJNEKxzE.js} +112 -33
- package/dist/assets/server-CJNEKxzE.js.map +1 -0
- package/dist/assets/{src-DDzSERyc.js → src-yMUQvdyL.js} +157 -141
- package/dist/assets/src-yMUQvdyL.js.map +1 -0
- package/dist/assets/{turnRefs-B87dtrHM.js → turnRefs-B2a8to9q.js} +2 -2
- package/dist/assets/{turnRefs-B87dtrHM.js.map → turnRefs-B2a8to9q.js.map} +1 -1
- package/dist/assets/{usdt-Fj8CQO2z.js → usdt-DesFeDiG.js} +3 -3
- package/dist/assets/{usdt-Fj8CQO2z.js.map → usdt-DesFeDiG.js.map} +1 -1
- package/dist/ghostly.mjs +1 -1
- package/package.json +1 -1
- package/dist/assets/apiKit-CA2x5GJF.js.map +0 -1
- package/dist/assets/arkade-C_qDmHnm.js.map +0 -1
- package/dist/assets/buttons-Bj7Vf7Pn.js +0 -2
- package/dist/assets/groupFiles-IEUW3DQz.js.map +0 -1
- package/dist/assets/host-CWt-jtqz.js.map +0 -1
- package/dist/assets/server-Ss0gJ-nw.js.map +0 -1
- package/dist/assets/src-DDzSERyc.js.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { n as traceJoin } from "./joinTrace-CjRDFy85.js";
|
|
2
|
-
import { $c as
|
|
2
|
+
import { $c as normalizeRelayUrl, $i as lastSharedWithMe, $o as parseCallSignal, $r as WakeLimiter, $t as didDhtFromPublicKey, A as CommunitySession, Aa as readForwarded, Ac as newDeviceSetSecret, Ao as rosterHas, Ar as pickHubs, As as handoffPakeFrame, B as knockRecords, Ba as validReactionNumber, Bc as firstDeviceSetSecret, Bi as dialDescriptors, Bn as findEndpoint, Bo as formatLocalTarget, Bs as readHandoffHello, C as sha256Paced, Cc as ENROLL_CAPABILITY, Cl as utf8Decode, Cn as isBitcoinAddress, Co as readCanonicalJson, Cr as doorHubs, Cs as handoffContextProof, D as openGroupTyping, Da as dhtEditId, Dc as deviceKeyZ32, Do as commitHash, Dr as mergeBeacon, Ds as handoffHelloFrame, E as groupTypingEpoch, Ea as RateWindow, Ec as deviceEchoNonce, Eo as MEMBER_KEY, Er as lobbyRecords, Es as handoffEphemeral, Et as normalizeAtprotoHandle, Fa as nextReactionNumber, Fc as TURN_SETTLE_MS, Fo as DHT_POLL_INTERVALS, Fr as shouldBeHub, Fs as newHandoffId, G as groupWakeFrame, Ga as BUTTON_ID, Gc as turnInstance, Gi as IdentityExchange, Gn as INVITE_TAKEN, Go as encodeControl, H as readKnocks, Ha as pairedReplyAuthor, Hc as readTurnPacket, Hn as parseCashuRequestPayload, Ho as webLocalFetch, Hr as TypingSender, Hs as readHandoffTurnFrame, I as decodeGroupEntryLink, Ia as queueReaction, Ic as classifyTurnRead, In as decodeBolt11, Ir as ChatFiles, Is as readHandoffAck, J as GROUP_LIMITS, Jc as turnStatedVerifier, Ji as identityRevocationValue, Jn as pairedMessageFits, Jr as nextPinNumber, Js as setAckFrame, K as groupWakes, Kc as turnKeys, Kn as LIVENESS_PING_MS, Kr as PIN_LIMITS, L as encodeGroupEntryLink, La as reactionEmoji, Lc as turnPutSummary, Li as CapsExchange, Ln as ENDPOINT, Lo as RELAY_POLL_INTERVALS, Lr as FILE_LIMITS, Ls as readHandoffCancel, M as communityHasFrame, Ma as GROUP_REACTION_FRAME, Mc as webCryptoSigner, Mo as edgeParams, Mr as readBeacon, Ms as handoffRetryAfter, N as decodeCommunityLink, Na as REACTION_LIMITS, No as DirectPathWatch, Nr as readBeaconHead, Ns as handoffStreamKey, O as sealGroupTyping, Oa as parseLinkPreview, Oc as deviceLinkPairing, Oo as parseGroupCommit, Or as mergeLobby, Os as handoffManifestFrames, P as encodeCommunityLink, Pa as ReactionWindow, Pc as TURN_RAISE_READ_TIMEOUT_MS, Pr as readLobby, Ps as handoffVersions, Q as frameBytes, Qc as currentRelays, Qi as revokesIdentity, Qn as GROUP_FILE_LIMITS, Qr as WAKE_CALL_INTERVAL_MS, Qt as didDhtDocument, R as entryParams, Ra as reactionIsNewer, Rc as TURN_LAST_SEQUENCE, Ri as DHT_TEXT_CAPABILITY, Rn as cashuRequestPayload, Ro as presenceSeenAt, Rr as transferEnded, Rs as readHandoffDone, S as readAppBundleAsync, Sa as parseImageMeta, Sc as DEVICES_CAPABILITY, Si as readManifest, Sl as toZ32, Sn as sparkInvoiceDetails, Sr as beaconRecords, Ss as handoffContext, T as GroupTypingBoard, Ta as EDIT_RATE_WINDOW_MS, Tc as deviceEchoFrame, Tn as isPubkyKey, Tr as lobbyKeys, Ts as handoffDigest, Tt as isAtprotoDid, Ua as readReply, Uc as signTurnPacket, Ui as IDENTITY_REVOCATION_LABEL, Un as parseFedimintRequestPayload, Uo as LIMITS, Us as readHandoffVerified, V as mergeKnocks, Va as wireReaction, Vc as nextTurnPosition, Vn as isFederationId, Vo as parseLocalTarget, Vs as readHandoffPake, W as GroupWakeLimiter, Wa as replySnippet, Wc as signTurnRelease, Wn as GhostLink, Wo as decodeControl, Wr as typingActivity, Ws as sealHandoffPiece, X as GROUP_READ_NOTE, Xa as STATUS_CARD_LIMITS, Xc as DEFAULT_RELAYS, Xi as newIdentityBinding, Xn as engineError, Xr as pinNumberHolds, Xs as signTombstone, Yc as turnVerifierMark, Yi as identityStatement, Yn as pairedMessageFrame, Yr as pinIsNewer, Ys as setUpdateFrame, Z as GroupSession, Zc as RelayTransport, Zi as receivedIdentityStatus, Zn as engineText, Zr as readPin, Zs as verifySetUpdate, _c as decodeInviteCode, _i as HOLD_LIMITS, _l as sanitizeAvatar, _n as validatePaymentTarget, _o as readAppRevocation, _r as mayBeHub, _s as handoffAttemptAllowed, a as planAppUpdate, ac as enrollDoneFrame, ai as checkPushEndpoint, al as PacketTooLargeError, an as EVM_TEST_CHAINS, ao as claimedTime, ar as readGroupFileMeta, as as HANDOFF_ACK, at as groupName, b as pacer, bc as inviteOwnership, bi as isHoldUrl, bl as randomBytes, bn as SPARK_PROVIDER, br as COMMUNITY_TOPOLOGY, bs as handoffBusyFrame, ca as DHT_MESSAGE_TTL, cc as enrollProofFrame, ci as chatAppId, cn as SEPOLIA_TEST_USDT, co as shownTime, cs as HANDOFF_HAVE, d as APP_BUNDLE_LIMITS, da as dhtFileId, dc as verifyEnrollProof, di as BUTTONS_CAPABILITY, dl as createIdentity, dn as USDT_PUBLIC_RPC, do as appFingerprint, ds as HANDOFF_PAKE, ea as PeerProofs, ei as deviceWakeRequest, en as encodeDidDhtDeactivated, f as APP_BUNDLE_MAGIC, fa as formatFileSize, fc as createDeviceInvite, fi as EDIT_CAPABILITY, fl as identityFromSeed, fn as WALLET_NETWORKS, fo as appRef, fs as HANDOFF_PIECE_BYTES, g as appViewOf, gc as createChatInvite, gi as HOLD_DATED_BACK_MS, gn as formatPaymentAmount, go as isAppRef, gr as MESH_HUBS, gs as filePartName, h as appDigest, hc as OwnInviteError, hi as HOLD_CAPABILITY, hl as verify, hn as assertWholeSats, ho as isAppKey, hr as readGroupSignal, hs as HANDOFF_VERIFIED, i as checkAppBeforeRun, ia as automaticTransport, ic as enrollDigits, ii as wakeRequest, il as withRequestOptions, in as ETHEREUM_USDT, io as arrivalKey, is as serviceIdFromName, it as mentionsMember, j as GROUP_READ_NOTE_COMMUNITY, ja as COMMUNITY_REACTION_FRAME, jc as seedSigner, jo as verifyCommitSignature, jr as rankHubs, js as handoffReleaseFrame, k as COMMUNITY_LIMITS, ka as forwardedAgain, kc as devicePingFrame, ko as rosterAdmin, kr as newerHead, ks as handoffOfferFrame, l as readAppStoreSteps, la as peekDhtMailbox, lc as readEnrollGrant, li as isAppVersion, lr as CarriedTransport, ls as HANDOFF_HELLO, ma as sanitizeMime, mc as readDeviceInvite, mi as UPGRADE_CAPABILITY, ml as publicKeyFromZ32, mn as assertTokenUnits, mo as isAppHash, mr as groupSignalFrame, ms as HANDOFF_TIMINGS, n as appStoreDecision, na as validExternalKey, nc as enrollCancelFrame, ni as parseWakeFrame, nl as budgetRetryMs, no as sameButtonText, ns as HTTP_SERVICE_PROTO, nt as carryMentions, o as APP_STORE_LIMITS, oc as enrollGrantFrame, oi as vapidKeysMatch, on as ONCHAIN_PROVIDER, oo as heardTime, os as HANDOFF_CANCEL, p as APP_ICON_PATH, pa as sanitizeFileName, pc as deviceInviteJoinerParams, pi as STATUS_CARD_CAPABILITY, pl as identityFromSeedB64, pn as arkAddressPrefix, ps as HANDOFF_REQUEST, q as parseGroupWakeFrame, qc as turnName, qi as emptyIdentityLedger, qn as PAIRED_FRAME_TOO_LARGE, qo as RTC_CONFIG, qr as mayPin, qs as readSetUpdate, r as appUpdateDecision, ra as TRANSPORTS, rc as enrollCancelReason, ri as relayRequest, rl as isDiscoveryBudgetError, rn as signDidDhtPacket, ro as statusCardText, rr as groupFileFallback, rs as LEGACY_SERVICES, rt as parseCommunityEdit, sc as enrollHelloFrame, sl as createRelayPayload, sn as PaymentPreflightError, so as receivedTimestamp, ss as HANDOFF_DONE, t as appRevocationFor, ta as emptyProofLedger, ti as newWakeToken, tl as traceLink, tn as encodeDidDhtPacket, to as checkStatusCard, ts as emptyLinkRecords, tt as GROUP_EDIT_TEXT_BYTES, ua as DHT_FILE_CAPABILITY, uc as readEnrollHello, ui as APPS_CAPABILITY, un as TEST_USDT_FAUCET_AMOUNT, uo as APP_STATEMENT_LIMITS, us as HANDOFF_OFFER, va as fileMessageText, vc as encodeInviteCode, vi as HoldKeys, vl as bytesEqual, vn as walletNetworkOf, vr as meshHubs, vs as handoffAttemptFailed, wa as EDIT_BUFFER_MS, wc as HANDOFF_CAPABILITY, wl as utf8Encode, wo as GROUP_MEMBER_CAP, wr as freshHubs, ws as handoffDataFrame, xa as parseVideoMeta, xi as newMailbox, xl as toBase64Url, xn as sparkAddressKind, xo as canonicalJson, xr as beaconKeys, xs as handoffCancelFrame, y as isAppUrl, ya as parseVoiceMeta, yi as HoldRefusedError, yl as fromBase64Url, yn as SPARK_NETWORKS, yr as pickMeshHubs, ys as handoffAttemptSucceeded, z as knockIdentity, za as readReaction, zc as TURN_MAX, zi as capsDescriptors, zn as fedimintRequestPayload, zo as GhostlyHttpError, zr as transferStalled, zs as readHandoffHave } from "./src-yMUQvdyL.js";
|
|
3
3
|
import { i as SourceUnreachableError, n as PROVIDER_PLATFORMS, o as isNothingSpentError, r as SourceConfigError, t as NothingSpentError, u as redact } from "./types-C4_KafL_.js";
|
|
4
4
|
import { t as bitcoindRpc } from "./bitcoindProvider-DGw3xBSa.js";
|
|
5
|
-
import { t as nwc } from "./nwcProvider-
|
|
5
|
+
import { t as nwc } from "./nwcProvider-0D7vdPDd.js";
|
|
6
6
|
import { a as clearProfileStores, c as fileStore, d as profileOpenFailure, f as store, i as STORES$1, l as newestWalletTx, m as wrap, n as APP_STORAGE_SCOPE_INDEX, o as databaseName, p as transact, r as CARD_INDEX, s as deleteDatabase, t as APP_STORAGE_CHAT_INDEX, u as openDb } from "./idb-B5L8wuOm.js";
|
|
7
|
-
import { a as sealSeed, i as newDeviceKey, o as unsealSeed, r as intentRepository } from "./networkReason-
|
|
8
|
-
import { $ as setSingleWriterGate, A as LightningCards, B as breezDatabaseInUse, C as FileAppender, D as streamStored, E as storedSize, F as ProviderSources, G as ModeChanged, H as dropBreezDatabase, I as sourceKey, J as networkLabel, K as ModeGate, L as CASHU_MINT_SOURCE, M as isRecoveryPhrase, N as normalizePhrase, P as lightningPaying, Q as setAwayWallets, R as cashuMint, S as WALLET_TYPES, T as removeStored, U as iceServerProblem, V as breezDatabasesFor, W as iceServerSetting, X as refuseAway, Y as awayFrom, Z as requireTurn, _ as crossNetwork, a as storedGroupFiles, b as walletInstances, c as receivedPairedReply, d as paymentAlias, f as paymentWireId, g as createTiming, h as createFailure, i as groupOfFile, j as cardsKey, k as CASHU_CARD, l as replyRef, m as assertConfirmedReal, n as groupFileId, o as groupReply, p as WALLET_NAMES, q as WrongNetworkError, r as groupFileText, s as pairedWireReply, t as GroupFileDesk, u as replyTo, v as paymentNetwork, w as readStored$1, y as paymentNetworksOf, z as breezDatabase } from "./groupFiles-
|
|
9
|
-
import { i as fedimintDatabase, n as createIrohWebEndpoint, o as loadFedimintSdk, r as irohRelayProblem, t as DEFAULT_IROH_RELAYS } from "./irohWeb-
|
|
7
|
+
import { a as sealSeed, i as newDeviceKey, o as unsealSeed, r as intentRepository } from "./networkReason-D42iNuUB.js";
|
|
8
|
+
import { $ as setSingleWriterGate, A as LightningCards, B as breezDatabaseInUse, C as FileAppender, D as streamStored, E as storedSize, F as ProviderSources, G as ModeChanged, H as dropBreezDatabase, I as sourceKey, J as networkLabel, K as ModeGate, L as CASHU_MINT_SOURCE, M as isRecoveryPhrase, N as normalizePhrase, P as lightningPaying, Q as setAwayWallets, R as cashuMint, S as WALLET_TYPES, T as removeStored, U as iceServerProblem, V as breezDatabasesFor, W as iceServerSetting, X as refuseAway, Y as awayFrom, Z as requireTurn, _ as crossNetwork, a as storedGroupFiles, b as walletInstances, c as receivedPairedReply, d as paymentAlias, f as paymentWireId, g as createTiming, h as createFailure, i as groupOfFile, j as cardsKey, k as CASHU_CARD, l as replyRef, m as assertConfirmedReal, n as groupFileId, o as groupReply, p as WALLET_NAMES, q as WrongNetworkError, r as groupFileText, s as pairedWireReply, t as GroupFileDesk, u as replyTo, v as paymentNetwork, w as readStored$1, y as paymentNetworksOf, z as breezDatabase } from "./groupFiles-DHTrTA4I.js";
|
|
9
|
+
import { i as fedimintDatabase, n as createIrohWebEndpoint, o as loadFedimintSdk, r as irohRelayProblem, t as DEFAULT_IROH_RELAYS } from "./irohWeb-BJPk9bMn.js";
|
|
10
10
|
import { c as isTestMint, d as paysItsOwnInvoices, l as isWorthlessMint, n as DEFAULT_MINTS, o as fakesLightning, r as TEST_MINT, t as BITCOIN_INVOICE_ON_TESTNET, u as mintNetwork } from "./mints-BrlY773j.js";
|
|
11
|
-
import { _ as reserveAdapterIds, f as setOwnDidSource, g as registeredOnchainProviders, h as registeredLightningProviders, l as chosenResolver, n as resolveAtprotoDid, p as onAdaptersChanged, t as assertPublicServer, v as boundedIdentityFetch, y as verifyIdentity } from "./resolve-
|
|
11
|
+
import { _ as reserveAdapterIds, f as setOwnDidSource, g as registeredOnchainProviders, h as registeredLightningProviders, l as chosenResolver, n as resolveAtprotoDid, p as onAdaptersChanged, t as assertPublicServer, v as boundedIdentityFetch, y as verifyIdentity } from "./resolve-BnlEajYz.js";
|
|
12
12
|
import { c as fileSpace, f as FILE_BYTES_STEP, o as fileBytes, r as blobDigest, s as fileBytesOf, u as removeFileBytes } from "./fileBytes-Di7VZtmU.js";
|
|
13
|
-
import { n as MAX_BACKUP_BYTES, t as BACKUP_MEDIA_TYPE } from "./envelope-
|
|
13
|
+
import { n as MAX_BACKUP_BYTES, t as BACKUP_MEDIA_TYPE } from "./envelope-K27mzoyu.js";
|
|
14
14
|
import { t as hyperdhtRelayProblem } from "./hyperdhtRelay-BT_wRxab.js";
|
|
15
15
|
import { hkdf } from "@noble/hashes/hkdf.js";
|
|
16
16
|
import { sha256 } from "@noble/hashes/sha2.js";
|
|
@@ -199,7 +199,7 @@ function viewNews(before, after) {
|
|
|
199
199
|
//#endregion
|
|
200
200
|
//#region ../browser/src/engine/paymentAdapters/usdtWallet.ts
|
|
201
201
|
/** The Ethereum libraries, a large part of the app: loaded once a USDT wallet is made, opened or restored, not with the engine. */
|
|
202
|
-
var loadUsdt = () => import("./usdt-
|
|
202
|
+
var loadUsdt = () => import("./usdt-DesFeDiG.js");
|
|
203
203
|
/** Every new profile starts with this wallet: an address to receive on, nothing to set up. */
|
|
204
204
|
var DEFAULT_USDT = {
|
|
205
205
|
network: "ethereum",
|
|
@@ -648,7 +648,7 @@ async function restoreArkDatabase(walletId, snapshot) {
|
|
|
648
648
|
//#endregion
|
|
649
649
|
//#region ../browser/src/engine/paymentAdapters/arkWallet.ts
|
|
650
650
|
/** The Ark SDK, a large part of the app: loaded once an Ark wallet is made, opened or restored, not with the engine. */
|
|
651
|
-
var loadArkade = () => import("./arkade-
|
|
651
|
+
var loadArkade = () => import("./arkade-CuWlNnCz.js");
|
|
652
652
|
/** How long a Testnet wallet about to make way for another waits for its server to say what it holds. */
|
|
653
653
|
var RETIRE_READ_MS = 1e4;
|
|
654
654
|
/** Every new profile starts with this wallet: nothing to set up before receiving. */
|
|
@@ -664,7 +664,7 @@ var checkProviders = (network, ...urls) => {
|
|
|
664
664
|
provider,
|
|
665
665
|
asset: "BTC",
|
|
666
666
|
unit: "sat",
|
|
667
|
-
address:
|
|
667
|
+
address: `${arkAddressPrefix(network)}configuration`,
|
|
668
668
|
expiresAt: Date.now() + 6e4
|
|
669
669
|
});
|
|
670
670
|
};
|
|
@@ -1253,7 +1253,7 @@ var BarkAdapter = class BarkAdapter {
|
|
|
1253
1253
|
provider,
|
|
1254
1254
|
asset: "BTC",
|
|
1255
1255
|
unit: "sat",
|
|
1256
|
-
address:
|
|
1256
|
+
address: `${barkAddressPrefix(config.network)}configuration`,
|
|
1257
1257
|
expiresAt: Date.now() + 6e4
|
|
1258
1258
|
});
|
|
1259
1259
|
}
|
|
@@ -6714,7 +6714,7 @@ var registry;
|
|
|
6714
6714
|
var loading$1;
|
|
6715
6715
|
var listeners = /* @__PURE__ */ new Set();
|
|
6716
6716
|
function loadIdentityProviders() {
|
|
6717
|
-
return loading$1 ??= import("./registry-
|
|
6717
|
+
return loading$1 ??= import("./registry-CLolR0kM.js").then((m) => {
|
|
6718
6718
|
registry = m;
|
|
6719
6719
|
for (const listener of listeners) listener();
|
|
6720
6720
|
return m;
|
|
@@ -9895,7 +9895,8 @@ async function copyForForward(sourceId, target) {
|
|
|
9895
9895
|
const source = await fileStore.get(sourceId);
|
|
9896
9896
|
if (!source?.metadata) throw new Error("The file is not on this device any more");
|
|
9897
9897
|
const size = storedSize(source);
|
|
9898
|
-
|
|
9898
|
+
const checked = source.wire3 ? source.wire3.state === "done" : !source.group || source.transfer?.state === "done";
|
|
9899
|
+
if (source.direction === "in" && !checked || await bytesHere(source) !== size) throw new Error("The file has not arrived yet");
|
|
9899
9900
|
const { file, linkId, wireId, timestamp } = target;
|
|
9900
9901
|
const metadata = {
|
|
9901
9902
|
name: file.name,
|
|
@@ -10372,6 +10373,10 @@ var Apps = class {
|
|
|
10372
10373
|
/** What each `ref\0scope` holds, read once from its counter row and kept in step by the writes here. */
|
|
10373
10374
|
usage = /* @__PURE__ */ new Map();
|
|
10374
10375
|
queues = /* @__PURE__ */ new Map();
|
|
10376
|
+
/** The keys read of each `ref\0scope` running, and the one every call made while it runs shares after it. */
|
|
10377
|
+
keyReads = /* @__PURE__ */ new Map();
|
|
10378
|
+
/** Uninstalls begun per reference, for this engine's life: a storage write that waited its turn across one is refused. */
|
|
10379
|
+
uninstalls = /* @__PURE__ */ new Map();
|
|
10375
10380
|
timer = null;
|
|
10376
10381
|
/** Drops what `staged` holds past `STAGED.ms`, set while it holds anything: a closed install screen sends no call. */
|
|
10377
10382
|
sweep = null;
|
|
@@ -11659,6 +11664,8 @@ var Apps = class {
|
|
|
11659
11664
|
STORES$1.appStorage,
|
|
11660
11665
|
...builtIn ? [STORES$1.settings] : []
|
|
11661
11666
|
], "readwrite");
|
|
11667
|
+
this.uninstalls.set(ref, (this.uninstalls.get(ref) ?? 0) + 1);
|
|
11668
|
+
this.held.delete(ref);
|
|
11662
11669
|
tx.objectStore(STORES$1.apps).delete(ref);
|
|
11663
11670
|
tx.objectStore(STORES$1.appStorage).delete(rowsOf(ref));
|
|
11664
11671
|
if (builtIn) markBuiltIns(tx.objectStore(STORES$1.settings), (marks) => {
|
|
@@ -11737,6 +11744,7 @@ var Apps = class {
|
|
|
11737
11744
|
* it, so the app can make room.
|
|
11738
11745
|
*/
|
|
11739
11746
|
async storageSet({ ref, scope, key, value, digest }) {
|
|
11747
|
+
const uninstalls = this.uninstalls.get(ref);
|
|
11740
11748
|
const app = await this.runningOrFail(ref, digest);
|
|
11741
11749
|
const where = this.scopeOf(scope), name = this.keyOf(key);
|
|
11742
11750
|
let text;
|
|
@@ -11767,6 +11775,10 @@ var Apps = class {
|
|
|
11767
11775
|
this.usage.delete(`${app.ref}\0${where}`);
|
|
11768
11776
|
fail("bad-scope", "Not a chat of this profile");
|
|
11769
11777
|
}
|
|
11778
|
+
if (this.uninstalls.get(app.ref) !== uninstalls) {
|
|
11779
|
+
this.usage.delete(`${app.ref}\0${where}`);
|
|
11780
|
+
fail("not-installed", "This app is not installed");
|
|
11781
|
+
}
|
|
11770
11782
|
writing.put({
|
|
11771
11783
|
ref: app.ref,
|
|
11772
11784
|
scope: where,
|
|
@@ -11806,7 +11818,28 @@ var Apps = class {
|
|
|
11806
11818
|
}
|
|
11807
11819
|
async storageKeys({ ref, scope, digest }) {
|
|
11808
11820
|
const app = await this.runningOrFail(ref, digest);
|
|
11809
|
-
|
|
11821
|
+
const where = this.scopeOf(scope);
|
|
11822
|
+
return this.keysOnce(`${app.ref}\0${where}`, async () => {
|
|
11823
|
+
return (await wrap((await store(STORES$1.appStorage, "readonly")).getAllKeys(keysOf(app.ref, where)))).map((k) => k[2]);
|
|
11824
|
+
});
|
|
11825
|
+
}
|
|
11826
|
+
/**
|
|
11827
|
+
* One read of a scope's keys at a time. Every call made while one runs shares the single read that starts after it, so
|
|
11828
|
+
* it still sees each write done before it was made: 50 calls a second on a full scope held the profile's database,
|
|
11829
|
+
* a chat message's write waited 17 s behind them.
|
|
11830
|
+
*/
|
|
11831
|
+
keysOnce(id, read) {
|
|
11832
|
+
const waiting = this.keyReads.get(id);
|
|
11833
|
+
if (waiting) return waiting.next ??= waiting.running.then(() => this.keysStart(id, read), () => this.keysStart(id, read));
|
|
11834
|
+
return this.keysStart(id, read);
|
|
11835
|
+
}
|
|
11836
|
+
keysStart(id, read) {
|
|
11837
|
+
const slot = { running: read() };
|
|
11838
|
+
this.keyReads.set(id, slot);
|
|
11839
|
+
slot.running.catch(() => {}).then(() => {
|
|
11840
|
+
if (this.keyReads.get(id) === slot && !slot.next) this.keyReads.delete(id);
|
|
11841
|
+
});
|
|
11842
|
+
return slot.running;
|
|
11810
11843
|
}
|
|
11811
11844
|
/** An app's storage in every scope, as export files (WISP 1200 § Where installed apps live), offered before an uninstall. */
|
|
11812
11845
|
async exportData({ ref }) {
|
|
@@ -24483,6 +24516,11 @@ var ACCEPT_AGAINS = 5;
|
|
|
24483
24516
|
var REWELCOME_MS = ACCEPT_AGAIN_MS / 2;
|
|
24484
24517
|
/** Invitee side: the invitations one contact chat may have waiting here at a time. More are answered as declined. */
|
|
24485
24518
|
var MAX_INVITATIONS_PER_CHAT = 4;
|
|
24519
|
+
/** Invitee side, removed and invited again: the chat that let me into the group I kept, if it is its admin's. */
|
|
24520
|
+
var keptAdminChat = (kept) => {
|
|
24521
|
+
const admin = kept?.state && rosterAdmin(kept.state.chain[kept.state.chain.length - 1].m);
|
|
24522
|
+
return admin ? kept.contacts?.[admin] : void 0;
|
|
24523
|
+
};
|
|
24486
24524
|
/** What an invitation says of its group, kept as a claim within what a group can be: an epoch from 0, a roster of 1 to the most a group holds. */
|
|
24487
24525
|
function invitationClaims(frame) {
|
|
24488
24526
|
const e = Number.isSafeInteger(frame.e) ? frame.e : 0, n = Number.isSafeInteger(frame.n) ? frame.n : 1;
|
|
@@ -25026,7 +25064,7 @@ var Groups = class {
|
|
|
25026
25064
|
const previous = group.previous;
|
|
25027
25065
|
if (!previous) return this.forget(group.id, false);
|
|
25028
25066
|
if (owed) previous.declined = owed;
|
|
25029
|
-
else delete previous.declined;
|
|
25067
|
+
else if (previous.declined?.linkId === group.invitation?.linkId) delete previous.declined;
|
|
25030
25068
|
this.acceptSaid.delete(group.id);
|
|
25031
25069
|
this.stored.set(group.id, previous);
|
|
25032
25070
|
if (previous.state) this.attach(previous.state);
|
|
@@ -25902,7 +25940,7 @@ var Groups = class {
|
|
|
25902
25940
|
return;
|
|
25903
25941
|
}
|
|
25904
25942
|
if (existing?.state && existing.state.status === "active") {
|
|
25905
|
-
if (this.sessions.get(g)?.admin === frame.admin) this.host.sendOnLink(linkId, {
|
|
25943
|
+
if (this.sessions.get(g)?.admin === frame.admin && existing.contacts?.[frame.admin] === linkId) this.host.sendOnLink(linkId, {
|
|
25906
25944
|
t: "group-decline",
|
|
25907
25945
|
g
|
|
25908
25946
|
});
|
|
@@ -25910,7 +25948,7 @@ var Groups = class {
|
|
|
25910
25948
|
}
|
|
25911
25949
|
if (existing?.invitation?.seedB64 && (existing.invitation.linkId !== linkId || existing.invitation.admin !== frame.admin)) return;
|
|
25912
25950
|
if (existing?.left && (existing.left.admin !== frame.admin || existing.contacts?.[existing.left.admin] !== linkId)) return;
|
|
25913
|
-
if (existing?.invitation && !existing.state && existing.invitation.linkId !== linkId && !existing.invitation.genesis && !existing.invitation.takenBack) return;
|
|
25951
|
+
if (existing?.invitation && !existing.state && existing.invitation.linkId !== linkId && !(existing.invitation.genesis && linkId === keptAdminChat(existing.previous)) && !existing.invitation.takenBack) return;
|
|
25914
25952
|
if ([...this.stored.values()].filter((x) => x.invitation && !x.invitation.takenBack).length >= 32) return;
|
|
25915
25953
|
if (!(existing?.invitation && !existing.invitation.takenBack && existing.invitation.linkId === linkId) && [...this.stored.values()].filter((x) => x.invitation?.linkId === linkId && !x.invitation.takenBack).length >= MAX_INVITATIONS_PER_CHAT) {
|
|
25916
25954
|
try {
|
|
@@ -26044,10 +26082,12 @@ var Groups = class {
|
|
|
26044
26082
|
const group = this.stored.get(g);
|
|
26045
26083
|
if (!group?.invitation?.seedB64 || group.invitation.linkId !== linkId || !Array.isArray(frame.commits)) return;
|
|
26046
26084
|
if (group.invitation.pieces.reduce((n, p) => n + p.commits.length, 0) + frame.commits.length > 1024) return;
|
|
26085
|
+
const commits = frame.commits.map(parseGroupCommit);
|
|
26086
|
+
if (commits.some((c) => !c || c.g !== g)) return;
|
|
26047
26087
|
group.invitation.pieces.push({
|
|
26048
26088
|
t: "group-chain",
|
|
26049
26089
|
g,
|
|
26050
|
-
commits
|
|
26090
|
+
commits
|
|
26051
26091
|
});
|
|
26052
26092
|
return;
|
|
26053
26093
|
}
|
|
@@ -32410,6 +32450,11 @@ var PaymentDesk = class {
|
|
|
32410
32450
|
return;
|
|
32411
32451
|
}
|
|
32412
32452
|
}
|
|
32453
|
+
if (target && request.network && request.network !== walletNetworkOf(target.network)) {
|
|
32454
|
+
if (!federations) return;
|
|
32455
|
+
federations = void 0;
|
|
32456
|
+
target = void 0;
|
|
32457
|
+
}
|
|
32413
32458
|
const network = request.network ?? paymentNetwork({
|
|
32414
32459
|
target,
|
|
32415
32460
|
mints: parseCashuRequestPayload(findEndpoint(request.endpoints, ENDPOINT.cashu) ?? ""),
|
|
@@ -32422,8 +32467,10 @@ var PaymentDesk = class {
|
|
|
32422
32467
|
}
|
|
32423
32468
|
const allowed = (method) => (held ? !!link?.paymentEnabled(method) : !!link?.allowsPayment(method)) && this.accepts(linkId, method, network);
|
|
32424
32469
|
const bolt11 = allowed("lightning") ? findEndpoint(request.endpoints, ENDPOINT.bolt11) : void 0;
|
|
32425
|
-
const
|
|
32426
|
-
const
|
|
32470
|
+
const decoded = bolt11 ? decodeBolt11(bolt11) : null;
|
|
32471
|
+
const chain = decoded?.network;
|
|
32472
|
+
const sameTarget = !(target?.method === "bitcoin" || target?.method === "arkade" || target?.method === "bark") || chain === "bitcoin" === (walletNetworkOf(target.network) === "mainnet");
|
|
32473
|
+
const invoice = bolt11 && decoded?.amountSat === amount && sameTarget && !(network === "mainnet" && chain && chain !== "bitcoin") ? bolt11 : void 0;
|
|
32427
32474
|
const mints = allowed("cashu") ? parseCashuRequestPayload(findEndpoint(request.endpoints, ENDPOINT.cashu) ?? "").filter((mint) => mintNetwork(mint) === network) : [];
|
|
32428
32475
|
if (!target && !invoice && !mints.length && !federations) return;
|
|
32429
32476
|
await this.save({
|
|
@@ -32518,6 +32565,14 @@ var PaymentDesk = class {
|
|
|
32518
32565
|
return;
|
|
32519
32566
|
}
|
|
32520
32567
|
const inspected = this.wallet.inspect?.(payment.endpoint[1]);
|
|
32568
|
+
if (payment.endpoint[0] === ENDPOINT.cashu && inspected !== void 0 && inspected?.kind !== "token") {
|
|
32569
|
+
link.sendPaymentResult({
|
|
32570
|
+
id: payment.id,
|
|
32571
|
+
ok: false,
|
|
32572
|
+
error: "That is not a valid ecash token"
|
|
32573
|
+
});
|
|
32574
|
+
return;
|
|
32575
|
+
}
|
|
32521
32576
|
if (inspected?.kind === "token" && !this.accepts(linkId, "cashu", mintNetwork(inspected.mint))) {
|
|
32522
32577
|
link.sendPaymentResult({
|
|
32523
32578
|
id: payment.id,
|
|
@@ -33506,7 +33561,7 @@ var PaymentDesk = class {
|
|
|
33506
33561
|
/**
|
|
33507
33562
|
* Notes from the contact. Redeemed only when they are of a federation we joined and this chat allows Fedimint;
|
|
33508
33563
|
* otherwise refused unredeemed, and the contact takes them back. Written down (with the notes) before redeeming:
|
|
33509
|
-
* an interrupted redeem is finished from the journal, never lost.
|
|
33564
|
+
* an interrupted redeem is finished from the journal, never lost. The chat says it once the federation answered.
|
|
33510
33565
|
*/
|
|
33511
33566
|
async receiveFedimint(linkId, payment) {
|
|
33512
33567
|
const link = this.host.getLink(linkId);
|
|
@@ -33579,6 +33634,16 @@ var PaymentDesk = class {
|
|
|
33579
33634
|
await refuse(`${networkLabel(walletNetworkOf(network))} Fedimint is off in this chat`);
|
|
33580
33635
|
return;
|
|
33581
33636
|
}
|
|
33637
|
+
const digest = digestHex(notes.trim());
|
|
33638
|
+
const before = [...this.payments.values()].find((p) => p.notesDigest === digest && p.direction === "in" && p.kind === "payment");
|
|
33639
|
+
if (before) {
|
|
33640
|
+
link.sendPaymentResult({
|
|
33641
|
+
id: payment.id,
|
|
33642
|
+
ok: false,
|
|
33643
|
+
error: before.state === "failed" ? before.error ?? "These notes were already redeemed" : "These notes were already received"
|
|
33644
|
+
});
|
|
33645
|
+
return;
|
|
33646
|
+
}
|
|
33582
33647
|
await this.save({
|
|
33583
33648
|
id: payment.id,
|
|
33584
33649
|
linkId,
|
|
@@ -33591,16 +33656,8 @@ var PaymentDesk = class {
|
|
|
33591
33656
|
createdAt: payment.timestamp,
|
|
33592
33657
|
requestId: payment.requestId,
|
|
33593
33658
|
federation: found.federation,
|
|
33594
|
-
token: notes
|
|
33595
|
-
|
|
33596
|
-
await this.host.storeMessage({
|
|
33597
|
-
linkId,
|
|
33598
|
-
id: `peer_${payment.timestamp}`,
|
|
33599
|
-
text: `⚡ ${amount.toLocaleString()} ${network === "bitcoin" ? "sats" : "test sats"} on Fedimint`,
|
|
33600
|
-
sender: "peer",
|
|
33601
|
-
timestamp: payment.timestamp,
|
|
33602
|
-
via: "datalink",
|
|
33603
|
-
paymentId: payment.id
|
|
33659
|
+
token: notes,
|
|
33660
|
+
notesDigest: digest
|
|
33604
33661
|
});
|
|
33605
33662
|
await this.finishRedeem(this.payments.get(payment.id));
|
|
33606
33663
|
}
|
|
@@ -33648,8 +33705,30 @@ var PaymentDesk = class {
|
|
|
33648
33705
|
ok: false,
|
|
33649
33706
|
error: "These notes were already redeemed"
|
|
33650
33707
|
});
|
|
33708
|
+
try {
|
|
33709
|
+
await this.host.storeMessage({
|
|
33710
|
+
linkId: payment.linkId,
|
|
33711
|
+
id: `peer_${payment.createdAt}_refused`,
|
|
33712
|
+
text: "Could not receive Fedimint ecash: These notes were already redeemed",
|
|
33713
|
+
sender: "peer",
|
|
33714
|
+
timestamp: payment.createdAt,
|
|
33715
|
+
via: "datalink"
|
|
33716
|
+
});
|
|
33717
|
+
} catch {}
|
|
33651
33718
|
return;
|
|
33652
33719
|
}
|
|
33720
|
+
if (state) {
|
|
33721
|
+
const test = fedimint.federation(payment.federation)?.network !== "bitcoin";
|
|
33722
|
+
await this.host.storeMessage({
|
|
33723
|
+
linkId: payment.linkId,
|
|
33724
|
+
id: `peer_${payment.createdAt}`,
|
|
33725
|
+
text: `⚡ ${payment.amount.toLocaleString()} ${test ? "test sats" : "sats"} on Fedimint`,
|
|
33726
|
+
sender: "peer",
|
|
33727
|
+
timestamp: payment.createdAt,
|
|
33728
|
+
via: "datalink",
|
|
33729
|
+
paymentId: id
|
|
33730
|
+
});
|
|
33731
|
+
}
|
|
33653
33732
|
if (state !== "done") return;
|
|
33654
33733
|
await this.save({
|
|
33655
33734
|
...this.current(payment),
|
|
@@ -42703,7 +42782,7 @@ var GhostlyNode = class GhostlyNode {
|
|
|
42703
42782
|
get nativeFactories() {
|
|
42704
42783
|
const relay = this.relaysHyperdht ? this.hyperdhtRelay : "";
|
|
42705
42784
|
return {
|
|
42706
|
-
...relay ? { "hyperdht/1": async (seedB64) => (await import("./hyperdhtRelay-
|
|
42785
|
+
...relay ? { "hyperdht/1": async (seedB64) => (await import("./hyperdhtRelay-BVoWY2ua.js")).createRelayedHyperEndpoint(seedB64, relay) } : {},
|
|
42707
42786
|
...this.options.nativeTransports,
|
|
42708
42787
|
...this.ownIrohRelays ? { "iroh/1": (seedB64) => this.options.nativeTransports["iroh/1"](seedB64, this.settings.irohRelays?.length ? { relays: [...this.settings.irohRelays] } : {}) } : {},
|
|
42709
42788
|
...this.options.irohWeb ? { "iroh/1": (seedB64) => createIrohWebEndpoint(seedB64, { relays: this.irohRelays }) } : {}
|
|
@@ -43552,4 +43631,4 @@ function signalKind(signal) {
|
|
|
43552
43631
|
//#endregion
|
|
43553
43632
|
export { EngineServer };
|
|
43554
43633
|
|
|
43555
|
-
//# sourceMappingURL=server-
|
|
43634
|
+
//# sourceMappingURL=server-CJNEKxzE.js.map
|