@solana/web3.js 1.4.1 → 1.5.1

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/module.flow.js CHANGED
@@ -594,6 +594,15 @@ declare module "@solana/web3.js" {
594
594
  | "root"
595
595
  | "max";
596
596
 
597
+ /**
598
+ * A subset of Commitment levels, which are at least optimistically confirmed
599
+ * <pre>
600
+ * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster
601
+ * 'finalized': Query the most recent block which has been finalized by the cluster
602
+ * </pre>
603
+ */
604
+ declare export type Finality = "confirmed" | "finalized";
605
+
597
606
  /**
598
607
  * Filter for largest accounts query
599
608
  * <pre>
@@ -1947,34 +1956,41 @@ feeCalculator: FeeCalculator,...
1947
1956
  * Fetch a list of Transactions and transaction statuses from the cluster
1948
1957
  * for a confirmed block
1949
1958
  */
1950
- getConfirmedBlock(slot: number): Promise<ConfirmedBlock>;
1959
+ getConfirmedBlock(
1960
+ slot: number,
1961
+ commitment?: Finality
1962
+ ): Promise<ConfirmedBlock>;
1951
1963
 
1952
1964
  /**
1953
1965
  * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards
1954
1966
  */
1955
1967
  getConfirmedBlockSignatures(
1956
- slot: number
1968
+ slot: number,
1969
+ commitment?: Finality
1957
1970
  ): Promise<ConfirmedBlockSignatures>;
1958
1971
 
1959
1972
  /**
1960
1973
  * Fetch a transaction details for a confirmed transaction
1961
1974
  */
1962
1975
  getConfirmedTransaction(
1963
- signature: TransactionSignature
1976
+ signature: TransactionSignature,
1977
+ commitment?: Finality
1964
1978
  ): Promise<ConfirmedTransaction | null>;
1965
1979
 
1966
1980
  /**
1967
1981
  * Fetch parsed transaction details for a confirmed transaction
1968
1982
  */
1969
1983
  getParsedConfirmedTransaction(
1970
- signature: TransactionSignature
1984
+ signature: TransactionSignature,
1985
+ commitment?: Finality
1971
1986
  ): Promise<ParsedConfirmedTransaction | null>;
1972
1987
 
1973
1988
  /**
1974
1989
  * Fetch parsed transaction details for a batch of confirmed transactions
1975
1990
  */
1976
1991
  getParsedConfirmedTransactions(
1977
- signatures: TransactionSignature[]
1992
+ signatures: TransactionSignature[],
1993
+ commitment?: Finality
1978
1994
  ): Promise<(ParsedConfirmedTransaction | null)[]>;
1979
1995
 
1980
1996
  /**
@@ -1999,7 +2015,8 @@ feeCalculator: FeeCalculator,...
1999
2015
  */
2000
2016
  getConfirmedSignaturesForAddress2(
2001
2017
  address: PublicKey,
2002
- options?: ConfirmedSignaturesForAddress2Options
2018
+ options?: ConfirmedSignaturesForAddress2Options,
2019
+ commitment?: Finality
2003
2020
  ): Promise<Array<ConfirmedSignatureInfo>>;
2004
2021
 
2005
2022
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/web3.js",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "Solana Javascript API",
5
5
  "keywords": [
6
6
  "api",
@@ -77,7 +77,7 @@
77
77
  "@types/node": "^14.14.26",
78
78
  "@types/node-fetch": "^2.5.8",
79
79
  "@types/secp256k1": "^4.0.1",
80
- "@types/sinon": "^9.0.11",
80
+ "@types/sinon": "^10.0.0",
81
81
  "@typescript-eslint/eslint-plugin": "^4.14.2",
82
82
  "@typescript-eslint/parser": "^4.14.2",
83
83
  "chai": "^4.3.0",
@@ -100,7 +100,7 @@
100
100
  "nyc": "^15.1.0",
101
101
  "prettier": "^2.0.0",
102
102
  "rimraf": "3.0.2",
103
- "rollup": "2.44.0",
103
+ "rollup": "2.45.2",
104
104
  "rollup-plugin-dts": "^3.0.1",
105
105
  "rollup-plugin-node-polyfills": "^0.2.1",
106
106
  "rollup-plugin-terser": "^7.0.2",
package/src/connection.ts CHANGED
@@ -219,6 +219,15 @@ export type Commitment =
219
219
  | 'root' // Deprecated as of v1.5.5
220
220
  | 'max'; // Deprecated as of v1.5.5
221
221
 
222
+ /**
223
+ * A subset of Commitment levels, which are at least optimistically confirmed
224
+ * <pre>
225
+ * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster
226
+ * 'finalized': Query the most recent block which has been finalized by the cluster
227
+ * </pre>
228
+ */
229
+ export type Finality = 'confirmed' | 'finalized';
230
+
222
231
  /**
223
232
  * Filter for largest accounts query
224
233
  * <pre>
@@ -2587,8 +2596,12 @@ export class Connection {
2587
2596
  * Fetch a list of Transactions and transaction statuses from the cluster
2588
2597
  * for a confirmed block
2589
2598
  */
2590
- async getConfirmedBlock(slot: number): Promise<ConfirmedBlock> {
2591
- const unsafeRes = await this._rpcRequest('getConfirmedBlock', [slot]);
2599
+ async getConfirmedBlock(
2600
+ slot: number,
2601
+ commitment?: Finality,
2602
+ ): Promise<ConfirmedBlock> {
2603
+ const args = this._buildArgsAtLeastConfirmed([slot], commitment);
2604
+ const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);
2592
2605
  const res = create(unsafeRes, GetConfirmedBlockRpcResult);
2593
2606
  if ('error' in res) {
2594
2607
  throw new Error('failed to get confirmed block: ' + res.error.message);
@@ -2605,11 +2618,18 @@ export class Connection {
2605
2618
  */
2606
2619
  async getConfirmedBlockSignatures(
2607
2620
  slot: number,
2621
+ commitment?: Finality,
2608
2622
  ): Promise<ConfirmedBlockSignatures> {
2609
- const unsafeRes = await this._rpcRequest('getConfirmedBlock', [
2610
- slot,
2611
- {transactionDetails: 'signatures', rewards: false},
2612
- ]);
2623
+ const args = this._buildArgsAtLeastConfirmed(
2624
+ [slot],
2625
+ commitment,
2626
+ undefined,
2627
+ {
2628
+ transactionDetails: 'signatures',
2629
+ rewards: false,
2630
+ },
2631
+ );
2632
+ const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);
2613
2633
  const res = create(unsafeRes, GetConfirmedBlockSignaturesRpcResult);
2614
2634
  if ('error' in res) {
2615
2635
  throw new Error('failed to get confirmed block: ' + res.error.message);
@@ -2626,10 +2646,10 @@ export class Connection {
2626
2646
  */
2627
2647
  async getConfirmedTransaction(
2628
2648
  signature: TransactionSignature,
2649
+ commitment?: Finality,
2629
2650
  ): Promise<ConfirmedTransaction | null> {
2630
- const unsafeRes = await this._rpcRequest('getConfirmedTransaction', [
2631
- signature,
2632
- ]);
2651
+ const args = this._buildArgsAtLeastConfirmed([signature], commitment);
2652
+ const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);
2633
2653
  const res = create(unsafeRes, GetConfirmedTransactionRpcResult);
2634
2654
  if ('error' in res) {
2635
2655
  throw new Error(
@@ -2644,11 +2664,14 @@ export class Connection {
2644
2664
  */
2645
2665
  async getParsedConfirmedTransaction(
2646
2666
  signature: TransactionSignature,
2667
+ commitment?: Finality,
2647
2668
  ): Promise<ParsedConfirmedTransaction | null> {
2648
- const unsafeRes = await this._rpcRequest('getConfirmedTransaction', [
2649
- signature,
2669
+ const args = this._buildArgsAtLeastConfirmed(
2670
+ [signature],
2671
+ commitment,
2650
2672
  'jsonParsed',
2651
- ]);
2673
+ );
2674
+ const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);
2652
2675
  const res = create(unsafeRes, GetParsedConfirmedTransactionRpcResult);
2653
2676
  if ('error' in res) {
2654
2677
  throw new Error(
@@ -2663,11 +2686,17 @@ export class Connection {
2663
2686
  */
2664
2687
  async getParsedConfirmedTransactions(
2665
2688
  signatures: TransactionSignature[],
2689
+ commitment?: Finality,
2666
2690
  ): Promise<(ParsedConfirmedTransaction | null)[]> {
2667
2691
  const batch = signatures.map(signature => {
2692
+ const args = this._buildArgsAtLeastConfirmed(
2693
+ [signature],
2694
+ commitment,
2695
+ 'jsonParsed',
2696
+ );
2668
2697
  return {
2669
2698
  methodName: 'getConfirmedTransaction',
2670
- args: [signature, 'jsonParsed'],
2699
+ args,
2671
2700
  };
2672
2701
  });
2673
2702
 
@@ -2709,7 +2738,10 @@ export class Connection {
2709
2738
  }
2710
2739
 
2711
2740
  try {
2712
- const block = await this.getConfirmedBlockSignatures(startSlot);
2741
+ const block = await this.getConfirmedBlockSignatures(
2742
+ startSlot,
2743
+ 'finalized',
2744
+ );
2713
2745
  if (block.signatures.length > 0) {
2714
2746
  options.until = block.signatures[
2715
2747
  block.signatures.length - 1
@@ -2765,10 +2797,17 @@ export class Connection {
2765
2797
  async getConfirmedSignaturesForAddress2(
2766
2798
  address: PublicKey,
2767
2799
  options?: ConfirmedSignaturesForAddress2Options,
2800
+ commitment?: Finality,
2768
2801
  ): Promise<Array<ConfirmedSignatureInfo>> {
2802
+ const args = this._buildArgsAtLeastConfirmed(
2803
+ [address.toBase58()],
2804
+ commitment,
2805
+ undefined,
2806
+ options,
2807
+ );
2769
2808
  const unsafeRes = await this._rpcRequest(
2770
2809
  'getConfirmedSignaturesForAddress2',
2771
- [address.toBase58(), options],
2810
+ args,
2772
2811
  );
2773
2812
  const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);
2774
2813
  if ('error' in res) {
@@ -3476,6 +3515,26 @@ export class Connection {
3476
3515
  return args;
3477
3516
  }
3478
3517
 
3518
+ /**
3519
+ * @internal
3520
+ */
3521
+ _buildArgsAtLeastConfirmed(
3522
+ args: Array<any>,
3523
+ override?: Finality,
3524
+ encoding?: 'jsonParsed' | 'base64',
3525
+ extra?: any,
3526
+ ): Array<any> {
3527
+ const commitment = override || this._commitment;
3528
+ if (commitment && !['confirmed', 'finalized'].includes(commitment)) {
3529
+ throw new Error(
3530
+ 'Using Connection with default commitment: `' +
3531
+ this._commitment +
3532
+ '`, but method requires at least `confirmed`',
3533
+ );
3534
+ }
3535
+ return this._buildArgs(args, override, encoding, extra);
3536
+ }
3537
+
3479
3538
  /**
3480
3539
  * @internal
3481
3540
  */