@bounded-sh/core 0.0.57 → 0.0.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/config.d.ts +8 -0
- package/dist/{index-B30-XpaX.js → index-BIdD2yUB.js} +957 -312
- package/dist/index-BIdD2yUB.js.map +1 -0
- package/dist/{index-DYbzK8YT.mjs → index-BQ6e4MeP.mjs} +952 -313
- package/dist/index-BQ6e4MeP.mjs.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{realtime-store-BpQsQYhl.js → realtime-store-Bz4Ob6K6.js} +2 -2
- package/dist/{realtime-store-BpQsQYhl.js.map → realtime-store-Bz4Ob6K6.js.map} +1 -1
- package/dist/{realtime-store-BSuV-Vyr.mjs → realtime-store-DKngqviG.mjs} +2 -2
- package/dist/{realtime-store-BSuV-Vyr.mjs.map → realtime-store-DKngqviG.mjs.map} +1 -1
- package/dist/{solana-message-DKOPPJwk.js → solana-message-B0NoE4nC.js} +2 -2
- package/dist/{solana-message-DKOPPJwk.js.map → solana-message-B0NoE4nC.js.map} +1 -1
- package/dist/{solana-message-C2_VvNX7.mjs → solana-message-QUfJi1Qm.mjs} +2 -2
- package/dist/{solana-message-C2_VvNX7.mjs.map → solana-message-QUfJi1Qm.mjs.map} +1 -1
- package/dist/{solana-operations-CuYFYlyN.mjs → solana-operations-B2Oy9T7D.mjs} +2 -2
- package/dist/{solana-operations-CuYFYlyN.mjs.map → solana-operations-B2Oy9T7D.mjs.map} +1 -1
- package/dist/{solana-operations-BOKHbEuy.js → solana-operations-ngqIkN9W.js} +2 -2
- package/dist/{solana-operations-BOKHbEuy.js.map → solana-operations-ngqIkN9W.js.map} +1 -1
- package/dist/utils/auth-token-freshness.d.ts +79 -0
- package/dist/utils/rn-session-manager.d.ts +19 -2
- package/dist/utils/session-events.d.ts +31 -0
- package/dist/utils/session-mutation.d.ts +124 -0
- package/dist/utils/utils.d.ts +18 -1
- package/dist/utils/web-session-manager.d.ts +43 -2
- package/package.json +2 -2
- package/dist/index-B30-XpaX.js.map +0 -1
- package/dist/index-DYbzK8YT.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-operations-CuYFYlyN.mjs","sources":["../.rollup-tmp/client/solana-operations.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { getConfig } from './config';\nconst BOUNDED_PROGRAM_MAINNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst BOUNDED_PROGRAM_DEVNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst COMPUTE_BUDGET_PROGRAM = 'ComputeBudget111111111111111111111111111111';\nconst SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';\nconst ALLOWED_SERVER_TX_PROGRAMS = new Set([\n BOUNDED_PROGRAM_MAINNET,\n BOUNDED_PROGRAM_DEVNET,\n COMPUTE_BUDGET_PROGRAM,\n SYSTEM_PROGRAM_ID,\n]);\n// Canonical set_documents discriminator (single wire format: ra_indices Vec<u8>).\nconst SET_DOCUMENTS_DISCRIMINATOR = '79,46,72,73,24,79,66,245';\nconst ALLOWED_BOUNDED_SET_DISCRIMINATORS = new Set([\n SET_DOCUMENTS_DISCRIMINATOR,\n]);\nclass BorshCursor {\n constructor(data, offset, label) {\n this.data = data;\n this.offset = offset;\n this.label = label;\n }\n requireBytes(length, field) {\n if (this.offset + length > this.data.length) {\n throw new Error(`${this.label} has malformed Bounded instruction data while reading ${field}`);\n }\n }\n readU8(field) { this.requireBytes(1, field); return this.data[this.offset++]; }\n readU32(field) {\n this.requireBytes(4, field);\n const value = this.data[this.offset] | (this.data[this.offset + 1] << 8) |\n (this.data[this.offset + 2] << 16) | (this.data[this.offset + 3] << 24);\n this.offset += 4;\n return value >>> 0;\n }\n skip(length, field) { this.requireBytes(length, field); this.offset += length; }\n readString(field) {\n const length = this.readU32(`${field} length`);\n this.requireBytes(length, field);\n const raw = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return Buffer.from(raw).toString('utf8');\n }\n skipBytes(field) { this.skip(this.readU32(`${field} length`), field); }\n isAtEnd() { return this.offset === this.data.length; }\n}\nfunction skipBoundedFieldValue(cursor) {\n const option = cursor.readU8('operation value option');\n if (option === 0)\n return;\n if (option !== 1)\n throw new Error('Server transaction has malformed Bounded field value option');\n const variant = cursor.readU8('operation value variant');\n if (variant === 0 || variant === 1)\n cursor.skip(8, 'operation numeric value');\n else if (variant === 2)\n cursor.skip(1, 'operation bool value');\n else if (variant === 3)\n cursor.readString('operation string value');\n else if (variant === 4)\n cursor.skip(32, 'operation address value');\n else\n throw new Error(`Server transaction has unsupported Bounded field value variant: ${variant}`);\n}\nfunction normalizeOnchainPath(path) {\n let normalized = path.startsWith('/') ? path.slice(1) : path;\n if (normalized.endsWith('*') && normalized.length > 1)\n normalized = normalized.slice(0, -1);\n if (normalized.endsWith('/'))\n normalized = normalized.slice(0, -1);\n return normalized;\n}\nfunction parseBoundedSetDocumentsInstruction(data, label) {\n if (data.length < 8)\n throw new Error(`${label} has malformed Bounded instruction data`);\n const discriminator = Array.from(data.slice(0, 8)).join(',');\n if (!ALLOWED_BOUNDED_SET_DISCRIMINATORS.has(discriminator)) {\n throw new Error(`${label} contains unsupported Bounded instruction`);\n }\n const cursor = new BorshCursor(data, 8, label);\n const appId = cursor.readString('appId');\n const documentPaths = [];\n const documentCount = cursor.readU32('documents length');\n for (let i = 0; i < documentCount; i++) {\n documentPaths.push(normalizeOnchainPath(cursor.readString('document path')));\n const operationCount = cursor.readU32('operations length');\n for (let j = 0; j < operationCount; j++) {\n cursor.readString('operation key');\n skipBoundedFieldValue(cursor);\n cursor.skip(1, 'operation kind');\n }\n }\n const deletePaths = [];\n const deleteCount = cursor.readU32('delete paths length');\n for (let i = 0; i < deleteCount; i++)\n deletePaths.push(normalizeOnchainPath(cursor.readString('delete path')));\n const txDataCount = cursor.readU32('txData length');\n for (let i = 0; i < txDataCount; i++) {\n cursor.readString('txData plugin function key');\n cursor.skipBytes('txData bytes');\n cursor.skipBytes('txData raIndices');\n }\n const simulate = cursor.readU8('simulate');\n if (simulate !== 0 && simulate !== 1)\n throw new Error(`${label} has malformed Bounded simulate flag`);\n if (!cursor.isAtEnd())\n throw new Error(`${label} has trailing Bounded instruction data`);\n return { appId, documentPaths, deletePaths };\n}\nfunction assertSamePathSet(label, expectedPaths, actualPaths) {\n const expected = new Set(expectedPaths.map(normalizeOnchainPath).filter(Boolean));\n const actual = new Set(actualPaths.map(normalizeOnchainPath).filter(Boolean));\n const missing = [...expected].filter(path => !actual.has(path));\n const extra = [...actual].filter(path => !expected.has(path));\n if (missing.length || extra.length) {\n const details = [missing.length ? `missing paths: ${missing.join(', ')}` : '', extra.length ? `unexpected paths: ${extra.join(', ')}` : '']\n .filter(Boolean).join('; ');\n throw new Error(`${label} Bounded instruction paths do not match requested write paths (${details})`);\n }\n}\nfunction deserializeAndValidateServerTransaction(serializedTransaction, VersionedTransactionClass, options) {\n var _a;\n const transaction = VersionedTransactionClass.deserialize(Buffer.from(serializedTransaction, 'base64'));\n const { label, expectedAppId, expectedWritePaths } = options;\n const accountKeys = transaction.message.staticAccountKeys;\n let boundedInstructionCount = 0;\n const actualWritePaths = [];\n for (const ix of transaction.message.compiledInstructions) {\n if (ix.programIdIndex >= accountKeys.length)\n throw new Error(`${label} has program ID in lookup table (not allowed)`);\n const programId = accountKeys[ix.programIdIndex].toBase58();\n if (!ALLOWED_SERVER_TX_PROGRAMS.has(programId))\n throw new Error(`${label} contains unauthorized program: ${programId}`);\n const data = ix.data instanceof Uint8Array ? ix.data : Buffer.from((_a = ix.data) !== null && _a !== void 0 ? _a : []);\n if (programId === SYSTEM_PROGRAM_ID)\n throw new Error(`${label} contains unauthorized System Program instruction`);\n if (programId === BOUNDED_PROGRAM_MAINNET || programId === BOUNDED_PROGRAM_DEVNET) {\n boundedInstructionCount++;\n const parsed = parseBoundedSetDocumentsInstruction(data, label);\n if (parsed.appId !== expectedAppId)\n throw new Error(`${label} Bounded instruction appId does not match configured appId`);\n actualWritePaths.push(...parsed.documentPaths, ...parsed.deletePaths);\n }\n }\n if (boundedInstructionCount !== 1)\n throw new Error(`${label} must contain exactly one Bounded set-documents instruction`);\n assertSamePathSet(label, expectedWritePaths, actualWritePaths);\n return transaction;\n}\nfunction isHexString(value) {\n if (typeof value !== 'string')\n return false;\n const testValue = value.startsWith('-') ? value.slice(1) : value;\n return /^(0x)?[0-9a-fA-F]+$/.test(testValue);\n}\nexport async function handleSolanaTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const chainSdk = await import(\"@solana/web3.js\");\n const { PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } = chainSdk;\n const solTransactionData = {\n remainingAccounts: tx.remainingAccounts,\n setDocumentData: tx.transactionArgs.setDocumentData,\n deletePaths: tx.transactionArgs.deletePaths,\n idl: tx.idl,\n txData: (_b = (_a = tx.txData) === null || _a === void 0 ? void 0 : _a.map((txData) => ({\n pluginFunctionKey: txData.pluginFunctionKey,\n txData: Buffer.from(txData.txData),\n raIndices: (() => {\n const raw = txData.raIndices;\n if (raw == null)\n return Buffer.alloc(0);\n if (Buffer.isBuffer(raw))\n return raw;\n if (raw instanceof Uint8Array)\n return Buffer.from(raw);\n const arrayLike = Array.isArray(raw) ? raw :\n raw && typeof raw === 'object' && Array.isArray(raw.data) ? raw.data :\n (() => { throw new Error(`raIndices has unexpected shape: ${typeof raw}`); })();\n return Buffer.from(arrayLike.map((raIndex) => {\n const value = isHexString(raIndex) ? parseInt(raIndex, 16) : Number(raIndex);\n if (!Number.isInteger(value) || value < 0 || value > 255) {\n throw new Error(`raIndex ${raIndex} is not a valid u8 (must be integer in 0..255)`);\n }\n return value;\n }));\n })(),\n }))) !== null && _b !== void 0 ? _b : [],\n };\n const config = await getConfig();\n if (tx.signedTransaction) {\n deserializeAndValidateServerTransaction(tx.signedTransaction, VersionedTransaction, {\n label: 'Server signedTransaction', expectedAppId: config.appId, expectedWritePaths,\n });\n }\n const solTransaction = {\n appId: config.appId,\n txArgs: [solTransactionData],\n lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,\n additionalLutAddresses: tx.additionalLutAddresses,\n network: tx.network,\n preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix, index) => {\n var _a;\n const keys = (_a = ix.keys) === null || _a === void 0 ? void 0 : _a.map((key) => ({ pubkey: new PublicKey(key.pubkey), isSigner: key.isSigner, isWritable: key.isWritable }));\n const programId = ix.programId === SYSTEM_PROGRAM_ID ? SystemProgram.programId : new PublicKey(ix.programId);\n const instruction = new TransactionInstruction({ keys, programId, data: Buffer.from(ix.data) });\n if (instruction.programId.equals(SystemProgram.programId)) {\n throw new Error(`Server preInstruction[${index}] contains unauthorized System Program preInstruction`);\n }\n return instruction;\n })) !== null && _e !== void 0 ? _e : [],\n signedTransaction: tx.signedTransaction,\n };\n return authProvider.runTransaction(undefined, solTransaction, options);\n}\nexport async function handlePreBuiltTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const { Connection, VersionedTransaction } = await import(\"@solana/web3.js\");\n const config = await getConfig();\n const transaction = deserializeAndValidateServerTransaction(tx.serializedTransaction, VersionedTransaction, {\n label: 'Pre-built transaction', expectedAppId: config.appId, expectedWritePaths,\n });\n const shouldSubmit = (options === null || options === void 0 ? void 0 : options.shouldSubmitTx) !== false;\n const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n if (shouldSubmit && !rpcUrl)\n throw new Error(`Pre-built Solana transaction submission requires init({ rpcUrl }) for ${tx.network}`);\n const signedTx = await authProvider.signTransaction(transaction);\n const rawTx = signedTx.serialize();\n if (!shouldSubmit) {\n return { transactionSignature: '', signedTransaction: Buffer.from(rawTx).toString('base64'), blockNumber: 0, gasUsed: '0' };\n }\n const connection = new Connection(rpcUrl, 'confirmed');\n const signature = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\n const confirmation = await connection.confirmTransaction({\n signature, blockhash: tx.blockhash, lastValidBlockHeight: tx.lastValidBlockHeight,\n }, 'confirmed');\n // #310: \"confirmed\" only means the network recorded the transaction, not that it\n // succeeded - a landed-but-failed transaction carries an err. Report it as a failure\n // (with on-chain logs) instead of a fake success, mirroring the server keypair provider.\n if ((_b = confirmation.value) === null || _b === void 0 ? void 0 : _b.err) {\n const txInfo = await connection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed',\n });\n const logMessages = (_c = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _c === void 0 ? void 0 : _c.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(confirmation.value.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n return {\n transactionSignature: signature,\n signedTransaction: Buffer.from(rawTx).toString('base64'),\n blockNumber: (_e = (_d = confirmation.context) === null || _d === void 0 ? void 0 : _d.slot) !== null && _e !== void 0 ? _e : 0,\n gasUsed: '0',\n };\n}\n"],"names":["Buffer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solana-operations-B2Oy9T7D.mjs","sources":["../.rollup-tmp/client/solana-operations.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { getConfig } from './config';\nconst BOUNDED_PROGRAM_MAINNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst BOUNDED_PROGRAM_DEVNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst COMPUTE_BUDGET_PROGRAM = 'ComputeBudget111111111111111111111111111111';\nconst SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';\nconst ALLOWED_SERVER_TX_PROGRAMS = new Set([\n BOUNDED_PROGRAM_MAINNET,\n BOUNDED_PROGRAM_DEVNET,\n COMPUTE_BUDGET_PROGRAM,\n SYSTEM_PROGRAM_ID,\n]);\n// Canonical set_documents discriminator (single wire format: ra_indices Vec<u8>).\nconst SET_DOCUMENTS_DISCRIMINATOR = '79,46,72,73,24,79,66,245';\nconst ALLOWED_BOUNDED_SET_DISCRIMINATORS = new Set([\n SET_DOCUMENTS_DISCRIMINATOR,\n]);\nclass BorshCursor {\n constructor(data, offset, label) {\n this.data = data;\n this.offset = offset;\n this.label = label;\n }\n requireBytes(length, field) {\n if (this.offset + length > this.data.length) {\n throw new Error(`${this.label} has malformed Bounded instruction data while reading ${field}`);\n }\n }\n readU8(field) { this.requireBytes(1, field); return this.data[this.offset++]; }\n readU32(field) {\n this.requireBytes(4, field);\n const value = this.data[this.offset] | (this.data[this.offset + 1] << 8) |\n (this.data[this.offset + 2] << 16) | (this.data[this.offset + 3] << 24);\n this.offset += 4;\n return value >>> 0;\n }\n skip(length, field) { this.requireBytes(length, field); this.offset += length; }\n readString(field) {\n const length = this.readU32(`${field} length`);\n this.requireBytes(length, field);\n const raw = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return Buffer.from(raw).toString('utf8');\n }\n skipBytes(field) { this.skip(this.readU32(`${field} length`), field); }\n isAtEnd() { return this.offset === this.data.length; }\n}\nfunction skipBoundedFieldValue(cursor) {\n const option = cursor.readU8('operation value option');\n if (option === 0)\n return;\n if (option !== 1)\n throw new Error('Server transaction has malformed Bounded field value option');\n const variant = cursor.readU8('operation value variant');\n if (variant === 0 || variant === 1)\n cursor.skip(8, 'operation numeric value');\n else if (variant === 2)\n cursor.skip(1, 'operation bool value');\n else if (variant === 3)\n cursor.readString('operation string value');\n else if (variant === 4)\n cursor.skip(32, 'operation address value');\n else\n throw new Error(`Server transaction has unsupported Bounded field value variant: ${variant}`);\n}\nfunction normalizeOnchainPath(path) {\n let normalized = path.startsWith('/') ? path.slice(1) : path;\n if (normalized.endsWith('*') && normalized.length > 1)\n normalized = normalized.slice(0, -1);\n if (normalized.endsWith('/'))\n normalized = normalized.slice(0, -1);\n return normalized;\n}\nfunction parseBoundedSetDocumentsInstruction(data, label) {\n if (data.length < 8)\n throw new Error(`${label} has malformed Bounded instruction data`);\n const discriminator = Array.from(data.slice(0, 8)).join(',');\n if (!ALLOWED_BOUNDED_SET_DISCRIMINATORS.has(discriminator)) {\n throw new Error(`${label} contains unsupported Bounded instruction`);\n }\n const cursor = new BorshCursor(data, 8, label);\n const appId = cursor.readString('appId');\n const documentPaths = [];\n const documentCount = cursor.readU32('documents length');\n for (let i = 0; i < documentCount; i++) {\n documentPaths.push(normalizeOnchainPath(cursor.readString('document path')));\n const operationCount = cursor.readU32('operations length');\n for (let j = 0; j < operationCount; j++) {\n cursor.readString('operation key');\n skipBoundedFieldValue(cursor);\n cursor.skip(1, 'operation kind');\n }\n }\n const deletePaths = [];\n const deleteCount = cursor.readU32('delete paths length');\n for (let i = 0; i < deleteCount; i++)\n deletePaths.push(normalizeOnchainPath(cursor.readString('delete path')));\n const txDataCount = cursor.readU32('txData length');\n for (let i = 0; i < txDataCount; i++) {\n cursor.readString('txData plugin function key');\n cursor.skipBytes('txData bytes');\n cursor.skipBytes('txData raIndices');\n }\n const simulate = cursor.readU8('simulate');\n if (simulate !== 0 && simulate !== 1)\n throw new Error(`${label} has malformed Bounded simulate flag`);\n if (!cursor.isAtEnd())\n throw new Error(`${label} has trailing Bounded instruction data`);\n return { appId, documentPaths, deletePaths };\n}\nfunction assertSamePathSet(label, expectedPaths, actualPaths) {\n const expected = new Set(expectedPaths.map(normalizeOnchainPath).filter(Boolean));\n const actual = new Set(actualPaths.map(normalizeOnchainPath).filter(Boolean));\n const missing = [...expected].filter(path => !actual.has(path));\n const extra = [...actual].filter(path => !expected.has(path));\n if (missing.length || extra.length) {\n const details = [missing.length ? `missing paths: ${missing.join(', ')}` : '', extra.length ? `unexpected paths: ${extra.join(', ')}` : '']\n .filter(Boolean).join('; ');\n throw new Error(`${label} Bounded instruction paths do not match requested write paths (${details})`);\n }\n}\nfunction deserializeAndValidateServerTransaction(serializedTransaction, VersionedTransactionClass, options) {\n var _a;\n const transaction = VersionedTransactionClass.deserialize(Buffer.from(serializedTransaction, 'base64'));\n const { label, expectedAppId, expectedWritePaths } = options;\n const accountKeys = transaction.message.staticAccountKeys;\n let boundedInstructionCount = 0;\n const actualWritePaths = [];\n for (const ix of transaction.message.compiledInstructions) {\n if (ix.programIdIndex >= accountKeys.length)\n throw new Error(`${label} has program ID in lookup table (not allowed)`);\n const programId = accountKeys[ix.programIdIndex].toBase58();\n if (!ALLOWED_SERVER_TX_PROGRAMS.has(programId))\n throw new Error(`${label} contains unauthorized program: ${programId}`);\n const data = ix.data instanceof Uint8Array ? ix.data : Buffer.from((_a = ix.data) !== null && _a !== void 0 ? _a : []);\n if (programId === SYSTEM_PROGRAM_ID)\n throw new Error(`${label} contains unauthorized System Program instruction`);\n if (programId === BOUNDED_PROGRAM_MAINNET || programId === BOUNDED_PROGRAM_DEVNET) {\n boundedInstructionCount++;\n const parsed = parseBoundedSetDocumentsInstruction(data, label);\n if (parsed.appId !== expectedAppId)\n throw new Error(`${label} Bounded instruction appId does not match configured appId`);\n actualWritePaths.push(...parsed.documentPaths, ...parsed.deletePaths);\n }\n }\n if (boundedInstructionCount !== 1)\n throw new Error(`${label} must contain exactly one Bounded set-documents instruction`);\n assertSamePathSet(label, expectedWritePaths, actualWritePaths);\n return transaction;\n}\nfunction isHexString(value) {\n if (typeof value !== 'string')\n return false;\n const testValue = value.startsWith('-') ? value.slice(1) : value;\n return /^(0x)?[0-9a-fA-F]+$/.test(testValue);\n}\nexport async function handleSolanaTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const chainSdk = await import(\"@solana/web3.js\");\n const { PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } = chainSdk;\n const solTransactionData = {\n remainingAccounts: tx.remainingAccounts,\n setDocumentData: tx.transactionArgs.setDocumentData,\n deletePaths: tx.transactionArgs.deletePaths,\n idl: tx.idl,\n txData: (_b = (_a = tx.txData) === null || _a === void 0 ? void 0 : _a.map((txData) => ({\n pluginFunctionKey: txData.pluginFunctionKey,\n txData: Buffer.from(txData.txData),\n raIndices: (() => {\n const raw = txData.raIndices;\n if (raw == null)\n return Buffer.alloc(0);\n if (Buffer.isBuffer(raw))\n return raw;\n if (raw instanceof Uint8Array)\n return Buffer.from(raw);\n const arrayLike = Array.isArray(raw) ? raw :\n raw && typeof raw === 'object' && Array.isArray(raw.data) ? raw.data :\n (() => { throw new Error(`raIndices has unexpected shape: ${typeof raw}`); })();\n return Buffer.from(arrayLike.map((raIndex) => {\n const value = isHexString(raIndex) ? parseInt(raIndex, 16) : Number(raIndex);\n if (!Number.isInteger(value) || value < 0 || value > 255) {\n throw new Error(`raIndex ${raIndex} is not a valid u8 (must be integer in 0..255)`);\n }\n return value;\n }));\n })(),\n }))) !== null && _b !== void 0 ? _b : [],\n };\n const config = await getConfig();\n if (tx.signedTransaction) {\n deserializeAndValidateServerTransaction(tx.signedTransaction, VersionedTransaction, {\n label: 'Server signedTransaction', expectedAppId: config.appId, expectedWritePaths,\n });\n }\n const solTransaction = {\n appId: config.appId,\n txArgs: [solTransactionData],\n lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,\n additionalLutAddresses: tx.additionalLutAddresses,\n network: tx.network,\n preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix, index) => {\n var _a;\n const keys = (_a = ix.keys) === null || _a === void 0 ? void 0 : _a.map((key) => ({ pubkey: new PublicKey(key.pubkey), isSigner: key.isSigner, isWritable: key.isWritable }));\n const programId = ix.programId === SYSTEM_PROGRAM_ID ? SystemProgram.programId : new PublicKey(ix.programId);\n const instruction = new TransactionInstruction({ keys, programId, data: Buffer.from(ix.data) });\n if (instruction.programId.equals(SystemProgram.programId)) {\n throw new Error(`Server preInstruction[${index}] contains unauthorized System Program preInstruction`);\n }\n return instruction;\n })) !== null && _e !== void 0 ? _e : [],\n signedTransaction: tx.signedTransaction,\n };\n return authProvider.runTransaction(undefined, solTransaction, options);\n}\nexport async function handlePreBuiltTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const { Connection, VersionedTransaction } = await import(\"@solana/web3.js\");\n const config = await getConfig();\n const transaction = deserializeAndValidateServerTransaction(tx.serializedTransaction, VersionedTransaction, {\n label: 'Pre-built transaction', expectedAppId: config.appId, expectedWritePaths,\n });\n const shouldSubmit = (options === null || options === void 0 ? void 0 : options.shouldSubmitTx) !== false;\n const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n if (shouldSubmit && !rpcUrl)\n throw new Error(`Pre-built Solana transaction submission requires init({ rpcUrl }) for ${tx.network}`);\n const signedTx = await authProvider.signTransaction(transaction);\n const rawTx = signedTx.serialize();\n if (!shouldSubmit) {\n return { transactionSignature: '', signedTransaction: Buffer.from(rawTx).toString('base64'), blockNumber: 0, gasUsed: '0' };\n }\n const connection = new Connection(rpcUrl, 'confirmed');\n const signature = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\n const confirmation = await connection.confirmTransaction({\n signature, blockhash: tx.blockhash, lastValidBlockHeight: tx.lastValidBlockHeight,\n }, 'confirmed');\n // #310: \"confirmed\" only means the network recorded the transaction, not that it\n // succeeded - a landed-but-failed transaction carries an err. Report it as a failure\n // (with on-chain logs) instead of a fake success, mirroring the server keypair provider.\n if ((_b = confirmation.value) === null || _b === void 0 ? void 0 : _b.err) {\n const txInfo = await connection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed',\n });\n const logMessages = (_c = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _c === void 0 ? void 0 : _c.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(confirmation.value.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n return {\n transactionSignature: signature,\n signedTransaction: Buffer.from(rawTx).toString('base64'),\n blockNumber: (_e = (_d = confirmation.context) === null || _d === void 0 ? void 0 : _d.slot) !== null && _e !== void 0 ? _e : 0,\n gasUsed: '0',\n };\n}\n"],"names":["Buffer"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-BIdD2yUB.js');
|
|
4
4
|
require('axios');
|
|
5
5
|
require('tweetnacl');
|
|
6
6
|
require('reconnecting-websocket');
|
|
@@ -262,4 +262,4 @@ async function handlePreBuiltTransaction(tx, authProvider, options, expectedWrit
|
|
|
262
262
|
|
|
263
263
|
exports.handlePreBuiltTransaction = handlePreBuiltTransaction;
|
|
264
264
|
exports.handleSolanaTransaction = handleSolanaTransaction;
|
|
265
|
-
//# sourceMappingURL=solana-operations-
|
|
265
|
+
//# sourceMappingURL=solana-operations-ngqIkN9W.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-operations-BOKHbEuy.js","sources":["../.rollup-tmp/client/solana-operations.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { getConfig } from './config';\nconst BOUNDED_PROGRAM_MAINNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst BOUNDED_PROGRAM_DEVNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst COMPUTE_BUDGET_PROGRAM = 'ComputeBudget111111111111111111111111111111';\nconst SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';\nconst ALLOWED_SERVER_TX_PROGRAMS = new Set([\n BOUNDED_PROGRAM_MAINNET,\n BOUNDED_PROGRAM_DEVNET,\n COMPUTE_BUDGET_PROGRAM,\n SYSTEM_PROGRAM_ID,\n]);\n// Canonical set_documents discriminator (single wire format: ra_indices Vec<u8>).\nconst SET_DOCUMENTS_DISCRIMINATOR = '79,46,72,73,24,79,66,245';\nconst ALLOWED_BOUNDED_SET_DISCRIMINATORS = new Set([\n SET_DOCUMENTS_DISCRIMINATOR,\n]);\nclass BorshCursor {\n constructor(data, offset, label) {\n this.data = data;\n this.offset = offset;\n this.label = label;\n }\n requireBytes(length, field) {\n if (this.offset + length > this.data.length) {\n throw new Error(`${this.label} has malformed Bounded instruction data while reading ${field}`);\n }\n }\n readU8(field) { this.requireBytes(1, field); return this.data[this.offset++]; }\n readU32(field) {\n this.requireBytes(4, field);\n const value = this.data[this.offset] | (this.data[this.offset + 1] << 8) |\n (this.data[this.offset + 2] << 16) | (this.data[this.offset + 3] << 24);\n this.offset += 4;\n return value >>> 0;\n }\n skip(length, field) { this.requireBytes(length, field); this.offset += length; }\n readString(field) {\n const length = this.readU32(`${field} length`);\n this.requireBytes(length, field);\n const raw = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return Buffer.from(raw).toString('utf8');\n }\n skipBytes(field) { this.skip(this.readU32(`${field} length`), field); }\n isAtEnd() { return this.offset === this.data.length; }\n}\nfunction skipBoundedFieldValue(cursor) {\n const option = cursor.readU8('operation value option');\n if (option === 0)\n return;\n if (option !== 1)\n throw new Error('Server transaction has malformed Bounded field value option');\n const variant = cursor.readU8('operation value variant');\n if (variant === 0 || variant === 1)\n cursor.skip(8, 'operation numeric value');\n else if (variant === 2)\n cursor.skip(1, 'operation bool value');\n else if (variant === 3)\n cursor.readString('operation string value');\n else if (variant === 4)\n cursor.skip(32, 'operation address value');\n else\n throw new Error(`Server transaction has unsupported Bounded field value variant: ${variant}`);\n}\nfunction normalizeOnchainPath(path) {\n let normalized = path.startsWith('/') ? path.slice(1) : path;\n if (normalized.endsWith('*') && normalized.length > 1)\n normalized = normalized.slice(0, -1);\n if (normalized.endsWith('/'))\n normalized = normalized.slice(0, -1);\n return normalized;\n}\nfunction parseBoundedSetDocumentsInstruction(data, label) {\n if (data.length < 8)\n throw new Error(`${label} has malformed Bounded instruction data`);\n const discriminator = Array.from(data.slice(0, 8)).join(',');\n if (!ALLOWED_BOUNDED_SET_DISCRIMINATORS.has(discriminator)) {\n throw new Error(`${label} contains unsupported Bounded instruction`);\n }\n const cursor = new BorshCursor(data, 8, label);\n const appId = cursor.readString('appId');\n const documentPaths = [];\n const documentCount = cursor.readU32('documents length');\n for (let i = 0; i < documentCount; i++) {\n documentPaths.push(normalizeOnchainPath(cursor.readString('document path')));\n const operationCount = cursor.readU32('operations length');\n for (let j = 0; j < operationCount; j++) {\n cursor.readString('operation key');\n skipBoundedFieldValue(cursor);\n cursor.skip(1, 'operation kind');\n }\n }\n const deletePaths = [];\n const deleteCount = cursor.readU32('delete paths length');\n for (let i = 0; i < deleteCount; i++)\n deletePaths.push(normalizeOnchainPath(cursor.readString('delete path')));\n const txDataCount = cursor.readU32('txData length');\n for (let i = 0; i < txDataCount; i++) {\n cursor.readString('txData plugin function key');\n cursor.skipBytes('txData bytes');\n cursor.skipBytes('txData raIndices');\n }\n const simulate = cursor.readU8('simulate');\n if (simulate !== 0 && simulate !== 1)\n throw new Error(`${label} has malformed Bounded simulate flag`);\n if (!cursor.isAtEnd())\n throw new Error(`${label} has trailing Bounded instruction data`);\n return { appId, documentPaths, deletePaths };\n}\nfunction assertSamePathSet(label, expectedPaths, actualPaths) {\n const expected = new Set(expectedPaths.map(normalizeOnchainPath).filter(Boolean));\n const actual = new Set(actualPaths.map(normalizeOnchainPath).filter(Boolean));\n const missing = [...expected].filter(path => !actual.has(path));\n const extra = [...actual].filter(path => !expected.has(path));\n if (missing.length || extra.length) {\n const details = [missing.length ? `missing paths: ${missing.join(', ')}` : '', extra.length ? `unexpected paths: ${extra.join(', ')}` : '']\n .filter(Boolean).join('; ');\n throw new Error(`${label} Bounded instruction paths do not match requested write paths (${details})`);\n }\n}\nfunction deserializeAndValidateServerTransaction(serializedTransaction, VersionedTransactionClass, options) {\n var _a;\n const transaction = VersionedTransactionClass.deserialize(Buffer.from(serializedTransaction, 'base64'));\n const { label, expectedAppId, expectedWritePaths } = options;\n const accountKeys = transaction.message.staticAccountKeys;\n let boundedInstructionCount = 0;\n const actualWritePaths = [];\n for (const ix of transaction.message.compiledInstructions) {\n if (ix.programIdIndex >= accountKeys.length)\n throw new Error(`${label} has program ID in lookup table (not allowed)`);\n const programId = accountKeys[ix.programIdIndex].toBase58();\n if (!ALLOWED_SERVER_TX_PROGRAMS.has(programId))\n throw new Error(`${label} contains unauthorized program: ${programId}`);\n const data = ix.data instanceof Uint8Array ? ix.data : Buffer.from((_a = ix.data) !== null && _a !== void 0 ? _a : []);\n if (programId === SYSTEM_PROGRAM_ID)\n throw new Error(`${label} contains unauthorized System Program instruction`);\n if (programId === BOUNDED_PROGRAM_MAINNET || programId === BOUNDED_PROGRAM_DEVNET) {\n boundedInstructionCount++;\n const parsed = parseBoundedSetDocumentsInstruction(data, label);\n if (parsed.appId !== expectedAppId)\n throw new Error(`${label} Bounded instruction appId does not match configured appId`);\n actualWritePaths.push(...parsed.documentPaths, ...parsed.deletePaths);\n }\n }\n if (boundedInstructionCount !== 1)\n throw new Error(`${label} must contain exactly one Bounded set-documents instruction`);\n assertSamePathSet(label, expectedWritePaths, actualWritePaths);\n return transaction;\n}\nfunction isHexString(value) {\n if (typeof value !== 'string')\n return false;\n const testValue = value.startsWith('-') ? value.slice(1) : value;\n return /^(0x)?[0-9a-fA-F]+$/.test(testValue);\n}\nexport async function handleSolanaTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const chainSdk = await import(\"@solana/web3.js\");\n const { PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } = chainSdk;\n const solTransactionData = {\n remainingAccounts: tx.remainingAccounts,\n setDocumentData: tx.transactionArgs.setDocumentData,\n deletePaths: tx.transactionArgs.deletePaths,\n idl: tx.idl,\n txData: (_b = (_a = tx.txData) === null || _a === void 0 ? void 0 : _a.map((txData) => ({\n pluginFunctionKey: txData.pluginFunctionKey,\n txData: Buffer.from(txData.txData),\n raIndices: (() => {\n const raw = txData.raIndices;\n if (raw == null)\n return Buffer.alloc(0);\n if (Buffer.isBuffer(raw))\n return raw;\n if (raw instanceof Uint8Array)\n return Buffer.from(raw);\n const arrayLike = Array.isArray(raw) ? raw :\n raw && typeof raw === 'object' && Array.isArray(raw.data) ? raw.data :\n (() => { throw new Error(`raIndices has unexpected shape: ${typeof raw}`); })();\n return Buffer.from(arrayLike.map((raIndex) => {\n const value = isHexString(raIndex) ? parseInt(raIndex, 16) : Number(raIndex);\n if (!Number.isInteger(value) || value < 0 || value > 255) {\n throw new Error(`raIndex ${raIndex} is not a valid u8 (must be integer in 0..255)`);\n }\n return value;\n }));\n })(),\n }))) !== null && _b !== void 0 ? _b : [],\n };\n const config = await getConfig();\n if (tx.signedTransaction) {\n deserializeAndValidateServerTransaction(tx.signedTransaction, VersionedTransaction, {\n label: 'Server signedTransaction', expectedAppId: config.appId, expectedWritePaths,\n });\n }\n const solTransaction = {\n appId: config.appId,\n txArgs: [solTransactionData],\n lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,\n additionalLutAddresses: tx.additionalLutAddresses,\n network: tx.network,\n preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix, index) => {\n var _a;\n const keys = (_a = ix.keys) === null || _a === void 0 ? void 0 : _a.map((key) => ({ pubkey: new PublicKey(key.pubkey), isSigner: key.isSigner, isWritable: key.isWritable }));\n const programId = ix.programId === SYSTEM_PROGRAM_ID ? SystemProgram.programId : new PublicKey(ix.programId);\n const instruction = new TransactionInstruction({ keys, programId, data: Buffer.from(ix.data) });\n if (instruction.programId.equals(SystemProgram.programId)) {\n throw new Error(`Server preInstruction[${index}] contains unauthorized System Program preInstruction`);\n }\n return instruction;\n })) !== null && _e !== void 0 ? _e : [],\n signedTransaction: tx.signedTransaction,\n };\n return authProvider.runTransaction(undefined, solTransaction, options);\n}\nexport async function handlePreBuiltTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const { Connection, VersionedTransaction } = await import(\"@solana/web3.js\");\n const config = await getConfig();\n const transaction = deserializeAndValidateServerTransaction(tx.serializedTransaction, VersionedTransaction, {\n label: 'Pre-built transaction', expectedAppId: config.appId, expectedWritePaths,\n });\n const shouldSubmit = (options === null || options === void 0 ? void 0 : options.shouldSubmitTx) !== false;\n const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n if (shouldSubmit && !rpcUrl)\n throw new Error(`Pre-built Solana transaction submission requires init({ rpcUrl }) for ${tx.network}`);\n const signedTx = await authProvider.signTransaction(transaction);\n const rawTx = signedTx.serialize();\n if (!shouldSubmit) {\n return { transactionSignature: '', signedTransaction: Buffer.from(rawTx).toString('base64'), blockNumber: 0, gasUsed: '0' };\n }\n const connection = new Connection(rpcUrl, 'confirmed');\n const signature = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\n const confirmation = await connection.confirmTransaction({\n signature, blockhash: tx.blockhash, lastValidBlockHeight: tx.lastValidBlockHeight,\n }, 'confirmed');\n // #310: \"confirmed\" only means the network recorded the transaction, not that it\n // succeeded - a landed-but-failed transaction carries an err. Report it as a failure\n // (with on-chain logs) instead of a fake success, mirroring the server keypair provider.\n if ((_b = confirmation.value) === null || _b === void 0 ? void 0 : _b.err) {\n const txInfo = await connection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed',\n });\n const logMessages = (_c = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _c === void 0 ? void 0 : _c.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(confirmation.value.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n return {\n transactionSignature: signature,\n signedTransaction: Buffer.from(rawTx).toString('base64'),\n blockNumber: (_e = (_d = confirmation.context) === null || _d === void 0 ? void 0 : _d.slot) !== null && _e !== void 0 ? _e : 0,\n gasUsed: '0',\n };\n}\n"],"names":["Buffer","getConfig","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solana-operations-ngqIkN9W.js","sources":["../.rollup-tmp/client/solana-operations.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { getConfig } from './config';\nconst BOUNDED_PROGRAM_MAINNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst BOUNDED_PROGRAM_DEVNET = ['open', 'Tv7fbpYSseNHYmCZFZ1CZgj4r8D9fKNgEz1qo6F'].join('');\nconst COMPUTE_BUDGET_PROGRAM = 'ComputeBudget111111111111111111111111111111';\nconst SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';\nconst ALLOWED_SERVER_TX_PROGRAMS = new Set([\n BOUNDED_PROGRAM_MAINNET,\n BOUNDED_PROGRAM_DEVNET,\n COMPUTE_BUDGET_PROGRAM,\n SYSTEM_PROGRAM_ID,\n]);\n// Canonical set_documents discriminator (single wire format: ra_indices Vec<u8>).\nconst SET_DOCUMENTS_DISCRIMINATOR = '79,46,72,73,24,79,66,245';\nconst ALLOWED_BOUNDED_SET_DISCRIMINATORS = new Set([\n SET_DOCUMENTS_DISCRIMINATOR,\n]);\nclass BorshCursor {\n constructor(data, offset, label) {\n this.data = data;\n this.offset = offset;\n this.label = label;\n }\n requireBytes(length, field) {\n if (this.offset + length > this.data.length) {\n throw new Error(`${this.label} has malformed Bounded instruction data while reading ${field}`);\n }\n }\n readU8(field) { this.requireBytes(1, field); return this.data[this.offset++]; }\n readU32(field) {\n this.requireBytes(4, field);\n const value = this.data[this.offset] | (this.data[this.offset + 1] << 8) |\n (this.data[this.offset + 2] << 16) | (this.data[this.offset + 3] << 24);\n this.offset += 4;\n return value >>> 0;\n }\n skip(length, field) { this.requireBytes(length, field); this.offset += length; }\n readString(field) {\n const length = this.readU32(`${field} length`);\n this.requireBytes(length, field);\n const raw = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return Buffer.from(raw).toString('utf8');\n }\n skipBytes(field) { this.skip(this.readU32(`${field} length`), field); }\n isAtEnd() { return this.offset === this.data.length; }\n}\nfunction skipBoundedFieldValue(cursor) {\n const option = cursor.readU8('operation value option');\n if (option === 0)\n return;\n if (option !== 1)\n throw new Error('Server transaction has malformed Bounded field value option');\n const variant = cursor.readU8('operation value variant');\n if (variant === 0 || variant === 1)\n cursor.skip(8, 'operation numeric value');\n else if (variant === 2)\n cursor.skip(1, 'operation bool value');\n else if (variant === 3)\n cursor.readString('operation string value');\n else if (variant === 4)\n cursor.skip(32, 'operation address value');\n else\n throw new Error(`Server transaction has unsupported Bounded field value variant: ${variant}`);\n}\nfunction normalizeOnchainPath(path) {\n let normalized = path.startsWith('/') ? path.slice(1) : path;\n if (normalized.endsWith('*') && normalized.length > 1)\n normalized = normalized.slice(0, -1);\n if (normalized.endsWith('/'))\n normalized = normalized.slice(0, -1);\n return normalized;\n}\nfunction parseBoundedSetDocumentsInstruction(data, label) {\n if (data.length < 8)\n throw new Error(`${label} has malformed Bounded instruction data`);\n const discriminator = Array.from(data.slice(0, 8)).join(',');\n if (!ALLOWED_BOUNDED_SET_DISCRIMINATORS.has(discriminator)) {\n throw new Error(`${label} contains unsupported Bounded instruction`);\n }\n const cursor = new BorshCursor(data, 8, label);\n const appId = cursor.readString('appId');\n const documentPaths = [];\n const documentCount = cursor.readU32('documents length');\n for (let i = 0; i < documentCount; i++) {\n documentPaths.push(normalizeOnchainPath(cursor.readString('document path')));\n const operationCount = cursor.readU32('operations length');\n for (let j = 0; j < operationCount; j++) {\n cursor.readString('operation key');\n skipBoundedFieldValue(cursor);\n cursor.skip(1, 'operation kind');\n }\n }\n const deletePaths = [];\n const deleteCount = cursor.readU32('delete paths length');\n for (let i = 0; i < deleteCount; i++)\n deletePaths.push(normalizeOnchainPath(cursor.readString('delete path')));\n const txDataCount = cursor.readU32('txData length');\n for (let i = 0; i < txDataCount; i++) {\n cursor.readString('txData plugin function key');\n cursor.skipBytes('txData bytes');\n cursor.skipBytes('txData raIndices');\n }\n const simulate = cursor.readU8('simulate');\n if (simulate !== 0 && simulate !== 1)\n throw new Error(`${label} has malformed Bounded simulate flag`);\n if (!cursor.isAtEnd())\n throw new Error(`${label} has trailing Bounded instruction data`);\n return { appId, documentPaths, deletePaths };\n}\nfunction assertSamePathSet(label, expectedPaths, actualPaths) {\n const expected = new Set(expectedPaths.map(normalizeOnchainPath).filter(Boolean));\n const actual = new Set(actualPaths.map(normalizeOnchainPath).filter(Boolean));\n const missing = [...expected].filter(path => !actual.has(path));\n const extra = [...actual].filter(path => !expected.has(path));\n if (missing.length || extra.length) {\n const details = [missing.length ? `missing paths: ${missing.join(', ')}` : '', extra.length ? `unexpected paths: ${extra.join(', ')}` : '']\n .filter(Boolean).join('; ');\n throw new Error(`${label} Bounded instruction paths do not match requested write paths (${details})`);\n }\n}\nfunction deserializeAndValidateServerTransaction(serializedTransaction, VersionedTransactionClass, options) {\n var _a;\n const transaction = VersionedTransactionClass.deserialize(Buffer.from(serializedTransaction, 'base64'));\n const { label, expectedAppId, expectedWritePaths } = options;\n const accountKeys = transaction.message.staticAccountKeys;\n let boundedInstructionCount = 0;\n const actualWritePaths = [];\n for (const ix of transaction.message.compiledInstructions) {\n if (ix.programIdIndex >= accountKeys.length)\n throw new Error(`${label} has program ID in lookup table (not allowed)`);\n const programId = accountKeys[ix.programIdIndex].toBase58();\n if (!ALLOWED_SERVER_TX_PROGRAMS.has(programId))\n throw new Error(`${label} contains unauthorized program: ${programId}`);\n const data = ix.data instanceof Uint8Array ? ix.data : Buffer.from((_a = ix.data) !== null && _a !== void 0 ? _a : []);\n if (programId === SYSTEM_PROGRAM_ID)\n throw new Error(`${label} contains unauthorized System Program instruction`);\n if (programId === BOUNDED_PROGRAM_MAINNET || programId === BOUNDED_PROGRAM_DEVNET) {\n boundedInstructionCount++;\n const parsed = parseBoundedSetDocumentsInstruction(data, label);\n if (parsed.appId !== expectedAppId)\n throw new Error(`${label} Bounded instruction appId does not match configured appId`);\n actualWritePaths.push(...parsed.documentPaths, ...parsed.deletePaths);\n }\n }\n if (boundedInstructionCount !== 1)\n throw new Error(`${label} must contain exactly one Bounded set-documents instruction`);\n assertSamePathSet(label, expectedWritePaths, actualWritePaths);\n return transaction;\n}\nfunction isHexString(value) {\n if (typeof value !== 'string')\n return false;\n const testValue = value.startsWith('-') ? value.slice(1) : value;\n return /^(0x)?[0-9a-fA-F]+$/.test(testValue);\n}\nexport async function handleSolanaTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const chainSdk = await import(\"@solana/web3.js\");\n const { PublicKey, SystemProgram, TransactionInstruction, VersionedTransaction } = chainSdk;\n const solTransactionData = {\n remainingAccounts: tx.remainingAccounts,\n setDocumentData: tx.transactionArgs.setDocumentData,\n deletePaths: tx.transactionArgs.deletePaths,\n idl: tx.idl,\n txData: (_b = (_a = tx.txData) === null || _a === void 0 ? void 0 : _a.map((txData) => ({\n pluginFunctionKey: txData.pluginFunctionKey,\n txData: Buffer.from(txData.txData),\n raIndices: (() => {\n const raw = txData.raIndices;\n if (raw == null)\n return Buffer.alloc(0);\n if (Buffer.isBuffer(raw))\n return raw;\n if (raw instanceof Uint8Array)\n return Buffer.from(raw);\n const arrayLike = Array.isArray(raw) ? raw :\n raw && typeof raw === 'object' && Array.isArray(raw.data) ? raw.data :\n (() => { throw new Error(`raIndices has unexpected shape: ${typeof raw}`); })();\n return Buffer.from(arrayLike.map((raIndex) => {\n const value = isHexString(raIndex) ? parseInt(raIndex, 16) : Number(raIndex);\n if (!Number.isInteger(value) || value < 0 || value > 255) {\n throw new Error(`raIndex ${raIndex} is not a valid u8 (must be integer in 0..255)`);\n }\n return value;\n }));\n })(),\n }))) !== null && _b !== void 0 ? _b : [],\n };\n const config = await getConfig();\n if (tx.signedTransaction) {\n deserializeAndValidateServerTransaction(tx.signedTransaction, VersionedTransaction, {\n label: 'Server signedTransaction', expectedAppId: config.appId, expectedWritePaths,\n });\n }\n const solTransaction = {\n appId: config.appId,\n txArgs: [solTransactionData],\n lutKey: (_c = tx.lutAddress) !== null && _c !== void 0 ? _c : null,\n additionalLutAddresses: tx.additionalLutAddresses,\n network: tx.network,\n preInstructions: (_e = (_d = tx.preInstructions) === null || _d === void 0 ? void 0 : _d.map((ix, index) => {\n var _a;\n const keys = (_a = ix.keys) === null || _a === void 0 ? void 0 : _a.map((key) => ({ pubkey: new PublicKey(key.pubkey), isSigner: key.isSigner, isWritable: key.isWritable }));\n const programId = ix.programId === SYSTEM_PROGRAM_ID ? SystemProgram.programId : new PublicKey(ix.programId);\n const instruction = new TransactionInstruction({ keys, programId, data: Buffer.from(ix.data) });\n if (instruction.programId.equals(SystemProgram.programId)) {\n throw new Error(`Server preInstruction[${index}] contains unauthorized System Program preInstruction`);\n }\n return instruction;\n })) !== null && _e !== void 0 ? _e : [],\n signedTransaction: tx.signedTransaction,\n };\n return authProvider.runTransaction(undefined, solTransaction, options);\n}\nexport async function handlePreBuiltTransaction(tx, authProvider, options, expectedWritePaths) {\n var _a, _b, _c, _d, _e;\n const { Connection, VersionedTransaction } = await import(\"@solana/web3.js\");\n const config = await getConfig();\n const transaction = deserializeAndValidateServerTransaction(tx.serializedTransaction, VersionedTransaction, {\n label: 'Pre-built transaction', expectedAppId: config.appId, expectedWritePaths,\n });\n const shouldSubmit = (options === null || options === void 0 ? void 0 : options.shouldSubmitTx) !== false;\n const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n if (shouldSubmit && !rpcUrl)\n throw new Error(`Pre-built Solana transaction submission requires init({ rpcUrl }) for ${tx.network}`);\n const signedTx = await authProvider.signTransaction(transaction);\n const rawTx = signedTx.serialize();\n if (!shouldSubmit) {\n return { transactionSignature: '', signedTransaction: Buffer.from(rawTx).toString('base64'), blockNumber: 0, gasUsed: '0' };\n }\n const connection = new Connection(rpcUrl, 'confirmed');\n const signature = await connection.sendRawTransaction(rawTx, { skipPreflight: false, maxRetries: 3 });\n const confirmation = await connection.confirmTransaction({\n signature, blockhash: tx.blockhash, lastValidBlockHeight: tx.lastValidBlockHeight,\n }, 'confirmed');\n // #310: \"confirmed\" only means the network recorded the transaction, not that it\n // succeeded - a landed-but-failed transaction carries an err. Report it as a failure\n // (with on-chain logs) instead of a fake success, mirroring the server keypair provider.\n if ((_b = confirmation.value) === null || _b === void 0 ? void 0 : _b.err) {\n const txInfo = await connection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed',\n });\n const logMessages = (_c = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _c === void 0 ? void 0 : _c.logMessages;\n const errorMessage = logMessages ? JSON.stringify(logMessages) : JSON.stringify(confirmation.value.err);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n return {\n transactionSignature: signature,\n signedTransaction: Buffer.from(rawTx).toString('base64'),\n blockNumber: (_e = (_d = confirmation.context) === null || _d === void 0 ? void 0 : _d.slot) !== null && _e !== void 0 ? _e : 0,\n gasUsed: '0',\n };\n}\n"],"names":["Buffer","getConfig","index"],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place a caller turns "I need a credential" into a usable token.
|
|
3
|
+
*
|
|
4
|
+
* Both transports go through this. The WebSocket path grew a good version of this
|
|
5
|
+
* logic first; the HTTP path had none at all and simply sent whatever was in
|
|
6
|
+
* storage, which is what let an expired token reach the server and come back as a
|
|
7
|
+
* misleading policy denial.
|
|
8
|
+
*
|
|
9
|
+
* THE CONTRACT, which callers depend on:
|
|
10
|
+
*
|
|
11
|
+
* returns null -> there is no session. Send the request anonymously; public
|
|
12
|
+
* reads must keep working for logged-out visitors.
|
|
13
|
+
* returns token -> use exactly this token.
|
|
14
|
+
* throws -> there IS a session and it is unusable. NEVER fall back to an
|
|
15
|
+
* anonymous request, or the caller lands in policy as an
|
|
16
|
+
* anonymous user and gets the same misleading 403 this whole
|
|
17
|
+
* change exists to remove.
|
|
18
|
+
*
|
|
19
|
+
* Four corrections over the WebSocket original, each of which was a real defect:
|
|
20
|
+
*
|
|
21
|
+
* - No sticky module-global failure. The original latched any refresh failure
|
|
22
|
+
* into `ambientAuthFailure` and rethrew it on every later call, so ONE
|
|
23
|
+
* transient network blip disabled refresh until an unrelated auth-state
|
|
24
|
+
* change reset it.
|
|
25
|
+
* - "Expiring soon" and "already expired" are different. The original collapsed
|
|
26
|
+
* both behind a 60s buffer, so a transient refresh failure threw away a token
|
|
27
|
+
* that was still valid for another 59 seconds.
|
|
28
|
+
* - A missing or non-numeric `exp` is unusable, not fresh. `payload.exp * 1000`
|
|
29
|
+
* is NaN, and `now > NaN` is false, so such a token read as perfectly fresh.
|
|
30
|
+
* - Storage is cleared only on a DEFINITIVE rejection, never on a transient one.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Stable machine code for "there is a session and it cannot be used".
|
|
34
|
+
*
|
|
35
|
+
* The VALUE is deliberately unchanged from when this lived in subscription-v2 as
|
|
36
|
+
* `WS_AUTH_EXPIRED_CODE`: it is public surface that consumers branch on
|
|
37
|
+
* (`e.code === 'auth_expired'`), so renaming it would break them for no gain. Only
|
|
38
|
+
* the identifier lost its `WS_` prefix, now that HTTP raises it too.
|
|
39
|
+
*
|
|
40
|
+
* The realtime worker's 401 body uses `invalid_or_expired_session` for the same
|
|
41
|
+
* condition on the wire; this is the client-side counterpart.
|
|
42
|
+
*/
|
|
43
|
+
export declare const AUTH_EXPIRED_CODE = "auth_expired";
|
|
44
|
+
/** The principal changed under a request that was already in flight. */
|
|
45
|
+
export declare const AUTH_CHANGED_CODE = "auth_changed";
|
|
46
|
+
export declare function makeAuthExpiredError(message: string, status?: number | string): Error;
|
|
47
|
+
export declare function makeAuthChangedError(message: string): Error;
|
|
48
|
+
export declare function isAuthExpiredError(error: unknown): boolean;
|
|
49
|
+
export declare function normalizeAuthExpiredError(error: unknown, fallbackMessage: string): Error;
|
|
50
|
+
/** Refresh this many ms before `exp`, so a token cannot die mid-flight. */
|
|
51
|
+
export declare const TOKEN_EXPIRY_SKEW_MS = 60000;
|
|
52
|
+
export type TokenFreshness =
|
|
53
|
+
/** Good, and not about to expire. Use as-is. */
|
|
54
|
+
'fresh'
|
|
55
|
+
/** Still valid, but inside the skew window. Refresh, and fall back to it if that fails. */
|
|
56
|
+
| 'expiring-soon'
|
|
57
|
+
/** Past `exp`. Unusable. */
|
|
58
|
+
| 'expired'
|
|
59
|
+
/** Undecodable, or no numeric `exp`. Treated as unusable, never as fresh. */
|
|
60
|
+
| 'unusable';
|
|
61
|
+
export declare function classifyToken(token: string, nowMs?: number): TokenFreshness;
|
|
62
|
+
/** Short, non-secret fingerprint used only to key the in-flight map. Never logged. */
|
|
63
|
+
export declare function tokenFingerprint(token: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Get a token that is safe to send right now, refreshing if needed.
|
|
66
|
+
*
|
|
67
|
+
* `null` means anonymous is fine. A throw means there is a session that cannot be
|
|
68
|
+
* used; the caller must surface it rather than downgrade to anonymous.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getFreshAuthToken(isServer?: boolean, options?: {
|
|
71
|
+
/**
|
|
72
|
+
* The server already rejected the stored token, so local expiry says nothing
|
|
73
|
+
* useful: retrying with the same credential would just be refused again.
|
|
74
|
+
* Skip the freshness shortcut and require a genuinely new token.
|
|
75
|
+
*/
|
|
76
|
+
force?: boolean;
|
|
77
|
+
}): Promise<string | null>;
|
|
78
|
+
/** Test seam: drop any in-flight refresh transactions. */
|
|
79
|
+
export declare function resetRefreshTransactions(): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CommitResult, type ExpectedSession } from "./session-mutation";
|
|
1
2
|
/**
|
|
2
3
|
* Session manager for React Native environments.
|
|
3
4
|
*
|
|
@@ -69,16 +70,32 @@ export declare class ReactNativeSessionManager {
|
|
|
69
70
|
*/
|
|
70
71
|
private static decodeBase64Url;
|
|
71
72
|
static storeSession(address: string, accessToken: string, idToken: string, refreshToken: string, issuer?: string): Promise<void>;
|
|
73
|
+
/** Raw read of the stored blob. Callers inside the lock use this, never a cached copy. */
|
|
74
|
+
private static readRaw;
|
|
75
|
+
private static writeRaw;
|
|
76
|
+
/** Mirror of WebSessionManager.readSessionWithGeneration. */
|
|
77
|
+
static readSessionWithGeneration(): Promise<any | null>;
|
|
72
78
|
static getSession(): Promise<{
|
|
73
79
|
address: string;
|
|
74
80
|
session: any;
|
|
75
81
|
} | null>;
|
|
76
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Remove the session unconditionally. Async and awaited for the same reason as
|
|
84
|
+
* the web manager: a caller that does not await lets logout() return while the
|
|
85
|
+
* credential is still readable.
|
|
86
|
+
*/
|
|
87
|
+
static clearSession(): Promise<void>;
|
|
88
|
+
/** Remove only if the stored session is still the one identified by `generation`. */
|
|
89
|
+
static clearSessionIfGeneration(generation: string | null): Promise<void>;
|
|
77
90
|
static isAuthenticated(): boolean;
|
|
78
91
|
static getIdToken(): string | null;
|
|
79
92
|
/** The issuer base that minted this session (for routing silent refresh). */
|
|
80
93
|
static getIssuer(): string | null;
|
|
81
94
|
static getRefreshToken(): string | null;
|
|
82
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Commit refreshed tokens bound to the generation they were minted for.
|
|
97
|
+
* Mirror of WebSessionManager.commitRefreshedTokens; see it for the rationale.
|
|
98
|
+
*/
|
|
99
|
+
static commitRefreshedTokens(expected: ExpectedSession, idToken: string, accessToken: string, refreshToken?: string): Promise<CommitResult<any>>;
|
|
83
100
|
}
|
|
84
101
|
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one signal core sends upward when a stored session stops existing.
|
|
3
|
+
*
|
|
4
|
+
* `tarobase-core` cannot import `js-sdk` (that would be a cycle), and core has no
|
|
5
|
+
* event bus, so a session dying inside a session manager used to be invisible to
|
|
6
|
+
* the SDK: `setCurrentUser(null)` was only ever called by `logout()` and `init()`.
|
|
7
|
+
* The result was a UI that kept showing a connected wallet long after the session
|
|
8
|
+
* it was showing had been wiped, which is exactly what let the Solana lab freeze a
|
|
9
|
+
* review against a wallet the server no longer knew about.
|
|
10
|
+
*
|
|
11
|
+
* `js-sdk` registers a handler at init; core fires it ONLY when storage was
|
|
12
|
+
* actually cleared, never on a failed-but-preserved refresh. Firing on a
|
|
13
|
+
* preserved session would log people out on a transient network blip.
|
|
14
|
+
*/
|
|
15
|
+
type SessionClearedHandler = () => void;
|
|
16
|
+
/**
|
|
17
|
+
* Register a listener for "the stored session is gone".
|
|
18
|
+
* Returns an unsubscribe function.
|
|
19
|
+
*/
|
|
20
|
+
export declare function onSessionCleared(handler: SessionClearedHandler): () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Announce that session storage was cleared.
|
|
23
|
+
*
|
|
24
|
+
* Call this ONLY after a removal actually happened. Handlers are best-effort: a
|
|
25
|
+
* throwing listener must not turn a successful clear into a failed one, because
|
|
26
|
+
* the storage mutation has already committed by this point.
|
|
27
|
+
*/
|
|
28
|
+
export declare function notifySessionCleared(): void;
|
|
29
|
+
/** Test seam: drop every registered handler. */
|
|
30
|
+
export declare function resetSessionClearedHandlers(): void;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one protocol every session-storage mutation goes through.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* `localStorage` is shared by every tab on an origin but offers no atomic
|
|
7
|
+
* compare-and-set spanning a read and a write, and each tab is a separate JS
|
|
8
|
+
* realm, so an in-memory guard cannot serialize them. The old code relied on
|
|
9
|
+
* doing its read → check → write inside one synchronous turn, which is only
|
|
10
|
+
* atomic *within* a realm.
|
|
11
|
+
*
|
|
12
|
+
* That is not a theoretical gap. `REFRESH_REUSE_GRACE_MS` on the issuer is 60s,
|
|
13
|
+
* so two tabs presenting the same refresh token inside that window BOTH succeed
|
|
14
|
+
* and BOTH receive the same successor refresh token — while each response mints
|
|
15
|
+
* its own distinct idToken. Concurrent cross-tab commits are a designed-for
|
|
16
|
+
* occurrence, not an edge case.
|
|
17
|
+
*
|
|
18
|
+
* Two failures follow from an unlocked read-then-write, and both are closed here:
|
|
19
|
+
*
|
|
20
|
+
* 1. Lost update / resurrection. Tab A reads, tab B logs in (or logs out), tab A
|
|
21
|
+
* writes its stale blob back. B's login is silently replaced, or a logged-out
|
|
22
|
+
* session comes back to life.
|
|
23
|
+
* 2. Spurious "the user changed". Tab B's commit finds tab A's blob, which
|
|
24
|
+
* matches neither B's snapshot nor B's own result because the idTokens
|
|
25
|
+
* differ — even though it is the same user and the same login.
|
|
26
|
+
*
|
|
27
|
+
* THE CRITICAL SECTION IS THE COMMIT, NOT THE NETWORK CALL
|
|
28
|
+
*
|
|
29
|
+
* The lock covers read → compare → write only. The refresh POST happens outside
|
|
30
|
+
* it: holding a cross-tab lock across a 30s network call would serialize every
|
|
31
|
+
* tab behind the slowest one. This is safe because the snapshot captured before
|
|
32
|
+
* the network call is used only for COMPARISON. What actually gets written is
|
|
33
|
+
* decided against storage re-read inside the lock, so a login or logout that lands
|
|
34
|
+
* during the network call is always observed.
|
|
35
|
+
*
|
|
36
|
+
* NO BEST-EFFORT FALLBACK
|
|
37
|
+
*
|
|
38
|
+
* A `localStorage` lease was considered and rejected: its own acquire sequence is
|
|
39
|
+
* a non-atomic read-then-write across realms, and a backgrounded tab can be frozen
|
|
40
|
+
* past any lease timeout and then resume and write. Both leave exactly the windows
|
|
41
|
+
* this module exists to close, so a browser without Web Locks fails closed instead.
|
|
42
|
+
* Absence of `navigator.locks` does NOT imply a single realm — such a browser still
|
|
43
|
+
* has tabs. Single realm is determined by the absence of `localStorage`.
|
|
44
|
+
*/
|
|
45
|
+
export declare const UNSUPPORTED_ENVIRONMENT_CODE = "unsupported_environment";
|
|
46
|
+
/**
|
|
47
|
+
* Thrown when authenticated session work is attempted in a browser that shares
|
|
48
|
+
* `localStorage` across tabs but cannot serialize access to it. Reads and
|
|
49
|
+
* anonymous requests are unaffected; only session mutation is refused.
|
|
50
|
+
*/
|
|
51
|
+
export declare class SessionEnvironmentError extends Error {
|
|
52
|
+
readonly code = "unsupported_environment";
|
|
53
|
+
constructor(message: string);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Run `fn` with exclusive access to session storage across every tab on this origin.
|
|
57
|
+
*
|
|
58
|
+
* Single-realm runtimes execute directly. Browsers serialize through Web Locks.
|
|
59
|
+
* A browser without Web Locks throws rather than running unserialized.
|
|
60
|
+
*/
|
|
61
|
+
export declare function withSessionLock<T>(fn: () => Promise<T> | T): Promise<T>;
|
|
62
|
+
/** Throws if this environment cannot safely mutate a session. Cheap pre-flight. */
|
|
63
|
+
export declare function assertSessionMutationSupported(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Opaque per-login identifier stamped into the stored session.
|
|
66
|
+
*
|
|
67
|
+
* Minted on every `storeSession` (login, guest upgrade, wallet switch) and
|
|
68
|
+
* PRESERVED across refresh commits. That is the whole point: it is what makes
|
|
69
|
+
* "S1 refreshed into S1'" provable and distinguishable from "someone logged in
|
|
70
|
+
* again", which token equality and address equality both get wrong — token
|
|
71
|
+
* equality rejects a valid post-refresh retry, and address equality accepts a
|
|
72
|
+
* same-wallet re-login as if it were the same session.
|
|
73
|
+
*
|
|
74
|
+
* The issuer has a server-side `familyId` that would serve, but `/session/refresh`
|
|
75
|
+
* does not return it, so this is client-side.
|
|
76
|
+
*/
|
|
77
|
+
export declare function mintSessionGeneration(): string;
|
|
78
|
+
/**
|
|
79
|
+
* What happened when a refreshed token was committed.
|
|
80
|
+
*
|
|
81
|
+
* `applied` - storage still held the snapshot; the new tokens landed.
|
|
82
|
+
* `already-equal` - storage already held exactly this result (another caller
|
|
83
|
+
* in this or another tab committed the same refresh). An
|
|
84
|
+
* idempotent SUCCESS, not a conflict.
|
|
85
|
+
* `same-generation-winner`- storage holds a different but valid session of the SAME
|
|
86
|
+
* login. Someone else's refresh won the race; theirs is the
|
|
87
|
+
* truth. Also a success — the caller uses the stored one.
|
|
88
|
+
* `superseded` - the generation changed, or the session is gone entirely.
|
|
89
|
+
* The only outcome that means "the principal changed".
|
|
90
|
+
*/
|
|
91
|
+
export type CommitOutcome = "applied" | "already-equal" | "same-generation-winner" | "superseded";
|
|
92
|
+
export interface CommitResult<S> {
|
|
93
|
+
outcome: CommitOutcome;
|
|
94
|
+
/** The session the caller must use. Null only when `outcome` is `superseded`. */
|
|
95
|
+
session: S | null;
|
|
96
|
+
}
|
|
97
|
+
/** Minimal shape the commit logic needs; both managers' blobs satisfy it. */
|
|
98
|
+
export interface SessionLike {
|
|
99
|
+
idToken?: string;
|
|
100
|
+
accessToken?: string;
|
|
101
|
+
refreshToken?: string;
|
|
102
|
+
sessionGeneration?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The session as the caller saw it BEFORE its network refresh.
|
|
106
|
+
*
|
|
107
|
+
* `generation` proves which login it belongs to. `idToken` distinguishes "storage
|
|
108
|
+
* is untouched, so my write is the right one" from "someone else's refresh of this
|
|
109
|
+
* same login already landed" — without it, an ordinary successful refresh would be
|
|
110
|
+
* indistinguishable from losing a race. Omit `idToken` when the caller has no
|
|
111
|
+
* snapshot to compare (the generation check alone still applies).
|
|
112
|
+
*/
|
|
113
|
+
export interface ExpectedSession {
|
|
114
|
+
generation: string | null;
|
|
115
|
+
idToken?: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Decide a commit against what storage ACTUALLY holds right now.
|
|
119
|
+
*
|
|
120
|
+
* Must be called inside `withSessionLock`, with `current` read inside that same
|
|
121
|
+
* critical section — comparing against a value read before the network call is
|
|
122
|
+
* exactly the race this exists to prevent.
|
|
123
|
+
*/
|
|
124
|
+
export declare function decideCommit<S extends SessionLike>(current: S | null, expected: ExpectedSession, next: S): CommitOutcome;
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CommitResult, ExpectedSession } from './session-mutation';
|
|
1
2
|
export declare function getMessageStatement(): Promise<string>;
|
|
2
3
|
export declare function createAuthHeader(isServer: boolean): Promise<{
|
|
3
4
|
Authorization: string;
|
|
@@ -38,4 +39,20 @@ export declare function getRefreshToken(isServer: boolean): Promise<string | nul
|
|
|
38
39
|
/** The auth issuer base that minted the active client session, so a refresh POSTs
|
|
39
40
|
* to the right /session/refresh. Undefined on the server (keypair, no refresh). */
|
|
40
41
|
export declare function getSessionIssuer(isServer: boolean): string | undefined;
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Read the active session's generation, minting one for a pre-generation session.
|
|
44
|
+
*
|
|
45
|
+
* The server manager is a single in-memory session per process, so it has no
|
|
46
|
+
* cross-realm lineage problem and reports null.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSessionGeneration(isServer?: boolean): Promise<string | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Commit refreshed tokens, bound to the generation they were minted for.
|
|
51
|
+
*
|
|
52
|
+
* Replaces the old void-returning `updateIdTokenAndAccessToken`. That version
|
|
53
|
+
* silently dropped a write its cross-principal guard refused, so callers went on
|
|
54
|
+
* to use a token that had NOT been stored — letting a request execute as the
|
|
55
|
+
* previous user while storage and the UI already showed a new one. Callers must
|
|
56
|
+
* branch on the outcome and use `session`, never the token they passed in.
|
|
57
|
+
*/
|
|
58
|
+
export declare function commitRefreshedTokens(expected: ExpectedSession, idToken: string, accessToken: string, isServer?: boolean, refreshToken?: string): Promise<CommitResult<any>>;
|