@pooflabs/web 0.0.74 → 0.0.75

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 (54) hide show
  1. package/dist/{index-BVfqY0fJ.js → index-BHYrnHi6.js} +2 -2406
  2. package/dist/index-BHYrnHi6.js.map +1 -0
  3. package/dist/{index-QqlKSXH4.js → index-BcDe_euX.js} +2 -2406
  4. package/dist/index-BcDe_euX.js.map +1 -0
  5. package/dist/{index-ByH7PSr3.esm.js → index-BqDvUK9s.esm.js} +2 -2406
  6. package/dist/index-BqDvUK9s.esm.js.map +1 -0
  7. package/dist/{index-CVK4iKo4.js → index-CMeewi-G.js} +78 -33
  8. package/dist/index-CMeewi-G.js.map +1 -0
  9. package/dist/{index-tYJgJQDc.esm.js → index-Dho2J3X6.esm.js} +79 -32
  10. package/dist/index-Dho2J3X6.esm.js.map +1 -0
  11. package/dist/{index-ORXorrQK.esm.js → index-_vhjpl1l.esm.js} +2 -2406
  12. package/dist/index-_vhjpl1l.esm.js.map +1 -0
  13. package/dist/{index.browser-C2K1wE09.esm.js → index.browser-Br0p4bjw.esm.js} +2 -2
  14. package/dist/{index.browser-C2K1wE09.esm.js.map → index.browser-Br0p4bjw.esm.js.map} +1 -1
  15. package/dist/{index.browser-DTId19-8.esm.js → index.browser-Btm3sRKb.esm.js} +2 -2
  16. package/dist/{index.browser-DTId19-8.esm.js.map → index.browser-Btm3sRKb.esm.js.map} +1 -1
  17. package/dist/{index.browser-De6JT7NR.js → index.browser-BzHjnrpD.js} +2 -2
  18. package/dist/{index.browser-De6JT7NR.js.map → index.browser-BzHjnrpD.js.map} +1 -1
  19. package/dist/{index.browser-D63nJFKg.esm.js → index.browser-CGfjPfzM.esm.js} +2 -2
  20. package/dist/{index.browser-D63nJFKg.esm.js.map → index.browser-CGfjPfzM.esm.js.map} +1 -1
  21. package/dist/{index.browser-GM5fUBfQ.js → index.browser-Dapjfbl6.js} +2 -2
  22. package/dist/{index.browser-GM5fUBfQ.js.map → index.browser-Dapjfbl6.js.map} +1 -1
  23. package/dist/{index.browser-B8vmX-tI.js → index.browser-JX3F6oPV.js} +2 -2
  24. package/dist/{index.browser-B8vmX-tI.js.map → index.browser-JX3F6oPV.js.map} +1 -1
  25. package/dist/index.esm.js +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/{index.native-CzfZTw_J.esm.js → index.native-BB7er4-z.esm.js} +73 -15
  28. package/dist/index.native-BB7er4-z.esm.js.map +1 -0
  29. package/dist/{index.native-muw49g7i.js → index.native-DcKDTqvq.js} +74 -16
  30. package/dist/index.native-DcKDTqvq.js.map +1 -0
  31. package/dist/index.native.esm.js +1 -1
  32. package/dist/index.native.js +1 -1
  33. package/dist/{phantom-wallet-provider-Di3Z8vOA.esm.js → phantom-wallet-provider-DHok8ui3.esm.js} +6 -6
  34. package/dist/{phantom-wallet-provider-Di3Z8vOA.esm.js.map → phantom-wallet-provider-DHok8ui3.esm.js.map} +1 -1
  35. package/dist/{phantom-wallet-provider-CeNZvRZY.js → phantom-wallet-provider-DMxFAUC4.js} +6 -6
  36. package/dist/{phantom-wallet-provider-CeNZvRZY.js.map → phantom-wallet-provider-DMxFAUC4.js.map} +1 -1
  37. package/dist/platform.d.ts +13 -0
  38. package/dist/{privy-wallet-provider-lbg2fDVg.js → privy-wallet-provider-Bhvw0t1d.js} +4 -4
  39. package/dist/{privy-wallet-provider-lbg2fDVg.js.map → privy-wallet-provider-Bhvw0t1d.js.map} +1 -1
  40. package/dist/{privy-wallet-provider-Cfws3b3x.esm.js → privy-wallet-provider-CFuoQYuv.esm.js} +4 -4
  41. package/dist/{privy-wallet-provider-Cfws3b3x.esm.js.map → privy-wallet-provider-CFuoQYuv.esm.js.map} +1 -1
  42. package/dist/{solana-mobile-wallet-provider-BZMvp9Qy.esm.js → solana-mobile-wallet-provider-BpQghAgC.esm.js} +4 -4
  43. package/dist/{solana-mobile-wallet-provider-BZMvp9Qy.esm.js.map → solana-mobile-wallet-provider-BpQghAgC.esm.js.map} +1 -1
  44. package/dist/{solana-mobile-wallet-provider-DDqwl25J.js → solana-mobile-wallet-provider-D8b5y-By.js} +4 -4
  45. package/dist/{solana-mobile-wallet-provider-DDqwl25J.js.map → solana-mobile-wallet-provider-D8b5y-By.js.map} +1 -1
  46. package/package.json +2 -2
  47. package/dist/index-BVfqY0fJ.js.map +0 -1
  48. package/dist/index-ByH7PSr3.esm.js.map +0 -1
  49. package/dist/index-CVK4iKo4.js.map +0 -1
  50. package/dist/index-ORXorrQK.esm.js.map +0 -1
  51. package/dist/index-QqlKSXH4.js.map +0 -1
  52. package/dist/index-tYJgJQDc.esm.js.map +0 -1
  53. package/dist/index.native-CzfZTw_J.esm.js.map +0 -1
  54. package/dist/index.native-muw49g7i.js.map +0 -1
