@vue-solana/vue 0.4.2 → 0.6.0

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.
@@ -1,5 +1,24 @@
1
1
  import { ref } from 'vue';
2
2
 
3
+ async function withTimeout(promise, timeoutMs, message) {
4
+ if (!timeoutMs) {
5
+ return promise;
6
+ }
7
+ let timeoutId;
8
+ try {
9
+ const timeout = new Promise((_, reject) => {
10
+ timeoutId = setTimeout(() => {
11
+ reject(new Error(message));
12
+ }, timeoutMs);
13
+ });
14
+ return await Promise.race([promise, timeout]);
15
+ } finally {
16
+ if (timeoutId) {
17
+ clearTimeout(timeoutId);
18
+ }
19
+ }
20
+ }
21
+
3
22
  function useTransaction(handler, options = {}) {
4
23
  const signature = ref(null);
5
24
  const loading = ref(false);
@@ -37,21 +56,5 @@ function useTransaction(handler, options = {}) {
37
56
  execute
38
57
  };
39
58
  }
40
- function withTimeout(promise, timeoutMs, message) {
41
- if (!timeoutMs) {
42
- return promise;
43
- }
44
- let timeoutId;
45
- const timeout = new Promise((_, reject) => {
46
- timeoutId = setTimeout(() => {
47
- reject(new Error(message));
48
- }, timeoutMs);
49
- });
50
- return Promise.race([promise, timeout]).finally(() => {
51
- if (timeoutId) {
52
- clearTimeout(timeoutId);
53
- }
54
- });
55
- }
56
59
 
57
- export { useTransaction as u };
60
+ export { useTransaction as u, withTimeout as w };
@@ -0,0 +1,69 @@
1
+ import { confirmTransactionSignature } from '@vue-solana/core/transaction';
2
+ import { ref } from 'vue';
3
+ import { u as useConnection } from './vue.DlEAL2G8.mjs';
4
+
5
+ function getConfirmedTransactionStatus(confirmation) {
6
+ if (confirmation.commitment === "finalized") {
7
+ return "finalized";
8
+ }
9
+ return confirmation.commitment === "processed" ? "processed" : "confirmed";
10
+ }
11
+ function useTransactionConfirmation(defaultOptions = {}) {
12
+ const connection = useConnection();
13
+ const signature = ref(null);
14
+ const confirmation = ref(null);
15
+ const status = ref("idle");
16
+ const loading = ref(false);
17
+ const error = ref(null);
18
+ let executionId = 0;
19
+ async function confirm(nextSignature, options = {}) {
20
+ const currentExecutionId = ++executionId;
21
+ const confirmationOptions = { ...defaultOptions, ...options };
22
+ signature.value = nextSignature;
23
+ confirmation.value = null;
24
+ status.value = "confirming";
25
+ loading.value = true;
26
+ error.value = null;
27
+ try {
28
+ const nextConfirmation = await confirmTransactionSignature(
29
+ connection,
30
+ nextSignature,
31
+ confirmationOptions
32
+ );
33
+ if (currentExecutionId === executionId) {
34
+ confirmation.value = nextConfirmation;
35
+ status.value = getConfirmedTransactionStatus(nextConfirmation);
36
+ }
37
+ return nextConfirmation;
38
+ } catch (cause) {
39
+ if (currentExecutionId === executionId) {
40
+ error.value = cause;
41
+ status.value = "error";
42
+ }
43
+ throw cause;
44
+ } finally {
45
+ if (currentExecutionId === executionId) {
46
+ loading.value = false;
47
+ }
48
+ }
49
+ }
50
+ function reset() {
51
+ executionId += 1;
52
+ signature.value = null;
53
+ confirmation.value = null;
54
+ status.value = "idle";
55
+ loading.value = false;
56
+ error.value = null;
57
+ }
58
+ return {
59
+ signature,
60
+ confirmation,
61
+ status,
62
+ loading,
63
+ error,
64
+ confirm,
65
+ reset
66
+ };
67
+ }
68
+
69
+ export { getConfirmedTransactionStatus as g, useTransactionConfirmation as u };
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- const useSignAndSendTransaction = require('./shared/vue.BwrQMPty.cjs');
3
+ const useSignAndSendTransaction = require('./shared/vue.DEQJ23UM.cjs');
4
4
  require('@vue-solana/core/transaction');
