@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
@@ -9351,7 +9351,7 @@ function convertRemainingAccounts(remainingAccounts) {
9351
9351
  // ─────────────────────────────────────────────────────────────
9352
9352
  // Updated Transaction Builder: It now accepts a PublicKey for the payer
9353
9353
  // ─────────────────────────────────────────────────────────────
9354
- async function buildSetDocumentsTransaction(connection, idl, anchorProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate) {
9354
+ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate, additionalLutAddresses) {
9355
9355
  const computeBudgetIx = web3_js.ComputeBudgetProgram.setComputeUnitLimit({
9356
9356
  units: 1400000,
9357
9357
  });
@@ -9392,8 +9392,25 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9392
9392
  tx.feePayer = payerPublicKey;
9393
9393
  const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash("confirmed");
9394
9394
  tx.recentBlockhash = blockhash;
9395
- if (lutKey == null) {
9396
- const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9395
+ // Resolve LUTs: additionalLutAddresses (when present) is the authoritative set.
9396
+ // Falls back to lutKey alone for backwards compatibility.
9397
+ const lookupTables = [];
9398
+ const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9399
+ if (additionalLutAddresses && additionalLutAddresses.length > 0) {
9400
+ const results = await Promise.all(additionalLutAddresses.map(addr => connection.getAddressLookupTable(new web3_js.PublicKey(addr)).catch(() => null)));
9401
+ for (const result of results) {
9402
+ if (result === null || result === void 0 ? void 0 : result.value) {
9403
+ lookupTables.push(result.value);
9404
+ }
9405
+ }
9406
+ }
9407
+ else if (lutKey != null) {
9408
+ const { value: table } = await connection.getAddressLookupTable(new web3_js.PublicKey(lutKey));
9409
+ if (!table)
9410
+ throw new Error('LUT not found after creation/extend');
9411
+ lookupTables.push(table);
9412
+ }
9413
+ if (lookupTables.length === 0) {
9397
9414
  const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, []);
9398
9415
  const computeBudgetIxOptimized = web3_js.ComputeBudgetProgram.setComputeUnitLimit({
9399
9416
  units: computeUnits ? computeUnits * 1.2 : 1400000,
@@ -9401,11 +9418,7 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9401
9418
  tx.instructions[0] = computeBudgetIxOptimized;
9402
9419
  return { tx, blockhash, lastValidBlockHeight };
9403
9420
  }
9404
- const { value: table } = await connection.getAddressLookupTable(new web3_js.PublicKey(lutKey));
9405
- if (!table)
9406
- throw new Error('LUT not found after creation/extend');
9407
- const isSurfnet = anchorProvider.connection.rpcEndpoint == "https://surfpool.fly.dev";
9408
- const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, [table]);
9421
+ const computeUnits = isSurfnet ? 1400000 : await getSimulationComputeUnits(connection, tx.instructions, payerPublicKey, lookupTables);
9409
9422
  const computeBudgetIxOptimized = web3_js.ComputeBudgetProgram.setComputeUnitLimit({
9410
9423
  units: computeUnits ? computeUnits * 1.2 : 1400000,
9411
9424
  }); // 20% buffer
@@ -9414,7 +9427,7 @@ async function buildSetDocumentsTransaction(connection, idl, anchorProvider, pay
9414
9427
  payerKey: payerPublicKey,
9415
9428
  recentBlockhash: blockhash,
9416
9429
  instructions: tx.instructions,
9417
- }).compileToV0Message([table]);
9430
+ }).compileToV0Message(lookupTables);
9418
9431
  const vTx = new anchor__namespace.web3.VersionedTransaction(msgV0);
9419
9432
  return { tx: vTx, blockhash, lastValidBlockHeight };
9420
9433
  }
