@bounded-sh/core 0.0.112-ux-audit.1 → 0.0.112
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/{index-CVWqE5hO.mjs → index-CkgEqMkJ.mjs} +113 -60
- package/dist/index-CkgEqMkJ.mjs.map +1 -0
- package/dist/{index-DOKk4VdC.js → index-WIHuQp4L.js} +113 -60
- package/dist/index-WIHuQp4L.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{realtime-store-CIrvP17-.js → realtime-store-7itLaAao.js} +2 -2
- package/dist/{realtime-store-CIrvP17-.js.map → realtime-store-7itLaAao.js.map} +1 -1
- package/dist/{realtime-store-Cno1p315.mjs → realtime-store-BIB8v265.mjs} +2 -2
- package/dist/{realtime-store-Cno1p315.mjs.map → realtime-store-BIB8v265.mjs.map} +1 -1
- package/dist/{solana-message-BTs3b7JU.mjs → solana-message-BBMxFFjM.mjs} +2 -2
- package/dist/{solana-message-BTs3b7JU.mjs.map → solana-message-BBMxFFjM.mjs.map} +1 -1
- package/dist/{solana-message-BMaEWGOW.js → solana-message-Ce6_jR6H.js} +2 -2
- package/dist/{solana-message-BMaEWGOW.js.map → solana-message-Ce6_jR6H.js.map} +1 -1
- package/dist/{solana-operations-BcFqY34S.js → solana-operations-CNeO_lJ2.js} +3 -3
- package/dist/{solana-operations-BcFqY34S.js.map → solana-operations-CNeO_lJ2.js.map} +1 -1
- package/dist/{solana-operations-CU-8CFHk.mjs → solana-operations-Cshh2EfH.mjs} +3 -3
- package/dist/{solana-operations-CU-8CFHk.mjs.map → solana-operations-Cshh2EfH.mjs.map} +1 -1
- package/dist/{solana-v1-operations-BNLWUYEm.mjs → solana-v1-operations-B8vV5teG.mjs} +3 -3
- package/dist/{solana-v1-operations-BNLWUYEm.mjs.map → solana-v1-operations-B8vV5teG.mjs.map} +1 -1
- package/dist/{solana-v1-operations-RNpyoM03.js → solana-v1-operations-c0p0YESV.js} +3 -3
- package/dist/{solana-v1-operations-RNpyoM03.js.map → solana-v1-operations-c0p0YESV.js.map} +1 -1
- package/dist/utils/auth-token-freshness.d.ts +7 -1
- package/package.json +1 -1
- package/dist/index-CVWqE5hO.mjs.map +0 -1
- package/dist/index-DOKk4VdC.js.map +0 -1
|
@@ -4188,7 +4188,7 @@ class ServerSessionManager {
|
|
|
4188
4188
|
const sessionConfig = (_a = this.sessionConfig) !== null && _a !== void 0 ? _a : undefined;
|
|
4189
4189
|
/* fetch nonce from auth API (bound to the snapshotted app+issuer) */
|
|
4190
4190
|
const nonce = await genAuthNonce(sessionConfig);
|
|
4191
|
-
const { genSolanaMessage } = await import('./solana-message-
|
|
4191
|
+
const { genSolanaMessage } = await import('./solana-message-BBMxFFjM.mjs');
|
|
4192
4192
|
const message = await genSolanaMessage(address, nonce, sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.appId);
|
|
4193
4193
|
/* sign the message */
|
|
4194
4194
|
const sigBytes = nacl.sign.detached(new TextEncoder().encode(message), kp.secretKey);
|
|
@@ -4518,7 +4518,7 @@ function normalizeAuthExpiredError(error, fallbackMessage) {
|
|
|
4518
4518
|
}
|
|
4519
4519
|
/** Refresh this many ms before `exp`, so a token cannot die mid-flight. */
|
|
4520
4520
|
const TOKEN_EXPIRY_SKEW_MS = 60000;
|
|
4521
|
-
function classifyToken(token, nowMs = Date.now()) {
|
|
4521
|
+
function classifyToken(token, nowMs = Date.now(), skewMs = TOKEN_EXPIRY_SKEW_MS) {
|
|
4522
4522
|
let exp;
|
|
4523
4523
|
try {
|
|
4524
4524
|
const payload = JSON.parse(decodeBase64Url(token.split('.')[1]));
|
|
@@ -4533,7 +4533,7 @@ function classifyToken(token, nowMs = Date.now()) {
|
|
|
4533
4533
|
const expiresAtMs = exp * 1000;
|
|
4534
4534
|
if (nowMs >= expiresAtMs)
|
|
4535
4535
|
return 'expired';
|
|
4536
|
-
if (nowMs >= expiresAtMs -
|
|
4536
|
+
if (nowMs >= expiresAtMs - skewMs)
|
|
4537
4537
|
return 'expiring-soon';
|
|
4538
4538
|
return 'fresh';
|
|
4539
4539
|
}
|
|
@@ -4604,12 +4604,13 @@ async function commit(isServer, expected, refreshed) {
|
|
|
4604
4604
|
* used; the caller must surface it rather than downgrade to anonymous.
|
|
4605
4605
|
*/
|
|
4606
4606
|
async function getFreshAuthToken(isServer = false, options = {}) {
|
|
4607
|
+
var _a;
|
|
4607
4608
|
const { idToken, refreshToken, issuer, generation } = await readSessionParts(isServer);
|
|
4608
4609
|
// No session at all: anonymous is legitimate.
|
|
4609
4610
|
if (!idToken)
|
|
4610
4611
|
return null;
|
|
4611
4612
|
const force = options.force === true;
|
|
4612
|
-
const freshness = classifyToken(idToken);
|
|
4613
|
+
const freshness = classifyToken(idToken, Date.now(), Math.max(TOKEN_EXPIRY_SKEW_MS, (_a = options.refreshWithinMs) !== null && _a !== void 0 ? _a : 0));
|
|
4613
4614
|
if (!force && freshness === 'fresh')
|
|
4614
4615
|
return idToken;
|
|
4615
4616
|
// Still valid for a little longer, so a failed refresh can fall back to it —
|
|
@@ -5332,8 +5333,11 @@ const connectionAcquisitions = new Map();
|
|
|
5332
5333
|
// cache entry so collision isolation does not evict another principal's cache.
|
|
5333
5334
|
const responseCache = new Map();
|
|
5334
5335
|
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
5335
|
-
const TOKEN_REFRESH_BUFFER = 10 * 60 * 1000; // Refresh token 10 minutes before expiry
|
|
5336
5336
|
const TOKEN_CHECK_INTERVAL = 5 * 60 * 1000; // Check token freshness every 5 minutes
|
|
5337
|
+
// The worker closes a socket once the token it authenticated with expires. A socket
|
|
5338
|
+
// opens with, and each check refreshes, any token that would expire before the next
|
|
5339
|
+
// check plus two minutes for a timer a background tab delays.
|
|
5340
|
+
const TOKEN_REFRESH_WITHIN_MS = TOKEN_CHECK_INTERVAL + 2 * 60 * 1000;
|
|
5337
5341
|
function getResponseCacheEntry(cacheKey, identityToken) {
|
|
5338
5342
|
var _a;
|
|
5339
5343
|
return (_a = responseCache.get(cacheKey)) === null || _a === void 0 ? void 0 : _a.find(entry => entry.identityToken === identityToken);
|
|
@@ -5621,21 +5625,13 @@ let connectionEpoch = 0;
|
|
|
5621
5625
|
// WebSocket paths cannot drift apart. `classifyToken` replaces the old boolean,
|
|
5622
5626
|
// which collapsed "expiring soon" and "already expired" into one answer and read a
|
|
5623
5627
|
// token with no numeric `exp` as fresh.
|
|
5624
|
-
function getTokenExpirationTime(token) {
|
|
5625
|
-
try {
|
|
5626
|
-
const payload = JSON.parse(decodeBase64Url(token.split('.')[1]));
|
|
5627
|
-
return payload.exp ? payload.exp * 1000 : null;
|
|
5628
|
-
}
|
|
5629
|
-
catch (_a) {
|
|
5630
|
-
return null;
|
|
5631
|
-
}
|
|
5632
|
-
}
|
|
5633
5628
|
function failConnectionAuth(connection, error) {
|
|
5634
5629
|
connection.authFailure = error;
|
|
5635
5630
|
connection.pendingAuthToken = null;
|
|
5636
5631
|
connection.pendingAuthSnapshot = null;
|
|
5637
5632
|
connection.authTokenValue = null;
|
|
5638
5633
|
connection.authPrincipal = null;
|
|
5634
|
+
connection.reauthSnapshot = null;
|
|
5639
5635
|
connection.isConnecting = false;
|
|
5640
5636
|
connection.isConnected = false;
|
|
5641
5637
|
connection.isAuthenticating = false;
|
|
@@ -5662,48 +5658,43 @@ function scheduleTokenRefresh(connection, isServer) {
|
|
|
5662
5658
|
const currentToken = await getIdToken(isServer);
|
|
5663
5659
|
if (!currentToken)
|
|
5664
5660
|
return; // Unauthenticated, nothing to refresh
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5673
|
-
|
|
5674
|
-
|
|
5675
|
-
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
//
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
console.warn('[WS v2] Session no longer usable, stopping periodic refresh');
|
|
5696
|
-
if (connection.tokenRefreshTimer) {
|
|
5697
|
-
clearInterval(connection.tokenRefreshTimer);
|
|
5698
|
-
connection.tokenRefreshTimer = null;
|
|
5699
|
-
}
|
|
5700
|
-
return;
|
|
5661
|
+
// The worker closes a socket once the token it authenticated with
|
|
5662
|
+
// expires. Refresh any token the next check could reach too late, and
|
|
5663
|
+
// give the open socket the stored token whenever it changed: refreshed
|
|
5664
|
+
// here, in another tab, or by an HTTP call.
|
|
5665
|
+
//
|
|
5666
|
+
// Routed through the shared transaction. This used to read a refresh
|
|
5667
|
+
// token, call refreshSession, and write the result with nothing binding
|
|
5668
|
+
// it to the session it started from - so a timer that fired for S1 and
|
|
5669
|
+
// completed after a same-wallet re-login could overwrite S2's rotated
|
|
5670
|
+
// token, and the next refresh would trip the issuer's reuse detection
|
|
5671
|
+
// and revoke the whole family.
|
|
5672
|
+
try {
|
|
5673
|
+
const token = await getFreshAuthToken(isServer, { refreshWithinMs: TOKEN_REFRESH_WITHIN_MS });
|
|
5674
|
+
// A wallet-scoped socket authenticates through its own provider.
|
|
5675
|
+
if (token && !connection.authTokenProvider)
|
|
5676
|
+
reauthenticateOpenSocket(connection, token);
|
|
5677
|
+
}
|
|
5678
|
+
catch (refreshError) {
|
|
5679
|
+
const definitive = (refreshError === null || refreshError === void 0 ? void 0 : refreshError.code) === AUTH_CHANGED_CODE
|
|
5680
|
+
|| !await getIdToken(isServer);
|
|
5681
|
+
if (definitive) {
|
|
5682
|
+
// The session is dead or belongs to someone else now. The shared
|
|
5683
|
+
// helper has already cleared storage and notified auth-state
|
|
5684
|
+
// listeners, so the UI stops showing a connection that is gone -
|
|
5685
|
+
// this branch used to just stop the timer and leave the UI
|
|
5686
|
+
// claiming to be connected.
|
|
5687
|
+
console.warn('[WS v2] Session no longer usable, stopping periodic refresh');
|
|
5688
|
+
if (connection.tokenRefreshTimer) {
|
|
5689
|
+
clearInterval(connection.tokenRefreshTimer);
|
|
5690
|
+
connection.tokenRefreshTimer = null;
|
|
5701
5691
|
}
|
|
5702
|
-
|
|
5703
|
-
// Status only — the raw axios error carries config.data (the refresh
|
|
5704
|
-
// token) and must never hit the console / log sinks.
|
|
5705
|
-
console.warn('[WS v2] Proactive token refresh failed, will retry next interval. status:', (_b = (_a = refreshError === null || refreshError === void 0 ? void 0 : refreshError.status) !== null && _a !== void 0 ? _a : refreshError === null || refreshError === void 0 ? void 0 : refreshError.code) !== null && _b !== void 0 ? _b : 'unknown');
|
|
5692
|
+
return;
|
|
5706
5693
|
}
|
|
5694
|
+
// Transient: keep the session and try again next interval.
|
|
5695
|
+
// Status only - the raw axios error carries config.data (the refresh
|
|
5696
|
+
// token) and must never hit the console / log sinks.
|
|
5697
|
+
console.warn('[WS v2] Proactive token refresh failed, will retry next interval. status:', (_b = (_a = refreshError === null || refreshError === void 0 ? void 0 : refreshError.status) !== null && _a !== void 0 ? _a : refreshError === null || refreshError === void 0 ? void 0 : refreshError.code) !== null && _b !== void 0 ? _b : 'unknown');
|
|
5707
5698
|
}
|
|
5708
5699
|
}
|
|
5709
5700
|
catch (error) {
|
|
@@ -5711,6 +5702,49 @@ function scheduleTokenRefresh(connection, isServer) {
|
|
|
5711
5702
|
}
|
|
5712
5703
|
}, TOKEN_CHECK_INTERVAL);
|
|
5713
5704
|
}
|
|
5705
|
+
/**
|
|
5706
|
+
* The identity the worker keys a socket's subscriptions by (subscriptions.ts
|
|
5707
|
+
* connectionIdentityKey): the user id, wallet, email and EVM wallet its auth reads
|
|
5708
|
+
* from the token, normalized as it does, plus the guest flag. An auth frame that
|
|
5709
|
+
* changes it makes the worker drop every subscription on the socket.
|
|
5710
|
+
*/
|
|
5711
|
+
function socketIdentityKey(idToken) {
|
|
5712
|
+
try {
|
|
5713
|
+
const { id, address, email, evmAddress } = deriveUserIdentityFromIdToken(idToken);
|
|
5714
|
+
const guest = JSON.parse(decodeBase64Url(idToken.split('.')[1])).is_anonymous === true;
|
|
5715
|
+
return id && JSON.stringify([id, address, email, evmAddress, guest]);
|
|
5716
|
+
}
|
|
5717
|
+
catch (_a) {
|
|
5718
|
+
return null;
|
|
5719
|
+
}
|
|
5720
|
+
}
|
|
5721
|
+
/**
|
|
5722
|
+
* Give an authenticated socket the stored token before the worker closes it at
|
|
5723
|
+
* its own token's expiry. For an unchanged worker identity an auth frame keeps
|
|
5724
|
+
* the subscriptions and moves the deadline. The same account with changed claims
|
|
5725
|
+
* (a refresh that bound a wallet, a guest that signed up) would lose them to that
|
|
5726
|
+
* frame, so it reconnects and replays them instead. Another account is the
|
|
5727
|
+
* auth-change path's job (reconnect with cleared read caches), never this one's.
|
|
5728
|
+
*/
|
|
5729
|
+
function reauthenticateOpenSocket(connection, token) {
|
|
5730
|
+
// Only a socket that is OPEN: reconnecting-websocket queues anything else and
|
|
5731
|
+
// flushes it into the next socket ahead of that socket's own auth.
|
|
5732
|
+
if (!isWarmConnection(connection) || connection.reauthSnapshot)
|
|
5733
|
+
return;
|
|
5734
|
+
if (!connection.authTokenValue || connection.authTokenValue === token)
|
|
5735
|
+
return;
|
|
5736
|
+
const identity = socketIdentityKey(token);
|
|
5737
|
+
if (!identity)
|
|
5738
|
+
return;
|
|
5739
|
+
const snapshot = authSnapshotFromToken(token);
|
|
5740
|
+
if (identity === socketIdentityKey(connection.authTokenValue)) {
|
|
5741
|
+
connection.reauthSnapshot = snapshot;
|
|
5742
|
+
connection.ws.send(JSON.stringify({ type: 'auth', token }));
|
|
5743
|
+
}
|
|
5744
|
+
else if (snapshot.principal === connection.authPrincipal) {
|
|
5745
|
+
connection.ws.reconnect();
|
|
5746
|
+
}
|
|
5747
|
+
}
|
|
5714
5748
|
/**
|
|
5715
5749
|
* WS-local wrapper around the shared freshness helper.
|
|
5716
5750
|
*
|
|
@@ -5721,7 +5755,8 @@ function scheduleTokenRefresh(connection, isServer) {
|
|
|
5721
5755
|
async function getWsAuthToken(isServer) {
|
|
5722
5756
|
var _a, _b;
|
|
5723
5757
|
try {
|
|
5724
|
-
|
|
5758
|
+
// A socket must outlive its first token check, five minutes after it opens.
|
|
5759
|
+
return await getFreshAuthToken(isServer, { refreshWithinMs: TOKEN_REFRESH_WITHIN_MS });
|
|
5725
5760
|
}
|
|
5726
5761
|
catch (error) {
|
|
5727
5762
|
// Status only — the raw axios error carries config.data (the refresh token)
|
|
@@ -6227,6 +6262,7 @@ async function getOrCreateConnectionOnce(appId, isServer, routePath, authTokenPr
|
|
|
6227
6262
|
pendingAuthSnapshot: null,
|
|
6228
6263
|
authTokenValue: null,
|
|
6229
6264
|
authPrincipal: null,
|
|
6265
|
+
reauthSnapshot: null,
|
|
6230
6266
|
socketGeneration: 0,
|
|
6231
6267
|
heartbeat: null,
|
|
6232
6268
|
heartbeatReconnectTimer: null,
|
|
@@ -6304,6 +6340,7 @@ async function getOrCreateConnectionOnce(appId, isServer, routePath, authTokenPr
|
|
|
6304
6340
|
connection.socketGeneration += 1;
|
|
6305
6341
|
connection.isConnecting = false;
|
|
6306
6342
|
connection.isConnected = true;
|
|
6343
|
+
connection.reauthSnapshot = null;
|
|
6307
6344
|
startHeartbeat(connection, ws);
|
|
6308
6345
|
// NOTE: Do NOT reset consecutiveAuthFailures here. It is reset when a
|
|
6309
6346
|
// fresh auth token is actually obtained or on an explicit auth change.
|
|
@@ -6370,6 +6407,7 @@ async function getOrCreateConnectionOnce(appId, isServer, routePath, authTokenPr
|
|
|
6370
6407
|
stopHeartbeat(connection);
|
|
6371
6408
|
connection.isConnected = false;
|
|
6372
6409
|
connection.isAuthenticating = false;
|
|
6410
|
+
connection.reauthSnapshot = null;
|
|
6373
6411
|
const disconnectError = new Error('WebSocket disconnected');
|
|
6374
6412
|
for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {
|
|
6375
6413
|
rejectPendingSubscriptionConfirmation(connection, subscriptionId, disconnectError);
|
|
@@ -6391,6 +6429,21 @@ function handleServerMessage(connection, message) {
|
|
|
6391
6429
|
var _a, _b, _c, _d, _e, _f;
|
|
6392
6430
|
switch (message.type) {
|
|
6393
6431
|
case 'authenticated': {
|
|
6432
|
+
const reauth = connection.reauthSnapshot;
|
|
6433
|
+
if (reauth) {
|
|
6434
|
+
// The stored token on the open socket: its subscriptions are still
|
|
6435
|
+
// live server-side, so there is nothing to replay, and a subscribe
|
|
6436
|
+
// still awaiting confirmation keeps its one retry.
|
|
6437
|
+
const previous = connection.authTokenValue;
|
|
6438
|
+
connection.reauthSnapshot = null;
|
|
6439
|
+
connection.authTokenValue = reauth.tokenValue;
|
|
6440
|
+
connection.authPrincipal = reauth.principal;
|
|
6441
|
+
for (const pending of connection.pendingSubscriptions.values()) {
|
|
6442
|
+
if (pending.authTokenValue === previous)
|
|
6443
|
+
pending.authTokenValue = reauth.tokenValue;
|
|
6444
|
+
}
|
|
6445
|
+
break;
|
|
6446
|
+
}
|
|
6394
6447
|
connection.isAuthenticating = false;
|
|
6395
6448
|
connection.authTokenValue = (_b = (_a = connection.pendingAuthSnapshot) === null || _a === void 0 ? void 0 : _a.tokenValue) !== null && _b !== void 0 ? _b : null;
|
|
6396
6449
|
connection.authPrincipal = (_d = (_c = connection.pendingAuthSnapshot) === null || _c === void 0 ? void 0 : _c.principal) !== null && _d !== void 0 ? _d : null;
|
|
@@ -7474,7 +7527,7 @@ async function doReconnectWithNewAuth() {
|
|
|
7474
7527
|
console.warn('[WS v2] Failed to clear HTTP read cache on auth change:', error);
|
|
7475
7528
|
}
|
|
7476
7529
|
try {
|
|
7477
|
-
const { reconnectRealtimeStoreWithNewAuth } = await import('./realtime-store-
|
|
7530
|
+
const { reconnectRealtimeStoreWithNewAuth } = await import('./realtime-store-BIB8v265.mjs');
|
|
7478
7531
|
await reconnectRealtimeStoreWithNewAuth();
|
|
7479
7532
|
}
|
|
7480
7533
|
catch (error) {
|
|
@@ -8972,7 +9025,7 @@ async function setMany(many, options) {
|
|
|
8972
9025
|
if (typeof curTx.serializedTransaction !== 'string' || typeof curTx.poofnetIntentId !== 'string') {
|
|
8973
9026
|
throw new Error('Unsupported 202 transaction shape: a poofnet write needs serializedTransaction and poofnetIntentId');
|
|
8974
9027
|
}
|
|
8975
|
-
const { signPoofnetTransaction, buildExpectedWriteIntent } = await import('./solana-operations-
|
|
9028
|
+
const { signPoofnetTransaction, buildExpectedWriteIntent } = await import('./solana-operations-Cshh2EfH.mjs');
|
|
8976
9029
|
const signedTransaction = await signPoofnetTransaction(curTx.serializedTransaction, authProvider, options, buildExpectedWriteIntent(documents));
|
|
8977
9030
|
// Signing-only, exactly as on a real chain: signed and NOT committed.
|
|
8978
9031
|
if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
|
|
@@ -8997,7 +9050,7 @@ async function setMany(many, options) {
|
|
|
8997
9050
|
'Nothing was signed or submitted.');
|
|
8998
9051
|
}
|
|
8999
9052
|
const solanaChain = workerChain;
|
|
9000
|
-
const { handlePreBuiltTransaction, buildExpectedWriteIntent } = await import('./solana-operations-
|
|
9053
|
+
const { handlePreBuiltTransaction, buildExpectedWriteIntent } = await import('./solana-operations-Cshh2EfH.mjs');
|
|
9001
9054
|
// OA-0001: derive the expected intent from OUR OWN request (the one
|
|
9002
9055
|
// ground truth a tampered builder response cannot change) so the
|
|
9003
9056
|
// validator can reject any transaction whose operation semantics
|
|
@@ -10761,7 +10814,7 @@ function toMillis(seconds) {
|
|
|
10761
10814
|
|
|
10762
10815
|
/** SIWS message creation is async already, so its onchain module can be lazy. */
|
|
10763
10816
|
async function genSolanaMessage(address, nonce) {
|
|
10764
|
-
const implementation = await import('./solana-message-
|
|
10817
|
+
const implementation = await import('./solana-message-BBMxFFjM.mjs');
|
|
10765
10818
|
return implementation.genSolanaMessage(address, nonce);
|
|
10766
10819
|
}
|
|
10767
10820
|
|
|
@@ -11311,4 +11364,4 @@ function defineLiveModule(mod) {
|
|
|
11311
11364
|
}
|
|
11312
11365
|
|
|
11313
11366
|
export { increment as $, isWriteNotApplied as A, writeNotAppliedPhase as B, subscribe as C, closeAllSubscriptions as D, clearCache as E, getCachedData as F, reconnectWithNewAuth as G, createClient as H, InsufficientBalanceError as I, exchangeAppToken as J, clearAppTokenCache as K, createAppTokenAuthHeaders as L, AppTokenExchangeError as M, subscribeQuery as N, closeAllQuerySubscriptions as O, canonicalizeArgs as P, canonicalizeResult as Q, DEFAULT_QUERY_POLL_INTERVAL_MS as R, ScopedClientReadOnlyError as S, MIN_QUERY_POLL_INTERVAL_MS as T, BoundedDeclineError as U, deriveDecline as V, dispatchDeclineEvent as W, DECLINE_EVENT_NAME as X, dispatchRateLimitEvent as Y, RATE_LIMIT_EVENT_NAME as Z, hasActiveConnection as _, getWebhookKeysUrl as a, serverTimestamp as a0, now as a1, toSeconds as a2, toMillis as a3, getIdToken as a4, deriveUserIdentityFromIdToken as a5, getSessionGeneration as a6, WebSessionManager as a7, ReactNativeSessionManager as a8, getActiveSessionManager as a9, live as aA, intent as aB, status as aC, subscribeView as aD, LiveIntentError as aE, withEffects as aF, isEffectResult as aG, defineLiveModule as aH, EFFECT_INTENT_ADDRESS as aI, onSessionCleared as aa, SessionEnvironmentError as ab, UNSUPPORTED_ENVIRONMENT_CODE as ac, AUTH_CHANGED_CODE as ad, AUTH_EXPIRED_CODE as ae, isAuthExpiredError as af, getFreshAuthToken as ag, ServerSessionManager as ah, createSessionWithSignature as ai, refreshSession as aj, revokeSession as ak, signSessionCreateMessage as al, genAuthNonce as am, genSolanaMessage as an, createSolanaSignInRequest as ao, createSolanaSignInMessageText as ap, genSolanaSignInRequest as aq, genSolanaSignInMessage as ar, browserSignInDomain as as, SOLANA_SIGN_IN_STATEMENT as at, genSiweMessage as au, normalizeEvmAddress as av, toLowerEvmAddress as aw, functions as ax, invoke as ay, FunctionInvokeError as az, bufferExports as b, getConfiguredAppId as c, get as d, getMany as e, docId as f, getConfig as g, setMany as h, init as i, setFile as j, getFiles as k, search as l, markWriteNotApplied as m, runQueryMany as n, runExpression as o, runExpressionMany as p, queryAggregate as q, runQuery as r, set as s, signMessage as t, signTransaction as u, signAndSubmitTransaction as v, count as w, aggregate as x, reconcileSetResult as y, waitForSetResult as z };
|
|
11314
|
-
//# sourceMappingURL=index-
|
|
11367
|
+
//# sourceMappingURL=index-CkgEqMkJ.mjs.map
|