5
+ require('vue');
5
6
  require('./shared/vue.CwhEmATP.cjs');
6
7
  require('./shared/vue.COyyrsQU.cjs');
7
- require('vue');
8
8
  require('./shared/vue.C4tLiG3R.cjs');
9
9
  require('./shared/vue.CwPjPFN6.cjs');
10
- require('./shared/vue.CNhelr8H.cjs');
10
+ require('./shared/vue.DHVYJk8P.cjs');
11
11
 
12
12
 
13
13
 
@@ -1,11 +1,28 @@
1
1
  import * as vue from 'vue';
2
- import { SendTransactionOptions } from '@vue-solana/core/types';
2
+ import { SendTransactionOptions, ConfirmTransactionOptions, TransactionConfirmation, SolanaTransaction } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
3
4
 
5
+ type SignAndSendTransactionStatus = "idle" | "sending" | "sent" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ interface SignAndSendTransactionOptions extends SendTransactionOptions {
7
+ confirm?: boolean;
8
+ confirmation?: ConfirmTransactionOptions;
9
+ }
4
10
  declare function useSignAndSendTransaction(): {
5
11
  signature: any;
12
+ confirmation: vue.Ref<{
13
+ signature: TransactionSignature;
14
+ commitment: TransactionSignature;
15
+ result: TransactionSignature<TransactionSignature>;
16
+ } | null, TransactionConfirmation | {
17
+ signature: TransactionSignature;
18
+ commitment: TransactionSignature;
19
+ result: TransactionSignature<TransactionSignature>;
20
+ } | null>;
21
+ status: vue.Ref<SignAndSendTransactionStatus, SignAndSendTransactionStatus>;
6
22
  loading: vue.Ref<boolean, boolean>;
7
23
  error: vue.Ref<unknown, unknown>;
8
- execute: (transaction: any, options?: SendTransactionOptions | undefined) => Promise<TransactionSignature>;
24
+ execute: (transaction: SolanaTransaction, options?: SignAndSendTransactionOptions) => Promise<TransactionSignature>;
9
25
  };
10
26
 
11
27
  export { useSignAndSendTransaction };
28
+ export type { SignAndSendTransactionOptions, SignAndSendTransactionStatus };
@@ -1,11 +1,28 @@
1
1
  import * as vue from 'vue';
2
- import { SendTransactionOptions } from '@vue-solana/core/types';
2
+ import { SendTransactionOptions, ConfirmTransactionOptions, TransactionConfirmation, SolanaTransaction } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
3
4
 
5
+ type SignAndSendTransactionStatus = "idle" | "sending" | "sent" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ interface SignAndSendTransactionOptions extends SendTransactionOptions {
7
+ confirm?: boolean;
8
+ confirmation?: ConfirmTransactionOptions;
9
+ }
4
10
  declare function useSignAndSendTransaction(): {
5
11
  signature: any;
12
+ confirmation: vue.Ref<{
13
+ signature: TransactionSignature;
14
+ commitment: TransactionSignature;
15
+ result: TransactionSignature<TransactionSignature>;
16
+ } | null, TransactionConfirmation | {
17
+ signature: TransactionSignature;
18
+ commitment: TransactionSignature;
19
+ result: TransactionSignature<TransactionSignature>;
20
+ } | null>;
21
+ status: vue.Ref<SignAndSendTransactionStatus, SignAndSendTransactionStatus>;
6
22
  loading: vue.Ref<boolean, boolean>;
7
23
  error: vue.Ref<unknown, unknown>;
8
- execute: (transaction: any, options?: SendTransactionOptions | undefined) => Promise<TransactionSignature>;
24
+ execute: (transaction: SolanaTransaction, options?: SignAndSendTransactionOptions) => Promise<TransactionSignature>;
9
25
  };
10
26
 
11
27
  export { useSignAndSendTransaction };