@@ -10298,6 +10311,7 @@ async function setMany(many, options) {
10298
10311
  appId: config.appId,
10299
10312
  txArgs: [solTransactionData],
10300
10313
  lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,
10314
+ additionalLutAddresses: tx.additionalLutAddresses,
10301
10315
  network: tx.network,
10302
10316
  preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix) => {
10303
10317
  var _a;
@@ -11456,6 +11470,50 @@ function setPlatform(adapter) {
11456
11470
  function getPlatform() {
11457
11471
  return _platform;
11458
11472
  }
11473
+ // ---------------------------------------------------------------------------
11474
+ // Mobile / Android detection helpers
11475
+ // ---------------------------------------------------------------------------
11476
+ /**
11477
+ * Detect mobile device even when Chrome "Request Desktop Site" is active.
11478
+ *
11479
+ * Desktop mode on Android strips "Android" and "Mobile" from the UA, leaving
11480
+ * something like "Linux x86_64 …". The fallback detects this by looking for
11481
+ * touch capability + small viewport + a UA that doesn't belong to a known
11482
+ * desktop OS (ChromeOS, Windows, macOS).
11483
+ */
11484
+ function detectMobile() {
11485
+ const ua = _platform.getUserAgent();
11486
+ if (/Android|iPhone|iPad|iPod/i.test(ua))
11487
+ return true;
11488
+ if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
11489
+ const hasTouch = navigator.maxTouchPoints > 0;
11490
+ // Macs don't have touch screens, so "Macintosh" + touch = iOS desktop mode
11491
+ // (also catches iPadOS 13+ which always reports as Macintosh)
11492
+ if (/Macintosh/i.test(ua) && hasTouch)
11493
+ return true;
11494
+ // Android desktop mode: Linux UA + touch + small viewport, excluding
11495
+ // known desktop OSes (ChromeOS, Windows, macOS)
11496
+ const isSmallViewport = window.innerWidth <= 1024;
11497
+ const isDesktopOS = /CrOS|Windows|Macintosh/i.test(ua);
11498
+ if (hasTouch && isSmallViewport && !isDesktopOS)
11499
+ return true;
11500
+ }
11501
+ return false;
11502
+ }
11503
+ /**
11504
+ * Detect Android, including desktop-mode Chrome and Seeker/Saga in-app browsers.
11505
+ */
11506
+ function detectAndroid() {
11507
+ const ua = _platform.getUserAgent();
11508
+ if (/Android/i.test(ua))
11509
+ return true;
11510
+ if (/SolanaWallet|SeedVault/i.test(ua))
11511
+ return true;
11512
+ // Desktop-mode fallback: detected as mobile + Linux UA + not another OS
11513
+ if (detectMobile() && /Linux/i.test(ua) && !/CrOS|Macintosh|iPhone|iPad/i.test(ua))
11514
+ return true;
11515
+ return false;
11516
+ }
11459
11517
 
11460
11518
  // Default test wallet address (Solana devnet address)
11461
11519
  const DEFAULT_TEST_ADDRESS = 'HKbZbRR7jWWR5VRN8KFjvTCHEzJQgameYxKQxh2gPoof';
@@ -15149,7 +15207,7 @@ async function loadDependencies() {
15149
15207
  const [reactModule, reactDomModule, phantomModule] = await Promise.all([
15150
15208
  import('react'),
15151
15209
  import('react-dom/client'),
15152
- Promise.resolve().then(function () { return require('./index-BVfqY0fJ.js'); })
15210
+ Promise.resolve().then(function () { return require('./index-BHYrnHi6.js'); })
15153
15211
  ]);
15154
15212
  // Extract default export from ESM module namespace
15155
15213
  // Dynamic import() returns { default: Module, ...exports }, not the module directly
@@ -15287,7 +15345,7 @@ class PhantomWalletProvider {
15287
15345
  const [hoveredBtn, setHoveredBtn] = React$1.useState(null);
15288
15346
  // Discover all available wallets via Wallet Standard + EIP-6963
15289
15347
  const { wallets: discoveredWallets } = useDiscoveredWallets();
15290
- const isMobile = /Android|iPhone|iPad|iPod/i.test(getPlatform().getUserAgent());
15348
+ const isMobile = detectMobile();
15291
15349
  const hasPhantomInjected = discoveredWallets.some((w) => w.id === 'phantom');
15292
15350
  const showDeeplink = isMobile && sdkProviders.includes('deeplink') && !hasPhantomInjected;
15293
15351
  // Track previous modal state to detect closes
@@ -15679,7 +15737,7 @@ class PhantomWalletProvider {
15679
15737
  }), 'Open Phantom app'));
15680
15738
  }
15681
15739
  // Mobile Wallet Adapter button — shown on Android when MWA callback is available
