docs: make the comments on using the new confirmTransaction clearer (#29251)

* docs: make the comments on using the new connection.confirmTransaction clearer

* docs: add TransactionConfirmataionStrategy type

* refactor: change param type in sendAndConfirmRawTransaction

* docs: fix typo
This commit is contained in:
Eric Su 2022-12-19 20:23:38 +00:00 committed by GitHub
parent 456a81982e
commit 710ac01ef7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 19 deletions

View File

@ -349,6 +349,13 @@ export type BaseTransactionConfirmationStrategy = Readonly<{
signature: TransactionSignature; signature: TransactionSignature;
}>; }>;
/**
* This type represents all transaction confirmation strategies
*/
export type TransactionConfirmationStrategy =
| BlockheightBasedTransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy;
/* @internal */ /* @internal */
function assertEndpointUrl(putativeUrl: string) { function assertEndpointUrl(putativeUrl: string) {
if (/^https?:/.test(putativeUrl) === false) { if (/^https?:/.test(putativeUrl) === false) {
@ -3603,13 +3610,11 @@ export class Connection {
} }
confirmTransaction( confirmTransaction(
strategy: strategy: TransactionConfirmationStrategy,
| BlockheightBasedTransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy,
commitment?: Commitment, commitment?: Commitment,
): Promise<RpcResponseAndContext<SignatureResult>>; ): Promise<RpcResponseAndContext<SignatureResult>>;
/** @deprecated Instead, call `confirmTransaction` using a `TransactionConfirmationConfig` */ /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */
// eslint-disable-next-line no-dupe-class-members // eslint-disable-next-line no-dupe-class-members
confirmTransaction( confirmTransaction(
strategy: TransactionSignature, strategy: TransactionSignature,
@ -3618,10 +3623,7 @@ export class Connection {
// eslint-disable-next-line no-dupe-class-members // eslint-disable-next-line no-dupe-class-members
async confirmTransaction( async confirmTransaction(
strategy: strategy: TransactionConfirmationStrategy | TransactionSignature,
| BlockheightBasedTransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy
| TransactionSignature,
commitment?: Commitment, commitment?: Commitment,
): Promise<RpcResponseAndContext<SignatureResult>> { ): Promise<RpcResponseAndContext<SignatureResult>> {
let rawSignature: string; let rawSignature: string;
@ -3629,9 +3631,8 @@ export class Connection {
if (typeof strategy == 'string') { if (typeof strategy == 'string') {
rawSignature = strategy; rawSignature = strategy;
} else { } else {
const config = strategy as const config = strategy as TransactionConfirmationStrategy;
| BlockheightBasedTransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy;
if (config.abortSignal?.aborted) { if (config.abortSignal?.aborted) {
return Promise.reject(config.abortSignal.reason); return Promise.reject(config.abortSignal.reason);
} }

View File

@ -4,6 +4,7 @@ import {
BlockheightBasedTransactionConfirmationStrategy, BlockheightBasedTransactionConfirmationStrategy,
Connection, Connection,
DurableNonceTransactionConfirmationStrategy, DurableNonceTransactionConfirmationStrategy,
TransactionConfirmationStrategy,
} from '../connection'; } from '../connection';
import type {TransactionSignature} from '../transaction'; import type {TransactionSignature} from '../transaction';
import type {ConfirmOptions} from '../connection'; import type {ConfirmOptions} from '../connection';
@ -15,14 +16,14 @@ import type {ConfirmOptions} from '../connection';
* *
* @param {Connection} connection * @param {Connection} connection
* @param {Buffer} rawTransaction * @param {Buffer} rawTransaction
* @param {BlockheightBasedTransactionConfirmationStrategy} confirmationStrategy * @param {TransactionConfirmationStrategy} confirmationStrategy
* @param {ConfirmOptions} [options] * @param {ConfirmOptions} [options]
* @returns {Promise<TransactionSignature>} * @returns {Promise<TransactionSignature>}
*/ */
export async function sendAndConfirmRawTransaction( export async function sendAndConfirmRawTransaction(
connection: Connection, connection: Connection,
rawTransaction: Buffer, rawTransaction: Buffer,
confirmationStrategy: BlockheightBasedTransactionConfirmationStrategy, confirmationStrategy: TransactionConfirmationStrategy,
options?: ConfirmOptions, options?: ConfirmOptions,
): Promise<TransactionSignature>; ): Promise<TransactionSignature>;
@ -42,16 +43,12 @@ export async function sendAndConfirmRawTransaction(
connection: Connection, connection: Connection,
rawTransaction: Buffer, rawTransaction: Buffer,
confirmationStrategyOrConfirmOptions: confirmationStrategyOrConfirmOptions:
| BlockheightBasedTransactionConfirmationStrategy | TransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy
| ConfirmOptions | ConfirmOptions
| undefined, | undefined,
maybeConfirmOptions?: ConfirmOptions, maybeConfirmOptions?: ConfirmOptions,
): Promise<TransactionSignature> { ): Promise<TransactionSignature> {
let confirmationStrategy: let confirmationStrategy: TransactionConfirmationStrategy | undefined;
| BlockheightBasedTransactionConfirmationStrategy
| DurableNonceTransactionConfirmationStrategy
| undefined;
let options: ConfirmOptions | undefined; let options: ConfirmOptions | undefined;
if ( if (
confirmationStrategyOrConfirmOptions && confirmationStrategyOrConfirmOptions &&