@solana-mobile/mobile-wallet-adapter-protocol-kit 0.2.2 → 0.3.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 +1 -1
- package/lib/cjs/index.browser.js +83 -140
- package/lib/cjs/index.browser.js.map +1 -0
- package/lib/cjs/index.js +83 -140
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/index.native.js +80 -135
- package/lib/cjs/index.native.js.map +1 -0
- package/lib/cjs/package.json +1 -3
- package/lib/esm/index.browser.js +82 -136
- package/lib/esm/index.browser.js.map +1 -0
- package/lib/esm/index.js +82 -136
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/package.json +1 -3
- package/lib/types/index.d.ts +89 -26
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +65 -64
- package/lib/types/index.browser.d.ts +0 -40
- package/lib/types/index.browser.d.ts.map +0 -1
- package/lib/types/index.native.d.ts +0 -40
- package/lib/types/index.native.d.ts.map +0 -1
package/lib/cjs/index.native.js
CHANGED
|
@@ -1,145 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var mobileWalletAdapterProtocol = require('@solana-mobile/mobile-wallet-adapter-protocol');
|
|
7
|
-
var jsBase64 = require('js-base64');
|
|
8
|
-
|
|
9
|
-
/******************************************************************************
|
|
10
|
-
Copyright (c) Microsoft Corporation.
|
|
11
|
-
|
|
12
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
13
|
-
purpose with or without fee is hereby granted.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
16
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
17
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
18
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
19
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
20
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
21
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
22
|
-
***************************************************************************** */
|
|
23
|
-
|
|
24
|
-
function __rest(s, e) {
|
|
25
|
-
var t = {};
|
|
26
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
27
|
-
t[p] = s[p];
|
|
28
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
29
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
30
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
31
|
-
t[p[i]] = s[p[i]];
|
|
32
|
-
}
|
|
33
|
-
return t;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let _solana_transactions = require("@solana/transactions");
|
|
3
|
+
let _solana_mobile_mobile_wallet_adapter_protocol = require("@solana-mobile/mobile-wallet-adapter-protocol");
|
|
4
|
+
let js_base64 = require("js-base64");
|
|
5
|
+
//#region src/transact.ts
|
|
46
6
|
function getPayloadFromTransaction(transaction) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
else if ('instructions' in transaction) {
|
|
51
|
-
const compiledTransaction = transactions.compileTransaction(transaction);
|
|
52
|
-
return transactions.getBase64EncodedWireTransaction(compiledTransaction);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
throw new Error('Invalid transaction type');
|
|
56
|
-
}
|
|
7
|
+
if ("messageBytes" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)(transaction);
|
|
8
|
+
else if ("instructions" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)((0, _solana_transactions.compileTransaction)(transaction));
|
|
9
|
+
else throw new Error("Invalid transaction type");
|
|
57
10
|
}
|
|
58
11
|
function getTransactionFromWireMessage(byteArray) {
|
|
59
|
-
|
|
60
|
-
return transactionDecoder.decode(byteArray);
|
|
12
|
+
return (0, _solana_transactions.getTransactionDecoder)().decode(byteArray);
|
|
61
13
|
}
|
|
62
|
-
function transact(callback, config) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return yield mobileWalletAdapterProtocol.transact(augmentedCallback, config);
|
|
68
|
-
});
|
|
14
|
+
async function transact(callback, config) {
|
|
15
|
+
const augmentedCallback = (wallet) => {
|
|
16
|
+
return callback(augmentWalletAPI(wallet));
|
|
17
|
+
};
|
|
18
|
+
return await (0, _solana_mobile_mobile_wallet_adapter_protocol.transact)(augmentedCallback, config);
|
|
69
19
|
}
|
|
70
|
-
function startRemoteScenario(config) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
20
|
+
async function startRemoteScenario(config) {
|
|
21
|
+
const { wallet, close, associationUrl } = await (0, _solana_mobile_mobile_wallet_adapter_protocol.startRemoteScenario)(config);
|
|
22
|
+
return {
|
|
23
|
+
wallet: wallet.then((wallet) => {
|
|
24
|
+
return augmentWalletAPI(wallet);
|
|
25
|
+
}),
|
|
26
|
+
close,
|
|
27
|
+
associationUrl
|
|
28
|
+
};
|
|
78
29
|
}
|
|
79
30
|
function augmentWalletAPI(wallet) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
},
|
|
135
|
-
defineProperty() {
|
|
136
|
-
return false;
|
|
137
|
-
},
|
|
138
|
-
deleteProperty() {
|
|
139
|
-
return false;
|
|
140
|
-
},
|
|
141
|
-
});
|
|
31
|
+
return new Proxy({}, {
|
|
32
|
+
get(target, p) {
|
|
33
|
+
if (target[p] == null) switch (p) {
|
|
34
|
+
case "signAndSendTransactions":
|
|
35
|
+
target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
|
|
36
|
+
const payloads = transactions.map(getPayloadFromTransaction);
|
|
37
|
+
const options = {
|
|
38
|
+
min_context_slot: minContextSlot,
|
|
39
|
+
commitment,
|
|
40
|
+
skip_preflight: skipPreflight,
|
|
41
|
+
max_retries: maxRetries,
|
|
42
|
+
wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
|
|
43
|
+
};
|
|
44
|
+
const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
|
|
45
|
+
...rest,
|
|
46
|
+
...Object.values(options).some((element) => element != null) ? { options } : null,
|
|
47
|
+
payloads
|
|
48
|
+
});
|
|
49
|
+
return base64EncodedSignatures.map(js_base64.toUint8Array);
|
|
50
|
+
};
|
|
51
|
+
break;
|
|
52
|
+
case "signMessages":
|
|
53
|
+
target[p] = async function({ payloads, ...rest }) {
|
|
54
|
+
const base64EncodedPayloads = payloads.map(js_base64.fromUint8Array);
|
|
55
|
+
const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
|
|
56
|
+
...rest,
|
|
57
|
+
payloads: base64EncodedPayloads
|
|
58
|
+
});
|
|
59
|
+
return base64EncodedSignedMessages.map(js_base64.toUint8Array);
|
|
60
|
+
};
|
|
61
|
+
break;
|
|
62
|
+
case "signTransactions":
|
|
63
|
+
target[p] = async function({ transactions, ...rest }) {
|
|
64
|
+
const payloads = transactions.map(getPayloadFromTransaction);
|
|
65
|
+
const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
|
|
66
|
+
...rest,
|
|
67
|
+
payloads
|
|
68
|
+
});
|
|
69
|
+
return base64EncodedCompiledTransactions.map(js_base64.toUint8Array).map(getTransactionFromWireMessage);
|
|
70
|
+
};
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
target[p] = wallet[p];
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
return target[p];
|
|
77
|
+
},
|
|
78
|
+
defineProperty() {
|
|
79
|
+
return false;
|
|
80
|
+
},
|
|
81
|
+
deleteProperty() {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
142
85
|
}
|
|
143
|
-
|
|
86
|
+
//#endregion
|
|
144
87
|
exports.startRemoteScenario = startRemoteScenario;
|
|
145
88
|
exports.transact = transact;
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.js","names":["toUint8Array","fromUint8Array"],"sources":["../../src/transact.ts"],"sourcesContent":["import {\n type Transaction,\n compileTransaction,\n getBase64EncodedWireTransaction,\n getTransactionDecoder,\n} from '@solana/transactions';\nimport {\n type TransactionMessage,\n type TransactionMessageWithFeePayer,\n type TransactionMessageWithLifetime,\n} from '@solana/transaction-messages';\nimport type { SignatureBytes } from '@solana/keys';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n RemoteWalletAssociationConfig,\n startRemoteScenario as baseStartRemoteScenario,\n TerminateSessionAPI,\n transact as baseTransact,\n WalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\nexport type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage &\n TransactionMessageWithFeePayer<TAddress> &\n TransactionMessageWithLifetime;\n\nexport type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;\n\ninterface KitSignAndSendTransactionsAPI {\n signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<SignatureBytes[]>;\n}\n\ninterface KitSignTransactionsAPI {\n signTransactions<T extends Transaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface KitSignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface KitMobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n KitSignAndSendTransactionsAPI,\n KitSignTransactionsAPI,\n KitSignMessagesAPI {}\n\nexport interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}\n\nexport type KitScenario = Readonly<{\n wallet: Promise<KitMobileWallet>;\n close: () => void;\n}>;\n\nexport type KitRemoteScenario = KitScenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: Transaction | SignAndSendTransactionMessage): Base64EncodedTransaction {\n if ('messageBytes' in transaction) {\n return getBase64EncodedWireTransaction(transaction);\n } else if ('instructions' in transaction) {\n const compiledTransaction = compileTransaction(transaction);\n return getBase64EncodedWireTransaction(compiledTransaction);\n } else {\n throw new Error('Invalid transaction type');\n }\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction {\n const transactionDecoder = getTransactionDecoder();\n return transactionDecoder.decode(byteArray);\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: KitMobileWallet) => TReturn,\n config?: WalletAssociationConfig,\n): Promise<TReturn> {\n const augmentedCallback: (wallet: MobileWallet) => TReturn = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await baseTransact(augmentedCallback, config);\n}\n\nexport async function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario> {\n const { wallet, close, associationUrl } = await baseStartRemoteScenario(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\n\nfunction augmentWalletAPI(wallet: MobileWallet): KitMobileWallet {\n return new Proxy<KitMobileWallet>({} as KitMobileWallet, {\n get<TMethodName extends keyof KitMobileWallet>(target: KitMobileWallet, p: TMethodName) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({\n minContextSlot,\n commitment,\n skipPreflight,\n maxRetries,\n waitForCommitmentToSendNextTransaction,\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signAndSendTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction,\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some((element) => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array);\n return signatures as SignatureBytes[];\n } as KitMobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<KitMobileWallet['signMessages']>[0]) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n } as KitMobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } =\n await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n } as KitMobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as KitMobileWallet[TMethodName];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n"],"mappings":";;;;;AA8EA,SAAS,0BAA0B,aAAoF;AACnH,KAAI,kBAAkB,YAClB,SAAA,GAAA,qBAAA,iCAAuC,YAAY;UAC5C,kBAAkB,YAEzB,SAAA,GAAA,qBAAA,kCAAA,GAAA,qBAAA,oBAD+C,YAAY,CACA;KAE3D,OAAM,IAAI,MAAM,2BAA2B;;AAInD,SAAS,8BAA8B,WAAoC;AAEvE,SAAA,GAAA,qBAAA,wBADkD,CACxB,OAAO,UAAU;;AAG/C,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,OAAA,GAAA,8CAAA,UAAmB,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAmE;CACzG,MAAM,EAAE,QAAQ,OAAO,mBAAmB,OAAA,GAAA,8CAAA,qBAA8B,OAAO;AAI/E,QAAO;EAAE,QAHgB,OAAO,MAAM,WAAW;AAC7C,UAAO,iBAAiB,OAAO;IACjC;EACiC;EAAO;EAAgB;;AAG9D,SAAS,iBAAiB,QAAuC;AAC7D,QAAO,IAAI,MAAuB,EAAE,EAAqB;EACrD,IAA+C,QAAyB,GAAgB;AACpF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACuD;MAC1D,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,UAAU;OACZ,kBAAkB;OACN;OACZ,gBAAgB;OAChB,aAAa;OACb,8CAA8C;OACjD;MACD,MAAM,EAAE,YAAY,4BAA4B,MAAM,OAAO,wBAAwB;OACjF,GAAG;OACH,GAAI,OAAO,OAAO,QAAQ,CAAC,MAAM,YAAY,WAAW,KAAK,GACvD,EAAW,SAAS,GACpB;OACN;OACH,CAAC;AAEF,aADmB,wBAAwB,IAAIA,UAAAA,aAAa;;AAGhE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC4C;MAC/C,MAAM,wBAAwB,SAAS,IAAIC,UAAAA,eAAe;MAC1D,MAAM,EAAE,iBAAiB,gCAAgC,MAAM,OAAO,aAAa;OAC/E,GAAG;OACH,UAAU;OACb,CAAC;AAEF,aADuB,4BAA4B,IAAID,UAAAA,aAAa;;AAGxE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,cACA,GAAG,QACgD;MACnD,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,EAAE,iBAAiB,sCACrB,MAAM,OAAO,iBAAiB;OAC1B,GAAG;OACH;OACH,CAAC;AAGN,aAF6B,kCAAkC,IAAIA,UAAAA,aAAa,CAChC,IAAI,8BAA8B;;AAGtF;IACJ;AACI,YAAO,KAAK,OAAO;AACnB;;AAIZ,UAAO,OAAO;;EAElB,iBAAiB;AACb,UAAO;;EAEX,iBAAiB;AACb,UAAO;;EAEd,CAAC"}
|
package/lib/cjs/package.json
CHANGED
package/lib/esm/index.browser.js
CHANGED
|
@@ -1,149 +1,95 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/******************************************************************************
|
|
5
|
-
Copyright (c) Microsoft Corporation.
|
|
6
|
-
|
|
7
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
8
|
-
purpose with or without fee is hereby granted.
|
|
9
|
-
|
|
10
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
11
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
12
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
13
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
14
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
15
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
16
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
17
|
-
***************************************************************************** */
|
|
18
|
-
|
|
19
|
-
function __rest(s, e) {
|
|
20
|
-
var t = {};
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
24
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
25
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
26
|
-
t[p[i]] = s[p[i]];
|
|
27
|
-
}
|
|
28
|
-
return t;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
32
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
33
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
34
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
35
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
36
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
37
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
1
|
+
import { compileTransaction, getBase64EncodedWireTransaction, getTransactionDecoder } from "@solana/transactions";
|
|
2
|
+
import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from "@solana-mobile/mobile-wallet-adapter-protocol";
|
|
3
|
+
//#region src/base64Utils.ts
|
|
41
4
|
function fromUint8Array(byteArray) {
|
|
42
|
-
|
|
5
|
+
return window.btoa(String.fromCharCode.call(null, ...byteArray));
|
|
43
6
|
}
|
|
44
7
|
function toUint8Array(base64EncodedByteArray) {
|
|
45
|
-
|
|
46
|
-
.atob(base64EncodedByteArray)
|
|
47
|
-
.split('')
|
|
48
|
-
.map((c) => c.charCodeAt(0)));
|
|
8
|
+
return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
|
|
49
9
|
}
|
|
50
|
-
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/transact.ts
|
|
51
12
|
function getPayloadFromTransaction(transaction) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
else if ('instructions' in transaction) {
|
|
56
|
-
const compiledTransaction = compileTransaction(transaction);
|
|
57
|
-
return getBase64EncodedWireTransaction(compiledTransaction);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
throw new Error('Invalid transaction type');
|
|
61
|
-
}
|
|
13
|
+
if ("messageBytes" in transaction) return getBase64EncodedWireTransaction(transaction);
|
|
14
|
+
else if ("instructions" in transaction) return getBase64EncodedWireTransaction(compileTransaction(transaction));
|
|
15
|
+
else throw new Error("Invalid transaction type");
|
|
62
16
|
}
|
|
63
17
|
function getTransactionFromWireMessage(byteArray) {
|
|
64
|
-
|
|
65
|
-
return transactionDecoder.decode(byteArray);
|
|
18
|
+
return getTransactionDecoder().decode(byteArray);
|
|
66
19
|
}
|
|
67
|
-
function transact(callback, config) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return yield transact$1(augmentedCallback, config);
|
|
73
|
-
});
|
|
20
|
+
async function transact(callback, config) {
|
|
21
|
+
const augmentedCallback = (wallet) => {
|
|
22
|
+
return callback(augmentWalletAPI(wallet));
|
|
23
|
+
};
|
|
24
|
+
return await transact$1(augmentedCallback, config);
|
|
74
25
|
}
|
|
75
|
-
function startRemoteScenario(config) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
26
|
+
async function startRemoteScenario(config) {
|
|
27
|
+
const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
|
|
28
|
+
return {
|
|
29
|
+
wallet: wallet.then((wallet) => {
|
|
30
|
+
return augmentWalletAPI(wallet);
|
|
31
|
+
}),
|
|
32
|
+
close,
|
|
33
|
+
associationUrl
|
|
34
|
+
};
|
|
83
35
|
}
|
|
84
36
|
function augmentWalletAPI(wallet) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
},
|
|
140
|
-
defineProperty() {
|
|
141
|
-
return false;
|
|
142
|
-
},
|
|
143
|
-
deleteProperty() {
|
|
144
|
-
return false;
|
|
145
|
-
},
|
|
146
|
-
});
|
|
37
|
+
return new Proxy({}, {
|
|
38
|
+
get(target, p) {
|
|
39
|
+
if (target[p] == null) switch (p) {
|
|
40
|
+
case "signAndSendTransactions":
|
|
41
|
+
target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
|
|
42
|
+
const payloads = transactions.map(getPayloadFromTransaction);
|
|
43
|
+
const options = {
|
|
44
|
+
min_context_slot: minContextSlot,
|
|
45
|
+
commitment,
|
|
46
|
+
skip_preflight: skipPreflight,
|
|
47
|
+
max_retries: maxRetries,
|
|
48
|
+
wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
|
|
49
|
+
};
|
|
50
|
+
const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
|
|
51
|
+
...rest,
|
|
52
|
+
...Object.values(options).some((element) => element != null) ? { options } : null,
|
|
53
|
+
payloads
|
|
54
|
+
});
|
|
55
|
+
return base64EncodedSignatures.map(toUint8Array);
|
|
56
|
+
};
|
|
57
|
+
break;
|
|
58
|
+
case "signMessages":
|
|
59
|
+
target[p] = async function({ payloads, ...rest }) {
|
|
60
|
+
const base64EncodedPayloads = payloads.map(fromUint8Array);
|
|
61
|
+
const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
|
|
62
|
+
...rest,
|
|
63
|
+
payloads: base64EncodedPayloads
|
|
64
|
+
});
|
|
65
|
+
return base64EncodedSignedMessages.map(toUint8Array);
|
|
66
|
+
};
|
|
67
|
+
break;
|
|
68
|
+
case "signTransactions":
|
|
69
|
+
target[p] = async function({ transactions, ...rest }) {
|
|
70
|
+
const payloads = transactions.map(getPayloadFromTransaction);
|
|
71
|
+
const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
|
|
72
|
+
...rest,
|
|
73
|
+
payloads
|
|
74
|
+
});
|
|
75
|
+
return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
|
|
76
|
+
};
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
target[p] = wallet[p];
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
return target[p];
|
|
83
|
+
},
|
|
84
|
+
defineProperty() {
|
|
85
|
+
return false;
|
|
86
|
+
},
|
|
87
|
+
deleteProperty() {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
147
91
|
}
|
|
148
|
-
|
|
92
|
+
//#endregion
|
|
149
93
|
export { startRemoteScenario, transact };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","names":["baseTransact","baseStartRemoteScenario"],"sources":["../../src/base64Utils.ts","../../src/transact.ts"],"sourcesContent":["export function fromUint8Array(byteArray: Uint8Array): string {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\n\nexport function toUint8Array(base64EncodedByteArray: string): Uint8Array {\n return new Uint8Array(\n window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)),\n );\n}\n","import {\n type Transaction,\n compileTransaction,\n getBase64EncodedWireTransaction,\n getTransactionDecoder,\n} from '@solana/transactions';\nimport {\n type TransactionMessage,\n type TransactionMessageWithFeePayer,\n type TransactionMessageWithLifetime,\n} from '@solana/transaction-messages';\nimport type { SignatureBytes } from '@solana/keys';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n RemoteWalletAssociationConfig,\n startRemoteScenario as baseStartRemoteScenario,\n TerminateSessionAPI,\n transact as baseTransact,\n WalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\nexport type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage &\n TransactionMessageWithFeePayer<TAddress> &\n TransactionMessageWithLifetime;\n\nexport type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;\n\ninterface KitSignAndSendTransactionsAPI {\n signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<SignatureBytes[]>;\n}\n\ninterface KitSignTransactionsAPI {\n signTransactions<T extends Transaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface KitSignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface KitMobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n KitSignAndSendTransactionsAPI,\n KitSignTransactionsAPI,\n KitSignMessagesAPI {}\n\nexport interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}\n\nexport type KitScenario = Readonly<{\n wallet: Promise<KitMobileWallet>;\n close: () => void;\n}>;\n\nexport type KitRemoteScenario = KitScenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: Transaction | SignAndSendTransactionMessage): Base64EncodedTransaction {\n if ('messageBytes' in transaction) {\n return getBase64EncodedWireTransaction(transaction);\n } else if ('instructions' in transaction) {\n const compiledTransaction = compileTransaction(transaction);\n return getBase64EncodedWireTransaction(compiledTransaction);\n } else {\n throw new Error('Invalid transaction type');\n }\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction {\n const transactionDecoder = getTransactionDecoder();\n return transactionDecoder.decode(byteArray);\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: KitMobileWallet) => TReturn,\n config?: WalletAssociationConfig,\n): Promise<TReturn> {\n const augmentedCallback: (wallet: MobileWallet) => TReturn = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await baseTransact(augmentedCallback, config);\n}\n\nexport async function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario> {\n const { wallet, close, associationUrl } = await baseStartRemoteScenario(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\n\nfunction augmentWalletAPI(wallet: MobileWallet): KitMobileWallet {\n return new Proxy<KitMobileWallet>({} as KitMobileWallet, {\n get<TMethodName extends keyof KitMobileWallet>(target: KitMobileWallet, p: TMethodName) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({\n minContextSlot,\n commitment,\n skipPreflight,\n maxRetries,\n waitForCommitmentToSendNextTransaction,\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signAndSendTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction,\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some((element) => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array);\n return signatures as SignatureBytes[];\n } as KitMobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<KitMobileWallet['signMessages']>[0]) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n } as KitMobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } =\n await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n } as KitMobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as KitMobileWallet[TMethodName];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n"],"mappings":";;;AAAA,SAAgB,eAAe,WAA+B;AAC1D,QAAO,OAAO,KAAK,OAAO,aAAa,KAAK,MAAM,GAAG,UAAU,CAAC;;AAGpE,SAAgB,aAAa,wBAA4C;AACrE,QAAO,IAAI,WACP,OACK,KAAK,uBAAuB,CAC5B,MAAM,GAAG,CACT,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC,CACnC;;;;ACoEL,SAAS,0BAA0B,aAAoF;AACnH,KAAI,kBAAkB,YAClB,QAAO,gCAAgC,YAAY;UAC5C,kBAAkB,YAEzB,QAAO,gCADqB,mBAAmB,YAAY,CACA;KAE3D,OAAM,IAAI,MAAM,2BAA2B;;AAInD,SAAS,8BAA8B,WAAoC;AAEvE,QAD2B,uBAAuB,CACxB,OAAO,UAAU;;AAG/C,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,MAAMA,WAAa,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAmE;CACzG,MAAM,EAAE,QAAQ,OAAO,mBAAmB,MAAMC,sBAAwB,OAAO;AAI/E,QAAO;EAAE,QAHgB,OAAO,MAAM,WAAW;AAC7C,UAAO,iBAAiB,OAAO;IACjC;EACiC;EAAO;EAAgB;;AAG9D,SAAS,iBAAiB,QAAuC;AAC7D,QAAO,IAAI,MAAuB,EAAE,EAAqB;EACrD,IAA+C,QAAyB,GAAgB;AACpF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACuD;MAC1D,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,UAAU;OACZ,kBAAkB;OACN;OACZ,gBAAgB;OAChB,aAAa;OACb,8CAA8C;OACjD;MACD,MAAM,EAAE,YAAY,4BAA4B,MAAM,OAAO,wBAAwB;OACjF,GAAG;OACH,GAAI,OAAO,OAAO,QAAQ,CAAC,MAAM,YAAY,WAAW,KAAK,GACvD,EAAW,SAAS,GACpB;OACN;OACH,CAAC;AAEF,aADmB,wBAAwB,IAAI,aAAa;;AAGhE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC4C;MAC/C,MAAM,wBAAwB,SAAS,IAAI,eAAe;MAC1D,MAAM,EAAE,iBAAiB,gCAAgC,MAAM,OAAO,aAAa;OAC/E,GAAG;OACH,UAAU;OACb,CAAC;AAEF,aADuB,4BAA4B,IAAI,aAAa;;AAGxE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,cACA,GAAG,QACgD;MACnD,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,EAAE,iBAAiB,sCACrB,MAAM,OAAO,iBAAiB;OAC1B,GAAG;OACH;OACH,CAAC;AAGN,aAF6B,kCAAkC,IAAI,aAAa,CAChC,IAAI,8BAA8B;;AAGtF;IACJ;AACI,YAAO,KAAK,OAAO;AACnB;;AAIZ,UAAO,OAAO;;EAElB,iBAAiB;AACb,UAAO;;EAEX,iBAAiB;AACb,UAAO;;EAEd,CAAC"}
|