15682
- const isAndroid = /Android/i.test(getPlatform().getUserAgent());
15740
+ const isAndroid = detectAndroid();
15683
15741
  if (isAndroid && that.onSwitchToMWA) {
15684
15742
  walletButtons.push(React$1.createElement('button', {
15685
15743
  key: 'mobile-wallet',
@@ -16068,7 +16126,7 @@ class PhantomWalletProvider {
16068
16126
  documents: solTransactionData.txArgs[0].setDocumentData,
16069
16127
  delete_paths: solTransactionData.txArgs[0].deletePaths,
16070
16128
  txData: solTransactionData.txArgs[0].txData
16071
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
16129
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
16072
16130
  tx = result.tx;
16073
16131
  }
16074
16132
  if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
@@ -20019,7 +20077,7 @@ class PrivyWalletProvider {
20019
20077
  lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;
20020
20078
  }
20021
20079
  else {
20022
- const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, new web3_js.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);
20080
+ const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, new web3_js.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);
20023
20081
  tx = result.tx;
20024
20082
  blockhash = result.blockhash;
20025
20083
  lastValidBlockHeight = result.lastValidBlockHeight;
@@ -20489,20 +20547,9 @@ var privyWalletProvider = /*#__PURE__*/Object.freeze({
20489
20547
  * or inside a Seeker/Saga in-app browser context.
20490
20548
  */
20491
20549
  function isMobileWalletAvailable() {
20492
- // Use OR — bail early if either window or navigator is missing.
20493
- // This preserves the original guard's conservative behavior on
20494
- // Seeker/Saga in-app browsers where both are always present.
20495
- // RN environments also hit this (neither is defined).
20496
20550
  if (typeof window === 'undefined' || typeof navigator === 'undefined')
20497
20551
  return false;
20498
- const ua = getPlatform().getUserAgent();
20499
- if (!ua)
20500
- return false;
20501
- // Android browser — MWA uses Android intents
20502
- const isAndroid = /Android/i.test(ua);
20503
- // In-app browser inside a wallet app on Seeker/Saga
20504
- const isWalletInAppBrowser = /SolanaWallet/i.test(ua) || /SeedVault/i.test(ua);
20505
- return isAndroid || isWalletInAppBrowser;
20552
+ return detectAndroid();
20506
20553
  }
20507
20554
  const ED25519_SIGNATURE_LENGTH = 64;
20508
20555
  // Dynamically imported MWA protocol module
@@ -20517,7 +20564,7 @@ async function loadMwaProtocol() {
20517
20564
  return mwaProtocolLoadPromise;
20518
20565
  mwaProtocolLoadPromise = (async () => {
20519
20566
  try {
20520
- mwaProtocolModule = await Promise.resolve().then(function () { return require('./index.browser-GM5fUBfQ.js'); });
20567
+ mwaProtocolModule = await Promise.resolve().then(function () { return require('./index.browser-Dapjfbl6.js'); });
20521
20568
  }
20522
20569
  catch (e) {
20523
20570
  console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
@@ -20539,7 +20586,7 @@ async function registerMobileWalletAdapter(config) {
20539
20586
  if (typeof window === 'undefined')
20540
20587
  return;
20541
20588
  try {
20542
- const walletStandardMobile = await Promise.resolve().then(function () { return require('./index.browser-De6JT7NR.js'); });
20589
+ const walletStandardMobile = await Promise.resolve().then(function () { return require('./index.browser-BzHjnrpD.js'); });
20543
20590
  const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);
20544
20591
  if (!registerMwa) {
20545
20592
  console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');
@@ -20994,7 +21041,7 @@ class SolanaMobileWalletProvider {
20994
21041
  documents: solTransactionData.txArgs[0].setDocumentData,
20995
21042
  delete_paths: solTransactionData.txArgs[0].deletePaths,
20996
21043
  txData: solTransactionData.txArgs[0].txData
20997
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
21044
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
20998
21045
  tx = result.tx;
20999
21046
  }
21000
21047
  if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
@@ -21251,7 +21298,7 @@ class PrivyExpoProvider {
21251
21298
  documents: solTransactionData.txArgs[0].setDocumentData,
21252
21299
  delete_paths: solTransactionData.txArgs[0].deletePaths,
21253
21300
  txData: solTransactionData.txArgs[0].txData,
21254
- }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false);
21301
+ }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
21255
21302
  // Set blockhash
21256
21303
  const isLegacyTx = 'recentBlockhash' in tx &&
21257
21304
  !('message' in tx && 'staticAccountKeys' in tx.message);
@@ -21464,7 +21511,6 @@ exports.bufferExports = bufferExports;
21464
21511
  exports.buildSetDocumentsTransaction = buildSetDocumentsTransaction;
21465
21512
  exports.clearCache = clearCache;
21466
21513
  exports.closeAllSubscriptions = closeAllSubscriptions;
21467
- exports.commonjsRequire = commonjsRequire;
21468
21514
  exports.convertRemainingAccounts = convertRemainingAccounts;
21469
21515
  exports.count = count;
21470
21516
  exports.createSessionWithPrivy = createSessionWithPrivy;
@@ -21490,7 +21536,6 @@ exports.onAuthStateChanged = onAuthStateChanged;
21490
21536
  exports.reconnectWithNewAuth = reconnectWithNewAuth;
21491
21537
  exports.refreshSession = refreshSession;
21492
21538
  exports.registerMobileWalletAdapter = registerMobileWalletAdapter;
21493
- exports.require$$0 = require$$0;
21494
21539
  exports.runExpression = runExpression;
21495
21540
  exports.runExpressionMany = runExpressionMany;
21496
21541
  exports.runQuery = runQuery;
@@ -21505,4 +21550,4 @@ exports.signSessionCreateMessage = signSessionCreateMessage;
21505
21550
  exports.signTransaction = signTransaction;
21506
21551
  exports.subscribe = subscribe;
21507
21552
  exports.useAuth = useAuth;
21508
- //# sourceMappingURL=index-CVK4iKo4.js.map
21553
+ //# sourceMappingURL=index-CMeewi-G.js.map