28
+ export type { SignAndSendTransactionOptions, SignAndSendTransactionStatus };
@@ -1,11 +1,28 @@
1
1
  import * as vue from 'vue';
2
- import { SendTransactionOptions } from '@vue-solana/core/types';
2
+ import { SendTransactionOptions, ConfirmTransactionOptions, TransactionConfirmation, SolanaTransaction } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
3
4
 
5
+ type SignAndSendTransactionStatus = "idle" | "sending" | "sent" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ interface SignAndSendTransactionOptions extends SendTransactionOptions {
7
+ confirm?: boolean;
8
+ confirmation?: ConfirmTransactionOptions;
9
+ }
4
10
  declare function useSignAndSendTransaction(): {
5
11
  signature: any;
12
+ confirmation: vue.Ref<{
13
+ signature: TransactionSignature;
14
+ commitment: TransactionSignature;
15
+ result: TransactionSignature<TransactionSignature>;
16
+ } | null, TransactionConfirmation | {
17
+ signature: TransactionSignature;
18
+ commitment: TransactionSignature;
19
+ result: TransactionSignature<TransactionSignature>;
20
+ } | null>;
21
+ status: vue.Ref<SignAndSendTransactionStatus, SignAndSendTransactionStatus>;
6
22
  loading: vue.Ref<boolean, boolean>;
7
23
  error: vue.Ref<unknown, unknown>;
8
- execute: (transaction: any, options?: SendTransactionOptions | undefined) => Promise<TransactionSignature>;
24
+ execute: (transaction: SolanaTransaction, options?: SignAndSendTransactionOptions) => Promise<TransactionSignature>;
9
25
  };
10
26
 
11
27
  export { useSignAndSendTransaction };
28
+ export type { SignAndSendTransactionOptions, SignAndSendTransactionStatus };
@@ -1,8 +1,8 @@
1
- export { u as useSignAndSendTransaction } from './shared/vue.BfF-kOvb.mjs';
1
+ export { u as useSignAndSendTransaction } from './shared/vue.RQ9fETnm.mjs';
2
2
  import '@vue-solana/core/transaction';
3
+ import 'vue';
3
4
  import './shared/vue.DlEAL2G8.mjs';
4
5
  import './shared/vue.BqDzSepb.mjs';
5
- import 'vue';
6
6
  import './shared/vue.1M_c5FWA.mjs';
7
7
  import './shared/vue.DYf_CRDv.mjs';
8
- import './shared/vue.CuhLIeDx.mjs';
8
+ import './shared/vue.jOsz34kz.mjs';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const useTransaction = require('./shared/vue.CNhelr8H.cjs');
3
+ const useTransaction = require('./shared/vue.DQi38JeF.cjs');
4
4
  require('vue');
5
5
 
6
6
 
