@vue-solana/vue 4.1.1 → 4.1.3
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 +11 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +85 -21
- package/dist/shared/{vue.C-7v1l8q.mjs → vue.sPcsjyKU.mjs} +2 -9
- package/dist/useSignAndSendTransactions.d.ts +5 -12
- package/dist/useSignAndSendTransactions.mjs +2 -1
- package/dist/useSolanaPay.d.ts +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -78,6 +78,8 @@ New to Solana? Start with the official docs and the project concepts guide:
|
|
|
78
78
|
| Solana client | Provided through `@vue-solana/core` |
|
|
79
79
|
| Clusters | `mainnet` (alias `mainnet-beta`), `devnet`, `testnet`, `localnet` |
|
|
80
80
|
|
|
81
|
+
<br>
|
|
82
|
+
|
|
81
83
|
## Install
|
|
82
84
|
|
|
83
85
|
```sh
|
|
@@ -150,6 +152,8 @@ Supported clusters are `mainnet` (legacy alias `mainnet-beta`), `devnet`, `testn
|
|
|
150
152
|
| `mobileWallet` | `MobileWalletOptions \| false` | Enabled on supported Android clients | Configures or disables Android Mobile Wallet Adapter registration. |
|
|
151
153
|
| `iosWallet` | `iOSWalletOptions \| false` | Enabled on iOS browsers | Configures or disables iOS browser wallet universal links (Phantom, Solflare, Backpack). |
|
|
152
154
|
|
|
155
|
+
<br>
|
|
156
|
+
|
|
153
157
|
The root export remains supported. For composables, prefer direct subpath imports in new code so bundlers can avoid evaluating unrelated package entry code:
|
|
154
158
|
|
|
155
159
|
```ts
|
|
@@ -315,7 +319,7 @@ Browser extension wallets are discovered through the Solana Wallet Standard. And
|
|
|
315
319
|
|
|
316
320
|
Connecting a wallet also disconnects every other discovered wallet through its `standard:disconnect` feature, so only one wallet stays authorized for the app. An extension the user authorized in an earlier page session can otherwise keep answering signing requests, which is the usual cause of the wrong wallet prompting for a `signMessage` confirmation. A wallet that fails or never answers its disconnect is ignored after a 2 second timeout, and `connect()` resolves only after the sweep finishes.
|
|
317
321
|
|
|
318
|
-
Selected discovered wallets are persisted under `localStorage["vue-solana:selected-wallet"]` as non-sensitive identity metadata: `name`,
|
|
322
|
+
Selected discovered wallets are persisted under `localStorage["vue-solana:selected-wallet"]` as non-sensitive identity metadata: `name`, `platform`/`source` when available, and `connected: true` while the wallet is connected. On reload, Vue Solana restores the selected wallet if the same wallet is discovered again. A wallet the user left connected is restored after a reload even without `autoConnect`, through a silent connect (`connect({ silent: true })`) that does not prompt or launch a wallet app for wallets that honour the Wallet Standard `silent` hint (a wallet that ignores it can prompt on page load); an explicit `disconnect()` forgets that session. Pass `autoConnect: true` to also connect a restored wallet that was only selected; arbitrary installed wallets are never auto-connected. Calling `selectWallet(null)` or `setWallet(customWallet)` clears the stored selection.
|
|
319
323
|
|
|
320
324
|
Desktop native app wallet adapters are planned but not implemented yet.
|
|
321
325
|
|
|
@@ -403,6 +407,8 @@ await execute(transaction);
|
|
|
403
407
|
| `minContextSlot` | Slot at which any blockhash or nonce in the transaction is known to exist; sending before it can be rejected. |
|
|
404
408
|
| `preflightCommitment` | Commitment used for preflight simulation. |
|
|
405
409
|
|
|
410
|
+
<br>
|
|
411
|
+
|
|
406
412
|
Return shapes:
|
|
407
413
|
|
|
408
414
|
- `useSignMessage().execute(bytes)` resolves to `{ signedMessage, signature }`, both `Uint8Array`.
|
|
@@ -431,6 +437,8 @@ Configure a direct client with `payer` or `payerSecretKey`. `payerSecretKey` is
|
|
|
431
437
|
| Input | Instructions, instruction plans, transaction messages, plans | Raw transaction bytes (`Uint8Array`) |
|
|
432
438
|
| Multiple transactions | Yes, as a batch in one call | Yes, one or more wallet requests |
|
|
433
439
|
|
|
440
|
+
<br>
|
|
441
|
+
|
|
434
442
|
Use the client flow for automated or server-backed signing (airdrop faucet, cron jobs, relayer fees paid by your keypair), and the wallet flow when the end user must own and approve each transaction.
|
|
435
443
|
|
|
436
444
|
**Default client composition.** `createSolanaPlugin()` and `createSolanaClient()` compose `solanaRpc()` followed by `rpcAirdrop()` by default; `solanaRpc()` installs `rpcTransactionPlanner()`, `rpcTransactionPlanSigningExecutor()`, and `rpcTransactionPlanSendingExecutor()` itself. The old custom fallback sender is not used, so `useSendTransaction()` and `useSendTransactions()` do not need a second manual plugin installation. The official executor waits for `confirmed` commitment before `execute()` resolves and the composable reports `sent`. A custom client must still provide the planner and sending executor and a `payer`.
|
|
@@ -682,6 +690,8 @@ Docs: [Vue Solana Agent Skill](https://vue-solana-docs.vercel.app/agent-skill)
|
|
|
682
690
|
| `useSendTransaction()` | Uses the official client transaction-sending capability to plan, sign, submit, and wait for `confirmed` commitment (no wallet). |
|
|
683
691
|
| `useSendTransactions()` | Sends a batch through the same official capability, waiting for `confirmed` commitment. |
|
|
684
692
|
|
|
693
|
+
<br>
|
|
694
|
+
|
|
685
695
|
Direct composable subpaths:
|
|
686
696
|
|
|
687
697
|
- `@vue-solana/vue/useSolana`
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export { SendTransactionConfig, SendTransactionInput, SendTransactionStatus, Sen
|
|
|
14
14
|
export { SignMessageStatus, useSignMessage } from './useSignMessage.js';
|
|
15
15
|
export { SignAndSendTransactionOptions, SignAndSendTransactionStatus, useSignAndSendTransaction } from './useSignAndSendTransaction.js';
|
|
16
16
|
export { SignTransactionsStatus, useSignTransactions } from './useSignTransactions.js';
|
|
17
|
-
export {
|
|
17
|
+
export { SignAndSendTransactionsStatus, useSignAndSendTransactions } from './useSignAndSendTransactions.js';
|
|
18
18
|
export { SignatureStatus, UseSignatureStatusOptions, useSignatureStatus } from './useSignatureStatus.js';
|
|
19
19
|
export { SignInStatus, useSignIn } from './useSignIn.js';
|
|
20
20
|
export { tryUseSolana, useSolana } from './useSolana.js';
|
|
@@ -39,7 +39,7 @@ import { SolanaConfig, SolanaWallet } from '@vue-solana/core/types';
|
|
|
39
39
|
export * from '@vue-solana/core/types';
|
|
40
40
|
export { TransactionStatus } from '@vue-solana/core/types';
|
|
41
41
|
import { App } from 'vue';
|
|
42
|
-
export { SolanaError, SolanaErrorCode, isSolanaError } from '@vue-solana/core/errors';
|
|
42
|
+
export { PartialSignAndSendError, SolanaError, SolanaErrorCode, isSolanaError } from '@vue-solana/core/errors';
|
|
43
43
|
export * from '@vue-solana/core/kit';
|
|
44
44
|
import '@vue-solana/core';
|
|
45
45
|
import '@solana/kit-plugin-rpc';
|
package/dist/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ export { u as useSendTransaction, a as useSendTransactions } from './shared/vue.
|
|
|
14
14
|
export { u as useSignMessage } from './shared/vue.Ddf_Cdjx.mjs';
|
|
15
15
|
export { u as useSignAndSendTransaction } from './shared/vue.BTD4usyi.mjs';
|
|
16
16
|
export { u as useSignTransactions } from './shared/vue.BHBifdbc.mjs';
|
|
17
|
-
export {
|
|
17
|
+
export { u as useSignAndSendTransactions } from './shared/vue.sPcsjyKU.mjs';
|
|
18
18
|
export { u as useSignatureStatus } from './shared/vue.Bu2cQ690.mjs';
|
|
19
19
|
export { u as useSignIn } from './shared/vue.SeuJipQ8.mjs';
|
|
20
20
|
export { t as tryUseSolana, u as useSolana } from './shared/vue.CcOZ9858.mjs';
|
|
@@ -33,13 +33,14 @@ export { u as useWallet } from './shared/vue.Bc_Kbwr5.mjs';
|
|
|
33
33
|
export { u as useWallets } from './shared/vue.DyLgoSbX.mjs';
|
|
34
34
|
import { s as solanaInjectionKey } from './shared/vue.D_P5SqqD.mjs';
|
|
35
35
|
import { createSolanaError, normalizeSolanaError } from '@vue-solana/core/errors';
|
|
36
|
-
export { SolanaError, isSolanaError } from '@vue-solana/core/errors';
|
|
36
|
+
export { PartialSignAndSendError, SolanaError, isSolanaError } from '@vue-solana/core/errors';
|
|
37
37
|
import { isSolanaMobileWalletSupported } from '@vue-solana/core/mobile-wallet-support';
|
|
38
38
|
import { createSolanaContext } from '@vue-solana/core/rpc';
|
|
39
39
|
import { withTimeout } from '@vue-solana/core/timeout';
|
|
40
40
|
import { getRegisteredSolanaWallets, getSolanaChain, adaptSolanaStandardWallet, disconnectSolanaStandardWallet, subscribeSolanaWallets } from '@vue-solana/core/wallet-standard';
|
|
41
41
|
import { shallowRef, ref, triggerRef } from 'vue';
|
|
42
42
|
import { handleSolanaIosWalletCallback, getSolanaIosWallets, isSolanaIosWalletInfo, adaptSolanaIosWallet } from '@vue-solana/core/ios-wallet';
|
|
43
|
+
import { sendSignedTransaction } from '@vue-solana/core/transaction';
|
|
43
44
|
export * from '@vue-solana/core/types';
|
|
44
45
|
export * from '@vue-solana/core/kit';
|
|
45
46
|
|
|
@@ -47,39 +48,47 @@ const SELECTED_WALLET_STORAGE_KEY = "vue-solana:selected-wallet";
|
|
|
47
48
|
function readSelectedWallet() {
|
|
48
49
|
const { storage, error } = getLocalStorage();
|
|
49
50
|
if (error || !storage) {
|
|
50
|
-
return { wallet: null, error };
|
|
51
|
+
return { wallet: null, connected: false, error };
|
|
51
52
|
}
|
|
52
53
|
try {
|
|
53
54
|
const value = storage.getItem(SELECTED_WALLET_STORAGE_KEY);
|
|
54
55
|
if (!value) {
|
|
55
|
-
return { wallet: null, error: null };
|
|
56
|
+
return { wallet: null, connected: false, error: null };
|
|
56
57
|
}
|
|
57
58
|
const wallet = JSON.parse(value);
|
|
59
|
+
const hasName = typeof wallet.name === "string";
|
|
58
60
|
return {
|
|
59
|
-
wallet:
|
|
61
|
+
wallet: hasName ? {
|
|
60
62
|
name: wallet.name,
|
|
61
63
|
platform: wallet.platform,
|
|
62
64
|
source: wallet.source
|
|
63
65
|
} : null,
|
|
66
|
+
connected: hasName && wallet.connected === true,
|
|
64
67
|
error: null
|
|
65
68
|
};
|
|
66
69
|
} catch (cause) {
|
|
67
70
|
return {
|
|
68
71
|
wallet: null,
|
|
72
|
+
connected: false,
|
|
69
73
|
error: createSolanaError("STORAGE_FAILURE", "Unable to read the selected Solana wallet", {
|
|
70
74
|
cause
|
|
71
75
|
})
|
|
72
76
|
};
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
|
-
function writeSelectedWallet(wallet) {
|
|
79
|
+
function writeSelectedWallet(wallet, connected = false) {
|
|
76
80
|
const { storage, error } = getLocalStorage();
|
|
77
81
|
if (error || !storage) {
|
|
78
82
|
return error;
|
|
79
83
|
}
|
|
80
84
|
try {
|
|
81
85
|
if (wallet) {
|
|
82
|
-
storage.setItem(
|
|
86
|
+
storage.setItem(
|
|
87
|
+
SELECTED_WALLET_STORAGE_KEY,
|
|
88
|
+
JSON.stringify(
|
|
89
|
+
connected ? { ...toPersistedSelectedWallet(wallet), connected: true } : toPersistedSelectedWallet(wallet)
|
|
90
|
+
)
|
|
91
|
+
);
|
|
83
92
|
} else {
|
|
84
93
|
storage.removeItem(SELECTED_WALLET_STORAGE_KEY);
|
|
85
94
|
}
|
|
@@ -91,6 +100,9 @@ function writeSelectedWallet(wallet) {
|
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
102
|
function stringifySelectedWallet(wallet) {
|
|
103
|
+
return JSON.stringify(toPersistedSelectedWallet(wallet));
|
|
104
|
+
}
|
|
105
|
+
function toPersistedSelectedWallet(wallet) {
|
|
94
106
|
const value = { name: wallet.name };
|
|
95
107
|
if (wallet.platform) {
|
|
96
108
|
value.platform = wallet.platform;
|
|
@@ -98,7 +110,7 @@ function stringifySelectedWallet(wallet) {
|
|
|
98
110
|
if (wallet.source) {
|
|
99
111
|
value.source = wallet.source;
|
|
100
112
|
}
|
|
101
|
-
return
|
|
113
|
+
return value;
|
|
102
114
|
}
|
|
103
115
|
function getLocalStorage() {
|
|
104
116
|
if (typeof window === "undefined") {
|
|
@@ -121,6 +133,7 @@ function createSolanaWalletRegistry(options) {
|
|
|
121
133
|
const adaptedWallets = /* @__PURE__ */ new WeakMap();
|
|
122
134
|
const adaptedPrimitiveWallets = /* @__PURE__ */ new Map();
|
|
123
135
|
const trackedAdapters = /* @__PURE__ */ new Set();
|
|
136
|
+
const sendTransaction = (signedTransaction, sendOptions) => sendSignedTransaction(options.client, signedTransaction, sendOptions);
|
|
124
137
|
function trackAdapter(adapter) {
|
|
125
138
|
trackedAdapters.add(adapter);
|
|
126
139
|
return adapter;
|
|
@@ -131,7 +144,7 @@ function createSolanaWalletRegistry(options) {
|
|
|
131
144
|
if (cachedIosWallet) {
|
|
132
145
|
return cachedIosWallet;
|
|
133
146
|
}
|
|
134
|
-
const iosAdapter =
|
|
147
|
+
const iosAdapter = decorateAdapter(
|
|
135
148
|
adaptSolanaIosWallet(walletInfo, {
|
|
136
149
|
chain: getSolanaChain(options.cluster),
|
|
137
150
|
cluster: options.cluster,
|
|
@@ -149,10 +162,11 @@ function createSolanaWalletRegistry(options) {
|
|
|
149
162
|
if (cachedPrimitiveWallet) {
|
|
150
163
|
return cachedPrimitiveWallet;
|
|
151
164
|
}
|
|
152
|
-
const primitiveAdapter =
|
|
165
|
+
const primitiveAdapter = decorateAdapter(
|
|
153
166
|
adaptSolanaStandardWallet(walletInfo, {
|
|
154
167
|
chain: getSolanaChain(options.cluster),
|
|
155
|
-
onChange: options.onWalletChange
|
|
168
|
+
onChange: options.onWalletChange,
|
|
169
|
+
sendTransaction
|
|
156
170
|
}),
|
|
157
171
|
walletInfo
|
|
158
172
|
);
|
|
@@ -163,10 +177,11 @@ function createSolanaWalletRegistry(options) {
|
|
|
163
177
|
if (cachedWallet) {
|
|
164
178
|
return cachedWallet;
|
|
165
179
|
}
|
|
166
|
-
const cachedAdapter =
|
|
180
|
+
const cachedAdapter = decorateAdapter(
|
|
167
181
|
adaptSolanaStandardWallet(walletInfo, {
|
|
168
182
|
chain: getSolanaChain(options.cluster),
|
|
169
|
-
onChange: options.onWalletChange
|
|
183
|
+
onChange: options.onWalletChange,
|
|
184
|
+
sendTransaction
|
|
170
185
|
}),
|
|
171
186
|
walletInfo
|
|
172
187
|
);
|
|
@@ -193,14 +208,50 @@ function createSolanaWalletRegistry(options) {
|
|
|
193
208
|
options.onError?.(cause);
|
|
194
209
|
}
|
|
195
210
|
}
|
|
211
|
+
function decorateAdapter(adapter, walletInfo) {
|
|
212
|
+
return reportConnectionChanges(makeConnectExclusive(adapter, walletInfo), walletInfo);
|
|
213
|
+
}
|
|
196
214
|
function makeConnectExclusive(adapter, walletInfo) {
|
|
197
215
|
const connect = adapter.connect.bind(adapter);
|
|
198
|
-
adapter.connect = async () => {
|
|
199
|
-
await connect();
|
|
216
|
+
adapter.connect = async (connectOptions) => {
|
|
217
|
+
await connect(connectOptions);
|
|
218
|
+
if (connectOptions?.silent && !adapter.connected) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
200
221
|
await disconnectOtherWallets(walletInfo, adapter);
|
|
201
222
|
};
|
|
202
223
|
return adapter;
|
|
203
224
|
}
|
|
225
|
+
function reportConnectionChanges(adapter, walletInfo) {
|
|
226
|
+
const connect = adapter.connect.bind(adapter);
|
|
227
|
+
const disconnect = adapter.disconnect.bind(adapter);
|
|
228
|
+
const signIn = adapter.signIn?.bind(adapter);
|
|
229
|
+
const report = () => options.onConnectionChange?.(walletInfo, adapter.connected);
|
|
230
|
+
adapter.connect = async (connectOptions) => {
|
|
231
|
+
await connect(connectOptions);
|
|
232
|
+
report();
|
|
233
|
+
};
|
|
234
|
+
adapter.disconnect = async () => {
|
|
235
|
+
try {
|
|
236
|
+
await disconnect();
|
|
237
|
+
} finally {
|
|
238
|
+
report();
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
if (signIn) {
|
|
242
|
+
adapter.signIn = async (input) => {
|
|
243
|
+
const wasConnected = adapter.connected;
|
|
244
|
+
try {
|
|
245
|
+
return await signIn(input);
|
|
246
|
+
} finally {
|
|
247
|
+
if (adapter.connected !== wasConnected) {
|
|
248
|
+
report();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return adapter;
|
|
254
|
+
}
|
|
204
255
|
async function disconnectOtherWallets(currentWallet, currentAdapter) {
|
|
205
256
|
await Promise.all(
|
|
206
257
|
options.getWalletInfos().map(async (walletInfo) => {
|
|
@@ -263,9 +314,15 @@ function createSolanaPlugin(options = {}) {
|
|
|
263
314
|
const latestBlockhash = ref(null);
|
|
264
315
|
const walletRegistry = createSolanaWalletRegistry({
|
|
265
316
|
cluster: context.cluster,
|
|
317
|
+
client: context.client,
|
|
266
318
|
iosWallet: options.iosWallet,
|
|
267
319
|
getWalletInfos: () => wallets.value,
|
|
268
320
|
onWalletChange: () => triggerRef(wallet),
|
|
321
|
+
onConnectionChange: (walletInfo, connected) => {
|
|
322
|
+
if (selectedWallet.value && isSameWallet(walletInfo, selectedWallet.value)) {
|
|
323
|
+
persistSelectedWallet(selectedWallet.value, connected);
|
|
324
|
+
}
|
|
325
|
+
},
|
|
269
326
|
onError: (cause) => {
|
|
270
327
|
error.value = normalizeSolanaError(cause, "WALLET_FAILURE");
|
|
271
328
|
logDevError("Failed to handle Solana iOS wallet callback", cause);
|
|
@@ -312,6 +369,7 @@ function createSolanaPlugin(options = {}) {
|
|
|
312
369
|
walletRegistry.handleIosWalletCallback();
|
|
313
370
|
wallets.value = walletRegistry.getDiscoveredWallets();
|
|
314
371
|
let restoredWallet = null;
|
|
372
|
+
let restoreConnection = false;
|
|
315
373
|
if (selectedWallet.value) {
|
|
316
374
|
selectedWallet.value = wallets.value.find((nextWallet) => isSameWallet(nextWallet, selectedWallet.value)) ?? null;
|
|
317
375
|
if (!selectedWallet.value) {
|
|
@@ -319,6 +377,7 @@ function createSolanaPlugin(options = {}) {
|
|
|
319
377
|
}
|
|
320
378
|
} else if (!options.wallet) {
|
|
321
379
|
const persistedWallet = readSelectedWallet();
|
|
380
|
+
restoreConnection = persistedWallet.connected;
|
|
322
381
|
if (persistedWallet.error) {
|
|
323
382
|
error.value = persistedWallet.error;
|
|
324
383
|
logDevError("Failed to read the persisted Solana wallet", persistedWallet.error);
|
|
@@ -335,7 +394,7 @@ function createSolanaPlugin(options = {}) {
|
|
|
335
394
|
registerMobileWallets();
|
|
336
395
|
}
|
|
337
396
|
if (restoredWallet) {
|
|
338
|
-
autoConnectWallet(restoredWallet);
|
|
397
|
+
autoConnectWallet(restoredWallet, restoreConnection);
|
|
339
398
|
}
|
|
340
399
|
}
|
|
341
400
|
function registerMobileWallets() {
|
|
@@ -361,14 +420,17 @@ function createSolanaPlugin(options = {}) {
|
|
|
361
420
|
function selectWallet(nextWallet) {
|
|
362
421
|
selectedWallet.value = nextWallet;
|
|
363
422
|
wallet.value = nextWallet ? walletRegistry.getAdaptedWallet(nextWallet) : options.wallet ?? null;
|
|
364
|
-
|
|
423
|
+
persistSelectedWallet(nextWallet, Boolean(nextWallet && wallet.value?.connected));
|
|
424
|
+
}
|
|
425
|
+
function persistSelectedWallet(walletInfo, connected) {
|
|
426
|
+
const storageError = writeSelectedWallet(walletInfo, connected);
|
|
365
427
|
if (storageError) {
|
|
366
428
|
error.value = storageError;
|
|
367
429
|
logDevError("Failed to persist the selected Solana wallet", storageError);
|
|
368
430
|
}
|
|
369
431
|
}
|
|
370
|
-
function autoConnectWallet(walletInfo) {
|
|
371
|
-
if (!options.autoConnect) {
|
|
432
|
+
function autoConnectWallet(walletInfo, wasConnected) {
|
|
433
|
+
if (!options.autoConnect && !wasConnected) {
|
|
372
434
|
return;
|
|
373
435
|
}
|
|
374
436
|
const activeWallet = wallet.value;
|
|
@@ -377,8 +439,10 @@ function createSolanaPlugin(options = {}) {
|
|
|
377
439
|
return;
|
|
378
440
|
}
|
|
379
441
|
attemptedAutoConnectWallet = storageValue;
|
|
380
|
-
void activeWallet.connect().catch((cause) => {
|
|
381
|
-
|
|
442
|
+
void activeWallet.connect({ silent: true }).catch((cause) => {
|
|
443
|
+
if (options.autoConnect) {
|
|
444
|
+
error.value = normalizeSolanaError(cause, "WALLET_FAILURE");
|
|
445
|
+
}
|
|
382
446
|
logDevError("Failed to auto-connect Solana wallet", cause);
|
|
383
447
|
}).finally(() => {
|
|
384
448
|
triggerRef(wallet);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PartialSignAndSendError, normalizeSolanaError } from '@vue-solana/core/errors';
|
|
2
2
|
import { withSolanaTimeout } from '@vue-solana/core/timeout';
|
|
3
3
|
import { createNoWalletSelectedError, assertWalletCanSignAndSendTransactions } from '@vue-solana/core/wallet';
|
|
4
4
|
import { shallowRef } from 'vue';
|
|
@@ -6,13 +6,6 @@ import { u as useExecution } from './vue.BiKE9Xuv.mjs';
|
|
|
6
6
|
import { u as useWallet } from './vue.Bc_Kbwr5.mjs';
|
|
7
7
|
|
|
8
8
|
const SIGN_AND_SEND_TIMEOUT_MS = 12e4;
|
|
9
|
-
class PartialSignAndSendError extends SolanaError {
|
|
10
|
-
constructor(cause, signatures) {
|
|
11
|
-
super(cause.code, cause.message, { cause: cause.cause, feature: cause.feature });
|
|
12
|
-
this.signatures = signatures;
|
|
13
|
-
this.name = "PartialSignAndSendError";
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
9
|
function useSignAndSendTransactions() {
|
|
17
10
|
const { wallet } = useWallet();
|
|
18
11
|
const signatures = shallowRef(null);
|
|
@@ -63,4 +56,4 @@ function useSignAndSendTransactions() {
|
|
|
63
56
|
};
|
|
64
57
|
}
|
|
65
58
|
|
|
66
|
-
export {
|
|
59
|
+
export { useSignAndSendTransactions as u };
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
+
import * as _vue_solana_core from '@vue-solana/core';
|
|
1
2
|
import * as vue from 'vue';
|
|
2
3
|
import { Signature } from '@vue-solana/core/kit';
|
|
3
4
|
import { SolanaTransaction, SendTransactionOptions } from '@vue-solana/core/types';
|
|
4
|
-
|
|
5
|
+
export { PartialSignAndSendError } from '@vue-solana/core/errors';
|
|
5
6
|
|
|
6
7
|
type SignAndSendTransactionsStatus = "idle" | "sending" | "sent" | "error";
|
|
7
|
-
|
|
8
|
-
* Thrown when the singular fallback path fails partway through: the earlier
|
|
9
|
-
* transactions in the batch have already been sent, and their signatures are
|
|
10
|
-
* exposed here so callers can avoid resubmitting them.
|
|
11
|
-
*/
|
|
12
|
-
declare class PartialSignAndSendError extends SolanaError {
|
|
13
|
-
readonly signatures: Signature[];
|
|
14
|
-
constructor(cause: SolanaError, signatures: Signature[]);
|
|
15
|
-
}
|
|
8
|
+
|
|
16
9
|
/**
|
|
17
10
|
* Sign and send multiple serialized transactions in a single wallet request,
|
|
18
11
|
* returning one signature per transaction.
|
|
@@ -27,9 +20,9 @@ declare function useSignAndSendTransactions(): {
|
|
|
27
20
|
signatures: vue.ShallowRef<Signature[] | null, Signature[] | null>;
|
|
28
21
|
status: vue.ShallowRef<SignAndSendTransactionsStatus>;
|
|
29
22
|
loading: vue.ComputedRef<boolean>;
|
|
30
|
-
error: vue.Ref<SolanaError | null, SolanaError | null>;
|
|
23
|
+
error: vue.Ref<_vue_solana_core.SolanaError | null, _vue_solana_core.SolanaError | null>;
|
|
31
24
|
execute: (transactions: SolanaTransaction[], options?: SendTransactionOptions) => Promise<Signature[]>;
|
|
32
25
|
};
|
|
33
26
|
|
|
34
|
-
export {
|
|
27
|
+
export { useSignAndSendTransactions };
|
|
35
28
|
export type { SignAndSendTransactionsStatus };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { u as useSignAndSendTransactions } from './shared/vue.sPcsjyKU.mjs';
|
|
2
|
+
export { PartialSignAndSendError } from '@vue-solana/core/errors';
|
package/dist/useSolanaPay.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare function useSolanaPay(): {
|
|
|
6
6
|
requestUrl: vue.ShallowRef<string | null, string | null>;
|
|
7
7
|
parsedRequest: vue.ShallowRef<unknown, unknown>;
|
|
8
8
|
reference: vue.ShallowRef<unknown, unknown>;
|
|
9
|
-
status: vue.ShallowRef<"
|
|
9
|
+
status: vue.ShallowRef<"confirmed" | "finalized" | "error" | "idle" | "pending" | "found" | "expired", "confirmed" | "finalized" | "error" | "idle" | "pending" | "found" | "expired">;
|
|
10
10
|
loading: vue.ShallowRef<boolean, boolean>;
|
|
11
11
|
error: vue.ShallowRef<unknown, unknown>;
|
|
12
12
|
createTransferRequest: (input: Record<string, unknown>) => Promise<string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-solana/vue",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.3",
|
|
4
4
|
"description": "Vue plugin and composables for Solana applications.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
"access": "public"
|
|
195
195
|
},
|
|
196
196
|
"dependencies": {
|
|
197
|
-
"@vue-solana/core": "4.1.
|
|
197
|
+
"@vue-solana/core": "4.1.3"
|
|
198
198
|
},
|
|
199
199
|
"peerDependencies": {
|
|
200
200
|
"vue": "^3.5.0"
|