@bounded-sh/client 0.0.2 → 0.0.4
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/hooks/useQuery.d.ts +58 -0
- package/dist/{index-BL-0ZKBl.js → index-BBLnBZjY.js} +234 -46
- package/dist/index-BBLnBZjY.js.map +1 -0
- package/dist/{index-CqoP9udN.js → index-BMrN-6oK.js} +1202 -450
- package/dist/index-BMrN-6oK.js.map +1 -0
- package/dist/{index-B2ytfYTB.esm.js → index-D5Ut2JU7.esm.js} +1202 -450
- package/dist/index-D5Ut2JU7.esm.js.map +1 -0
- package/dist/{index-BFOmV3Pb.esm.js → index-DkWfblRJ.esm.js} +1202 -450
- package/dist/index-DkWfblRJ.esm.js.map +1 -0
- package/dist/{index-BgAygrhE.js → index-FYyc3l_y.js} +1202 -450
- package/dist/index-FYyc3l_y.js.map +1 -0
- package/dist/{index-D986s6w7.esm.js → index-n4fG6EZJ.esm.js} +229 -46
- package/dist/index-n4fG6EZJ.esm.js.map +1 -0
- package/dist/{index.browser-D2xm-q6N.esm.js → index.browser-CCWEiCH-.esm.js} +766 -773
- package/dist/index.browser-CCWEiCH-.esm.js.map +1 -0
- package/dist/{index.browser-Bd0GwRur.esm.js → index.browser-C_TToxuO.esm.js} +230 -242
- package/dist/index.browser-C_TToxuO.esm.js.map +1 -0
- package/dist/{index.browser-D8u31irV.js → index.browser-D5evrolK.js} +766 -773
- package/dist/index.browser-D5evrolK.js.map +1 -0
- package/dist/{index.browser-BeM1bzpe.js → index.browser-DcHalmEf.js} +230 -242
- package/dist/index.browser-DcHalmEf.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/{index.native-B-cLm_BI.esm.js → index.native-D5q2RUeV.esm.js} +162 -39
- package/dist/index.native-D5q2RUeV.esm.js.map +1 -0
- package/dist/{index.native-NgHStPq0.js → index.native-D82ofFXB.js} +166 -39
- package/dist/index.native-D82ofFXB.js.map +1 -0
- package/dist/index.native.esm.js +1 -1
- package/dist/index.native.js +5 -1
- package/dist/index.native.js.map +1 -1
- package/dist/{phantom-wallet-provider-Cy5T9EVd.esm.js → phantom-wallet-provider-C8DNu92D.esm.js} +3 -3
- package/dist/{phantom-wallet-provider-Cy5T9EVd.esm.js.map → phantom-wallet-provider-C8DNu92D.esm.js.map} +1 -1
- package/dist/{phantom-wallet-provider-Dy48LSdU.js → phantom-wallet-provider-CoL7g8Sr.js} +3 -3
- package/dist/{phantom-wallet-provider-Dy48LSdU.js.map → phantom-wallet-provider-CoL7g8Sr.js.map} +1 -1
- package/dist/{privy-wallet-provider-CiKtBJ5M.js → privy-wallet-provider-CV1mU4KR.js} +4 -4
- package/dist/{privy-wallet-provider-CiKtBJ5M.js.map → privy-wallet-provider-CV1mU4KR.js.map} +1 -1
- package/dist/{privy-wallet-provider-BDsrUpk4.esm.js → privy-wallet-provider-De3mfJYo.esm.js} +4 -4
- package/dist/{privy-wallet-provider-BDsrUpk4.esm.js.map → privy-wallet-provider-De3mfJYo.esm.js.map} +1 -1
- package/dist/{solana-mobile-wallet-provider-CSk_FIww.esm.js → solana-mobile-wallet-provider-CLCvi-08.esm.js} +5 -5
- package/dist/{solana-mobile-wallet-provider-CSk_FIww.esm.js.map → solana-mobile-wallet-provider-CLCvi-08.esm.js.map} +1 -1
- package/dist/{solana-mobile-wallet-provider-k_YdrTJZ.js → solana-mobile-wallet-provider-D9dPbk__.js} +5 -5
- package/dist/{solana-mobile-wallet-provider-k_YdrTJZ.js.map → solana-mobile-wallet-provider-D9dPbk__.js.map} +1 -1
- package/package.json +2 -2
- package/dist/index-B2ytfYTB.esm.js.map +0 -1
- package/dist/index-BFOmV3Pb.esm.js.map +0 -1
- package/dist/index-BL-0ZKBl.js.map +0 -1
- package/dist/index-BgAygrhE.js.map +0 -1
- package/dist/index-CqoP9udN.js.map +0 -1
- package/dist/index-D986s6w7.esm.js.map +0 -1
- package/dist/index.browser-Bd0GwRur.esm.js.map +0 -1
- package/dist/index.browser-BeM1bzpe.js.map +0 -1
- package/dist/index.browser-D2xm-q6N.esm.js.map +0 -1
- package/dist/index.browser-D8u31irV.js.map +0 -1
- package/dist/index.native-B-cLm_BI.esm.js.map +0 -1
- package/dist/index.native-NgHStPq0.js.map +0 -1
|
@@ -11303,6 +11303,13 @@ async function runExpressionMany(many) {
|
|
|
11303
11303
|
throw error;
|
|
11304
11304
|
}
|
|
11305
11305
|
}
|
|
11306
|
+
/**
|
|
11307
|
+
* Write a document at `path`. Sugar for a one-element {@link setMany}.
|
|
11308
|
+
*
|
|
11309
|
+
* **Delete:** pass `null` as the document to delete it — `set(path, null)` is
|
|
11310
|
+
* the delete (there is no separate `del`/`remove`). It is routed through the
|
|
11311
|
+
* collection's policy `delete` rule and broadcasts a delete to subscribers.
|
|
11312
|
+
*/
|
|
11306
11313
|
async function set(path, document, options) {
|
|
11307
11314
|
const result = await setMany([{ path, document }], options);
|
|
11308
11315
|
// Clear cache entries that might be affected by this update
|
|
@@ -12981,6 +12988,73 @@ function serverTimestamp() {
|
|
|
12981
12988
|
return { operation: 'time', value: 'now' };
|
|
12982
12989
|
}
|
|
12983
12990
|
|
|
12991
|
+
/**
|
|
12992
|
+
* Time units in Bounded — read this once and never get a 1000× timestamp bug.
|
|
12993
|
+
*
|
|
12994
|
+
* **Bounded's policy/proof layer is Unix SECONDS.** `@time.now` in a rule,
|
|
12995
|
+
* `rollingSum` `windowSeconds`, `scheduledAt`, and any timestamp *field your
|
|
12996
|
+
* policy compares against `@time.now`* are all **seconds**. (This is also what
|
|
12997
|
+
* the chain uses — Solana's on-chain clock is `unix_timestamp` in seconds — so a
|
|
12998
|
+
* single seconds unit works for both onchain and offchain rules.)
|
|
12999
|
+
*
|
|
13000
|
+
* **JavaScript is MILLISECONDS.** `Date.now()`, `new Date().getTime()`, and the
|
|
13001
|
+
* auto-stamped system fields `_createdAt` / `_updatedAt` are all **ms**.
|
|
13002
|
+
*
|
|
13003
|
+
* Comparing across the two (e.g. `@time.now - myField` where `myField` was set
|
|
13004
|
+
* from `Date.now()`) is 1000× off, so a freshness / TTL check silently treats
|
|
13005
|
+
* every row as ancient (or far-future) and drops it — which reads as "realtime
|
|
13006
|
+
* isn't delivering" when the data is actually fine.
|
|
13007
|
+
*
|
|
13008
|
+
* **The rules:**
|
|
13009
|
+
* - To **write** a timestamp a policy will read, prefer **`serverTimestamp()`**
|
|
13010
|
+
* (from this package) — the *server* stamps it in seconds, so it matches
|
|
13011
|
+
* `@time.now` AND can't be forged by the client (use it for TTLs, rate windows,
|
|
13012
|
+
* anti-cheat). Use `now()` only when you need the value in client code before
|
|
13013
|
+
* the write.
|
|
13014
|
+
* - To **compare** timestamps in client/render code, use `now()` (seconds), not
|
|
13015
|
+
* `Date.now()` (ms), and `toSeconds()` to convert the ms system fields
|
|
13016
|
+
* (`_createdAt`/`_updatedAt`) or any `Date.now()` value first.
|
|
13017
|
+
*/
|
|
13018
|
+
/**
|
|
13019
|
+
* Current time as a **Unix timestamp in seconds** — the unit Bounded policy rules
|
|
13020
|
+
* use (`@time.now`). Use this (not `Date.now()`) when you need a timestamp in
|
|
13021
|
+
* client code (e.g. a freshness check). For a value you *store* and a policy
|
|
13022
|
+
* reads, prefer the server-authoritative {@link serverTimestamp} instead.
|
|
13023
|
+
*
|
|
13024
|
+
* ```ts
|
|
13025
|
+
* // stale if >15s old — seconds vs seconds ✓
|
|
13026
|
+
* if (now() - doc.lastSeenSeconds > 15) renderStale();
|
|
13027
|
+
* ```
|
|
13028
|
+
*/
|
|
13029
|
+
function now() {
|
|
13030
|
+
return Math.floor(Date.now() / 1000);
|
|
13031
|
+
}
|
|
13032
|
+
/**
|
|
13033
|
+
* Convert a JavaScript millisecond timestamp to Bounded's **seconds**. Accepts a
|
|
13034
|
+
* `Date`, or an ms number such as `Date.now()` or a doc's `_createdAt` /
|
|
13035
|
+
* `_updatedAt` system field.
|
|
13036
|
+
*
|
|
13037
|
+
* ```ts
|
|
13038
|
+
* // doc is >15s old (compare the ms system field in seconds):
|
|
13039
|
+
* if (now() - toSeconds(doc._updatedAt) > 15) renderStale();
|
|
13040
|
+
* ```
|
|
13041
|
+
*/
|
|
13042
|
+
function toSeconds(msOrDate) {
|
|
13043
|
+
const ms = msOrDate instanceof Date ? msOrDate.getTime() : msOrDate;
|
|
13044
|
+
return Math.floor(ms / 1000);
|
|
13045
|
+
}
|
|
13046
|
+
/**
|
|
13047
|
+
* Convert a Bounded **seconds** timestamp back to JavaScript **milliseconds** —
|
|
13048
|
+
* e.g. to build a `Date` or do client-side date math/formatting.
|
|
13049
|
+
*
|
|
13050
|
+
* ```ts
|
|
13051
|
+
* new Date(toMillis(doc.createdAtSeconds)).toLocaleString();
|
|
13052
|
+
* ```
|
|
13053
|
+
*/
|
|
13054
|
+
function toMillis(seconds) {
|
|
13055
|
+
return seconds * 1000;
|
|
13056
|
+
}
|
|
13057
|
+
|
|
12984
13058
|
// ---------------------------------------------------------------------------
|
|
12985
13059
|
// realtime-store.ts — Client-side state manager for realtime apps.
|
|
12986
13060
|
//
|
|
@@ -13884,6 +13958,7 @@ const functions = { invoke };
|
|
|
13884
13958
|
// collection. This file is the consumer surface around that runtime:
|
|
13885
13959
|
//
|
|
13886
13960
|
// bounded.live.intent(roomPath, intent) -> POST {realtime}/live/intent
|
|
13961
|
+
// bounded.live.status(roomPath) -> GET {realtime}/live/status
|
|
13887
13962
|
//
|
|
13888
13963
|
// It mirrors `functions.invoke` exactly: it attaches the caller's session token
|
|
13889
13964
|
// AUTOMATICALLY (the same token the SDK uses for data reads/writes), and throws
|
|
@@ -13896,18 +13971,14 @@ const functions = { invoke };
|
|
|
13896
13971
|
// Addressing: clients address rooms BY PATH (the `path` field in the body). The
|
|
13897
13972
|
// worker derives the roomId from `body.path` and sets X-Room-Id internally;
|
|
13898
13973
|
// clients NEVER set X-Room-Id. The caller's address is taken server-side from
|
|
13899
|
-
// the Authorization header (auth.userAddress) — it is NOT sent in the
|
|
13974
|
+
// the Authorization header (auth.userId/userAddress) — it is NOT sent in the
|
|
13975
|
+
// body.
|
|
13900
13976
|
//
|
|
13901
13977
|
// Subscribing to your view: a per-player view doc lives at
|
|
13902
|
-
// `<roomPath>/view/<
|
|
13903
|
-
// `rooms/$roomId/view/$
|
|
13904
|
-
//
|
|
13905
|
-
//
|
|
13906
|
-
// `subscribeView()` below is thin sugar over that (path construction + address
|
|
13907
|
-
// defaulting); it adds zero new transport.
|
|
13908
|
-
//
|
|
13909
|
-
// Status polling (GET /live/status?path=<sessionCollection>/<roomId>) is out of
|
|
13910
|
-
// scope for this piece — see follow-up.
|
|
13978
|
+
// `<roomPath>/view/<myUserId>` (the policy declares
|
|
13979
|
+
// `rooms/$roomId/view/$userId` ephemeral with `read: $userId == @user.id`).
|
|
13980
|
+
// Wallet-address keyed view paths remain supported through opts.address for
|
|
13981
|
+
// older policies, but new live rooms should key views by @user.id.
|
|
13911
13982
|
// ---------------------------------------------------------------------------
|
|
13912
13983
|
class LiveIntentError extends Error {
|
|
13913
13984
|
constructor(message, statusCode, details) {
|
|
@@ -13988,7 +14059,7 @@ async function intent(roomPath, intent, opts = {}) {
|
|
|
13988
14059
|
res = await fetch(`${base}/live/intent`, {
|
|
13989
14060
|
method: 'POST',
|
|
13990
14061
|
headers,
|
|
13991
|
-
body: JSON.stringify({ path:
|
|
14062
|
+
body: JSON.stringify({ path: normalizedRoomPath, intent }),
|
|
13992
14063
|
signal: controller.signal,
|
|
13993
14064
|
});
|
|
13994
14065
|
}
|
|
@@ -14016,43 +14087,95 @@ async function intent(roomPath, intent, opts = {}) {
|
|
|
14016
14087
|
}
|
|
14017
14088
|
return (body !== null && body !== void 0 ? body : { ok: true });
|
|
14018
14089
|
}
|
|
14090
|
+
/**
|
|
14091
|
+
* Fetch the runtime status for a live room.
|
|
14092
|
+
*
|
|
14093
|
+
* const s = await bounded.live.status('rooms/abc');
|
|
14094
|
+
* console.log(s.running, s.stopReason, s.generation, s.etag);
|
|
14095
|
+
*
|
|
14096
|
+
* This is diagnostic/ops surface. It reports whether the room facet exists,
|
|
14097
|
+
* whether it is currently ticking, why it last stopped, which module etag is
|
|
14098
|
+
* loaded, and the current generation used after terminal restarts.
|
|
14099
|
+
*/
|
|
14100
|
+
async function status(roomPath, opts = {}) {
|
|
14101
|
+
var _a, _b, _c, _d, _e;
|
|
14102
|
+
if (!roomPath || typeof roomPath !== 'string') {
|
|
14103
|
+
throw new LiveIntentError('A room path is required');
|
|
14104
|
+
}
|
|
14105
|
+
const normalizedRoomPath = roomPath.replace(/\/$/, '');
|
|
14106
|
+
const config = await getConfig();
|
|
14107
|
+
const base = realtimeHttpBase(config.wsApiUrl);
|
|
14108
|
+
const headers = Object.assign({ 'X-App-Id': config.appId, 'X-Public-App-Id': config.appId }, ((_a = opts.headers) !== null && _a !== void 0 ? _a : {}));
|
|
14109
|
+
const controller = new AbortController();
|
|
14110
|
+
const timeoutMs = (_b = opts.timeoutMs) !== null && _b !== void 0 ? _b : 15000;
|
|
14111
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
14112
|
+
let res;
|
|
14113
|
+
try {
|
|
14114
|
+
res = await fetch(`${base}/live/status?path=${encodeURIComponent(normalizedRoomPath)}`, {
|
|
14115
|
+
method: 'GET',
|
|
14116
|
+
headers,
|
|
14117
|
+
signal: controller.signal,
|
|
14118
|
+
});
|
|
14119
|
+
}
|
|
14120
|
+
catch (err) {
|
|
14121
|
+
clearTimeout(timer);
|
|
14122
|
+
if ((err === null || err === void 0 ? void 0 : err.name) === 'AbortError') {
|
|
14123
|
+
throw new LiveIntentError(`Live status for "${normalizedRoomPath}" timed out after ${timeoutMs}ms`);
|
|
14124
|
+
}
|
|
14125
|
+
throw new LiveIntentError(`Failed to reach the realtime worker: ${(_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : String(err)}`);
|
|
14126
|
+
}
|
|
14127
|
+
clearTimeout(timer);
|
|
14128
|
+
let body = null;
|
|
14129
|
+
const text = await res.text();
|
|
14130
|
+
if (text) {
|
|
14131
|
+
try {
|
|
14132
|
+
body = JSON.parse(text);
|
|
14133
|
+
}
|
|
14134
|
+
catch (_f) {
|
|
14135
|
+
body = { raw: text };
|
|
14136
|
+
}
|
|
14137
|
+
}
|
|
14138
|
+
if (!res.ok) {
|
|
14139
|
+
const message = (_e = (_d = body === null || body === void 0 ? void 0 : body.error) !== null && _d !== void 0 ? _d : body === null || body === void 0 ? void 0 : body.message) !== null && _e !== void 0 ? _e : `Live status failed with HTTP ${res.status}`;
|
|
14140
|
+
throw new LiveIntentError(message, res.status, body);
|
|
14141
|
+
}
|
|
14142
|
+
return body;
|
|
14143
|
+
}
|
|
14019
14144
|
/**
|
|
14020
14145
|
* Subscribe to YOUR per-player view of a room. Thin sugar over:
|
|
14021
14146
|
*
|
|
14022
|
-
* subscribe('<roomPath>/view/<
|
|
14147
|
+
* subscribe('<roomPath>/view/<myUserId>', { onData, onError })
|
|
14023
14148
|
*
|
|
14024
|
-
* The
|
|
14025
|
-
*
|
|
14149
|
+
* The view id defaults to the logged-in user's @user.id (from the session token
|
|
14150
|
+
* claims); pass `opts.userId` to override. `opts.address` is kept as a legacy
|
|
14151
|
+
* alias for older wallet-address keyed policies. Returns the unsubscribe
|
|
14026
14152
|
* function (a Promise<() => Promise<void>>, same as `subscribe`).
|
|
14027
14153
|
*
|
|
14028
14154
|
* Note: this is a browser-first helper (the WS subscription manager is
|
|
14029
14155
|
* browser-oriented). Server consumers should use `live.intent`.
|
|
14030
14156
|
*/
|
|
14031
14157
|
async function subscribeView(roomPath, opts) {
|
|
14032
|
-
var _a;
|
|
14158
|
+
var _a, _b, _c;
|
|
14033
14159
|
if (!roomPath || typeof roomPath !== 'string') {
|
|
14034
14160
|
throw new LiveIntentError('A room path is required');
|
|
14035
14161
|
}
|
|
14036
14162
|
if (!opts || typeof opts.onData !== 'function') {
|
|
14037
14163
|
throw new LiveIntentError('subscribeView requires an onData callback');
|
|
14038
14164
|
}
|
|
14039
|
-
let
|
|
14040
|
-
if (!
|
|
14165
|
+
let viewUserId = (_a = opts.userId) !== null && _a !== void 0 ? _a : opts.address;
|
|
14166
|
+
if (!viewUserId) {
|
|
14041
14167
|
const config = await getConfig();
|
|
14042
14168
|
const info = await getUserInfo(config.isServer);
|
|
14043
|
-
// getUserInfo returns the RAW idToken payload
|
|
14044
|
-
//
|
|
14045
|
-
//
|
|
14046
|
-
|
|
14047
|
-
// identity it already authenticated. Resolve it from the actual claim so a
|
|
14048
|
-
// logged-in caller never needs to pass its own address.
|
|
14049
|
-
address = (_a = info === null || info === void 0 ? void 0 : info.address) !== null && _a !== void 0 ? _a : info === null || info === void 0 ? void 0 : info['custom:walletAddress'];
|
|
14169
|
+
// getUserInfo returns the RAW idToken payload. The universal live view key
|
|
14170
|
+
// is @user.id (`custom:userId`); wallet-address keyed views are still
|
|
14171
|
+
// resolved as a compatibility fallback for older policies.
|
|
14172
|
+
viewUserId = (_c = (_b = info === null || info === void 0 ? void 0 : info['custom:userId']) !== null && _b !== void 0 ? _b : info === null || info === void 0 ? void 0 : info['custom:walletAddress']) !== null && _c !== void 0 ? _c : info === null || info === void 0 ? void 0 : info.address;
|
|
14050
14173
|
}
|
|
14051
|
-
if (!
|
|
14052
|
-
throw new LiveIntentError('Could not resolve a player
|
|
14174
|
+
if (!viewUserId || typeof viewUserId !== 'string') {
|
|
14175
|
+
throw new LiveIntentError('Could not resolve a player view id for subscribeView; pass opts.userId or log in first');
|
|
14053
14176
|
}
|
|
14054
14177
|
const normalizedRoomPath = roomPath.replace(/\/$/, '');
|
|
14055
|
-
const viewPath = `${normalizedRoomPath}/view/${
|
|
14178
|
+
const viewPath = `${normalizedRoomPath}/view/${viewUserId}`;
|
|
14056
14179
|
// This is a LIVE/room subscription by construction (the caller hands us the
|
|
14057
14180
|
// room path), so we route its connection to the per-room DO where the live
|
|
14058
14181
|
// view fan-out runs. App code passes NO routing — the room path is the helper's
|
|
@@ -14063,7 +14186,7 @@ async function subscribeView(roomPath, opts) {
|
|
|
14063
14186
|
return subscribeV2(viewPath, { onData: opts.onData, onError: opts.onError }, normalizedRoomPath);
|
|
14064
14187
|
}
|
|
14065
14188
|
/** The `bounded.live` namespace surface. */
|
|
14066
|
-
const live = { intent, subscribeView };
|
|
14189
|
+
const live = { intent, status, subscribeView };
|
|
14067
14190
|
|
|
14068
14191
|
// ---------------------------------------------------------------------------
|
|
14069
14192
|
// live-effects.ts -- AUTHOR-facing types + helpers for writing a Bounded live
|
|
@@ -17707,11 +17830,11 @@ var srcExports = requireSrc();
|
|
|
17707
17830
|
var basex = /*@__PURE__*/getDefaultExportFromCjs$1(srcExports);
|
|
17708
17831
|
|
|
17709
17832
|
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
17710
|
-
var
|
|
17833
|
+
var bs582 = basex(ALPHABET);
|
|
17711
17834
|
|
|
17712
17835
|
var index = /*#__PURE__*/Object.freeze({
|
|
17713
17836
|
__proto__: null,
|
|
17714
|
-
default:
|
|
17837
|
+
default: bs582
|
|
17715
17838
|
});
|
|
17716
17839
|
|
|
17717
17840
|
// guest-keystore.ts — durable per-device keypair for anonymous ("guest") auth.
|
|
@@ -17784,7 +17907,7 @@ async function tryWebCrypto() {
|
|
|
17784
17907
|
await idbPut(db, IDB_KEY, pair); // CryptoKey is structured-cloneable; bytes never exposed
|
|
17785
17908
|
}
|
|
17786
17909
|
const raw = new Uint8Array(await s.exportKey('raw', pair.publicKey)); // public is exportable
|
|
17787
|
-
const address =
|
|
17910
|
+
const address = bs582.encode(raw);
|
|
17788
17911
|
return {
|
|
17789
17912
|
address,
|
|
17790
17913
|
nonExtractable: true,
|
|
@@ -17805,12 +17928,12 @@ function fallbackKey() {
|
|
|
17805
17928
|
let secret;
|
|
17806
17929
|
const saved = store.getItem(FALLBACK_STORE_KEY);
|
|
17807
17930
|
if (saved) {
|
|
17808
|
-
secret =
|
|
17931
|
+
secret = bs582.decode(saved);
|
|
17809
17932
|
}
|
|
17810
17933
|
else {
|
|
17811
17934
|
const kp = web3_js.Keypair.generate();
|
|
17812
17935
|
secret = kp.secretKey; // 64 bytes
|
|
17813
|
-
store.setItem(FALLBACK_STORE_KEY,
|
|
17936
|
+
store.setItem(FALLBACK_STORE_KEY, bs582.encode(secret));
|
|
17814
17937
|
}
|
|
17815
17938
|
const kp = web3_js.Keypair.fromSecretKey(secret);
|
|
17816
17939
|
const address = kp.publicKey.toBase58();
|
|
@@ -18593,17 +18716,17 @@ function clearIncompatibleSession() {
|
|
|
18593
18716
|
// Lazy loaders for web-only providers.
|
|
18594
18717
|
// Using dynamic import() ensures Metro (RN) never resolves these modules.
|
|
18595
18718
|
async function loadPhantomWalletProvider() {
|
|
18596
|
-
const mod = await Promise.resolve().then(function () { return require('./phantom-wallet-provider-
|
|
18719
|
+
const mod = await Promise.resolve().then(function () { return require('./phantom-wallet-provider-CoL7g8Sr.js'); });
|
|
18597
18720
|
return { PhantomWalletProvider: mod.PhantomWalletProvider };
|
|
18598
18721
|
}
|
|
18599
18722
|
// Web Privy provider (depends on react-dom + @privy-io/react-auth). Lazy so Metro
|
|
18600
18723
|
// never bundles it into the RN build — RN uses the @privy-io/expo provider instead.
|
|
18601
18724
|
async function loadPrivyWalletProvider() {
|
|
18602
|
-
const mod = await Promise.resolve().then(function () { return require('./privy-wallet-provider-
|
|
18725
|
+
const mod = await Promise.resolve().then(function () { return require('./privy-wallet-provider-CV1mU4KR.js'); });
|
|
18603
18726
|
return mod.PrivyWalletProvider;
|
|
18604
18727
|
}
|
|
18605
18728
|
async function loadSolanaMobileWalletProvider() {
|
|
18606
|
-
const mod = await Promise.resolve().then(function () { return require('./solana-mobile-wallet-provider-
|
|
18729
|
+
const mod = await Promise.resolve().then(function () { return require('./solana-mobile-wallet-provider-D9dPbk__.js'); });
|
|
18607
18730
|
return mod.SolanaMobileWalletProvider;
|
|
18608
18731
|
}
|
|
18609
18732
|
async function hotSwapToMWAProvider(config) {
|
|
@@ -19414,7 +19537,7 @@ class PrivyExpoProvider {
|
|
|
19414
19537
|
const wallet = await this.getWalletOrThrow();
|
|
19415
19538
|
const messageBytes = getPlatform().textEncode(message);
|
|
19416
19539
|
const result = await wallet.signMessage(messageBytes);
|
|
19417
|
-
return
|
|
19540
|
+
return bs582.encode(result.signature);
|
|
19418
19541
|
}
|
|
19419
19542
|
async signTransaction(transaction) {
|
|
19420
19543
|
await this.ensureReady();
|
|
@@ -19598,7 +19721,7 @@ exports.SURFNET_RPC_URL = SURFNET_RPC_URL$1;
|
|
|
19598
19721
|
exports.ServerSessionManager = ServerSessionManager;
|
|
19599
19722
|
exports.WebSessionManager = WebSessionManager;
|
|
19600
19723
|
exports.aggregate = aggregate;
|
|
19601
|
-
exports.
|
|
19724
|
+
exports.bs582 = bs582;
|
|
19602
19725
|
exports.bufferExports = bufferExports;
|
|
19603
19726
|
exports.buildSetDocumentsTransaction = buildSetDocumentsTransaction;
|
|
19604
19727
|
exports.clearCache = clearCache;
|
|
@@ -19646,6 +19769,7 @@ exports.loginWithPopup = loginWithPopup;
|
|
|
19646
19769
|
exports.loginWithPrivy = loginWithPrivy;
|
|
19647
19770
|
exports.loginWithRedirect = loginWithRedirect;
|
|
19648
19771
|
exports.logout = logout;
|
|
19772
|
+
exports.now = now;
|
|
19649
19773
|
exports.onAuthLoadingChanged = onAuthLoadingChanged;
|
|
19650
19774
|
exports.onAuthStateChanged = onAuthStateChanged;
|
|
19651
19775
|
exports.queryAggregate = queryAggregate;
|
|
@@ -19671,8 +19795,11 @@ exports.signInAnonymously = signInAnonymously;
|
|
|
19671
19795
|
exports.signMessage = signMessage;
|
|
19672
19796
|
exports.signSessionCreateMessage = signSessionCreateMessage;
|
|
19673
19797
|
exports.signTransaction = signTransaction;
|
|
19798
|
+
exports.status = status;
|
|
19674
19799
|
exports.subscribe = subscribe;
|
|
19675
19800
|
exports.subscribeView = subscribeView;
|
|
19801
|
+
exports.toMillis = toMillis;
|
|
19802
|
+
exports.toSeconds = toSeconds;
|
|
19676
19803
|
exports.useAuth = useAuth;
|
|
19677
19804
|
exports.verifyEmailOtp = verifyEmailOtp;
|
|
19678
19805
|
exports.withEffects = withEffects;
|
|
@@ -19681,4 +19808,4 @@ exports.wsGet = wsGet;
|
|
|
19681
19808
|
exports.wsGetMany = wsGetMany;
|
|
19682
19809
|
exports.wsQuery = wsQuery;
|
|
19683
19810
|
exports.wsSet = wsSet;
|
|
19684
|
-
//# sourceMappingURL=index.native-
|
|
19811
|
+
//# sourceMappingURL=index.native-D82ofFXB.js.map
|