@vue-solana/vue 0.6.1 → 0.7.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.
- package/README.md +39 -3
- package/dist/index.cjs +5 -2
- package/dist/index.d.cts +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +4 -2
- package/dist/shared/vue.BeuIPLGM.mjs +63 -0
- package/dist/shared/{vue.CwPjPFN6.cjs → vue.BwipRa1w.cjs} +21 -0
- package/dist/shared/{vue.DYf_CRDv.mjs → vue.CGVdFmYI.mjs} +21 -0
- package/dist/shared/{vue.RQ9fETnm.mjs → vue.CM6qb_s8.mjs} +10 -5
- package/dist/shared/vue.D1knFN3X.cjs +65 -0
- package/dist/shared/{vue.DEQJ23UM.cjs → vue.DWiQYhb8.cjs} +10 -5
- package/dist/useSignAndSendTransaction.cjs +2 -2
- package/dist/useSignAndSendTransaction.mjs +2 -2
- package/dist/useSignMessage.cjs +11 -0
- package/dist/useSignMessage.d.cts +235 -0
- package/dist/useSignMessage.d.mts +235 -0
- package/dist/useSignMessage.d.ts +235 -0
- package/dist/useSignMessage.mjs +5 -0
- package/dist/useWallet.cjs +1 -1
- package/dist/useWallet.d.cts +14 -0
- package/dist/useWallet.d.mts +14 -0
- package/dist/useWallet.d.ts +14 -0
- package/dist/useWallet.mjs +1 -1
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Vue plugin and composables for Solana applications.
|
|
4
4
|
|
|
5
|
-
Use this package in Vue 3 apps that need Solana RPC access, balance reads, wallet state, and transaction helper state.
|
|
5
|
+
Use this package in Vue 3 apps that need Solana RPC access, balance reads, wallet state, message signing, and transaction helper state.
|
|
6
6
|
|
|
7
7
|
New to Solana? Start with the official docs and the project concepts guide:
|
|
8
8
|
|
|
@@ -68,6 +68,7 @@ The root export remains supported. For composables, prefer direct subpath import
|
|
|
68
68
|
```ts
|
|
69
69
|
import { useRpc } from "@vue-solana/vue/useRpc";
|
|
70
70
|
import { useWallet } from "@vue-solana/vue/useWallet";
|
|
71
|
+
import { useSignMessage } from "@vue-solana/vue/useSignMessage";
|
|
71
72
|
```
|
|
72
73
|
|
|
73
74
|
For development, use `devnet` and request free test SOL from the official faucet:
|
|
@@ -146,7 +147,7 @@ import { useWallet } from "@vue-solana/vue/useWallet";
|
|
|
146
147
|
import { useWallets } from "@vue-solana/vue/useWallets";
|
|
147
148
|
|
|
148
149
|
const { wallets, selectedWallet, selectWallet, refreshWallets } = useWallets();
|
|
149
|
-
const { publicKey, connected, connecting, connect, disconnect } = useWallet();
|
|
150
|
+
const { publicKey, connected, connecting, canSignMessage, connect, disconnect } = useWallet();
|
|
150
151
|
</script>
|
|
151
152
|
|
|
152
153
|
<template>
|
|
@@ -163,6 +164,7 @@ const { publicKey, connected, connecting, connect, disconnect } = useWallet();
|
|
|
163
164
|
<p>Selected: {{ selectedWallet?.name ?? "None" }}</p>
|
|
164
165
|
<p>Connected: {{ connected }}</p>
|
|
165
166
|
<p>Public key: {{ publicKey?.toBase58() }}</p>
|
|
167
|
+
<p>Can sign messages: {{ canSignMessage }}</p>
|
|
166
168
|
<p v-if="connecting">Connecting...</p>
|
|
167
169
|
<button type="button" :disabled="!selectedWallet || connected || connecting" @click="connect">
|
|
168
170
|
Connect
|
|
@@ -180,6 +182,38 @@ Desktop native app wallet adapters are planned but not implemented yet.
|
|
|
180
182
|
|
|
181
183
|
Composables return inert SSR-safe state when no plugin context is available. Real RPC and wallet operations still require the plugin-provided client context.
|
|
182
184
|
|
|
185
|
+
## Message Signing
|
|
186
|
+
|
|
187
|
+
```vue
|
|
188
|
+
<script setup lang="ts">
|
|
189
|
+
import { computed } from "vue";
|
|
190
|
+
import { useSignMessage } from "@vue-solana/vue/useSignMessage";
|
|
191
|
+
import { useWallet } from "@vue-solana/vue/useWallet";
|
|
192
|
+
|
|
193
|
+
const { connected, canSignMessage } = useWallet();
|
|
194
|
+
const { signature, status, error, execute } = useSignMessage();
|
|
195
|
+
|
|
196
|
+
const message = computed(() => new TextEncoder().encode("Sign in to My Vue Solana App"));
|
|
197
|
+
|
|
198
|
+
async function signIn() {
|
|
199
|
+
await execute(message.value);
|
|
200
|
+
}
|
|
201
|
+
</script>
|
|
202
|
+
|
|
203
|
+
<template>
|
|
204
|
+
<section>
|
|
205
|
+
<button type="button" :disabled="!connected || !canSignMessage" @click="signIn">
|
|
206
|
+
Sign message
|
|
207
|
+
</button>
|
|
208
|
+
<p>Status: {{ status }}</p>
|
|
209
|
+
<p v-if="signature">Signature bytes: {{ signature.length }}</p>
|
|
210
|
+
<pre v-if="error">{{ error.message }}</pre>
|
|
211
|
+
</section>
|
|
212
|
+
</template>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Message signing proves wallet ownership for flows like authentication challenges. It does not sign, submit, or authorize Solana transactions. For authentication, issue a server-generated nonce, include domain and expiration details in the message, and verify the returned signature server-side.
|
|
216
|
+
|
|
183
217
|
## Transaction State
|
|
184
218
|
|
|
185
219
|
```ts
|
|
@@ -241,6 +275,7 @@ Docs: [Vue Solana Agent Skill](https://vue-solana-docs.vercel.app/agent-skill)
|
|
|
241
275
|
- `useConnection()`: returns the Solana `Connection`.
|
|
242
276
|
- `useWallet()`: returns wallet refs, computed connection state, and wallet actions.
|
|
243
277
|
- `useWallets()`: returns discovered browser extension wallets, Android Mobile Wallet Adapter wallets, iOS browser wallet links, and wallet selection actions.
|
|
278
|
+
- `useSignMessage()`: signs arbitrary message bytes through the connected wallet when message signing is supported.
|
|
244
279
|
- `useBalance(address, commitment?)`: loads lamport balance for a `PublicKey` or address string.
|
|
245
280
|
- `useAccountInfo(address, options?)`: loads account info and can subscribe to account changes with `watch: true`.
|
|
246
281
|
- `useProgramAccounts(programId, config?)`: loads accounts owned by a program with optional filters, commitment, and `dataSlice`.
|
|
@@ -259,6 +294,7 @@ Direct composable subpaths:
|
|
|
259
294
|
- `@vue-solana/vue/useProgramAccounts`
|
|
260
295
|
- `@vue-solana/vue/useWallet`
|
|
261
296
|
- `@vue-solana/vue/useWallets`
|
|
297
|
+
- `@vue-solana/vue/useSignMessage`
|
|
262
298
|
- `@vue-solana/vue/useTransaction`
|
|
263
299
|
- `@vue-solana/vue/useTransactionConfirmation`
|
|
264
300
|
- `@vue-solana/vue/useSignatureStatus`
|
|
@@ -297,4 +333,4 @@ Make sure your `tsconfig.json` includes `types/**/*.d.ts` or another pattern tha
|
|
|
297
333
|
|
|
298
334
|
## Status
|
|
299
335
|
|
|
300
|
-
This package is early-stage. RPC, balance, browser extension wallet, Android mobile wallet, and transaction composables are usable.
|
|
336
|
+
This package is early-stage. RPC, balance, browser extension wallet, Android mobile wallet, iOS browser wallet, message signing, and transaction composables are usable.
|
package/dist/index.cjs
CHANGED
|
@@ -5,12 +5,13 @@ const useBalance = require('./shared/vue.D_AM1Nl8.cjs');
|
|
|
5
5
|
const useConnection = require('./shared/vue.CwhEmATP.cjs');
|
|
6
6
|
const useProgramAccounts = require('./shared/vue.dmuispJ3.cjs');
|
|
7
7
|
const useRpc = require('./shared/vue.COyyrsQU.cjs');
|
|
8
|
-
const
|
|
8
|
+
const useSignMessage = require('./shared/vue.D1knFN3X.cjs');
|
|
9
|
+
const useSignAndSendTransaction = require('./shared/vue.DWiQYhb8.cjs');
|
|
9
10
|
const useSignatureStatus = require('./shared/vue.DUufwq8y.cjs');
|
|
10
11
|
const useSolana = require('./shared/vue.C4tLiG3R.cjs');
|
|
11
12
|
const useTransaction = require('./shared/vue.DQi38JeF.cjs');
|
|
12
13
|
const useTransactionConfirmation = require('./shared/vue.DHVYJk8P.cjs');
|
|
13
|
-
const useWallet = require('./shared/vue.
|
|
14
|
+
const useWallet = require('./shared/vue.BwipRa1w.cjs');
|
|
14
15
|
const useWallets = require('./shared/vue.P9tgeC5S.cjs');
|
|
15
16
|
const rpc = require('@vue-solana/core/rpc');
|
|
16
17
|
const walletStandard = require('@vue-solana/core/wallet-standard');
|
|
@@ -18,6 +19,7 @@ const vue = require('vue');
|
|
|
18
19
|
const iosWallet = require('@vue-solana/core/ios-wallet');
|
|
19
20
|
require('@vue-solana/core/address');
|
|
20
21
|
require('@solana/web3-compat');
|
|
22
|
+
require('@vue-solana/core/wallet');
|
|
21
23
|
require('@vue-solana/core/transaction');
|
|
22
24
|
require('bs58');
|
|
23
25
|
|
|
@@ -326,6 +328,7 @@ exports.useBalance = useBalance.useBalance;
|
|
|
326
328
|
exports.useConnection = useConnection.useConnection;
|
|
327
329
|
exports.useProgramAccounts = useProgramAccounts.useProgramAccounts;
|
|
328
330
|
exports.useRpc = useRpc.useRpc;
|
|
331
|
+
exports.useSignMessage = useSignMessage.useSignMessage;
|
|
329
332
|
exports.useSignAndSendTransaction = useSignAndSendTransaction.useSignAndSendTransaction;
|
|
330
333
|
exports.useSignatureStatus = useSignatureStatus.useSignatureStatus;
|
|
331
334
|
exports.solanaInjectionKey = useSolana.solanaInjectionKey;
|
package/dist/index.d.cts
CHANGED
|
@@ -3,6 +3,7 @@ export { useBalance } from './useBalance.cjs';
|
|
|
3
3
|
export { useConnection } from './useConnection.cjs';
|
|
4
4
|
export { ProgramAccount, ProgramAccountDataSizeFilter, ProgramAccountDataSlice, ProgramAccountFilter, ProgramAccountMemcmpEncoding, ProgramAccountMemcmpFilter, UseProgramAccountsOptions, useProgramAccounts } from './useProgramAccounts.cjs';
|
|
5
5
|
export { useRpc } from './useRpc.cjs';
|
|
6
|
+
export { SignMessageStatus, useSignMessage } from './useSignMessage.cjs';
|
|
6
7
|
export { SignAndSendTransactionOptions, SignAndSendTransactionStatus, useSignAndSendTransaction } from './useSignAndSendTransaction.cjs';
|
|
7
8
|
export { UseSignatureStatusOptions, useSignatureStatus } from './useSignatureStatus.cjs';
|
|
8
9
|
export { tryUseSolana, useSolana } from './useSolana.cjs';
|
package/dist/index.d.mts
CHANGED
|
@@ -3,6 +3,7 @@ export { useBalance } from './useBalance.mjs';
|
|
|
3
3
|
export { useConnection } from './useConnection.mjs';
|
|
4
4
|
export { ProgramAccount, ProgramAccountDataSizeFilter, ProgramAccountDataSlice, ProgramAccountFilter, ProgramAccountMemcmpEncoding, ProgramAccountMemcmpFilter, UseProgramAccountsOptions, useProgramAccounts } from './useProgramAccounts.mjs';
|
|
5
5
|
export { useRpc } from './useRpc.mjs';
|
|
6
|
+
export { SignMessageStatus, useSignMessage } from './useSignMessage.mjs';
|
|
6
7
|
export { SignAndSendTransactionOptions, SignAndSendTransactionStatus, useSignAndSendTransaction } from './useSignAndSendTransaction.mjs';
|
|
7
8
|
export { UseSignatureStatusOptions, useSignatureStatus } from './useSignatureStatus.mjs';
|
|
8
9
|
export { tryUseSolana, useSolana } from './useSolana.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { useBalance } from './useBalance.js';
|
|
|
3
3
|
export { useConnection } from './useConnection.js';
|
|
4
4
|
export { ProgramAccount, ProgramAccountDataSizeFilter, ProgramAccountDataSlice, ProgramAccountFilter, ProgramAccountMemcmpEncoding, ProgramAccountMemcmpFilter, UseProgramAccountsOptions, useProgramAccounts } from './useProgramAccounts.js';
|
|
5
5
|
export { useRpc } from './useRpc.js';
|
|
6
|
+
export { SignMessageStatus, useSignMessage } from './useSignMessage.js';
|
|
6
7
|
export { SignAndSendTransactionOptions, SignAndSendTransactionStatus, useSignAndSendTransaction } from './useSignAndSendTransaction.js';
|
|
7
8
|
export { UseSignatureStatusOptions, useSignatureStatus } from './useSignatureStatus.js';
|
|
8
9
|
export { tryUseSolana, useSolana } from './useSolana.js';
|
package/dist/index.mjs
CHANGED
|
@@ -3,14 +3,15 @@ export { u as useBalance } from './shared/vue.DQhHHVu6.mjs';
|
|
|
3
3
|
export { u as useConnection } from './shared/vue.DlEAL2G8.mjs';
|
|
4
4
|
export { u as useProgramAccounts } from './shared/vue.CUTLu1Gf.mjs';
|
|
5
5
|
export { u as useRpc } from './shared/vue.BqDzSepb.mjs';
|
|
6
|
-
export { u as
|
|
6
|
+
export { u as useSignMessage } from './shared/vue.BeuIPLGM.mjs';
|
|
7
|
+
export { u as useSignAndSendTransaction } from './shared/vue.CM6qb_s8.mjs';
|
|
7
8
|
export { u as useSignatureStatus } from './shared/vue.JC5FdU2O.mjs';
|
|
8
9
|
import { s as solanaInjectionKey } from './shared/vue.1M_c5FWA.mjs';
|
|
9
10
|
export { t as tryUseSolana, u as useSolana } from './shared/vue.1M_c5FWA.mjs';
|
|
10
11
|
import { w as withTimeout } from './shared/vue.gLqkzJY4.mjs';
|
|
11
12
|
export { u as useTransaction } from './shared/vue.gLqkzJY4.mjs';
|
|
12
13
|
export { g as getConfirmedTransactionStatus, u as useTransactionConfirmation } from './shared/vue.jOsz34kz.mjs';
|
|
13
|
-
export { u as useWallet } from './shared/vue.
|
|
14
|
+
export { u as useWallet } from './shared/vue.CGVdFmYI.mjs';
|
|
14
15
|
export { u as useWallets } from './shared/vue.h-uS8MXN.mjs';
|
|
15
16
|
import { createSolanaContext } from '@vue-solana/core/rpc';
|
|
16
17
|
import { getRegisteredSolanaWallets, getSolanaChain, adaptSolanaStandardWallet, subscribeSolanaWallets } from '@vue-solana/core/wallet-standard';
|
|
@@ -18,6 +19,7 @@ import { shallowRef, ref, triggerRef } from 'vue';
|
|
|
18
19
|
import { handleSolanaIosWalletCallback, getSolanaIosWallets, isSolanaIosWalletInfo, adaptSolanaIosWallet } from '@vue-solana/core/ios-wallet';
|
|
19
20
|
import '@vue-solana/core/address';
|
|
20
21
|
import '@solana/web3-compat';
|
|
22
|
+
import '@vue-solana/core/wallet';
|
|
21
23
|
import '@vue-solana/core/transaction';
|
|
22
24
|
import 'bs58';
|
|
23
25
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { assertWalletCanSignMessage } from '@vue-solana/core/wallet';
|
|
2
|
+
import { ref } from 'vue';
|
|
3
|
+
import { u as useWallet } from './vue.CGVdFmYI.mjs';
|
|
4
|
+
|
|
5
|
+
function useSignMessage() {
|
|
6
|
+
const { wallet } = useWallet();
|
|
7
|
+
const signedMessage = ref(null);
|
|
8
|
+
const signature = ref(null);
|
|
9
|
+
const status = ref("idle");
|
|
10
|
+
const loading = ref(false);
|
|
11
|
+
const error = ref(null);
|
|
12
|
+
let executionId = 0;
|
|
13
|
+
async function execute(message) {
|
|
14
|
+
const currentExecutionId = ++executionId;
|
|
15
|
+
status.value = "signing";
|
|
16
|
+
loading.value = true;
|
|
17
|
+
error.value = null;
|
|
18
|
+
signedMessage.value = null;
|
|
19
|
+
signature.value = null;
|
|
20
|
+
const activeWallet = wallet.value;
|
|
21
|
+
if (!activeWallet) {
|
|
22
|
+
const cause = new Error("No Solana wallet is configured");
|
|
23
|
+
error.value = cause;
|
|
24
|
+
status.value = "error";
|
|
25
|
+
loading.value = false;
|
|
26
|
+
throw cause;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
assertWalletCanSignMessage(activeWallet);
|
|
30
|
+
const result = await activeWallet.signMessage(message);
|
|
31
|
+
if (currentExecutionId === executionId) {
|
|
32
|
+
signedMessage.value = result.signedMessage;
|
|
33
|
+
signature.value = result.signature;
|
|
34
|
+
status.value = "signed";
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
} catch (cause) {
|
|
38
|
+
const normalizedError = normalizeError(cause);
|
|
39
|
+
if (currentExecutionId === executionId) {
|
|
40
|
+
error.value = normalizedError;
|
|
41
|
+
status.value = "error";
|
|
42
|
+
}
|
|
43
|
+
throw normalizedError;
|
|
44
|
+
} finally {
|
|
45
|
+
if (currentExecutionId === executionId) {
|
|
46
|
+
loading.value = false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
signedMessage,
|
|
52
|
+
signature,
|
|
53
|
+
status,
|
|
54
|
+
loading,
|
|
55
|
+
error,
|
|
56
|
+
execute
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function normalizeError(cause) {
|
|
60
|
+
return cause instanceof Error ? cause : new Error(String(cause));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { useSignMessage as u };
|
|
@@ -53,6 +53,20 @@ function useWallet() {
|
|
|
53
53
|
const isDisconnecting = vue.computed(
|
|
54
54
|
() => Boolean(disconnecting.value || wallet.value?.disconnecting)
|
|
55
55
|
);
|
|
56
|
+
const canConnect = vue.computed(() => Boolean(wallet.value?.connect));
|
|
57
|
+
const canDisconnect = vue.computed(() => Boolean(wallet.value?.disconnect));
|
|
58
|
+
const canSignMessage = vue.computed(() => Boolean(wallet.value?.signMessage));
|
|
59
|
+
const canSignTransaction = vue.computed(() => Boolean(wallet.value?.signTransaction));
|
|
60
|
+
const canSignAllTransactions = vue.computed(() => Boolean(wallet.value?.signAllTransactions));
|
|
61
|
+
const canSignAndSendTransaction = vue.computed(() => Boolean(wallet.value?.signAndSendTransaction));
|
|
62
|
+
const capabilities = vue.computed(() => ({
|
|
63
|
+
connect: canConnect.value,
|
|
64
|
+
disconnect: canDisconnect.value,
|
|
65
|
+
signMessage: canSignMessage.value,
|
|
66
|
+
signTransaction: canSignTransaction.value,
|
|
67
|
+
signAllTransactions: canSignAllTransactions.value,
|
|
68
|
+
signAndSendTransaction: canSignAndSendTransaction.value
|
|
69
|
+
}));
|
|
56
70
|
return {
|
|
57
71
|
wallet,
|
|
58
72
|
publicKey: vue.computed(() => wallet.value?.publicKey ?? null),
|
|
@@ -60,6 +74,13 @@ function useWallet() {
|
|
|
60
74
|
connecting: isConnecting,
|
|
61
75
|
disconnecting: isDisconnecting,
|
|
62
76
|
loading: vue.computed(() => isConnecting.value || isDisconnecting.value),
|
|
77
|
+
capabilities,
|
|
78
|
+
canConnect,
|
|
79
|
+
canDisconnect,
|
|
80
|
+
canSignMessage,
|
|
81
|
+
canSignTransaction,
|
|
82
|
+
canSignAllTransactions,
|
|
83
|
+
canSignAndSendTransaction,
|
|
63
84
|
setWallet: solana.setWallet,
|
|
64
85
|
connect,
|
|
65
86
|
disconnect
|
|
@@ -51,6 +51,20 @@ function useWallet() {
|
|
|
51
51
|
const isDisconnecting = computed(
|
|
52
52
|
() => Boolean(disconnecting.value || wallet.value?.disconnecting)
|
|
53
53
|
);
|
|
54
|
+
const canConnect = computed(() => Boolean(wallet.value?.connect));
|
|
55
|
+
const canDisconnect = computed(() => Boolean(wallet.value?.disconnect));
|
|
56
|
+
const canSignMessage = computed(() => Boolean(wallet.value?.signMessage));
|
|
57
|
+
const canSignTransaction = computed(() => Boolean(wallet.value?.signTransaction));
|
|
58
|
+
const canSignAllTransactions = computed(() => Boolean(wallet.value?.signAllTransactions));
|
|
59
|
+
const canSignAndSendTransaction = computed(() => Boolean(wallet.value?.signAndSendTransaction));
|
|
60
|
+
const capabilities = computed(() => ({
|
|
61
|
+
connect: canConnect.value,
|
|
62
|
+
disconnect: canDisconnect.value,
|
|
63
|
+
signMessage: canSignMessage.value,
|
|
64
|
+
signTransaction: canSignTransaction.value,
|
|
65
|
+
signAllTransactions: canSignAllTransactions.value,
|
|
66
|
+
signAndSendTransaction: canSignAndSendTransaction.value
|
|
67
|
+
}));
|
|
54
68
|
return {
|
|
55
69
|
wallet,
|
|
56
70
|
publicKey: computed(() => wallet.value?.publicKey ?? null),
|
|
@@ -58,6 +72,13 @@ function useWallet() {
|
|
|
58
72
|
connecting: isConnecting,
|
|
59
73
|
disconnecting: isDisconnecting,
|
|
60
74
|
loading: computed(() => isConnecting.value || isDisconnecting.value),
|
|
75
|
+
capabilities,
|
|
76
|
+
canConnect,
|
|
77
|
+
canDisconnect,
|
|
78
|
+
canSignMessage,
|
|
79
|
+
canSignTransaction,
|
|
80
|
+
canSignAllTransactions,
|
|
81
|
+
canSignAndSendTransaction,
|
|
61
82
|
setWallet: solana.setWallet,
|
|
62
83
|
connect,
|
|
63
84
|
disconnect
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { signAndSendTransaction, confirmTransactionSignature } from '@vue-solana/core/transaction';
|
|
2
2
|
import { ref } from 'vue';
|
|
3
3
|
import { u as useConnection } from './vue.DlEAL2G8.mjs';
|
|
4
|
-
import { u as useWallet } from './vue.
|
|
4
|
+
import { u as useWallet } from './vue.CGVdFmYI.mjs';
|
|
5
5
|
import { g as getConfirmedTransactionStatus } from './vue.jOsz34kz.mjs';
|
|
6
6
|
|
|
7
7
|
const SIGN_AND_SEND_TIMEOUT_MS = 12e4;
|
|
@@ -22,12 +22,17 @@ function useSignAndSendTransaction() {
|
|
|
22
22
|
loading.value = true;
|
|
23
23
|
error.value = null;
|
|
24
24
|
confirmation.value = null;
|
|
25
|
+
const activeWallet = wallet.value;
|
|
26
|
+
if (!activeWallet) {
|
|
27
|
+
const cause = new Error("No Solana wallet is configured");
|
|
28
|
+
error.value = cause;
|
|
29
|
+
status.value = "error";
|
|
30
|
+
loading.value = false;
|
|
31
|
+
throw cause;
|
|
32
|
+
}
|
|
25
33
|
try {
|
|
26
|
-
if (!wallet.value) {
|
|
27
|
-
throw new Error("No Solana wallet is configured");
|
|
28
|
-
}
|
|
29
34
|
const nextSignature = await withWalletTransactionTimeout(
|
|
30
|
-
signAndSendTransaction(connection,
|
|
35
|
+
signAndSendTransaction(connection, activeWallet, transaction, transactionOptions)
|
|
31
36
|
);
|
|
32
37
|
if (currentExecutionId === executionId) {
|
|
33
38
|
signature.value = nextSignature;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const wallet = require('@vue-solana/core/wallet');
|
|
4
|
+
const vue = require('vue');
|
|
5
|
+
const useWallet = require('./vue.BwipRa1w.cjs');
|
|
6
|
+
|
|
7
|
+
function useSignMessage() {
|
|
8
|
+
const { wallet: wallet$1 } = useWallet.useWallet();
|
|
9
|
+
const signedMessage = vue.ref(null);
|
|
10
|
+
const signature = vue.ref(null);
|
|
11
|
+
const status = vue.ref("idle");
|
|
12
|
+
const loading = vue.ref(false);
|
|
13
|
+
const error = vue.ref(null);
|
|
14
|
+
let executionId = 0;
|
|
15
|
+
async function execute(message) {
|
|
16
|
+
const currentExecutionId = ++executionId;
|
|
17
|
+
status.value = "signing";
|
|
18
|
+
loading.value = true;
|
|
19
|
+
error.value = null;
|
|
20
|
+
signedMessage.value = null;
|
|
21
|
+
signature.value = null;
|
|
22
|
+
const activeWallet = wallet$1.value;
|
|
23
|
+
if (!activeWallet) {
|
|
24
|
+
const cause = new Error("No Solana wallet is configured");
|
|
25
|
+
error.value = cause;
|
|
26
|
+
status.value = "error";
|
|
27
|
+
loading.value = false;
|
|
28
|
+
throw cause;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
wallet.assertWalletCanSignMessage(activeWallet);
|
|
32
|
+
const result = await activeWallet.signMessage(message);
|
|
33
|
+
if (currentExecutionId === executionId) {
|
|
34
|
+
signedMessage.value = result.signedMessage;
|
|
35
|
+
signature.value = result.signature;
|
|
36
|
+
status.value = "signed";
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
} catch (cause) {
|
|
40
|
+
const normalizedError = normalizeError(cause);
|
|
41
|
+
if (currentExecutionId === executionId) {
|
|
42
|
+
error.value = normalizedError;
|
|
43
|
+
status.value = "error";
|
|
44
|
+
}
|
|
45
|
+
throw normalizedError;
|
|
46
|
+
} finally {
|
|
47
|
+
if (currentExecutionId === executionId) {
|
|
48
|
+
loading.value = false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
signedMessage,
|
|
54
|
+
signature,
|
|
55
|
+
status,
|
|
56
|
+
loading,
|
|
57
|
+
error,
|
|
58
|
+
execute
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function normalizeError(cause) {
|
|
62
|
+
return cause instanceof Error ? cause : new Error(String(cause));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
exports.useSignMessage = useSignMessage;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const transaction = require('@vue-solana/core/transaction');
|
|
4
4
|
const vue = require('vue');
|
|
5
5
|
const useConnection = require('./vue.CwhEmATP.cjs');
|
|
6
|
-
const useWallet = require('./vue.
|
|
6
|
+
const useWallet = require('./vue.BwipRa1w.cjs');
|
|
7
7
|
const useTransactionConfirmation = require('./vue.DHVYJk8P.cjs');
|
|
8
8
|
|
|
9
9
|
const SIGN_AND_SEND_TIMEOUT_MS = 12e4;
|
|
@@ -24,12 +24,17 @@ function useSignAndSendTransaction() {
|
|
|
24
24
|
loading.value = true;
|
|
25
25
|
error.value = null;
|
|
26
26
|
confirmation.value = null;
|
|
27
|
+
const activeWallet = wallet.value;
|
|
28
|
+
if (!activeWallet) {
|
|
29
|
+
const cause = new Error("No Solana wallet is configured");
|
|
30
|
+
error.value = cause;
|
|
31
|
+
status.value = "error";
|
|
32
|
+
loading.value = false;
|
|
33
|
+
throw cause;
|
|
34
|
+
}
|
|
27
35
|
try {
|
|
28
|
-
if (!wallet.value) {
|
|
29
|
-
throw new Error("No Solana wallet is configured");
|
|
30
|
-
}
|
|
31
36
|
const nextSignature = await withWalletTransactionTimeout(
|
|
32
|
-
transaction.signAndSendTransaction(connection,
|
|
37
|
+
transaction.signAndSendTransaction(connection, activeWallet, transaction$1, transactionOptions)
|
|
33
38
|
);
|
|
34
39
|
if (currentExecutionId === executionId) {
|
|
35
40
|
signature.value = nextSignature;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const useSignAndSendTransaction = require('./shared/vue.
|
|
3
|
+
const useSignAndSendTransaction = require('./shared/vue.DWiQYhb8.cjs');
|
|
4
4
|
require('@vue-solana/core/transaction');
|
|
5
5
|
require('vue');
|
|
6
6
|
require('./shared/vue.CwhEmATP.cjs');
|
|
7
7
|
require('./shared/vue.COyyrsQU.cjs');
|
|
8
8
|
require('./shared/vue.C4tLiG3R.cjs');
|
|
9
|
-
require('./shared/vue.
|
|
9
|
+
require('./shared/vue.BwipRa1w.cjs');
|
|
10
10
|
require('./shared/vue.DHVYJk8P.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { u as useSignAndSendTransaction } from './shared/vue.
|
|
1
|
+
export { u as useSignAndSendTransaction } from './shared/vue.CM6qb_s8.mjs';
|
|
2
2
|
import '@vue-solana/core/transaction';
|
|
3
3
|
import 'vue';
|
|
4
4
|
import './shared/vue.DlEAL2G8.mjs';
|
|
5
5
|
import './shared/vue.BqDzSepb.mjs';
|
|
6
6
|
import './shared/vue.1M_c5FWA.mjs';
|
|
7
|
-
import './shared/vue.
|
|
7
|
+
import './shared/vue.CGVdFmYI.mjs';
|
|
8
8
|
import './shared/vue.jOsz34kz.mjs';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const useSignMessage = require('./shared/vue.D1knFN3X.cjs');
|
|
4
|
+
require('@vue-solana/core/wallet');
|
|
5
|
+
require('vue');
|
|
6
|
+
require('./shared/vue.BwipRa1w.cjs');
|
|
7
|
+
require('./shared/vue.C4tLiG3R.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.useSignMessage = useSignMessage.useSignMessage;
|