@@ -9330,7 +9330,7 @@ function convertRemainingAccounts(remainingAccounts) {
9330
9330
  // ─────────────────────────────────────────────────────────────
9331
9331
  // Updated Transaction Builder: It now accepts a PublicKey for the payer
9332
9332
  // ─────────────────────────────────────────────────────────────
9333
- async function buildSetDocumentsTransaction(connection, idl, anchorProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate) {
9333
+ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate, additionalLutAddresses) {
9334
9334
  const computeBudgetIx = ComputeBudgetProgram.setComputeUnitLimit({
9335
9335
  units: 1400000,
9336
9336
  });
@@ -9371,8 +9371,25 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9371
9371
  tx.feePayer = payerPublicKey;
9372
9372
  const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash("confirmed");
9373
9373
  tx.recentBlockhash = blockhash;
9374
- if (lutKey == null) {
9375
- const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9374
+ // Resolve LUTs: additionalLutAddresses (when present) is the authoritative set.
9375
+ // Falls back to lutKey alone for backwards compatibility.
9376
+ const lookupTables = [];
9377
+ const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9378
+ if (additionalLutAddresses && additionalLutAddresses.length > 0) {
9379
+ const results = await Promise.all(additionalLutAddresses.map(addr => connection.getAddressLookupTable(new PublicKey(addr)).catch(() => null)));
9380
+ for (const result of results) {
9381
+ if (result === null || result === void 0 ? void 0 : result.value) {
9382
+ lookupTables.push(result.value);
9383
+ }
9384
+ }
9385
+ }
9386
+ else if (lutKey != null) {
9387
+ const { value: table } = await connection.getAddressLookupTable(new PublicKey(lutKey));
9388
+ if (!table)
9389
+ throw new Error('LUT not found after creation/extend');
9390
+ lookupTables.push(table);
9391
+ }
9392
+ if (lookupTables.length === 0) {
9376
9393
  const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, []);
9377
9394
  const computeBudgetIxOptimized = ComputeBudgetProgram.setComputeUnitLimit({
9378
9395
  units: computeUnits ? computeUnits * 1.2 : 1400000,
@@ -9380,11 +9397,7 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9380
9397
  tx.instructions[0] = computeBudgetIxOptimized;
9381
9398
  return { tx, blockhash, lastValidBlockHeight };
9382
9399
  }
9383
- const { value: table } = await connection.getAddressLookupTable(new PublicKey(lutKey));
9384
- if (!table)
9385
- throw new Error('LUT not found after creation/extend');
9386
- const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9387
- const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, [table]);
9400
+ const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, lookupTables);
9388
9401
  const computeBudgetIxOptimized = ComputeBudgetProgram.setComputeUnitLimit({
9389
9402
  units: computeUnits ? computeUnits * 1.2 : 1400000,
9390
9403
  }); // 20% buffer
@@ -9393,7 +9406,7 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9393
9406
  payerKey: payerPublicKey,
9394
9407
  recentBlockhash: blockhash,
9395
9408
  instructions: tx.instructions,
9396
- }).compileToV0Message([table]);
9409
+ }).compileToV0Message(lookupTables);
9397
9410
  const vTx = new anchor.web3.VersionedTransaction(msgV0);