@@ -1,2 +1,2 @@
1
- export { u as useTransaction } from './shared/vue.CuhLIeDx.mjs';
1
+ export { u as useTransaction } from './shared/vue.gLqkzJY4.mjs';
2
2
  import 'vue';
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const useTransactionConfirmation = require('./shared/vue.DHVYJk8P.cjs');
4
+ require('@vue-solana/core/transaction');
5
+ require('vue');
6
+ require('./shared/vue.CwhEmATP.cjs');
7
+ require('./shared/vue.COyyrsQU.cjs');
8
+ require('./shared/vue.C4tLiG3R.cjs');
9
+
10
+
11
+
12
+ exports.getConfirmedTransactionStatus = useTransactionConfirmation.getConfirmedTransactionStatus;
13
+ exports.useTransactionConfirmation = useTransactionConfirmation.useTransactionConfirmation;
@@ -0,0 +1,26 @@
1
+ import * as vue from 'vue';
2
+ import { TransactionConfirmation, ConfirmTransactionOptions } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
4
+
5
+ type TransactionConfirmationStatus = "idle" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ declare function getConfirmedTransactionStatus(confirmation: TransactionConfirmation): Extract<TransactionConfirmationStatus, "processed" | "confirmed" | "finalized">;
7
+ declare function useTransactionConfirmation(defaultOptions?: ConfirmTransactionOptions): {
8
+ signature: any;
9
+ confirmation: vue.Ref<{
10
+ signature: TransactionSignature;
11
+ commitment: TransactionSignature;
12
+ result: TransactionSignature<TransactionSignature>;
13
+ } | null, TransactionConfirmation | {
14
+ signature: TransactionSignature;
15
+ commitment: TransactionSignature;
16
+ result: TransactionSignature<TransactionSignature>;
17
+ } | null>;
18
+ status: vue.Ref<TransactionConfirmationStatus, TransactionConfirmationStatus>;
19
+ loading: vue.Ref<boolean, boolean>;
20
+ error: vue.Ref<unknown, unknown>;
21
+ confirm: (nextSignature: TransactionSignature, options?: ConfirmTransactionOptions) => Promise<TransactionConfirmation>;
22
+ reset: () => void;
23
+ };
24
+
25
+ export { getConfirmedTransactionStatus, useTransactionConfirmation };
26
+ export type { TransactionConfirmationStatus };
@@ -0,0 +1,26 @@
1
+ import * as vue from 'vue';
2
+ import { TransactionConfirmation, ConfirmTransactionOptions } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
4
+
5
+ type TransactionConfirmationStatus = "idle" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ declare function getConfirmedTransactionStatus(confirmation: TransactionConfirmation): Extract<TransactionConfirmationStatus, "processed" | "confirmed" | "finalized">;
7
+ declare function useTransactionConfirmation(defaultOptions?: ConfirmTransactionOptions): {
8
+ signature: any;
9
+ confirmation: vue.Ref<{
10
+ signature: TransactionSignature;
11
+ commitment: TransactionSignature;
12
+ result: TransactionSignature<TransactionSignature>;
13
+ } | null, TransactionConfirmation | {
14
+ signature: TransactionSignature;
15
+ commitment: TransactionSignature;
16
+ result: TransactionSignature<TransactionSignature>;
17
+ } | null>;
18
+ status: vue.Ref<TransactionConfirmationStatus, TransactionConfirmationStatus>;
19
+ loading: vue.Ref<boolean, boolean>;
20
+ error: vue.Ref<unknown, unknown>;
21
+ confirm: (nextSignature: TransactionSignature, options?: ConfirmTransactionOptions) => Promise<TransactionConfirmation>;
22
+ reset: () => void;
23
+ };
24
+
25
+ export { getConfirmedTransactionStatus, useTransactionConfirmation };
26
+ export type { TransactionConfirmationStatus };
@@ -0,0 +1,26 @@
1
+ import * as vue from 'vue';
2
+ import { TransactionConfirmation, ConfirmTransactionOptions } from '@vue-solana/core/types';
3
+ import { TransactionSignature } from '@solana/web3-compat';
4
+
5
+ type TransactionConfirmationStatus = "idle" | "confirming" | "processed" | "confirmed" | "finalized" | "error";
6
+ declare function getConfirmedTransactionStatus(confirmation: TransactionConfirmation): Extract<TransactionConfirmationStatus, "processed" | "confirmed" | "finalized">;
7
+ declare function useTransactionConfirmation(defaultOptions?: ConfirmTransactionOptions): {
8
+ signature: any;
9
+ confirmation: vue.Ref<{
10
+ signature: TransactionSignature;
11
+ commitment: TransactionSignature;
12
+ result: TransactionSignature<TransactionSignature>;
13
+ } | null, TransactionConfirmation | {
14
+ signature: TransactionSignature;
15
+ commitment: TransactionSignature;
16
+ result: TransactionSignature<TransactionSignature>;
17
+ } | null>;
18
+ status: vue.Ref<TransactionConfirmationStatus, TransactionConfirmationStatus>;
19
+ loading: vue.Ref<boolean, boolean>;
20
+ error: vue.Ref<unknown, unknown>;
21
+ confirm: (nextSignature: TransactionSignature, options?: ConfirmTransactionOptions) => Promise<TransactionConfirmation>;
22
+ reset: () => void;
23
+ };
24
+
25
+ export { getConfirmedTransactionStatus, useTransactionConfirmation };
26
+ export type { TransactionConfirmationStatus };
@@ -0,0 +1,6 @@
1
+ export { g as getConfirmedTransactionStatus, u as useTransactionConfirmation } from './shared/vue.jOsz34kz.mjs';
2
+ import '@vue-solana/core/transaction';
3
+ import 'vue';
4
+ import './shared/vue.DlEAL2G8.mjs';
5
+ import './shared/vue.BqDzSepb.mjs';
6
+ import './shared/vue.1M_c5FWA.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue-solana/vue",
3
- "version": "0.4.2",
3
+ "version": "0.6.0",
4
4
  "description": "Vue plugin and composables for Solana applications.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -65,6 +65,11 @@
