From 3505e4c30c229ece67f1c110ee0efa575830e5f1 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sat, 13 Aug 2022 04:52:09 +0800 Subject: [PATCH 01/12] add solscan link for explorer and rename generateSolanaExplorerLink to generateTXLink --- .../src/transaction/TransactionReceipt.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 06a9410db..590167c0e 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -19,6 +19,11 @@ export type TransactionLike = | PendingTransaction | TransactionReceipt; +export enum ExplorerType { + SOLANA_EXPLORER = "solana-explorer", + SOLSCAN = "solscan", +} + /** * Confirms a transaction, returning its receipt. * @@ -96,7 +101,13 @@ export class TransactionReceipt { * @param network * @returns */ - generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { - return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; + + generateTXLink(cluster: Cluster = "mainnet-beta", explorerType: string = ExplorerType.SOLANA_EXPLORER): string { + switch(explorerType) { + case ExplorerType.SOLANA_EXPLORER: + return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; + case ExplorerType.SOLSCAN: + return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; + } } } From 620c46cced3e8a4405e0462f4878f269c6013412 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sat, 13 Aug 2022 11:10:53 +0800 Subject: [PATCH 02/12] fix: build error with default return string --- .../src/transaction/TransactionReceipt.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 590167c0e..45cccb642 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -102,12 +102,17 @@ export class TransactionReceipt { * @returns */ - generateTXLink(cluster: Cluster = "mainnet-beta", explorerType: string = ExplorerType.SOLANA_EXPLORER): string { - switch(explorerType) { - case ExplorerType.SOLANA_EXPLORER: + generateTXLink( + cluster: Cluster = "mainnet-beta", + explorerType: string = ExplorerType.SOLANA_EXPLORER + ): string { + switch (explorerType) { + case ExplorerType.SOLANA_EXPLORER: return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; - case ExplorerType.SOLSCAN: + case ExplorerType.SOLSCAN: return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; + default: + return ""; } } } From c35efe3feab26e506707e9ad922b10455f9c50d7 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sat, 13 Aug 2022 11:38:24 +0800 Subject: [PATCH 03/12] throw an error instead of default string --- packages/solana-contrib/src/transaction/TransactionReceipt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 45cccb642..d1ae468bf 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -112,7 +112,7 @@ export class TransactionReceipt { case ExplorerType.SOLSCAN: return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; default: - return ""; + throw new Error(`Explorer type is not passed.`); } } } From 06319d7978ee84d9675f8c5cfc3892aa87341219 Mon Sep 17 00:00:00 2001 From: Michael Huang Date: Fri, 12 Aug 2022 23:46:53 -0400 Subject: [PATCH 04/12] Update packages/solana-contrib/src/transaction/TransactionReceipt.ts --- packages/solana-contrib/src/transaction/TransactionReceipt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index d1ae468bf..60454c408 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -112,7 +112,7 @@ export class TransactionReceipt { case ExplorerType.SOLSCAN: return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; default: - throw new Error(`Explorer type is not passed.`); + throw new Error(`Explorer type ${explorerType} is not supported.`); } } } From a8254a723d17a0e7fb9c9317c468cefe513a28f3 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sat, 13 Aug 2022 11:59:13 +0800 Subject: [PATCH 05/12] put prev explorer link method again --- packages/solana-contrib/src/transaction/TransactionReceipt.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 60454c408..4d026ccbb 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -102,6 +102,10 @@ export class TransactionReceipt { * @returns */ + generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { + return this.generateTXLink(cluster); + } + generateTXLink( cluster: Cluster = "mainnet-beta", explorerType: string = ExplorerType.SOLANA_EXPLORER From a177b9f31aa732b2a55b048ef90b795aaed6a788 Mon Sep 17 00:00:00 2001 From: Michael Huang Date: Sat, 13 Aug 2022 13:56:10 -0400 Subject: [PATCH 06/12] Update packages/solana-contrib/src/transaction/TransactionReceipt.ts --- packages/solana-contrib/src/transaction/TransactionReceipt.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 4d026ccbb..0d9b5d888 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -101,7 +101,6 @@ export class TransactionReceipt { * @param network * @returns */ - generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { return this.generateTXLink(cluster); } From f0dffa6c1f3d7d3a27759989f97b6216ad24ec31 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 03:40:22 +0800 Subject: [PATCH 07/12] add solscan link generation for pending transaction --- .../src/transaction/PendingTransaction.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/solana-contrib/src/transaction/PendingTransaction.ts b/packages/solana-contrib/src/transaction/PendingTransaction.ts index 329ad03ae..0498f9726 100644 --- a/packages/solana-contrib/src/transaction/PendingTransaction.ts +++ b/packages/solana-contrib/src/transaction/PendingTransaction.ts @@ -9,7 +9,7 @@ import type { import promiseRetry from "promise-retry"; import type { WrapOptions } from "retry"; -import { TransactionReceipt } from "./TransactionReceipt.js"; +import { ExplorerType, TransactionReceipt } from "./TransactionReceipt.js"; /** * Options for awaiting a transaction confirmation. @@ -167,4 +167,18 @@ export class PendingTransaction { generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; } + + generateTXLink( + cluster: Cluster = "mainnet-beta", + explorerType: string = ExplorerType.SOLANA_EXPLORER + ): string { + switch (explorerType) { + case ExplorerType.SOLANA_EXPLORER: + return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; + case ExplorerType.SOLSCAN: + return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; + default: + throw new Error(`Explorer type ${explorerType} is not supported.`); + } + } } From b4651536b59dc115e06c8b5556dd90db04f4316f Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 04:24:34 +0800 Subject: [PATCH 08/12] move generate tx link logic to /packages/solana-contrib/src/utils --- .../src/transaction/PendingTransaction.ts | 23 -------------- .../src/transaction/TransactionReceipt.ts | 28 ----------------- packages/solana-contrib/src/utils/index.ts | 1 + packages/solana-contrib/src/utils/txLink.ts | 31 +++++++++++++++++++ 4 files changed, 32 insertions(+), 51 deletions(-) create mode 100644 packages/solana-contrib/src/utils/txLink.ts diff --git a/packages/solana-contrib/src/transaction/PendingTransaction.ts b/packages/solana-contrib/src/transaction/PendingTransaction.ts index 0498f9726..c27561c09 100644 --- a/packages/solana-contrib/src/transaction/PendingTransaction.ts +++ b/packages/solana-contrib/src/transaction/PendingTransaction.ts @@ -158,27 +158,4 @@ export class PendingTransaction { return this.signature; } - - /** - * Generates a link to view this {@link PendingTransaction} on the official Solana explorer. - * @param network - * @returns - */ - generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { - return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; - } - - generateTXLink( - cluster: Cluster = "mainnet-beta", - explorerType: string = ExplorerType.SOLANA_EXPLORER - ): string { - switch (explorerType) { - case ExplorerType.SOLANA_EXPLORER: - return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; - case ExplorerType.SOLSCAN: - return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; - default: - throw new Error(`Explorer type ${explorerType} is not supported.`); - } - } } diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index 0d9b5d888..c65e38f39 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -19,11 +19,6 @@ export type TransactionLike = | PendingTransaction | TransactionReceipt; -export enum ExplorerType { - SOLANA_EXPLORER = "solana-explorer", - SOLSCAN = "solscan", -} - /** * Confirms a transaction, returning its receipt. * @@ -95,27 +90,4 @@ export class TransactionReceipt { invariant(amtStr, "no amount"); return parseInt(amtStr); } - - /** - * Generates a link to view this {@link TransactionReceipt} on the official Solana explorer. - * @param network - * @returns - */ - generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { - return this.generateTXLink(cluster); - } - - generateTXLink( - cluster: Cluster = "mainnet-beta", - explorerType: string = ExplorerType.SOLANA_EXPLORER - ): string { - switch (explorerType) { - case ExplorerType.SOLANA_EXPLORER: - return `https://explorer.solana.com/tx/${this.signature}?cluster=${cluster}`; - case ExplorerType.SOLSCAN: - return `https://solscan.io/tx/${this.signature}?cluster=${cluster}`; - default: - throw new Error(`Explorer type ${explorerType} is not supported.`); - } - } } diff --git a/packages/solana-contrib/src/utils/index.ts b/packages/solana-contrib/src/utils/index.ts index 3c64bd05d..6ef4e4128 100644 --- a/packages/solana-contrib/src/utils/index.ts +++ b/packages/solana-contrib/src/utils/index.ts @@ -6,3 +6,4 @@ export * from "./pubkeyCache.js"; export * from "./publicKey.js"; export * from "./simulateTransactionWithCommitment.js"; export * from "./time.js"; +export * from "./txLink.js"; diff --git a/packages/solana-contrib/src/utils/txLink.ts b/packages/solana-contrib/src/utils/txLink.ts new file mode 100644 index 000000000..b1787ba67 --- /dev/null +++ b/packages/solana-contrib/src/utils/txLink.ts @@ -0,0 +1,31 @@ +import { Cluster } from "@solana/web3.js"; + +import { PendingTransaction } from "../transaction/PendingTransaction"; +import { TransactionReceipt } from "../transaction/TransactionReceipt"; + +export enum ExplorerType { + SOLANA_EXPLORER = "solana-explorer", + SOLSCAN = "solscan", +} + +export function generateSolanaExplorerLink( + tx: PendingTransaction | TransactionReceipt, + cluster: Cluster = "mainnet-beta" +): string { + return generateTXLink(tx.signature, cluster); +} + +export function generateTXLink( + tx: PendingTransaction | TransactionReceipt, + cluster: Cluster = "mainnet-beta", + explorerType: string = ExplorerType.SOLANA_EXPLORER +): string { + switch (explorerType) { + case ExplorerType.SOLANA_EXPLORER: + return `https://explorer.solana.com/tx/${tx.signature}?cluster=${cluster}`; + case ExplorerType.SOLSCAN: + return `https://solscan.io/tx/${tx.signature}?cluster=${cluster}`; + default: + throw new Error(`Explorer type ${explorerType} is not supported.`); + } +} From 5ab384c6be6c99dbd3846d7ffb7ee21df74dbdbf Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 04:31:40 +0800 Subject: [PATCH 09/12] fix: build error with pass tx to generateTXLink --- packages/solana-contrib/src/transaction/PendingTransaction.ts | 3 +-- packages/solana-contrib/src/transaction/TransactionReceipt.ts | 1 - packages/solana-contrib/src/utils/txLink.ts | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/solana-contrib/src/transaction/PendingTransaction.ts b/packages/solana-contrib/src/transaction/PendingTransaction.ts index c27561c09..13fd4dfda 100644 --- a/packages/solana-contrib/src/transaction/PendingTransaction.ts +++ b/packages/solana-contrib/src/transaction/PendingTransaction.ts @@ -1,6 +1,5 @@ import type { BlockhashWithExpiryBlockHeight, - Cluster, Connection, Finality, SignatureResult, @@ -9,7 +8,7 @@ import type { import promiseRetry from "promise-retry"; import type { WrapOptions } from "retry"; -import { ExplorerType, TransactionReceipt } from "./TransactionReceipt.js"; +import { TransactionReceipt } from "./TransactionReceipt.js"; /** * Options for awaiting a transaction confirmation. diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index c65e38f39..ff39996da 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -1,5 +1,4 @@ import type { - Cluster, TransactionResponse, TransactionSignature, } from "@solana/web3.js"; diff --git a/packages/solana-contrib/src/utils/txLink.ts b/packages/solana-contrib/src/utils/txLink.ts index b1787ba67..c504595a0 100644 --- a/packages/solana-contrib/src/utils/txLink.ts +++ b/packages/solana-contrib/src/utils/txLink.ts @@ -12,7 +12,7 @@ export function generateSolanaExplorerLink( tx: PendingTransaction | TransactionReceipt, cluster: Cluster = "mainnet-beta" ): string { - return generateTXLink(tx.signature, cluster); + return generateTXLink(tx, cluster); } export function generateTXLink( From 08df5ef920d5b18a840c93bb7d6aaf176c099b76 Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 04:34:42 +0800 Subject: [PATCH 10/12] pass signature on behalf of tx --- packages/solana-contrib/src/utils/txLink.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/solana-contrib/src/utils/txLink.ts b/packages/solana-contrib/src/utils/txLink.ts index c504595a0..cf8fe213d 100644 --- a/packages/solana-contrib/src/utils/txLink.ts +++ b/packages/solana-contrib/src/utils/txLink.ts @@ -9,22 +9,22 @@ export enum ExplorerType { } export function generateSolanaExplorerLink( - tx: PendingTransaction | TransactionReceipt, + signature: string, cluster: Cluster = "mainnet-beta" ): string { - return generateTXLink(tx, cluster); + return generateTXLink(signature, cluster); } export function generateTXLink( - tx: PendingTransaction | TransactionReceipt, + signature: string, cluster: Cluster = "mainnet-beta", explorerType: string = ExplorerType.SOLANA_EXPLORER ): string { switch (explorerType) { case ExplorerType.SOLANA_EXPLORER: - return `https://explorer.solana.com/tx/${tx.signature}?cluster=${cluster}`; + return `https://explorer.solana.com/tx/${signature}?cluster=${cluster}`; case ExplorerType.SOLSCAN: - return `https://solscan.io/tx/${tx.signature}?cluster=${cluster}`; + return `https://solscan.io/tx/${signature}?cluster=${cluster}`; default: throw new Error(`Explorer type ${explorerType} is not supported.`); } From 92ae948135ff72a66268d0b6faf86d99fa19712d Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 04:36:01 +0800 Subject: [PATCH 11/12] remove generateSolanaExplorerLink() --- packages/solana-contrib/src/utils/txLink.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/packages/solana-contrib/src/utils/txLink.ts b/packages/solana-contrib/src/utils/txLink.ts index cf8fe213d..9f429e856 100644 --- a/packages/solana-contrib/src/utils/txLink.ts +++ b/packages/solana-contrib/src/utils/txLink.ts @@ -1,20 +1,10 @@ import { Cluster } from "@solana/web3.js"; -import { PendingTransaction } from "../transaction/PendingTransaction"; -import { TransactionReceipt } from "../transaction/TransactionReceipt"; - export enum ExplorerType { SOLANA_EXPLORER = "solana-explorer", SOLSCAN = "solscan", } -export function generateSolanaExplorerLink( - signature: string, - cluster: Cluster = "mainnet-beta" -): string { - return generateTXLink(signature, cluster); -} - export function generateTXLink( signature: string, cluster: Cluster = "mainnet-beta", From a4cf84cd1253bf926da5f6fb7efb803244298b6b Mon Sep 17 00:00:00 2001 From: Holmes Date: Sun, 21 Aug 2022 04:54:46 +0800 Subject: [PATCH 12/12] keep solana explorer link --- .../src/transaction/PendingTransaction.ts | 11 +++++++++++ .../src/transaction/TransactionReceipt.ts | 11 +++++++++++ packages/solana-contrib/src/utils/txLink.ts | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/solana-contrib/src/transaction/PendingTransaction.ts b/packages/solana-contrib/src/transaction/PendingTransaction.ts index 13fd4dfda..0c988c569 100644 --- a/packages/solana-contrib/src/transaction/PendingTransaction.ts +++ b/packages/solana-contrib/src/transaction/PendingTransaction.ts @@ -1,5 +1,6 @@ import type { BlockhashWithExpiryBlockHeight, + Cluster, Connection, Finality, SignatureResult, @@ -8,6 +9,7 @@ import type { import promiseRetry from "promise-retry"; import type { WrapOptions } from "retry"; +import { generateTXLink } from "../utils/txLink.js"; import { TransactionReceipt } from "./TransactionReceipt.js"; /** @@ -157,4 +159,13 @@ export class PendingTransaction { return this.signature; } + + /** + * Generates a link to view this {@link PendingTransaction} on the official Solana explorer. + * @param network + * @returns + */ + generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { + return generateTXLink(this.signature, cluster); + } } diff --git a/packages/solana-contrib/src/transaction/TransactionReceipt.ts b/packages/solana-contrib/src/transaction/TransactionReceipt.ts index ff39996da..e7f35d5f7 100644 --- a/packages/solana-contrib/src/transaction/TransactionReceipt.ts +++ b/packages/solana-contrib/src/transaction/TransactionReceipt.ts @@ -1,4 +1,5 @@ import type { + Cluster, TransactionResponse, TransactionSignature, } from "@solana/web3.js"; @@ -7,6 +8,7 @@ import { default as invariant } from "tiny-invariant"; import type { Event, EventParser } from "../interfaces.js"; import type { PromiseOrValue } from "../utils/misc.js"; import { valueAsPromise } from "../utils/misc.js"; +import { generateTXLink } from "../utils/txLink.js"; import { PendingTransaction } from "./PendingTransaction.js"; import type { TransactionEnvelope } from "./TransactionEnvelope.js"; @@ -89,4 +91,13 @@ export class TransactionReceipt { invariant(amtStr, "no amount"); return parseInt(amtStr); } + + /** + * Generates a link to view this {@link TransactionReceipt} on the official Solana explorer. + * @param network + * @returns + */ + generateSolanaExplorerLink(cluster: Cluster = "mainnet-beta"): string { + return generateTXLink(this.signature, cluster); + } } diff --git a/packages/solana-contrib/src/utils/txLink.ts b/packages/solana-contrib/src/utils/txLink.ts index 9f429e856..000306609 100644 --- a/packages/solana-contrib/src/utils/txLink.ts +++ b/packages/solana-contrib/src/utils/txLink.ts @@ -1,4 +1,4 @@ -import { Cluster } from "@solana/web3.js"; +import type { Cluster } from "@solana/web3.js"; export enum ExplorerType { SOLANA_EXPLORER = "solana-explorer",