9398
9411
  return { tx: vTx, blockhash, lastValidBlockHeight };
9399
9412
  }
@@ -10277,6 +10290,7 @@ async function setMany(many, options) {
10277
10290
  appId: config.appId,
10278
10291
  txArgs: [solTransactionData],
10279
10292
  lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,
10293
+ additionalLutAddresses: tx.additionalLutAddresses,
10280
10294
  network: tx.network,
10281
10295
  preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix) => {
10282
10296
  var _a;
@@ -11435,6 +11449,50 @@ function setPlatform(adapter) {
11435
11449
  function getPlatform() {
11436
11450
  return _platform;
11437
11451
  }
11452
+ // ---------------------------------------------------------------------------
11453
+ // Mobile / Android detection helpers
11454
+ // ---------------------------------------------------------------------------
11455
+ /**
11456
+ * Detect mobile device even when Chrome "Request Desktop Site" is active.
11457
+ *
11458
+ * Desktop mode on Android strips "Android" and "Mobile" from the UA, leaving
11459
+ * something like "Linux x86_64 …". The fallback detects this by looking for
11460
+ * touch capability + small viewport + a UA that doesn't belong to a known
11461
+ * desktop OS (ChromeOS, Windows, macOS).
11462
+ */
11463
+ function detectMobile() {
11464
+ const ua = _platform.getUserAgent();
11465
+ if (/Android|iPhone|iPad|iPod/i.test(ua))
11466
+ return true;
11467
+ if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
11468
+ const hasTouch = navigator.maxTouchPoints > 0;
11469
+ // Macs don't have touch screens, so "Macintosh" + touch = iOS desktop mode
11470
+ // (also catches iPadOS 13+ which always reports as Macintosh)
11471
+ if (/Macintosh/i.test(ua) && hasTouch)
11472
+ return true;
11473
+ // Android desktop mode: Linux UA + touch + small viewport, excluding
11474
+ // known desktop OSes (ChromeOS, Windows, macOS)
11475
+ const isSmallViewport = window.innerWidth <= 1024;
11476
+ const isDesktopOS = /CrOS|Windows|Macintosh/i.test(ua);
11477
+ if (hasTouch && isSmallViewport && !isDesktopOS)
11478
+ return true;
11479
+ }
11480
+ return false;
11481
+ }
11482
+ /**
11483
+ * Detect Android, including desktop-mode Chrome and Seeker/Saga in-app browsers.
11484
+ */
11485
+ function detectAndroid() {
11486
+ const ua = _platform.getUserAgent();
11487
+ if (/Android/i.test(ua))
11488
+ return true;
11489
+ if (/SolanaWallet|SeedVault/i.test(ua))
11490
+ return true;
11491
+ // Desktop-mode fallback: detected as mobile + Linux UA + not another OS
11492
+ if (detectMobile() && /Linux/i.test(ua) && !/CrOS|Macintosh|iPhone|iPad/i.test(ua))
11493
+ return true;
11494
+ return false;
11495
+ }
11438
11496
 
11439
11497
  // Default test wallet address (Solana devnet address)
11440
11498
  const DEFAULT_TEST_ADDRESS = 'HKbZbRR7jWWR5VRN8KFjvTCHEzJQgameYxKQxh2gPoof';
@@ -15128,7 +15186,7 @@ async function loadDependencies() {
15128
15186
  const [reactModule, reactDomModule, phantomModule] = await Promise.all([
15129
15187
  import('react'),
15130
15188
  import('react-dom/client'),
15131
- import('./index-ByH7PSr3.esm.js')
15189
+ import('./index-BqDvUK9s.esm.js')
15132
15190
  ]);
15133
15191
  // Extract default export from ESM module namespace
15134
15192
  // Dynamic import() returns { default: Module, ...exports }, not the module directly
@@ -15266,7 +15324,7 @@ class PhantomWalletProvider {
15266
15324
  const [hoveredBtn, setHoveredBtn] = React$1.useState(null);
15267
15325
  // Discover all available wallets via Wallet Standard + EIP-6963
15268
15326
  const { wallets: discoveredWallets } = useDiscoveredWallets();
15269
- const isMobile = /Android|iPhone|iPad|iPod/i.test(getPlatform().getUserAgent());
15327
+ const isMobile = detectMobile();
15270
15328
  const hasPhantomInjected = discoveredWallets.some((w) => w.id === 'phantom');
15271
15329
  const showDeeplink = isMobile && sdkProviders.includes('deeplink') && !hasPhantomInjected;
15272
15330
  // Track previous modal state to detect closes
@@ -15658,7 +15716,7 @@ class PhantomWalletProvider {
15658
15716
  }), 'Open Phantom app'));
