@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.
Files changed (57) hide show
  1. package/dist/hooks/useQuery.d.ts +58 -0
  2. package/dist/{index-BL-0ZKBl.js → index-BBLnBZjY.js} +234 -46
  3. package/dist/index-BBLnBZjY.js.map +1 -0
  4. package/dist/{index-CqoP9udN.js → index-BMrN-6oK.js} +1202 -450
  5. package/dist/index-BMrN-6oK.js.map +1 -0
  6. package/dist/{index-B2ytfYTB.esm.js → index-D5Ut2JU7.esm.js} +1202 -450
  7. package/dist/index-D5Ut2JU7.esm.js.map +1 -0
  8. package/dist/{index-BFOmV3Pb.esm.js → index-DkWfblRJ.esm.js} +1202 -450
  9. package/dist/index-DkWfblRJ.esm.js.map +1 -0
  10. package/dist/{index-BgAygrhE.js → index-FYyc3l_y.js} +1202 -450
  11. package/dist/index-FYyc3l_y.js.map +1 -0
  12. package/dist/{index-D986s6w7.esm.js → index-n4fG6EZJ.esm.js} +229 -46
  13. package/dist/index-n4fG6EZJ.esm.js.map +1 -0
  14. package/dist/{index.browser-D2xm-q6N.esm.js → index.browser-CCWEiCH-.esm.js} +766 -773
  15. package/dist/index.browser-CCWEiCH-.esm.js.map +1 -0
  16. package/dist/{index.browser-Bd0GwRur.esm.js → index.browser-C_TToxuO.esm.js} +230 -242
  17. package/dist/index.browser-C_TToxuO.esm.js.map +1 -0
  18. package/dist/{index.browser-D8u31irV.js → index.browser-D5evrolK.js} +766 -773
  19. package/dist/index.browser-D5evrolK.js.map +1 -0
  20. package/dist/{index.browser-BeM1bzpe.js → index.browser-DcHalmEf.js} +230 -242
  21. package/dist/index.browser-DcHalmEf.js.map +1 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.esm.js +1 -1
  24. package/dist/index.js +6 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/{index.native-B-cLm_BI.esm.js → index.native-D5q2RUeV.esm.js} +162 -39
  27. package/dist/index.native-D5q2RUeV.esm.js.map +1 -0
  28. package/dist/{index.native-NgHStPq0.js → index.native-D82ofFXB.js} +166 -39
  29. package/dist/index.native-D82ofFXB.js.map +1 -0
  30. package/dist/index.native.esm.js +1 -1
  31. package/dist/index.native.js +5 -1
  32. package/dist/index.native.js.map +1 -1
  33. package/dist/{phantom-wallet-provider-Cy5T9EVd.esm.js → phantom-wallet-provider-C8DNu92D.esm.js} +3 -3
  34. package/dist/{phantom-wallet-provider-Cy5T9EVd.esm.js.map → phantom-wallet-provider-C8DNu92D.esm.js.map} +1 -1
  35. package/dist/{phantom-wallet-provider-Dy48LSdU.js → phantom-wallet-provider-CoL7g8Sr.js} +3 -3
  36. package/dist/{phantom-wallet-provider-Dy48LSdU.js.map → phantom-wallet-provider-CoL7g8Sr.js.map} +1 -1
  37. package/dist/{privy-wallet-provider-CiKtBJ5M.js → privy-wallet-provider-CV1mU4KR.js} +4 -4
  38. package/dist/{privy-wallet-provider-CiKtBJ5M.js.map → privy-wallet-provider-CV1mU4KR.js.map} +1 -1
  39. package/dist/{privy-wallet-provider-BDsrUpk4.esm.js → privy-wallet-provider-De3mfJYo.esm.js} +4 -4
  40. package/dist/{privy-wallet-provider-BDsrUpk4.esm.js.map → privy-wallet-provider-De3mfJYo.esm.js.map} +1 -1
  41. package/dist/{solana-mobile-wallet-provider-CSk_FIww.esm.js → solana-mobile-wallet-provider-CLCvi-08.esm.js} +5 -5
  42. package/dist/{solana-mobile-wallet-provider-CSk_FIww.esm.js.map → solana-mobile-wallet-provider-CLCvi-08.esm.js.map} +1 -1
  43. package/dist/{solana-mobile-wallet-provider-k_YdrTJZ.js → solana-mobile-wallet-provider-D9dPbk__.js} +5 -5
  44. package/dist/{solana-mobile-wallet-provider-k_YdrTJZ.js.map → solana-mobile-wallet-provider-D9dPbk__.js.map} +1 -1
  45. package/package.json +2 -2
  46. package/dist/index-B2ytfYTB.esm.js.map +0 -1
  47. package/dist/index-BFOmV3Pb.esm.js.map +0 -1
  48. package/dist/index-BL-0ZKBl.js.map +0 -1
  49. package/dist/index-BgAygrhE.js.map +0 -1
  50. package/dist/index-CqoP9udN.js.map +0 -1
  51. package/dist/index-D986s6w7.esm.js.map +0 -1
  52. package/dist/index.browser-Bd0GwRur.esm.js.map +0 -1
  53. package/dist/index.browser-BeM1bzpe.js.map +0 -1
  54. package/dist/index.browser-D2xm-q6N.esm.js.map +0 -1
  55. package/dist/index.browser-D8u31irV.js.map +0 -1
  56. package/dist/index.native-B-cLm_BI.esm.js.map +0 -1
  57. 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 body.
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/<myAddress>` (the policy declares
13903
- // `rooms/$roomId/view/$addr` ephemeral with `read: $addr == @user.address`).
13904
- // That path has an EVEN segment count, so it is an ordinary document path —
13905
- // plain `subscribe('<roomPath>/view/<myAddress>', { onData })` already works.
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: roomPath, intent }),
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/<myAddress>', { onData, onError })
14147
+ * subscribe('<roomPath>/view/<myUserId>', { onData, onError })
14023
14148
  *
14024
- * The address defaults to the logged-in user's address (from the session
14025
- * token's claims); pass `opts.address` to override. Returns the unsubscribe
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 address = opts.address;
14040
- if (!address) {
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 — the wallet address lives in
14044
- // the `custom:walletAddress` claim, NOT a flat `address` field. Reading only
14045
- // `.address` meant auto-resolution NEVER worked, forcing every caller (browser
14046
- // AND server) to pass opts.address — the client having to hand the backend an
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 (!address || typeof address !== 'string') {
14052
- throw new LiveIntentError('Could not resolve a player address for subscribeView; pass opts.address or log in first');
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/${address}`;
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 base58 = basex(ALPHABET);
17833
+ var bs582 = basex(ALPHABET);
17711
17834
 
17712
17835
  var index = /*#__PURE__*/Object.freeze({
17713
17836
  __proto__: null,
17714
- default: base58
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 = base58.encode(raw);
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 = base58.decode(saved);
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, base58.encode(secret));
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-Dy48LSdU.js'); });
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-CiKtBJ5M.js'); });
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-k_YdrTJZ.js'); });
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 base58.encode(result.signature);
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.base58 = base58;
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-NgHStPq0.js.map
19811
+ //# sourceMappingURL=index.native-D82ofFXB.js.map