65
65
  "import": "./dist/useTransaction.mjs",
66
66
  "require": "./dist/useTransaction.cjs"
67
67
  },
68
+ "./useTransactionConfirmation": {
69
+ "types": "./dist/useTransactionConfirmation.d.ts",
70
+ "import": "./dist/useTransactionConfirmation.mjs",
71
+ "require": "./dist/useTransactionConfirmation.cjs"
72
+ },
68
73
  "./useSignAndSendTransaction": {
69
74
  "types": "./dist/useSignAndSendTransaction.d.ts",
70
75
  "import": "./dist/useSignAndSendTransaction.mjs",
@@ -78,7 +83,7 @@
78
83
  "access": "public"
79
84
  },
80
85
  "dependencies": {
81
- "@vue-solana/core": "0.4.2"
86
+ "@vue-solana/core": "0.5.0"
82
87
  },
83
88
  "peerDependencies": {
84
89
  "@solana/web3-compat": "^0.0.21",
@@ -1,24 +0,0 @@
1
- import { signAndSendTransaction } from '@vue-solana/core/transaction';
2
- import { u as useConnection } from './vue.DlEAL2G8.mjs';
3
- import { u as useWallet } from './vue.DYf_CRDv.mjs';
4
- import { u as useTransaction } from './vue.CuhLIeDx.mjs';
5
-
6
- const SIGN_AND_SEND_TIMEOUT_MS = 12e4;
7
- function useSignAndSendTransaction() {
8
- const connection = useConnection();
9
- const { wallet } = useWallet();
10
- return useTransaction(
11
- (transaction, options) => {
12
- if (!wallet.value) {
13
- return Promise.reject(new Error("No Solana wallet is configured"));
14
- }
15
- return signAndSendTransaction(connection, wallet.value, transaction, options);
16
- },
17
- {
18
- timeoutMs: SIGN_AND_SEND_TIMEOUT_MS,
19
- timeoutMessage: "Wallet transaction did not return a result. Check your wallet or explorer for the final status."
20
- }
21
- );
22
- }
23
-
24
- export { useSignAndSendTransaction as u };
@@ -1,26 +0,0 @@
1
- 'use strict';
2
-
3
- const transaction = require('@vue-solana/core/transaction');
4
- const useConnection = require('./vue.CwhEmATP.cjs');
5
- const useWallet = require('./vue.CwPjPFN6.cjs');
6
- const useTransaction = require('./vue.CNhelr8H.cjs');
7
-
8
- const SIGN_AND_SEND_TIMEOUT_MS = 12e4;
9
- function useSignAndSendTransaction() {
10
- const connection = useConnection.useConnection();
11
- const { wallet } = useWallet.useWallet();
12
- return useTransaction.useTransaction(
13
- (transaction$1, options) => {
14
- if (!wallet.value) {
15
- return Promise.reject(new Error("No Solana wallet is configured"));
16
- }
17
- return transaction.signAndSendTransaction(connection, wallet.value, transaction$1, options);
18
- },
19
- {
20
- timeoutMs: SIGN_AND_SEND_TIMEOUT_MS,
21
- timeoutMessage: "Wallet transaction did not return a result. Check your wallet or explorer for the final status."
22
- }
23
- );
24
- }
25
-
26
- exports.useSignAndSendTransaction = useSignAndSendTransaction;