15659
15717
  }
15660
15718
  // Mobile Wallet Adapter button — shown on Android when MWA callback is available
15661
- const isAndroid = /Android/i.test(getPlatform().getUserAgent());
15719
+ const isAndroid = detectAndroid();
15662
15720
  if (isAndroid && that.onSwitchToMWA) {
15663
15721
  walletButtons.push(React$1.createElement('button', {
15664
15722
  key: 'mobile-wallet',
@@ -16047,7 +16105,7 @@ class PhantomWalletProvider {
16047
16105
  documents: solTransactionData.txArgs[0].setDocumentData,
16048
16106
  delete_paths: solTransactionData.txArgs[0].deletePaths,
16049
16107
  txData: solTransactionData.txArgs[0].txData
16050
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
16108
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
16051
16109
  tx = result.tx;
16052
16110
  }
16053
16111
  if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
@@ -19998,7 +20056,7 @@ class PrivyWalletProvider {
19998
20056
  lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;
19999
20057
  }
20000
20058
  else {
20001
- const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, new PublicKey(wallet.address), { app_id, documents: solTransactionData.txArgs[0].setDocumentData, delete_paths: solTransactionData.txArgs[0].deletePaths, txData: solTransactionData.txArgs[0].txData }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
20059
+ const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, new PublicKey(wallet.address), { app_id, documents: solTransactionData.txArgs[0].setDocumentData, delete_paths: solTransactionData.txArgs[0].deletePaths, txData: solTransactionData.txArgs[0].txData }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
20002
20060
  tx = result.tx;
20003
20061
  blockhash = result.blockhash;
20004
20062
  lastValidBlockHeight = result.lastValidBlockHeight;
@@ -20468,20 +20526,9 @@ var privyWalletProvider = /*#__PURE__*/Object.freeze({
20468
20526
  * or inside a Seeker/Saga in-app browser context.
20469
20527
  */
20470
20528
  function isMobileWalletAvailable() {
20471
- // Use OR — bail early if either window or navigator is missing.
20472
- // This preserves the original guard's conservative behavior on
20473
- // Seeker/Saga in-app browsers where both are always present.
20474
- // RN environments also hit this (neither is defined).
20475
20529
  if (typeof window === 'undefined' || typeof navigator === 'undefined')
20476
20530
  return false;
20477
- const ua = getPlatform().getUserAgent();
20478
- if (!ua)
20479
- return false;
20480
- // Android browser — MWA uses Android intents
20481
- const isAndroid = /Android/i.test(ua);
20482
- // In-app browser inside a wallet app on Seeker/Saga
20483
- const isWalletInAppBrowser = /SolanaWallet/i.test(ua) || /SeedVault/i.test(ua);
20484
- return isAndroid || isWalletInAppBrowser;
20531
+ return detectAndroid();
20485
20532
  }
20486
20533
  const ED25519_SIGNATURE_LENGTH = 64;
20487
20534
  // Dynamically imported MWA protocol module
@@ -20496,7 +20543,7 @@ async function loadMwaProtocol() {
20496
20543
  return mwaProtocolLoadPromise;
20497
20544
  mwaProtocolLoadPromise = (async () => {
20498
20545
  try {
20499
- mwaProtocolModule = await import('./index.browser-DTId19-8.esm.js');
20546
+ mwaProtocolModule = await import('./index.browser-Btm3sRKb.esm.js');
20500
20547
  }
20501
20548
  catch (e) {
20502
20549
  console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
@@ -20518,7 +20565,7 @@ async function registerMobileWalletAdapter(config) {
20518
20565
  if (typeof window === 'undefined')
20519
20566
  return;
20520
20567
  try {
20521
- const walletStandardMobile = await import('./index.browser-C2K1wE09.esm.js');
20568
+ const walletStandardMobile = await import('./index.browser-Br0p4bjw.esm.js');
20522
20569
  const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);
20523
20570
  if (!registerMwa) {
20524
20571
  console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');
@@ -20973,7 +21020,7 @@ class SolanaMobileWalletProvider {
20973
21020
  documents: solTransactionData.txArgs[0].setDocumentData,
20974
21021
  delete_paths: solTransactionData.txArgs[0].deletePaths,
20975
21022
  txData: solTransactionData.txArgs[0].txData
20976
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
21023
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
20977
21024
  tx = result.tx;
20978
21025
  }
20979
21026
  if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
@@ -21230,7 +21277,7 @@ class PrivyExpoProvider {
21230
21277
  documents: solTransactionData.txArgs[0].setDocumentData,
21231
21278
  delete_paths: solTransactionData.txArgs[0].deletePaths,
21232
21279
  txData: solTransactionData.txArgs[0].txData,
21233
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
21280
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
21234
21281
  // Set blockhash
21235
21282
  const isLegacyTx = 'recentBlockhash' in tx &&
21236
21283
  !('message' in tx && 'staticAccountKeys' in tx.message);
@@ -21426,5 +21473,5 @@ class PrivyExpoProvider {
21426
21473
  }
21427
21474
  }
21428
21475
 
21429
- export { genSolanaMessage as $, count as A, aggregate as B, subscribe as C, useAuth as D, getIdToken as E, setPlatform as F, getPlatform as G, PrivyWalletProvider as H, DEFAULT_TEST_ADDRESS as I, isMobileWalletAvailable as J, registerMobileWalletAdapter as K, PrivyExpoProvider as L, MockAuthProvider as M, InsufficientBalanceError as N, OffchainAuthProvider as O, PhantomWalletProvider as P, ServerSessionManager as Q, ReactNativeSessionManager as R, SolanaMobileWalletProvider as S, buildSetDocumentsTransaction as T, clearCache as U, closeAllSubscriptions as V, WebSessionManager as W, convertRemainingAccounts as X, createSessionWithPrivy as Y, createSessionWithSignature as Z, genAuthNonce as _, bs58 as a, getCachedData as a0, reconnectWithNewAuth as a1, refreshSession as a2, signSessionCreateMessage as a3, bufferExports as b, commonjsRequire as c, getCurrentUser as d, onAuthLoadingChanged as e, getAuthLoading as f, getDefaultExportFromCjs$1 as g, logout as h, init as i, getConfig as j, getAuthProvider as k, login as l, get as m, setMany as n, onAuthStateChanged as o, setFile as p, getFiles as q, require$$0 as r, set as s, runQuery as t, runQueryMany as u, runExpression as v, runExpressionMany as w, signMessage as x, signTransaction as y, signAndSubmitTransaction as z };
21430
- //# sourceMappingURL=index-tYJgJQDc.esm.js.map
21476
+ export { reconnectWithNewAuth as $, subscribe as A, useAuth as B, getIdToken as C, setPlatform as D, getPlatform as E, PrivyWalletProvider as F, DEFAULT_TEST_ADDRESS as G, isMobileWalletAvailable as H, registerMobileWalletAdapter as I, PrivyExpoProvider as J, InsufficientBalanceError as K, ServerSessionManager as L, MockAuthProvider as M, buildSetDocumentsTransaction as N, OffchainAuthProvider as O, PhantomWalletProvider as P, clearCache as Q, ReactNativeSessionManager as R, SolanaMobileWalletProvider as S, closeAllSubscriptions as T, convertRemainingAccounts as U, createSessionWithPrivy as V, WebSessionManager as W, createSessionWithSignature as X, genAuthNonce as Y, genSolanaMessage as Z, getCachedData as _, bs58 as a, refreshSession as a0, signSessionCreateMessage as a1, bufferExports as b, getCurrentUser as c, onAuthLoadingChanged as d, getAuthLoading as e, logout as f, getDefaultExportFromCjs$1 as g, getConfig as h, init as i, getAuthProvider as j, get as k, login as l, setMany as m, setFile as n, onAuthStateChanged as o, getFiles as p, runQueryMany as q, runQuery as r, set as s, runExpression as t, runExpressionMany as u, signMessage as v, signTransaction as w, signAndSubmitTransaction as x, count as y, aggregate as z };
21477
+ //# sourceMappingURL=index-Dho2J3X6.esm.js.map