@pooflabs/server 0.0.28 → 0.0.30
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/README.md +11 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -4
- package/dist/index.mjs.map +1 -1
- package/dist/wallet-client.d.ts +4 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ yarn add @tarobase/server
|
|
|
18
18
|
|
|
19
19
|
- Server-side authentication using Solana keypairs
|
|
20
20
|
- In-memory session management (no cookies or local storage required)
|
|
21
|
-
- Support for all Tarobase data operations (get, set, query)
|
|
21
|
+
- Support for all Tarobase data operations (get, getMany, set, query)
|
|
22
22
|
- Real-time subscriptions
|
|
23
23
|
- Transaction signing and execution
|
|
24
24
|
- TypeScript support
|
|
@@ -171,6 +171,7 @@ function getIdToken(): Promise<string | null>;
|
|
|
171
171
|
|
|
172
172
|
```typescript
|
|
173
173
|
function get(path: string): Promise<any>;
|
|
174
|
+
function getMany(paths: string[], options?: { bypassCache?: boolean }): Promise<GetManyResult[]>;
|
|
174
175
|
function set(path: string, data: any, options?: SetOptions): Promise<any>;
|
|
175
176
|
function setMany(paths: { [key: string]: any }, options?: SetOptions): Promise<any>;
|
|
176
177
|
function setFile(path: string, file: File, metadata?: any): Promise<any>;
|
|
@@ -227,6 +228,15 @@ interface SetOptions {
|
|
|
227
228
|
shouldSubmitTx?: boolean;
|
|
228
229
|
}
|
|
229
230
|
|
|
231
|
+
interface GetManyResult {
|
|
232
|
+
path: string;
|
|
233
|
+
data: any | null;
|
|
234
|
+
error?: {
|
|
235
|
+
code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'INVALID_PATH';
|
|
236
|
+
message: string;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
230
240
|
interface TransactionResult {
|
|
231
241
|
transactionSignature?: string;
|
|
232
242
|
signedTransaction?: any;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { init } from "./global";
|
|
2
2
|
export { getConfig } from '@pooflabs/core';
|
|
3
3
|
export { getAuthProvider } from './auth';
|
|
4
|
-
export { get, set, setMany, setFile, getFiles, runQuery, runQueryMany, runExpression, runExpressionMany, signMessage, signTransaction, signAndSubmitTransaction, count, aggregate, GetOptions, SetOptions, CountOptions, AggregateOptions, AggregateOperation, AggregateResult } from '@pooflabs/core';
|
|
4
|
+
export { get, getMany, set, setMany, setFile, getFiles, runQuery, runQueryMany, runExpression, runExpressionMany, signMessage, signTransaction, signAndSubmitTransaction, count, aggregate, GetOptions, SetOptions, CountOptions, AggregateOptions, AggregateOperation, AggregateResult, GetManyResult } from '@pooflabs/core';
|
|
5
5
|
export { subscribe } from '@pooflabs/core';
|
|
6
6
|
export * from '@pooflabs/core';
|
|
7
7
|
export { getIdToken } from './utils';
|
package/dist/index.js
CHANGED
|
@@ -319,7 +319,7 @@ class SolanaKeypairProvider {
|
|
|
319
319
|
documents: sol.txArgs[0].setDocumentData,
|
|
320
320
|
delete_paths: sol.txArgs[0].deletePaths,
|
|
321
321
|
txData: sol.txArgs[0].txData
|
|
322
|
-
}, deduped, sol.lutKey, sol.preInstructions, false);
|
|
322
|
+
}, deduped, sol.lutKey, sol.preInstructions, false, sol.additionalLutAddresses);
|
|
323
323
|
tx = result.tx;
|
|
324
324
|
blockhash = result.blockhash;
|
|
325
325
|
lastValidBlockHeight = result.lastValidBlockHeight;
|
|
@@ -358,7 +358,7 @@ class SolanaKeypairProvider {
|
|
|
358
358
|
documents: sol.txArgs[0].setDocumentData,
|
|
359
359
|
delete_paths: sol.txArgs[0].deletePaths,
|
|
360
360
|
txData: sol.txArgs[0].txData
|
|
361
|
-
}, deduped, sol.lutKey, [web3_js.ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions], false);
|
|
361
|
+
}, deduped, sol.lutKey, [web3_js.ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions], false, sol.additionalLutAddresses);
|
|
362
362
|
tx = roundTwo.tx;
|
|
363
363
|
blockhash = roundTwo.blockhash;
|
|
364
364
|
lastValidBlockHeight = roundTwo.lastValidBlockHeight;
|
|
@@ -575,6 +575,9 @@ class WalletClient {
|
|
|
575
575
|
async get(path, opts) {
|
|
576
576
|
return core.get(path, Object.assign(Object.assign({}, opts), { _overrides: this.mergeReadOverrides(opts === null || opts === void 0 ? void 0 : opts._overrides) }));
|
|
577
577
|
}
|
|
578
|
+
async getMany(paths, opts) {
|
|
579
|
+
return core.getMany(paths, Object.assign(Object.assign({}, opts), { _overrides: this.mergeReadOverrides() }));
|
|
580
|
+
}
|
|
578
581
|
async getFiles(path, options) {
|
|
579
582
|
return core.getFiles(path, { _overrides: this.mergeReadOverrides(options === null || options === void 0 ? void 0 : options._overrides) });
|
|
580
583
|
}
|
|
@@ -632,6 +635,30 @@ async function createWalletClient(opts) {
|
|
|
632
635
|
return new WalletClient(provider, sessionManager, kp.publicKey.toBase58());
|
|
633
636
|
}
|
|
634
637
|
|
|
638
|
+
Object.defineProperty(exports, "AggregateOperation", {
|
|
639
|
+
enumerable: true,
|
|
640
|
+
get: function () { return core.AggregateOperation; }
|
|
641
|
+
});
|
|
642
|
+
Object.defineProperty(exports, "AggregateOptions", {
|
|
643
|
+
enumerable: true,
|
|
644
|
+
get: function () { return core.AggregateOptions; }
|
|
645
|
+
});
|
|
646
|
+
Object.defineProperty(exports, "AggregateResult", {
|
|
647
|
+
enumerable: true,
|
|
648
|
+
get: function () { return core.AggregateResult; }
|
|
649
|
+
});
|
|
650
|
+
Object.defineProperty(exports, "CountOptions", {
|
|
651
|
+
enumerable: true,
|
|
652
|
+
get: function () { return core.CountOptions; }
|
|
653
|
+
});
|
|
654
|
+
Object.defineProperty(exports, "GetManyResult", {
|
|
655
|
+
enumerable: true,
|
|
656
|
+
get: function () { return core.GetManyResult; }
|
|
657
|
+
});
|
|
658
|
+
Object.defineProperty(exports, "GetOptions", {
|
|
659
|
+
enumerable: true,
|
|
660
|
+
get: function () { return core.GetOptions; }
|
|
661
|
+
});
|
|
635
662
|
Object.defineProperty(exports, "aggregate", {
|
|
636
663
|
enumerable: true,
|
|
637
664
|
get: function () { return core.aggregate; }
|
|
@@ -652,6 +679,10 @@ Object.defineProperty(exports, "getFiles", {
|
|
|
652
679
|
enumerable: true,
|
|
653
680
|
get: function () { return core.getFiles; }
|
|
654
681
|
});
|
|
682
|
+
Object.defineProperty(exports, "getMany", {
|
|
683
|
+
enumerable: true,
|
|
684
|
+
get: function () { return core.getMany; }
|
|
685
|
+
});
|
|
655
686
|
Object.defineProperty(exports, "runExpression", {
|
|
656
687
|
enumerable: true,
|
|
657
688
|
get: function () { return core.runExpression; }
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/providers/offchain-auth-provider.ts","../src/auth/index.ts","../src/global.ts","../src/utils.ts","../src/wallet-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction,\n VersionedTransactionResponse\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n keypair?: Keypair,\n ) {\n this.keypair = keypair ?? loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n (transaction as Transaction).partialSign(this.keypair);\n } else {\n (transaction as VersionedTransaction).sign([this.keypair]);\n }\n return transaction;\n }\n\n /**\n * Signs and submits a Solana transaction to the network.\n *\n * This method handles blockhash and transaction confirmation automatically - you do NOT need to\n * set recentBlockhash or lastValidBlockHeight on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign and submit (Transaction or VersionedTransaction)\n * @param feePayer - Optional fee payer public key. If not provided and the transaction doesn't\n * already have a feePayer set, the keypair's public key will be used.\n * Useful for co-signing scenarios where a different account pays the fees.\n * @returns The transaction signature\n */\n async signAndSubmitTransaction(\n transaction: Transaction | VersionedTransaction,\n feePayer?: anchor.web3.PublicKey\n ): Promise<string> {\n // 1. Get RPC URL and create connection\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n\n // 2. Get fresh blockhash and set it on the transaction before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n const legacyTx = transaction as Transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n\n // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = feePayer ?? this.keypair.publicKey;\n }\n } else {\n // VersionedTransaction\n const versionedTx = transaction as VersionedTransaction;\n versionedTx.message.recentBlockhash = blockhash;\n // Note: VersionedTransaction feePayer is set in the message at creation time\n // and cannot be modified after creation\n }\n\n // 3. Sign the transaction\n const signedTx = await this.signTransaction(transaction);\n\n // 4. Submit and confirm using shared helper\n const { signature } = await this.submitAndConfirmTransaction(signedTx, connection);\n return signature;\n }\n\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n\n /**\n * Submits a signed transaction and waits for confirmation using polling.\n * Shared by both signAndSubmitTransaction and runTransactionInner.\n */\n private async submitAndConfirmTransaction(\n signedTx: Transaction | VersionedTransaction,\n connection: Connection,\n options?: { fetchTxInfo?: boolean }\n ): Promise<{ signature: string; txInfo: any }> {\n const sig = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n\n // Wait for confirmation using polling\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.err) {\n // Transaction confirmed but failed on-chain — fetch logs for a readable error\n const txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n const logMessages = txInfo?.meta?.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(st?.value?.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n // Optionally fetch transaction info\n let txInfo : VersionedTransactionResponse | null = null;\n if (options?.fetchTxInfo) {\n txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n }\n\n return { signature: sig, txInfo };\n }\n\n private getRpcUrl(network?: string): string {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n } else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n } else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL; // default to mainnet\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (tx: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in tx && !('message' in tx && 'staticAccountKeys' in (tx as any).message);\n };\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n } else {\n (tx as VersionedTransaction).sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(t)) {\n (t as Transaction).partialSign(kp);\n } else {\n (t as VersionedTransaction).sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 1000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 1.5;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.getRpcUrl(sol.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n\n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n // When the server has co-signed a transaction (CPI attestation),\n // deserialize it and just add the wallet signature instead of\n // building from components.\n let tx: Transaction | VersionedTransaction;\n let blockhash: string;\n let lastValidBlockHeight: number;\n\n if (sol.signedTransaction) {\n tx = VersionedTransaction.deserialize(\n Buffer.from(sol.signedTransaction, 'base64')\n );\n const latestBlockhash = await connection.getLatestBlockhash('confirmed');\n blockhash = latestBlockhash.blockhash;\n lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n } else {\n const result = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n tx = result.tx;\n blockhash = result.blockhash;\n lastValidBlockHeight = result.lastValidBlockHeight;\n }\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (t: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in t && !('message' in t && 'staticAccountKeys' in (t as any).message);\n };\n\n // Refresh blockhash and lastValidBlockHeight\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n (tx as Transaction).recentBlockhash = blockhash;\n (tx as Transaction).lastValidBlockHeight = lastValidBlockHeight;\n (tx as Transaction).feePayer = kp.publicKey;\n } else {\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n (tx as Transaction).partialSign(kp);\n } else {\n // For pre-signed (attestation) transactions, we can't rebuild — skip priority fee\n if (!sol.signedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n // Submit and confirm using shared helper\n const { signature, txInfo } = await this.submitAndConfirmTransaction(tx, connection, { fetchTxInfo: true });\n\n return {\n transactionSignature: signature,\n blockNumber: txInfo?.slot ?? 0,\n gasUsed: txInfo?.meta?.fee.toString() ?? '0',\n data: txInfo?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { AuthProvider } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport * as crypto from 'crypto';\n\n/**\n * Server-side OffchainAuthProvider wrapper for the poofnet environment.\n *\n * For signMessage, this generates a mock signature using SHA-256 hashing.\n * This is used for offchain transaction signing.\n */\nexport class OffchainAuthProvider implements AuthProvider {\n private wrappedProvider: AuthProvider;\n\n constructor(wrappedProvider: AuthProvider) {\n this.wrappedProvider = wrappedProvider;\n }\n\n async login(): Promise<any> {\n return this.wrappedProvider.login();\n }\n\n async logout(): Promise<void> {\n return this.wrappedProvider.logout();\n }\n\n async restoreSession(): Promise<any> {\n return this.wrappedProvider.restoreSession();\n }\n\n async getNativeMethods(): Promise<any> {\n return this.wrappedProvider.getNativeMethods();\n }\n\n async signMessage(message: string): Promise<string> {\n // Delegate to wrapped provider for real signing\n return this.wrappedProvider.signMessage(message);\n }\n\n async signMessageMock(message: string): Promise<string> {\n // Generate mock signature (SHA-256 hash of message, base64 encoded)\n // This is used for offchain transaction signing\n const hash = crypto.createHash('sha256').update(message).digest('base64');\n return hash;\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n /**\n * Sign and submit transaction - not supported in poofnet environment.\n * See the real providers (PhantomWalletProvider, PrivyWalletProvider, SolanaKeypairProvider)\n * for the full implementation with blockhash handling and feePayer support.\n */\n async signAndSubmitTransaction(\n _transaction: Transaction | VersionedTransaction,\n _feePayer?: any\n ): Promise<string> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n async runTransaction(evmTransactionData?: any, solTransactionData?: any, options?: any): Promise<any> {\n return this.wrappedProvider.runTransaction(evmTransactionData, solTransactionData, options);\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './providers/offchain-auth-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n const config = await getConfig();\n\n if (currentAuthProvider) {\n // If provider exists but chain is \"offchain\" and it's not already wrapped, rewrap it\n if (config.chain === \"offchain\" && !(currentAuthProvider instanceof OffchainAuthProvider)) {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n return currentAuthProvider;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n \n // Wrap with OffchainAuthProvider for offchain chain\n if (config.chain === \"offchain\") {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string | null): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { getAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n // Initialize config first so getAuthProvider can access it\n // Server-side skips backend init since it already has all needed config\n await configInit({ ...newConfig, isServer: true, skipBackendInit: true });\n\n // Get the auth provider (which will wrap it if chain is \"offchain\")\n authProviderInstance = await getAuthProvider();\n\n // Update config with the wrapped provider\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true, skipBackendInit: true });\n}","import { getIdToken as getIdTokenCore } from '@pooflabs/core';\n\n// Wrapper for getIdToken - passes isServer=true for server-side usage\nexport async function getIdToken(): Promise<string | null> {\n return getIdTokenCore(true);\n}\n","import { Keypair } from '@solana/web3.js';\nimport { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport {\n getConfig,\n get as coreGet,\n set as coreSet,\n setMany as coreSetMany,\n setFile as coreSetFile,\n getFiles as coreGetFiles,\n runQuery as coreRunQuery,\n runQueryMany as coreRunQueryMany,\n runExpression as coreRunExpression,\n runExpressionMany as coreRunExpressionMany,\n count as coreCount,\n aggregate as coreAggregate,\n ServerSessionManager,\n} from '@pooflabs/core';\nimport type {\n AuthProvider,\n SetOptions,\n GetOptions,\n RunQueryOptions,\n RunExpressionOptions,\n RunExpressionResult,\n CountOptions,\n AggregateOptions,\n AggregateOperation,\n AggregateResult,\n RequestOverrides,\n} from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './auth/providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './auth/providers/offchain-auth-provider';\n\n/* ------------------------------------------------------------------ */\n/* Keypair parsing */\n/* ------------------------------------------------------------------ */\nfunction parseKeypair(secret: string): Keypair {\n const trimmed = secret.trim();\n try {\n const secretKey = trimmed.startsWith('[')\n ? Uint8Array.from(JSON.parse(trimmed))\n : bs58.decode(trimmed);\n return Keypair.fromSecretKey(secretKey);\n } catch {\n throw new Error('Invalid keypair: must be base58 or JSON array.');\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletClient */\n/* ------------------------------------------------------------------ */\nexport class WalletClient {\n private readonly provider: AuthProvider;\n private readonly sessionManager: ServerSessionManager;\n public readonly address: string;\n\n constructor(\n provider: AuthProvider,\n sessionManager: ServerSessionManager,\n address: string,\n ) {\n this.provider = provider;\n this.sessionManager = sessionManager;\n this.address = address;\n }\n\n /* ---- Auth override helpers ---- */\n\n private buildOverrides(): Pick<RequestOverrides, 'authProvider' | '_getAuthHeaders' | '_clearAuth' | '_walletAddress'> {\n return {\n authProvider: this.provider,\n _getAuthHeaders: async () => {\n const s = await this.sessionManager.getSession();\n return { Authorization: `Bearer ${s.idToken}` };\n },\n _clearAuth: async () => {\n this.sessionManager.clearSession();\n },\n _walletAddress: this.address,\n };\n }\n\n /** Strip Authorization from caller headers to prevent overriding wallet token */\n private sanitizeHeaders(headers?: Record<string, string>): Record<string, string> | undefined {\n if (!headers) return undefined;\n const { Authorization, authorization, ...rest } = headers as Record<string, string>;\n return Object.keys(rest).length > 0 ? rest : undefined;\n }\n\n private mergeSetOverrides(opts?: SetOptions): SetOptions {\n const ovr = this.buildOverrides();\n return {\n ...opts,\n _overrides: {\n ...opts?._overrides,\n headers: this.sanitizeHeaders(opts?._overrides?.headers),\n authProvider: ovr.authProvider,\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n },\n };\n }\n\n private mergeReadOverrides(existing?: RequestOverrides): RequestOverrides {\n const ovr = this.buildOverrides();\n return {\n ...existing,\n headers: this.sanitizeHeaders(existing?.headers),\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n _walletAddress: ovr._walletAddress,\n };\n }\n\n /* ---- Data operations ---- */\n\n async set(path: string, document: any, options?: SetOptions): Promise<any> {\n return coreSet(path, document, this.mergeSetOverrides(options));\n }\n\n async setMany(many: { path: string; document: any }[], options?: SetOptions): Promise<any> {\n return coreSetMany(many, this.mergeSetOverrides(options));\n }\n\n async setFile(path: string, file: File | null, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreSetFile(path, file, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async get(path: string, opts?: GetOptions): Promise<any> {\n return coreGet(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async getFiles(path: string, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreGetFiles(path, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runQuery(absolutePath: string, queryName: string, queryArgs: any, opts?: RunQueryOptions): Promise<any> {\n return coreRunQuery(absolutePath, queryName, queryArgs, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runQueryMany(many: { absolutePath: string; queryName: string; queryArgs: any }[], opts?: RunQueryOptions): Promise<any> {\n return coreRunQueryMany(many, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runExpression(expression: string, queryArgs: any, options?: RunExpressionOptions): Promise<RunExpressionResult> {\n return coreRunExpression(expression, queryArgs, { ...options, _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runExpressionMany(many: { expression: string; queryArgs: any; returnType?: 'Bool' | 'String' | 'Int' | 'UInt'; _overrides?: RequestOverrides }[]): Promise<RunExpressionResult[]> {\n const ovr = this.mergeReadOverrides();\n return coreRunExpressionMany(many.map(m => ({ ...m, _overrides: ovr })));\n }\n\n async count(path: string, opts: CountOptions = {}): Promise<AggregateResult> {\n return coreCount(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async aggregate(path: string, operation: AggregateOperation, opts: AggregateOptions = {}): Promise<AggregateResult> {\n return coreAggregate(path, operation, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n /* ---- Signing operations (use provider directly) ---- */\n\n async signMessage(message: string): Promise<string> {\n return this.provider.signMessage(message);\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n return this.provider.signTransaction(transaction);\n }\n\n async signAndSubmitTransaction(transaction: Transaction | VersionedTransaction, feePayer?: PublicKey): Promise<string> {\n return this.provider.signAndSubmitTransaction(transaction, feePayer);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Factory */\n/* ------------------------------------------------------------------ */\nexport interface CreateWalletClientOptions {\n /** Base58 or JSON array secret key */\n keypair: string;\n}\n\n/**\n * Create a self-contained wallet client bound to a specific keypair.\n * Each client has its own auth session — no global state is mutated.\n *\n * @example\n * ```ts\n * const vault = await createWalletClient({ keypair: process.env.VAULT_KEY });\n * await vault.set('markets/123', data);\n * ```\n */\nexport async function createWalletClient(opts: CreateWalletClientOptions): Promise<WalletClient> {\n const kp = parseKeypair(opts.keypair);\n const config = await getConfig();\n\n let provider: AuthProvider = new SolanaKeypairProvider(config.rpcUrl ?? null, kp);\n if (config.chain === 'offchain') {\n provider = new OffchainAuthProvider(provider);\n }\n\n const sessionManager = ServerSessionManager.forKeypair(kp);\n // Eagerly authenticate so failures surface immediately\n await sessionManager.getSession();\n\n return new WalletClient(provider, sessionManager, kp.publicKey.toBase58());\n}\n"],"names":["Keypair","Buffer","Connection","convertRemainingAccounts","anchor","VersionedTransaction","buildSetDocumentsTransaction","ComputeBudgetProgram","crypto","getConfig","configInit","getIdTokenCore","coreSet","coreSetMany","coreSetFile","coreGet","coreGetFiles","coreRunQuery","coreRunQueryMany","coreRunExpression","coreRunExpressionMany","coreCount","coreAggregate","ServerSessionManager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/providers/offchain-auth-provider.ts","../src/auth/index.ts","../src/global.ts","../src/utils.ts","../src/wallet-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction,\n VersionedTransactionResponse\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n keypair?: Keypair,\n ) {\n this.keypair = keypair ?? loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n (transaction as Transaction).partialSign(this.keypair);\n } else {\n (transaction as VersionedTransaction).sign([this.keypair]);\n }\n return transaction;\n }\n\n /**\n * Signs and submits a Solana transaction to the network.\n *\n * This method handles blockhash and transaction confirmation automatically - you do NOT need to\n * set recentBlockhash or lastValidBlockHeight on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign and submit (Transaction or VersionedTransaction)\n * @param feePayer - Optional fee payer public key. If not provided and the transaction doesn't\n * already have a feePayer set, the keypair's public key will be used.\n * Useful for co-signing scenarios where a different account pays the fees.\n * @returns The transaction signature\n */\n async signAndSubmitTransaction(\n transaction: Transaction | VersionedTransaction,\n feePayer?: anchor.web3.PublicKey\n ): Promise<string> {\n // 1. Get RPC URL and create connection\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n\n // 2. Get fresh blockhash and set it on the transaction before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n const legacyTx = transaction as Transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n\n // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = feePayer ?? this.keypair.publicKey;\n }\n } else {\n // VersionedTransaction\n const versionedTx = transaction as VersionedTransaction;\n versionedTx.message.recentBlockhash = blockhash;\n // Note: VersionedTransaction feePayer is set in the message at creation time\n // and cannot be modified after creation\n }\n\n // 3. Sign the transaction\n const signedTx = await this.signTransaction(transaction);\n\n // 4. Submit and confirm using shared helper\n const { signature } = await this.submitAndConfirmTransaction(signedTx, connection);\n return signature;\n }\n\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n\n /**\n * Submits a signed transaction and waits for confirmation using polling.\n * Shared by both signAndSubmitTransaction and runTransactionInner.\n */\n private async submitAndConfirmTransaction(\n signedTx: Transaction | VersionedTransaction,\n connection: Connection,\n options?: { fetchTxInfo?: boolean }\n ): Promise<{ signature: string; txInfo: any }> {\n const sig = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n\n // Wait for confirmation using polling\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.err) {\n // Transaction confirmed but failed on-chain — fetch logs for a readable error\n const txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n const logMessages = txInfo?.meta?.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(st?.value?.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n // Optionally fetch transaction info\n let txInfo : VersionedTransactionResponse | null = null;\n if (options?.fetchTxInfo) {\n txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n }\n\n return { signature: sig, txInfo };\n }\n\n private getRpcUrl(network?: string): string {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n } else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n } else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL; // default to mainnet\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (tx: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in tx && !('message' in tx && 'staticAccountKeys' in (tx as any).message);\n };\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n } else {\n (tx as VersionedTransaction).sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(t)) {\n (t as Transaction).partialSign(kp);\n } else {\n (t as VersionedTransaction).sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 1000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 1.5;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.getRpcUrl(sol.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n\n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n // When the server has co-signed a transaction (CPI attestation),\n // deserialize it and just add the wallet signature instead of\n // building from components.\n let tx: Transaction | VersionedTransaction;\n let blockhash: string;\n let lastValidBlockHeight: number;\n\n if (sol.signedTransaction) {\n tx = VersionedTransaction.deserialize(\n Buffer.from(sol.signedTransaction, 'base64')\n );\n const latestBlockhash = await connection.getLatestBlockhash('confirmed');\n blockhash = latestBlockhash.blockhash;\n lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n } else {\n const result = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n sol.additionalLutAddresses,\n );\n tx = result.tx;\n blockhash = result.blockhash;\n lastValidBlockHeight = result.lastValidBlockHeight;\n }\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (t: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in t && !('message' in t && 'staticAccountKeys' in (t as any).message);\n };\n\n // Refresh blockhash and lastValidBlockHeight\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n (tx as Transaction).recentBlockhash = blockhash;\n (tx as Transaction).lastValidBlockHeight = lastValidBlockHeight;\n (tx as Transaction).feePayer = kp.publicKey;\n } else {\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n (tx as Transaction).partialSign(kp);\n } else {\n // For pre-signed (attestation) transactions, we can't rebuild — skip priority fee\n if (!sol.signedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n sol.additionalLutAddresses,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n // Submit and confirm using shared helper\n const { signature, txInfo } = await this.submitAndConfirmTransaction(tx, connection, { fetchTxInfo: true });\n\n return {\n transactionSignature: signature,\n blockNumber: txInfo?.slot ?? 0,\n gasUsed: txInfo?.meta?.fee.toString() ?? '0',\n data: txInfo?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { AuthProvider } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport * as crypto from 'crypto';\n\n/**\n * Server-side OffchainAuthProvider wrapper for the poofnet environment.\n *\n * For signMessage, this generates a mock signature using SHA-256 hashing.\n * This is used for offchain transaction signing.\n */\nexport class OffchainAuthProvider implements AuthProvider {\n private wrappedProvider: AuthProvider;\n\n constructor(wrappedProvider: AuthProvider) {\n this.wrappedProvider = wrappedProvider;\n }\n\n async login(): Promise<any> {\n return this.wrappedProvider.login();\n }\n\n async logout(): Promise<void> {\n return this.wrappedProvider.logout();\n }\n\n async restoreSession(): Promise<any> {\n return this.wrappedProvider.restoreSession();\n }\n\n async getNativeMethods(): Promise<any> {\n return this.wrappedProvider.getNativeMethods();\n }\n\n async signMessage(message: string): Promise<string> {\n // Delegate to wrapped provider for real signing\n return this.wrappedProvider.signMessage(message);\n }\n\n async signMessageMock(message: string): Promise<string> {\n // Generate mock signature (SHA-256 hash of message, base64 encoded)\n // This is used for offchain transaction signing\n const hash = crypto.createHash('sha256').update(message).digest('base64');\n return hash;\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n /**\n * Sign and submit transaction - not supported in poofnet environment.\n * See the real providers (PhantomWalletProvider, PrivyWalletProvider, SolanaKeypairProvider)\n * for the full implementation with blockhash handling and feePayer support.\n */\n async signAndSubmitTransaction(\n _transaction: Transaction | VersionedTransaction,\n _feePayer?: any\n ): Promise<string> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n async runTransaction(evmTransactionData?: any, solTransactionData?: any, options?: any): Promise<any> {\n return this.wrappedProvider.runTransaction(evmTransactionData, solTransactionData, options);\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './providers/offchain-auth-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n const config = await getConfig();\n\n if (currentAuthProvider) {\n // If provider exists but chain is \"offchain\" and it's not already wrapped, rewrap it\n if (config.chain === \"offchain\" && !(currentAuthProvider instanceof OffchainAuthProvider)) {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n return currentAuthProvider;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n \n // Wrap with OffchainAuthProvider for offchain chain\n if (config.chain === \"offchain\") {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string | null): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { getAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n // Initialize config first so getAuthProvider can access it\n // Server-side skips backend init since it already has all needed config\n await configInit({ ...newConfig, isServer: true, skipBackendInit: true });\n\n // Get the auth provider (which will wrap it if chain is \"offchain\")\n authProviderInstance = await getAuthProvider();\n\n // Update config with the wrapped provider\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true, skipBackendInit: true });\n}","import { getIdToken as getIdTokenCore } from '@pooflabs/core';\n\n// Wrapper for getIdToken - passes isServer=true for server-side usage\nexport async function getIdToken(): Promise<string | null> {\n return getIdTokenCore(true);\n}\n","import { Keypair } from '@solana/web3.js';\nimport { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport {\n getConfig,\n get as coreGet,\n getMany as coreGetMany,\n set as coreSet,\n setMany as coreSetMany,\n setFile as coreSetFile,\n getFiles as coreGetFiles,\n runQuery as coreRunQuery,\n runQueryMany as coreRunQueryMany,\n runExpression as coreRunExpression,\n runExpressionMany as coreRunExpressionMany,\n count as coreCount,\n aggregate as coreAggregate,\n ServerSessionManager,\n} from '@pooflabs/core';\nimport type {\n AuthProvider,\n SetOptions,\n GetOptions,\n GetManyResult,\n RunQueryOptions,\n RunExpressionOptions,\n RunExpressionResult,\n CountOptions,\n AggregateOptions,\n AggregateOperation,\n AggregateResult,\n RequestOverrides,\n} from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './auth/providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './auth/providers/offchain-auth-provider';\n\n/* ------------------------------------------------------------------ */\n/* Keypair parsing */\n/* ------------------------------------------------------------------ */\nfunction parseKeypair(secret: string): Keypair {\n const trimmed = secret.trim();\n try {\n const secretKey = trimmed.startsWith('[')\n ? Uint8Array.from(JSON.parse(trimmed))\n : bs58.decode(trimmed);\n return Keypair.fromSecretKey(secretKey);\n } catch {\n throw new Error('Invalid keypair: must be base58 or JSON array.');\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletClient */\n/* ------------------------------------------------------------------ */\nexport class WalletClient {\n private readonly provider: AuthProvider;\n private readonly sessionManager: ServerSessionManager;\n public readonly address: string;\n\n constructor(\n provider: AuthProvider,\n sessionManager: ServerSessionManager,\n address: string,\n ) {\n this.provider = provider;\n this.sessionManager = sessionManager;\n this.address = address;\n }\n\n /* ---- Auth override helpers ---- */\n\n private buildOverrides(): Pick<RequestOverrides, 'authProvider' | '_getAuthHeaders' | '_clearAuth' | '_walletAddress'> {\n return {\n authProvider: this.provider,\n _getAuthHeaders: async () => {\n const s = await this.sessionManager.getSession();\n return { Authorization: `Bearer ${s.idToken}` };\n },\n _clearAuth: async () => {\n this.sessionManager.clearSession();\n },\n _walletAddress: this.address,\n };\n }\n\n /** Strip Authorization from caller headers to prevent overriding wallet token */\n private sanitizeHeaders(headers?: Record<string, string>): Record<string, string> | undefined {\n if (!headers) return undefined;\n const { Authorization, authorization, ...rest } = headers as Record<string, string>;\n return Object.keys(rest).length > 0 ? rest : undefined;\n }\n\n private mergeSetOverrides(opts?: SetOptions): SetOptions {\n const ovr = this.buildOverrides();\n return {\n ...opts,\n _overrides: {\n ...opts?._overrides,\n headers: this.sanitizeHeaders(opts?._overrides?.headers),\n authProvider: ovr.authProvider,\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n },\n };\n }\n\n private mergeReadOverrides(existing?: RequestOverrides): RequestOverrides {\n const ovr = this.buildOverrides();\n return {\n ...existing,\n headers: this.sanitizeHeaders(existing?.headers),\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n _walletAddress: ovr._walletAddress,\n };\n }\n\n /* ---- Data operations ---- */\n\n async set(path: string, document: any, options?: SetOptions): Promise<any> {\n return coreSet(path, document, this.mergeSetOverrides(options));\n }\n\n async setMany(many: { path: string; document: any }[], options?: SetOptions): Promise<any> {\n return coreSetMany(many, this.mergeSetOverrides(options));\n }\n\n async setFile(path: string, file: File | null, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreSetFile(path, file, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async get(path: string, opts?: GetOptions): Promise<any> {\n return coreGet(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async getMany(paths: string[], opts?: { bypassCache?: boolean }): Promise<GetManyResult[]> {\n return coreGetMany(paths, { ...opts, _overrides: this.mergeReadOverrides() });\n }\n\n async getFiles(path: string, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreGetFiles(path, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runQuery(absolutePath: string, queryName: string, queryArgs: any, opts?: RunQueryOptions): Promise<any> {\n return coreRunQuery(absolutePath, queryName, queryArgs, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runQueryMany(many: { absolutePath: string; queryName: string; queryArgs: any }[], opts?: RunQueryOptions): Promise<any> {\n return coreRunQueryMany(many, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runExpression(expression: string, queryArgs: any, options?: RunExpressionOptions): Promise<RunExpressionResult> {\n return coreRunExpression(expression, queryArgs, { ...options, _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runExpressionMany(many: { expression: string; queryArgs: any; returnType?: 'Bool' | 'String' | 'Int' | 'UInt'; _overrides?: RequestOverrides }[]): Promise<RunExpressionResult[]> {\n const ovr = this.mergeReadOverrides();\n return coreRunExpressionMany(many.map(m => ({ ...m, _overrides: ovr })));\n }\n\n async count(path: string, opts: CountOptions = {}): Promise<AggregateResult> {\n return coreCount(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async aggregate(path: string, operation: AggregateOperation, opts: AggregateOptions = {}): Promise<AggregateResult> {\n return coreAggregate(path, operation, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n /* ---- Signing operations (use provider directly) ---- */\n\n async signMessage(message: string): Promise<string> {\n return this.provider.signMessage(message);\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n return this.provider.signTransaction(transaction);\n }\n\n async signAndSubmitTransaction(transaction: Transaction | VersionedTransaction, feePayer?: PublicKey): Promise<string> {\n return this.provider.signAndSubmitTransaction(transaction, feePayer);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Factory */\n/* ------------------------------------------------------------------ */\nexport interface CreateWalletClientOptions {\n /** Base58 or JSON array secret key */\n keypair: string;\n}\n\n/**\n * Create a self-contained wallet client bound to a specific keypair.\n * Each client has its own auth session — no global state is mutated.\n *\n * @example\n * ```ts\n * const vault = await createWalletClient({ keypair: process.env.VAULT_KEY });\n * await vault.set('markets/123', data);\n * ```\n */\nexport async function createWalletClient(opts: CreateWalletClientOptions): Promise<WalletClient> {\n const kp = parseKeypair(opts.keypair);\n const config = await getConfig();\n\n let provider: AuthProvider = new SolanaKeypairProvider(config.rpcUrl ?? null, kp);\n if (config.chain === 'offchain') {\n provider = new OffchainAuthProvider(provider);\n }\n\n const sessionManager = ServerSessionManager.forKeypair(kp);\n // Eagerly authenticate so failures surface immediately\n await sessionManager.getSession();\n\n return new WalletClient(provider, sessionManager, kp.publicKey.toBase58());\n}\n"],"names":["Keypair","Buffer","Connection","convertRemainingAccounts","anchor","VersionedTransaction","buildSetDocumentsTransaction","ComputeBudgetProgram","crypto","getConfig","configInit","getIdTokenCore","coreSet","coreSetMany","coreSetFile","coreGet","coreGetMany","coreGetFiles","coreRunQuery","coreRunQueryMany","coreRunExpression","coreRunExpressionMany","coreCount","coreAggregate","ServerSessionManager"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { convertRemainingAccounts, buildSetDocumentsTransaction, getConfig, init as init$1, getIdToken as getIdToken$1, set, setMany, setFile, get, getFiles, runQuery, runQueryMany, runExpression, runExpressionMany, count, aggregate
|
|
1
|
+
import { convertRemainingAccounts, buildSetDocumentsTransaction, getConfig, init as init$1, getIdToken as getIdToken$1, ServerSessionManager, set, setMany, setFile, get, getMany, getFiles, runQuery, runQueryMany, runExpression, runExpressionMany, count, aggregate } from '@pooflabs/core';
|
|
2
2
|
export * from '@pooflabs/core';
|
|
3
|
-
export { aggregate, count, get, getConfig, getFiles, runExpression, runExpressionMany, runQuery, runQueryMany, set, setFile, setMany, signAndSubmitTransaction, signMessage, signTransaction, subscribe } from '@pooflabs/core';
|
|
3
|
+
export { AggregateOperation, AggregateOptions, AggregateResult, CountOptions, GetManyResult, GetOptions, aggregate, count, get, getConfig, getFiles, getMany, runExpression, runExpressionMany, runQuery, runQueryMany, set, setFile, setMany, signAndSubmitTransaction, signMessage, signTransaction, subscribe } from '@pooflabs/core';
|
|
4
4
|
import { Buffer } from 'buffer';
|
|
5
5
|
import { Connection, VersionedTransaction, ComputeBudgetProgram, Keypair } from '@solana/web3.js';
|
|
6
6
|
import * as anchor from '@coral-xyz/anchor';
|
|
@@ -299,7 +299,7 @@ class SolanaKeypairProvider {
|
|
|
299
299
|
documents: sol.txArgs[0].setDocumentData,
|
|
300
300
|
delete_paths: sol.txArgs[0].deletePaths,
|
|
301
301
|
txData: sol.txArgs[0].txData
|
|
302
|
-
}, deduped, sol.lutKey, sol.preInstructions, false);
|
|
302
|
+
}, deduped, sol.lutKey, sol.preInstructions, false, sol.additionalLutAddresses);
|
|
303
303
|
tx = result.tx;
|
|
304
304
|
blockhash = result.blockhash;
|
|
305
305
|
lastValidBlockHeight = result.lastValidBlockHeight;
|
|
@@ -338,7 +338,7 @@ class SolanaKeypairProvider {
|
|
|
338
338
|
documents: sol.txArgs[0].setDocumentData,
|
|
339
339
|
delete_paths: sol.txArgs[0].deletePaths,
|
|
340
340
|
txData: sol.txArgs[0].txData
|
|
341
|
-
}, deduped, sol.lutKey, [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions], false);
|
|
341
|
+
}, deduped, sol.lutKey, [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions], false, sol.additionalLutAddresses);
|
|
342
342
|
tx = roundTwo.tx;
|
|
343
343
|
blockhash = roundTwo.blockhash;
|
|
344
344
|
lastValidBlockHeight = roundTwo.lastValidBlockHeight;
|
|
@@ -555,6 +555,9 @@ class WalletClient {
|
|
|
555
555
|
async get(path, opts) {
|
|
556
556
|
return get(path, Object.assign(Object.assign({}, opts), { _overrides: this.mergeReadOverrides(opts === null || opts === void 0 ? void 0 : opts._overrides) }));
|
|
557
557
|
}
|
|
558
|
+
async getMany(paths, opts) {
|
|
559
|
+
return getMany(paths, Object.assign(Object.assign({}, opts), { _overrides: this.mergeReadOverrides() }));
|
|
560
|
+
}
|
|
558
561
|
async getFiles(path, options) {
|
|
559
562
|
return getFiles(path, { _overrides: this.mergeReadOverrides(options === null || options === void 0 ? void 0 : options._overrides) });
|
|
560
563
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/providers/offchain-auth-provider.ts","../src/auth/index.ts","../src/global.ts","../src/utils.ts","../src/wallet-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction,\n VersionedTransactionResponse\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n keypair?: Keypair,\n ) {\n this.keypair = keypair ?? loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n (transaction as Transaction).partialSign(this.keypair);\n } else {\n (transaction as VersionedTransaction).sign([this.keypair]);\n }\n return transaction;\n }\n\n /**\n * Signs and submits a Solana transaction to the network.\n *\n * This method handles blockhash and transaction confirmation automatically - you do NOT need to\n * set recentBlockhash or lastValidBlockHeight on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign and submit (Transaction or VersionedTransaction)\n * @param feePayer - Optional fee payer public key. If not provided and the transaction doesn't\n * already have a feePayer set, the keypair's public key will be used.\n * Useful for co-signing scenarios where a different account pays the fees.\n * @returns The transaction signature\n */\n async signAndSubmitTransaction(\n transaction: Transaction | VersionedTransaction,\n feePayer?: anchor.web3.PublicKey\n ): Promise<string> {\n // 1. Get RPC URL and create connection\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n\n // 2. Get fresh blockhash and set it on the transaction before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n const legacyTx = transaction as Transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n\n // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = feePayer ?? this.keypair.publicKey;\n }\n } else {\n // VersionedTransaction\n const versionedTx = transaction as VersionedTransaction;\n versionedTx.message.recentBlockhash = blockhash;\n // Note: VersionedTransaction feePayer is set in the message at creation time\n // and cannot be modified after creation\n }\n\n // 3. Sign the transaction\n const signedTx = await this.signTransaction(transaction);\n\n // 4. Submit and confirm using shared helper\n const { signature } = await this.submitAndConfirmTransaction(signedTx, connection);\n return signature;\n }\n\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n\n /**\n * Submits a signed transaction and waits for confirmation using polling.\n * Shared by both signAndSubmitTransaction and runTransactionInner.\n */\n private async submitAndConfirmTransaction(\n signedTx: Transaction | VersionedTransaction,\n connection: Connection,\n options?: { fetchTxInfo?: boolean }\n ): Promise<{ signature: string; txInfo: any }> {\n const sig = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n\n // Wait for confirmation using polling\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.err) {\n // Transaction confirmed but failed on-chain — fetch logs for a readable error\n const txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n const logMessages = txInfo?.meta?.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(st?.value?.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n // Optionally fetch transaction info\n let txInfo : VersionedTransactionResponse | null = null;\n if (options?.fetchTxInfo) {\n txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n }\n\n return { signature: sig, txInfo };\n }\n\n private getRpcUrl(network?: string): string {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n } else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n } else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL; // default to mainnet\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (tx: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in tx && !('message' in tx && 'staticAccountKeys' in (tx as any).message);\n };\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n } else {\n (tx as VersionedTransaction).sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(t)) {\n (t as Transaction).partialSign(kp);\n } else {\n (t as VersionedTransaction).sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 1000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 1.5;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.getRpcUrl(sol.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n\n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n // When the server has co-signed a transaction (CPI attestation),\n // deserialize it and just add the wallet signature instead of\n // building from components.\n let tx: Transaction | VersionedTransaction;\n let blockhash: string;\n let lastValidBlockHeight: number;\n\n if (sol.signedTransaction) {\n tx = VersionedTransaction.deserialize(\n Buffer.from(sol.signedTransaction, 'base64')\n );\n const latestBlockhash = await connection.getLatestBlockhash('confirmed');\n blockhash = latestBlockhash.blockhash;\n lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n } else {\n const result = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n );\n tx = result.tx;\n blockhash = result.blockhash;\n lastValidBlockHeight = result.lastValidBlockHeight;\n }\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (t: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in t && !('message' in t && 'staticAccountKeys' in (t as any).message);\n };\n\n // Refresh blockhash and lastValidBlockHeight\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n (tx as Transaction).recentBlockhash = blockhash;\n (tx as Transaction).lastValidBlockHeight = lastValidBlockHeight;\n (tx as Transaction).feePayer = kp.publicKey;\n } else {\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n (tx as Transaction).partialSign(kp);\n } else {\n // For pre-signed (attestation) transactions, we can't rebuild — skip priority fee\n if (!sol.signedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n // Submit and confirm using shared helper\n const { signature, txInfo } = await this.submitAndConfirmTransaction(tx, connection, { fetchTxInfo: true });\n\n return {\n transactionSignature: signature,\n blockNumber: txInfo?.slot ?? 0,\n gasUsed: txInfo?.meta?.fee.toString() ?? '0',\n data: txInfo?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { AuthProvider } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport * as crypto from 'crypto';\n\n/**\n * Server-side OffchainAuthProvider wrapper for the poofnet environment.\n *\n * For signMessage, this generates a mock signature using SHA-256 hashing.\n * This is used for offchain transaction signing.\n */\nexport class OffchainAuthProvider implements AuthProvider {\n private wrappedProvider: AuthProvider;\n\n constructor(wrappedProvider: AuthProvider) {\n this.wrappedProvider = wrappedProvider;\n }\n\n async login(): Promise<any> {\n return this.wrappedProvider.login();\n }\n\n async logout(): Promise<void> {\n return this.wrappedProvider.logout();\n }\n\n async restoreSession(): Promise<any> {\n return this.wrappedProvider.restoreSession();\n }\n\n async getNativeMethods(): Promise<any> {\n return this.wrappedProvider.getNativeMethods();\n }\n\n async signMessage(message: string): Promise<string> {\n // Delegate to wrapped provider for real signing\n return this.wrappedProvider.signMessage(message);\n }\n\n async signMessageMock(message: string): Promise<string> {\n // Generate mock signature (SHA-256 hash of message, base64 encoded)\n // This is used for offchain transaction signing\n const hash = crypto.createHash('sha256').update(message).digest('base64');\n return hash;\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n /**\n * Sign and submit transaction - not supported in poofnet environment.\n * See the real providers (PhantomWalletProvider, PrivyWalletProvider, SolanaKeypairProvider)\n * for the full implementation with blockhash handling and feePayer support.\n */\n async signAndSubmitTransaction(\n _transaction: Transaction | VersionedTransaction,\n _feePayer?: any\n ): Promise<string> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n async runTransaction(evmTransactionData?: any, solTransactionData?: any, options?: any): Promise<any> {\n return this.wrappedProvider.runTransaction(evmTransactionData, solTransactionData, options);\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './providers/offchain-auth-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n const config = await getConfig();\n\n if (currentAuthProvider) {\n // If provider exists but chain is \"offchain\" and it's not already wrapped, rewrap it\n if (config.chain === \"offchain\" && !(currentAuthProvider instanceof OffchainAuthProvider)) {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n return currentAuthProvider;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n \n // Wrap with OffchainAuthProvider for offchain chain\n if (config.chain === \"offchain\") {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string | null): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { getAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n // Initialize config first so getAuthProvider can access it\n // Server-side skips backend init since it already has all needed config\n await configInit({ ...newConfig, isServer: true, skipBackendInit: true });\n\n // Get the auth provider (which will wrap it if chain is \"offchain\")\n authProviderInstance = await getAuthProvider();\n\n // Update config with the wrapped provider\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true, skipBackendInit: true });\n}","import { getIdToken as getIdTokenCore } from '@pooflabs/core';\n\n// Wrapper for getIdToken - passes isServer=true for server-side usage\nexport async function getIdToken(): Promise<string | null> {\n return getIdTokenCore(true);\n}\n","import { Keypair } from '@solana/web3.js';\nimport { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport {\n getConfig,\n get as coreGet,\n set as coreSet,\n setMany as coreSetMany,\n setFile as coreSetFile,\n getFiles as coreGetFiles,\n runQuery as coreRunQuery,\n runQueryMany as coreRunQueryMany,\n runExpression as coreRunExpression,\n runExpressionMany as coreRunExpressionMany,\n count as coreCount,\n aggregate as coreAggregate,\n ServerSessionManager,\n} from '@pooflabs/core';\nimport type {\n AuthProvider,\n SetOptions,\n GetOptions,\n RunQueryOptions,\n RunExpressionOptions,\n RunExpressionResult,\n CountOptions,\n AggregateOptions,\n AggregateOperation,\n AggregateResult,\n RequestOverrides,\n} from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './auth/providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './auth/providers/offchain-auth-provider';\n\n/* ------------------------------------------------------------------ */\n/* Keypair parsing */\n/* ------------------------------------------------------------------ */\nfunction parseKeypair(secret: string): Keypair {\n const trimmed = secret.trim();\n try {\n const secretKey = trimmed.startsWith('[')\n ? Uint8Array.from(JSON.parse(trimmed))\n : bs58.decode(trimmed);\n return Keypair.fromSecretKey(secretKey);\n } catch {\n throw new Error('Invalid keypair: must be base58 or JSON array.');\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletClient */\n/* ------------------------------------------------------------------ */\nexport class WalletClient {\n private readonly provider: AuthProvider;\n private readonly sessionManager: ServerSessionManager;\n public readonly address: string;\n\n constructor(\n provider: AuthProvider,\n sessionManager: ServerSessionManager,\n address: string,\n ) {\n this.provider = provider;\n this.sessionManager = sessionManager;\n this.address = address;\n }\n\n /* ---- Auth override helpers ---- */\n\n private buildOverrides(): Pick<RequestOverrides, 'authProvider' | '_getAuthHeaders' | '_clearAuth' | '_walletAddress'> {\n return {\n authProvider: this.provider,\n _getAuthHeaders: async () => {\n const s = await this.sessionManager.getSession();\n return { Authorization: `Bearer ${s.idToken}` };\n },\n _clearAuth: async () => {\n this.sessionManager.clearSession();\n },\n _walletAddress: this.address,\n };\n }\n\n /** Strip Authorization from caller headers to prevent overriding wallet token */\n private sanitizeHeaders(headers?: Record<string, string>): Record<string, string> | undefined {\n if (!headers) return undefined;\n const { Authorization, authorization, ...rest } = headers as Record<string, string>;\n return Object.keys(rest).length > 0 ? rest : undefined;\n }\n\n private mergeSetOverrides(opts?: SetOptions): SetOptions {\n const ovr = this.buildOverrides();\n return {\n ...opts,\n _overrides: {\n ...opts?._overrides,\n headers: this.sanitizeHeaders(opts?._overrides?.headers),\n authProvider: ovr.authProvider,\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n },\n };\n }\n\n private mergeReadOverrides(existing?: RequestOverrides): RequestOverrides {\n const ovr = this.buildOverrides();\n return {\n ...existing,\n headers: this.sanitizeHeaders(existing?.headers),\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n _walletAddress: ovr._walletAddress,\n };\n }\n\n /* ---- Data operations ---- */\n\n async set(path: string, document: any, options?: SetOptions): Promise<any> {\n return coreSet(path, document, this.mergeSetOverrides(options));\n }\n\n async setMany(many: { path: string; document: any }[], options?: SetOptions): Promise<any> {\n return coreSetMany(many, this.mergeSetOverrides(options));\n }\n\n async setFile(path: string, file: File | null, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreSetFile(path, file, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async get(path: string, opts?: GetOptions): Promise<any> {\n return coreGet(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async getFiles(path: string, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreGetFiles(path, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runQuery(absolutePath: string, queryName: string, queryArgs: any, opts?: RunQueryOptions): Promise<any> {\n return coreRunQuery(absolutePath, queryName, queryArgs, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runQueryMany(many: { absolutePath: string; queryName: string; queryArgs: any }[], opts?: RunQueryOptions): Promise<any> {\n return coreRunQueryMany(many, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runExpression(expression: string, queryArgs: any, options?: RunExpressionOptions): Promise<RunExpressionResult> {\n return coreRunExpression(expression, queryArgs, { ...options, _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runExpressionMany(many: { expression: string; queryArgs: any; returnType?: 'Bool' | 'String' | 'Int' | 'UInt'; _overrides?: RequestOverrides }[]): Promise<RunExpressionResult[]> {\n const ovr = this.mergeReadOverrides();\n return coreRunExpressionMany(many.map(m => ({ ...m, _overrides: ovr })));\n }\n\n async count(path: string, opts: CountOptions = {}): Promise<AggregateResult> {\n return coreCount(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async aggregate(path: string, operation: AggregateOperation, opts: AggregateOptions = {}): Promise<AggregateResult> {\n return coreAggregate(path, operation, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n /* ---- Signing operations (use provider directly) ---- */\n\n async signMessage(message: string): Promise<string> {\n return this.provider.signMessage(message);\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n return this.provider.signTransaction(transaction);\n }\n\n async signAndSubmitTransaction(transaction: Transaction | VersionedTransaction, feePayer?: PublicKey): Promise<string> {\n return this.provider.signAndSubmitTransaction(transaction, feePayer);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Factory */\n/* ------------------------------------------------------------------ */\nexport interface CreateWalletClientOptions {\n /** Base58 or JSON array secret key */\n keypair: string;\n}\n\n/**\n * Create a self-contained wallet client bound to a specific keypair.\n * Each client has its own auth session — no global state is mutated.\n *\n * @example\n * ```ts\n * const vault = await createWalletClient({ keypair: process.env.VAULT_KEY });\n * await vault.set('markets/123', data);\n * ```\n */\nexport async function createWalletClient(opts: CreateWalletClientOptions): Promise<WalletClient> {\n const kp = parseKeypair(opts.keypair);\n const config = await getConfig();\n\n let provider: AuthProvider = new SolanaKeypairProvider(config.rpcUrl ?? null, kp);\n if (config.chain === 'offchain') {\n provider = new OffchainAuthProvider(provider);\n }\n\n const sessionManager = ServerSessionManager.forKeypair(kp);\n // Eagerly authenticate so failures surface immediately\n await sessionManager.getSession();\n\n return new WalletClient(provider, sessionManager, kp.publicKey.toBase58());\n}\n"],"names":["configInit","getIdTokenCore","coreSet","coreSetMany","coreSetFile","coreGet","coreGetFiles","coreRunQuery","coreRunQueryMany","coreRunExpression","coreRunExpressionMany","coreCount","coreAggregate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/auth/providers/solana-keypair-provider.ts","../src/auth/providers/offchain-auth-provider.ts","../src/auth/index.ts","../src/global.ts","../src/utils.ts","../src/wallet-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n Transaction,\n VersionedTransaction,\n VersionedTransactionResponse\n} from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport nacl from 'tweetnacl';\nimport bs58 from 'bs58';\n\nimport type {\n AuthProvider,\n EVMTransaction,\n SolTransaction,\n TransactionResult,\n User,\n SetOptions,\n} from '@pooflabs/core';\n\nimport {\n convertRemainingAccounts,\n buildSetDocumentsTransaction,\n} from '@pooflabs/core';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\n\n/* ------------------------------------------------------------- *\n * REQUIRED ENV-VAR\n * ------------------------------------------------------------- */\nconst ENV_VAR = 'TAROBASE_SOLANA_KEYPAIR'; // base-58 or JSON array\n\nfunction loadKeypairFromEnv(): Keypair {\n const secret = process?.env?.[ENV_VAR];\n if (!secret) {\n throw new Error(\n `Missing ${ENV_VAR}. Set it to a base58 secret key or JSON array.`,\n );\n }\n\n try {\n const secretKey = secret.trim().startsWith('[')\n ? Uint8Array.from(JSON.parse(secret))\n : bs58.decode(secret.trim());\n\n return Keypair.fromSecretKey(secretKey);\n } catch (err) {\n throw new Error(\n `Unable to parse ${ENV_VAR}. Ensure it is valid base58 or a JSON array.`,\n );\n }\n}\n\n/* ──────────────────────────────────────────────────────────\n * Helper – fetch getPriorityFeeEstimate\n * ──────────────────────────────────────────────────────── */\nasync function fetchPriorityFee(rpcEndpoint: string, rawUnsignedTxBuffer: Uint8Array) {\n try {\n const res = await fetch(rpcEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: \"1\",\n method: \"getPriorityFeeEstimate\",\n params: [{\n transaction: bs58.encode(rawUnsignedTxBuffer), options: {\n recommended: true\n }\n }]\n })\n });\n const data = await res.json() as { result: { priorityFeeEstimate: number } };\n const fee = data?.result?.priorityFeeEstimate ?? null;\n console.log(\"Got fee from Helius\", fee);\n if (fee != null && fee > 0) {\n return Math.ceil(Number(fee) * 1.2);\n } else {\n console.log(\"No fee from Helius, using default 10000\");\n return Math.ceil(10000 * 1.2);\n }\n } catch (err) {\n console.warn(\"Priority‑fee estimate failed:\", err);\n return Math.ceil(10000 * 1.2);\n }\n}\n\nexport class SolanaKeypairProvider implements AuthProvider {\n private readonly keypair: Keypair;\n\n constructor(\n private readonly networkUrl: string | null = null,\n keypair?: Keypair,\n ) {\n this.keypair = keypair ?? loadKeypairFromEnv();\n }\n\n /* ----------------------------------------------------------- *\n * (Auth stubs – fill in later if needed)\n * ----------------------------------------------------------- */\n async login(): Promise<User | null> { throw new Error('Not implemented'); }\n async restoreSession(): Promise<User | null> { throw new Error('Not implemented'); }\n async logout(): Promise<void> { throw new Error('Not implemented'); }\n\n /* ----------------------------------------------------------- *\n * Sign arbitrary message\n * ----------------------------------------------------------- */\n async signMessage(message: string): Promise<string> {\n const sig = nacl.sign.detached(\n new TextEncoder().encode(message),\n this.keypair.secretKey,\n );\n return Buffer.from(sig).toString('base64');\n }\n\n /* ----------------------------------------------------------- *\n * Sign transaction\n * ----------------------------------------------------------- */\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n (transaction as Transaction).partialSign(this.keypair);\n } else {\n (transaction as VersionedTransaction).sign([this.keypair]);\n }\n return transaction;\n }\n\n /**\n * Signs and submits a Solana transaction to the network.\n *\n * This method handles blockhash and transaction confirmation automatically - you do NOT need to\n * set recentBlockhash or lastValidBlockHeight on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign and submit (Transaction or VersionedTransaction)\n * @param feePayer - Optional fee payer public key. If not provided and the transaction doesn't\n * already have a feePayer set, the keypair's public key will be used.\n * Useful for co-signing scenarios where a different account pays the fees.\n * @returns The transaction signature\n */\n async signAndSubmitTransaction(\n transaction: Transaction | VersionedTransaction,\n feePayer?: anchor.web3.PublicKey\n ): Promise<string> {\n // 1. Get RPC URL and create connection\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n\n // 2. Get fresh blockhash and set it on the transaction before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in (transaction as any).message);\n\n if (isLegacyTransaction) {\n const legacyTx = transaction as Transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n\n // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = feePayer ?? this.keypair.publicKey;\n }\n } else {\n // VersionedTransaction\n const versionedTx = transaction as VersionedTransaction;\n versionedTx.message.recentBlockhash = blockhash;\n // Note: VersionedTransaction feePayer is set in the message at creation time\n // and cannot be modified after creation\n }\n\n // 3. Sign the transaction\n const signedTx = await this.signTransaction(transaction);\n\n // 4. Submit and confirm using shared helper\n const { signature } = await this.submitAndConfirmTransaction(signedTx, connection);\n return signature;\n }\n\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n\n /**\n * Submits a signed transaction and waits for confirmation using polling.\n * Shared by both signAndSubmitTransaction and runTransactionInner.\n */\n private async submitAndConfirmTransaction(\n signedTx: Transaction | VersionedTransaction,\n connection: Connection,\n options?: { fetchTxInfo?: boolean }\n ): Promise<{ signature: string; txInfo: any }> {\n const sig = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n\n // Wait for confirmation using polling\n const startTime = Date.now();\n const timeoutMs = 10 * 1000; // 10 seconds\n\n while (true) {\n const st = await connection.getSignatureStatus(sig);\n if (st?.value?.err) {\n // Transaction confirmed but failed on-chain — fetch logs for a readable error\n const txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n const logMessages = txInfo?.meta?.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(st?.value?.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n if (st?.value?.confirmationStatus === 'confirmed') {\n break;\n }\n\n // Check if we've exceeded the timeout\n if (Date.now() - startTime > timeoutMs) {\n throw new Error(`Transaction confirmation timeout after ${timeoutMs / 1000} seconds`);\n }\n\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n\n // Optionally fetch transaction info\n let txInfo : VersionedTransactionResponse | null = null;\n if (options?.fetchTxInfo) {\n txInfo = await connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n }\n\n return { signature: sig, txInfo };\n }\n\n private getRpcUrl(network?: string): string {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n } else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n } else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL; // default to mainnet\n }\n\n /* ----------------------------------------------------------- *\n * Transaction runner\n * ----------------------------------------------------------- */\n async runTransaction(\n _evm?: EVMTransaction,\n sol?: SolTransaction,\n opts?: SetOptions,\n ): Promise<TransactionResult> {\n if (!sol) throw new Error('Solana transaction data required');\n\n const kp = this.keypair;\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (tx: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in tx && !('message' in tx && 'staticAccountKeys' in (tx as any).message);\n };\n\n const wallet: anchor.Wallet = {\n publicKey: kp.publicKey,\n signTransaction: async (tx: Transaction | VersionedTransaction) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n } else {\n (tx as VersionedTransaction).sign([kp]);\n }\n return tx;\n },\n signAllTransactions: async (txs: (Transaction | VersionedTransaction)[]) =>\n txs.map((t) => {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(t)) {\n (t as Transaction).partialSign(kp);\n } else {\n (t as VersionedTransaction).sign([kp]);\n }\n return t;\n }),\n } as unknown as anchor.Wallet;\n\n /* de-dupe remaining accounts */\n const deduped = (() => {\n const fin: ReturnType<typeof convertRemainingAccounts> = [];\n for (const acc of convertRemainingAccounts(\n sol.txArgs[0].remainingAccounts,\n )) {\n const ex = fin.find((x) => x.pubkey.equals(acc.pubkey));\n if (ex) {\n ex.isSigner ||= acc.isSigner;\n ex.isWritable ||= acc.isWritable;\n } else fin.push(acc);\n }\n return fin;\n })();\n\n let retries = 0;\n let didPass = false;\n let delay = 1000;\n let toReturn: TransactionResult | null = null;\n let errorMessage = \"\";\n while (retries < 5) {\n try {\n toReturn = await this.runTransactionInner(sol, opts, wallet, kp, deduped);\n didPass = true;\n break;\n } catch (error: any) {\n console.log(\"Error building and sending transaction on retry:\", retries, error);\n await new Promise(resolve => setTimeout(resolve, delay));\n // Exponential backoff\n delay *= 1.5;\n retries++;\n errorMessage = error.message || JSON.stringify(error, null, 2);\n }\n }\n if (!didPass) {\n throw new Error(`Failed to send transaction after 5 retries: ${errorMessage}`);\n }\n return toReturn as TransactionResult;\n }\n\n private async runTransactionInner(sol: SolTransaction, opts: SetOptions | undefined, wallet: anchor.Wallet, kp: Keypair, deduped: ReturnType<typeof convertRemainingAccounts>): Promise<TransactionResult> {\n\n let rpcUrl = this.getRpcUrl(sol.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n\n const anchorProvider = new anchor.AnchorProvider(\n connection,\n wallet,\n anchor.AnchorProvider.defaultOptions(),\n );\n\n const app_id = sol.appId;\n if (!app_id) throw new Error('app_id missing');\n\n // When the server has co-signed a transaction (CPI attestation),\n // deserialize it and just add the wallet signature instead of\n // building from components.\n let tx: Transaction | VersionedTransaction;\n let blockhash: string;\n let lastValidBlockHeight: number;\n\n if (sol.signedTransaction) {\n tx = VersionedTransaction.deserialize(\n Buffer.from(sol.signedTransaction, 'base64')\n );\n const latestBlockhash = await connection.getLatestBlockhash('confirmed');\n blockhash = latestBlockhash.blockhash;\n lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n } else {\n const result = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n sol.preInstructions,\n false,\n sol.additionalLutAddresses,\n );\n tx = result.tx;\n blockhash = result.blockhash;\n lastValidBlockHeight = result.lastValidBlockHeight;\n }\n\n // Helper for duck typing - checks if transaction is legacy Transaction vs VersionedTransaction\n const isLegacyTx = (t: Transaction | VersionedTransaction): boolean => {\n return 'recentBlockhash' in t && !('message' in t && 'staticAccountKeys' in (t as any).message);\n };\n\n // Refresh blockhash and lastValidBlockHeight\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).partialSign(kp);\n (tx as Transaction).recentBlockhash = blockhash;\n (tx as Transaction).lastValidBlockHeight = lastValidBlockHeight;\n (tx as Transaction).feePayer = kp.publicKey;\n } else {\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n\n // 3️⃣ Optional priority‑fee instruction\n\n const rawUnsigned = tx.serialize({ requireAllSignatures: false });\n const microLamports = await fetchPriorityFee(\n connection.rpcEndpoint,\n rawUnsigned\n );\n\n if (microLamports != null) {\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n if (isLegacyTx(tx)) {\n (tx as Transaction).instructions.unshift(\n ComputeBudgetProgram.setComputeUnitPrice({ microLamports })\n );\n (tx as Transaction).partialSign(kp);\n } else {\n // For pre-signed (attestation) transactions, we can't rebuild — skip priority fee\n if (!sol.signedTransaction) {\n // Rebuild the transaction with the new priority fee\n const roundTwo = await buildSetDocumentsTransaction(\n connection,\n sol.txArgs[0].idl,\n anchorProvider,\n kp.publicKey,\n {\n app_id,\n documents: sol.txArgs[0].setDocumentData,\n delete_paths: sol.txArgs[0].deletePaths,\n txData: sol.txArgs[0].txData\n },\n deduped,\n sol.lutKey,\n [ComputeBudgetProgram.setComputeUnitPrice({ microLamports }), ...sol.preInstructions],\n false,\n sol.additionalLutAddresses,\n );\n tx = roundTwo.tx as VersionedTransaction;\n blockhash = roundTwo.blockhash;\n lastValidBlockHeight = roundTwo.lastValidBlockHeight;\n (tx as VersionedTransaction).sign([kp]);\n (tx as VersionedTransaction).message.recentBlockhash = blockhash;\n }\n }\n }\n\n if (opts?.shouldSubmitTx === false) {\n return { signedTransaction: tx, blockNumber: 0, gasUsed: '0', data: '' };\n }\n\n // Submit and confirm using shared helper\n const { signature, txInfo } = await this.submitAndConfirmTransaction(tx, connection, { fetchTxInfo: true });\n\n return {\n transactionSignature: signature,\n blockNumber: txInfo?.slot ?? 0,\n gasUsed: txInfo?.meta?.fee.toString() ?? '0',\n data: txInfo?.meta,\n };\n }\n\n /* ----------------------------------------------------------- */\n async getNativeMethods() {\n return { keypair: this.keypair };\n }\n}\n","import { AuthProvider } from '@pooflabs/core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport * as crypto from 'crypto';\n\n/**\n * Server-side OffchainAuthProvider wrapper for the poofnet environment.\n *\n * For signMessage, this generates a mock signature using SHA-256 hashing.\n * This is used for offchain transaction signing.\n */\nexport class OffchainAuthProvider implements AuthProvider {\n private wrappedProvider: AuthProvider;\n\n constructor(wrappedProvider: AuthProvider) {\n this.wrappedProvider = wrappedProvider;\n }\n\n async login(): Promise<any> {\n return this.wrappedProvider.login();\n }\n\n async logout(): Promise<void> {\n return this.wrappedProvider.logout();\n }\n\n async restoreSession(): Promise<any> {\n return this.wrappedProvider.restoreSession();\n }\n\n async getNativeMethods(): Promise<any> {\n return this.wrappedProvider.getNativeMethods();\n }\n\n async signMessage(message: string): Promise<string> {\n // Delegate to wrapped provider for real signing\n return this.wrappedProvider.signMessage(message);\n }\n\n async signMessageMock(message: string): Promise<string> {\n // Generate mock signature (SHA-256 hash of message, base64 encoded)\n // This is used for offchain transaction signing\n const hash = crypto.createHash('sha256').update(message).digest('base64');\n return hash;\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n /**\n * Sign and submit transaction - not supported in poofnet environment.\n * See the real providers (PhantomWalletProvider, PrivyWalletProvider, SolanaKeypairProvider)\n * for the full implementation with blockhash handling and feePayer support.\n */\n async signAndSubmitTransaction(\n _transaction: Transaction | VersionedTransaction,\n _feePayer?: any\n ): Promise<string> {\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n\n async runTransaction(evmTransactionData?: any, solTransactionData?: any, options?: any): Promise<any> {\n return this.wrappedProvider.runTransaction(evmTransactionData, solTransactionData, options);\n }\n}\n","import { getConfig } from '@pooflabs/core';\nimport { AuthProvider } from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './providers/offchain-auth-provider';\n\nlet currentAuthProvider: AuthProvider | null = null;\n\nexport const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nexport const SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function getAuthProvider(): Promise<AuthProvider> {\n const config = await getConfig();\n\n if (currentAuthProvider) {\n // If provider exists but chain is \"offchain\" and it's not already wrapped, rewrap it\n if (config.chain === \"offchain\" && !(currentAuthProvider instanceof OffchainAuthProvider)) {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n return currentAuthProvider;\n }\n\n currentAuthProvider = await matchAuthProvider(config.rpcUrl ?? null);\n \n // Wrap with OffchainAuthProvider for offchain chain\n if (config.chain === \"offchain\") {\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n\n return currentAuthProvider;\n}\n\nexport async function matchAuthProvider(rpcUrl: string | null): Promise<AuthProvider> {\n return new SolanaKeypairProvider(rpcUrl);\n}","import { AuthProvider } from '@pooflabs/core';\nimport { getAuthProvider } from './auth';\nimport { init as configInit, ClientConfig } from '@pooflabs/core';\n\nlet authProviderInstance: AuthProvider | null = null;\n\nconst SOLANA_DEVNET_RPC_URL = \"https://api.devnet.solana.com\";\nconst SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SURFNET_RPC_URL = \"https://surfpool.fly.dev\";\n\nexport async function init(newConfig: Partial<ClientConfig>): Promise<void> {\n // Initialize config first so getAuthProvider can access it\n // Server-side skips backend init since it already has all needed config\n await configInit({ ...newConfig, isServer: true, skipBackendInit: true });\n\n // Get the auth provider (which will wrap it if chain is \"offchain\")\n authProviderInstance = await getAuthProvider();\n\n // Update config with the wrapped provider\n await configInit({ ...newConfig, authProvider: authProviderInstance, isServer: true, skipBackendInit: true });\n}","import { getIdToken as getIdTokenCore } from '@pooflabs/core';\n\n// Wrapper for getIdToken - passes isServer=true for server-side usage\nexport async function getIdToken(): Promise<string | null> {\n return getIdTokenCore(true);\n}\n","import { Keypair } from '@solana/web3.js';\nimport { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport {\n getConfig,\n get as coreGet,\n getMany as coreGetMany,\n set as coreSet,\n setMany as coreSetMany,\n setFile as coreSetFile,\n getFiles as coreGetFiles,\n runQuery as coreRunQuery,\n runQueryMany as coreRunQueryMany,\n runExpression as coreRunExpression,\n runExpressionMany as coreRunExpressionMany,\n count as coreCount,\n aggregate as coreAggregate,\n ServerSessionManager,\n} from '@pooflabs/core';\nimport type {\n AuthProvider,\n SetOptions,\n GetOptions,\n GetManyResult,\n RunQueryOptions,\n RunExpressionOptions,\n RunExpressionResult,\n CountOptions,\n AggregateOptions,\n AggregateOperation,\n AggregateResult,\n RequestOverrides,\n} from '@pooflabs/core';\nimport { SolanaKeypairProvider } from './auth/providers/solana-keypair-provider';\nimport { OffchainAuthProvider } from './auth/providers/offchain-auth-provider';\n\n/* ------------------------------------------------------------------ */\n/* Keypair parsing */\n/* ------------------------------------------------------------------ */\nfunction parseKeypair(secret: string): Keypair {\n const trimmed = secret.trim();\n try {\n const secretKey = trimmed.startsWith('[')\n ? Uint8Array.from(JSON.parse(trimmed))\n : bs58.decode(trimmed);\n return Keypair.fromSecretKey(secretKey);\n } catch {\n throw new Error('Invalid keypair: must be base58 or JSON array.');\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletClient */\n/* ------------------------------------------------------------------ */\nexport class WalletClient {\n private readonly provider: AuthProvider;\n private readonly sessionManager: ServerSessionManager;\n public readonly address: string;\n\n constructor(\n provider: AuthProvider,\n sessionManager: ServerSessionManager,\n address: string,\n ) {\n this.provider = provider;\n this.sessionManager = sessionManager;\n this.address = address;\n }\n\n /* ---- Auth override helpers ---- */\n\n private buildOverrides(): Pick<RequestOverrides, 'authProvider' | '_getAuthHeaders' | '_clearAuth' | '_walletAddress'> {\n return {\n authProvider: this.provider,\n _getAuthHeaders: async () => {\n const s = await this.sessionManager.getSession();\n return { Authorization: `Bearer ${s.idToken}` };\n },\n _clearAuth: async () => {\n this.sessionManager.clearSession();\n },\n _walletAddress: this.address,\n };\n }\n\n /** Strip Authorization from caller headers to prevent overriding wallet token */\n private sanitizeHeaders(headers?: Record<string, string>): Record<string, string> | undefined {\n if (!headers) return undefined;\n const { Authorization, authorization, ...rest } = headers as Record<string, string>;\n return Object.keys(rest).length > 0 ? rest : undefined;\n }\n\n private mergeSetOverrides(opts?: SetOptions): SetOptions {\n const ovr = this.buildOverrides();\n return {\n ...opts,\n _overrides: {\n ...opts?._overrides,\n headers: this.sanitizeHeaders(opts?._overrides?.headers),\n authProvider: ovr.authProvider,\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n },\n };\n }\n\n private mergeReadOverrides(existing?: RequestOverrides): RequestOverrides {\n const ovr = this.buildOverrides();\n return {\n ...existing,\n headers: this.sanitizeHeaders(existing?.headers),\n _getAuthHeaders: ovr._getAuthHeaders,\n _clearAuth: ovr._clearAuth,\n _walletAddress: ovr._walletAddress,\n };\n }\n\n /* ---- Data operations ---- */\n\n async set(path: string, document: any, options?: SetOptions): Promise<any> {\n return coreSet(path, document, this.mergeSetOverrides(options));\n }\n\n async setMany(many: { path: string; document: any }[], options?: SetOptions): Promise<any> {\n return coreSetMany(many, this.mergeSetOverrides(options));\n }\n\n async setFile(path: string, file: File | null, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreSetFile(path, file, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async get(path: string, opts?: GetOptions): Promise<any> {\n return coreGet(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async getMany(paths: string[], opts?: { bypassCache?: boolean }): Promise<GetManyResult[]> {\n return coreGetMany(paths, { ...opts, _overrides: this.mergeReadOverrides() });\n }\n\n async getFiles(path: string, options?: { _overrides?: RequestOverrides }): Promise<any> {\n return coreGetFiles(path, { _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runQuery(absolutePath: string, queryName: string, queryArgs: any, opts?: RunQueryOptions): Promise<any> {\n return coreRunQuery(absolutePath, queryName, queryArgs, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runQueryMany(many: { absolutePath: string; queryName: string; queryArgs: any }[], opts?: RunQueryOptions): Promise<any> {\n return coreRunQueryMany(many, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async runExpression(expression: string, queryArgs: any, options?: RunExpressionOptions): Promise<RunExpressionResult> {\n return coreRunExpression(expression, queryArgs, { ...options, _overrides: this.mergeReadOverrides(options?._overrides) });\n }\n\n async runExpressionMany(many: { expression: string; queryArgs: any; returnType?: 'Bool' | 'String' | 'Int' | 'UInt'; _overrides?: RequestOverrides }[]): Promise<RunExpressionResult[]> {\n const ovr = this.mergeReadOverrides();\n return coreRunExpressionMany(many.map(m => ({ ...m, _overrides: ovr })));\n }\n\n async count(path: string, opts: CountOptions = {}): Promise<AggregateResult> {\n return coreCount(path, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n async aggregate(path: string, operation: AggregateOperation, opts: AggregateOptions = {}): Promise<AggregateResult> {\n return coreAggregate(path, operation, { ...opts, _overrides: this.mergeReadOverrides(opts?._overrides) });\n }\n\n /* ---- Signing operations (use provider directly) ---- */\n\n async signMessage(message: string): Promise<string> {\n return this.provider.signMessage(message);\n }\n\n async signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction> {\n return this.provider.signTransaction(transaction);\n }\n\n async signAndSubmitTransaction(transaction: Transaction | VersionedTransaction, feePayer?: PublicKey): Promise<string> {\n return this.provider.signAndSubmitTransaction(transaction, feePayer);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Factory */\n/* ------------------------------------------------------------------ */\nexport interface CreateWalletClientOptions {\n /** Base58 or JSON array secret key */\n keypair: string;\n}\n\n/**\n * Create a self-contained wallet client bound to a specific keypair.\n * Each client has its own auth session — no global state is mutated.\n *\n * @example\n * ```ts\n * const vault = await createWalletClient({ keypair: process.env.VAULT_KEY });\n * await vault.set('markets/123', data);\n * ```\n */\nexport async function createWalletClient(opts: CreateWalletClientOptions): Promise<WalletClient> {\n const kp = parseKeypair(opts.keypair);\n const config = await getConfig();\n\n let provider: AuthProvider = new SolanaKeypairProvider(config.rpcUrl ?? null, kp);\n if (config.chain === 'offchain') {\n provider = new OffchainAuthProvider(provider);\n }\n\n const sessionManager = ServerSessionManager.forKeypair(kp);\n // Eagerly authenticate so failures surface immediately\n await sessionManager.getSession();\n\n return new WalletClient(provider, sessionManager, kp.publicKey.toBase58());\n}\n"],"names":["configInit","getIdTokenCore","coreSet","coreSetMany","coreSetFile","coreGet","coreGetMany","coreGetFiles","coreRunQuery","coreRunQueryMany","coreRunExpression","coreRunExpressionMany","coreCount","coreAggregate"],"mappings":"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"}
|
package/dist/wallet-client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js';
|
|
2
2
|
import { ServerSessionManager } from '@pooflabs/core';
|
|
3
|
-
import type { AuthProvider, SetOptions, GetOptions, RunQueryOptions, RunExpressionOptions, RunExpressionResult, CountOptions, AggregateOptions, AggregateOperation, AggregateResult, RequestOverrides } from '@pooflabs/core';
|
|
3
|
+
import type { AuthProvider, SetOptions, GetOptions, GetManyResult, RunQueryOptions, RunExpressionOptions, RunExpressionResult, CountOptions, AggregateOptions, AggregateOperation, AggregateResult, RequestOverrides } from '@pooflabs/core';
|
|
4
4
|
export declare class WalletClient {
|
|
5
5
|
private readonly provider;
|
|
6
6
|
private readonly sessionManager;
|
|
@@ -20,6 +20,9 @@ export declare class WalletClient {
|
|
|
20
20
|
_overrides?: RequestOverrides;
|
|
21
21
|
}): Promise<any>;
|
|
22
22
|
get(path: string, opts?: GetOptions): Promise<any>;
|
|
23
|
+
getMany(paths: string[], opts?: {
|
|
24
|
+
bypassCache?: boolean;
|
|
25
|
+
}): Promise<GetManyResult[]>;
|
|
23
26
|
getFiles(path: string, options?: {
|
|
24
27
|
_overrides?: RequestOverrides;
|
|
25
28
|
}): Promise<any>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pooflabs/server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"description": "Server SDK for Poof API - Node.js/Backend implementation",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@coral-xyz/anchor": "^0.31.1",
|
|
49
|
-
"@pooflabs/core": "0.0.
|
|
49
|
+
"@pooflabs/core": "^0.0.42",
|
|
50
50
|
"@solana/spl-token": "^0.4.12",
|
|
51
51
|
"@solana/web3.js": "^1.69.0",
|
|
52
52
|
"axios": "^1.9.0",
|