@solana-mobile/mobile-wallet-adapter-protocol-web3js 2.2.5 → 2.2.7

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,155 +1,117 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var web3_js = require('@solana/web3.js');
6
- var mobileWalletAdapterProtocol = require('@solana-mobile/mobile-wallet-adapter-protocol');
7
- var bs58 = require('bs58');
8
- var jsBase64 = require('js-base64');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var bs58__default = /*#__PURE__*/_interopDefaultLegacy(bs58);
13
-
14
- /******************************************************************************
15
- Copyright (c) Microsoft Corporation.
16
-
17
- Permission to use, copy, modify, and/or distribute this software for any
18
- purpose with or without fee is hereby granted.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
21
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
22
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
23
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
24
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
25
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
26
- PERFORMANCE OF THIS SOFTWARE.
27
- ***************************************************************************** */
28
-
29
- function __rest(s, e) {
30
- var t = {};
31
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
32
- t[p] = s[p];
33
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
34
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
35
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
36
- t[p[i]] = s[p[i]];
37
- }
38
- return t;
39
- }
40
-
41
- function __awaiter(thisArg, _arguments, P, generator) {
42
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
43
- return new (P || (P = Promise))(function (resolve, reject) {
44
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
45
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
46
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
47
- step((generator = generator.apply(thisArg, _arguments || [])).next());
48
- });
49
- }
50
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region \0rolldown/runtime.js
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
+ get: ((k) => from[k]).bind(null, key),
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
+ value: mod,
21
+ enumerable: true
22
+ }) : target, mod));
23
+ //#endregion
24
+ let _solana_web3_js = require("@solana/web3.js");
25
+ let _solana_mobile_mobile_wallet_adapter_protocol = require("@solana-mobile/mobile-wallet-adapter-protocol");
26
+ let bs58 = require("bs58");
27
+ bs58 = __toESM(bs58);
28
+ let js_base64 = require("js-base64");
29
+ //#region src/transact.ts
51
30
  function getPayloadFromTransaction(transaction) {
52
- const serializedTransaction = 'version' in transaction
53
- ? transaction.serialize()
54
- : transaction.serialize({
55
- requireAllSignatures: false,
56
- verifySignatures: false,
57
- });
58
- const payload = jsBase64.fromUint8Array(serializedTransaction);
59
- return payload;
31
+ return (0, js_base64.fromUint8Array)("version" in transaction ? transaction.serialize() : transaction.serialize({
32
+ requireAllSignatures: false,
33
+ verifySignatures: false
34
+ }));
60
35
  }
61
36
  function getTransactionFromWireMessage(byteArray) {
62
- const numSignatures = byteArray[0];
63
- const messageOffset = numSignatures * web3_js.SIGNATURE_LENGTH_IN_BYTES + 1;
64
- const version = web3_js.VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));
65
- if (version === 'legacy') {
66
- return web3_js.Transaction.from(byteArray);
67
- }
68
- else {
69
- return web3_js.VersionedTransaction.deserialize(byteArray);
70
- }
37
+ const messageOffset = byteArray[0] * _solana_web3_js.SIGNATURE_LENGTH_IN_BYTES + 1;
38
+ if (_solana_web3_js.VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length)) === "legacy") return _solana_web3_js.Transaction.from(byteArray);
39
+ else return _solana_web3_js.VersionedTransaction.deserialize(byteArray);
71
40
  }
72
- function transact(callback, config) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- const augmentedCallback = (wallet) => {
75
- return callback(augmentWalletAPI(wallet));
76
- };
77
- return yield mobileWalletAdapterProtocol.transact(augmentedCallback, config);
78
- });
41
+ async function transact(callback, config) {
42
+ const augmentedCallback = (wallet) => {
43
+ return callback(augmentWalletAPI(wallet));
44
+ };
45
+ return await (0, _solana_mobile_mobile_wallet_adapter_protocol.transact)(augmentedCallback, config);
79
46
  }
80
- function startRemoteScenario(config) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- const { wallet, close, associationUrl } = yield mobileWalletAdapterProtocol.startRemoteScenario(config);
83
- const augmentedPromise = wallet.then((wallet) => {
84
- return augmentWalletAPI(wallet);
85
- });
86
- return { wallet: augmentedPromise, close, associationUrl };
87
- });
47
+ async function startRemoteScenario(config) {
48
+ const { wallet, close, associationUrl } = await (0, _solana_mobile_mobile_wallet_adapter_protocol.startRemoteScenario)(config);
49
+ return {
50
+ wallet: wallet.then((wallet) => {
51
+ return augmentWalletAPI(wallet);
52
+ }),
53
+ close,
54
+ associationUrl
55
+ };
88
56
  }
89
57
  function augmentWalletAPI(wallet) {
90
- return new Proxy({}, {
91
- get(target, p) {
92
- if (target[p] == null) {
93
- switch (p) {
94
- case 'signAndSendTransactions':
95
- target[p] = function (_a) {
96
- var { minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions } = _a, rest = __rest(_a, ["minContextSlot", "commitment", "skipPreflight", "maxRetries", "waitForCommitmentToSendNextTransaction", "transactions"]);
97
- return __awaiter(this, void 0, void 0, function* () {
98
- const payloads = transactions.map(getPayloadFromTransaction);
99
- const options = {
100
- min_context_slot: minContextSlot,
101
- commitment: commitment,
102
- skip_preflight: skipPreflight,
103
- max_retries: maxRetries,
104
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
105
- };
106
- const { signatures: base64EncodedSignatures } = yield wallet.signAndSendTransactions(Object.assign(Object.assign(Object.assign({}, rest), (Object.values(options).some(element => element != null)
107
- ? { options: options }
108
- : null)), { payloads }));
109
- const signatures = base64EncodedSignatures.map(jsBase64.toUint8Array).map(bs58__default["default"].encode);
110
- return signatures;
111
- });
112
- };
113
- break;
114
- case 'signMessages':
115
- target[p] = function (_a) {
116
- var { payloads } = _a, rest = __rest(_a, ["payloads"]);
117
- return __awaiter(this, void 0, void 0, function* () {
118
- const base64EncodedPayloads = payloads.map(jsBase64.fromUint8Array);
119
- const { signed_payloads: base64EncodedSignedMessages } = yield wallet.signMessages(Object.assign(Object.assign({}, rest), { payloads: base64EncodedPayloads }));
120
- const signedMessages = base64EncodedSignedMessages.map(jsBase64.toUint8Array);
121
- return signedMessages;
122
- });
123
- };
124
- break;
125
- case 'signTransactions':
126
- target[p] = function (_a) {
127
- var { transactions } = _a, rest = __rest(_a, ["transactions"]);
128
- return __awaiter(this, void 0, void 0, function* () {
129
- const payloads = transactions.map(getPayloadFromTransaction);
130
- const { signed_payloads: base64EncodedCompiledTransactions } = yield wallet.signTransactions(Object.assign(Object.assign({}, rest), { payloads }));
131
- const compiledTransactions = base64EncodedCompiledTransactions.map(jsBase64.toUint8Array);
132
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
133
- return signedTransactions;
134
- });
135
- };
136
- break;
137
- default: {
138
- target[p] = wallet[p];
139
- break;
140
- }
141
- }
142
- }
143
- return target[p];
144
- },
145
- defineProperty() {
146
- return false;
147
- },
148
- deleteProperty() {
149
- return false;
150
- },
151
- });
58
+ return new Proxy({}, {
59
+ get(target, p) {
60
+ if (target[p] == null) switch (p) {
61
+ case "signAndSendTransactions":
62
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
63
+ const payloads = transactions.map(getPayloadFromTransaction);
64
+ const options = {
65
+ min_context_slot: minContextSlot,
66
+ commitment,
67
+ skip_preflight: skipPreflight,
68
+ max_retries: maxRetries,
69
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
70
+ };
71
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
72
+ ...rest,
73
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
74
+ payloads
75
+ });
76
+ return base64EncodedSignatures.map(js_base64.toUint8Array).map(bs58.default.encode);
77
+ };
78
+ break;
79
+ case "signMessages":
80
+ target[p] = async function({ payloads, ...rest }) {
81
+ const base64EncodedPayloads = payloads.map(js_base64.fromUint8Array);
82
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
83
+ ...rest,
84
+ payloads: base64EncodedPayloads
85
+ });
86
+ return base64EncodedSignedMessages.map(js_base64.toUint8Array);
87
+ };
88
+ break;
89
+ case "signTransactions":
90
+ target[p] = async function({ transactions, ...rest }) {
91
+ const payloads = transactions.map(getPayloadFromTransaction);
92
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
93
+ ...rest,
94
+ payloads
95
+ });
96
+ return base64EncodedCompiledTransactions.map(js_base64.toUint8Array).map(getTransactionFromWireMessage);
97
+ };
98
+ break;
99
+ default:
100
+ target[p] = wallet[p];
101
+ break;
102
+ }
103
+ return target[p];
104
+ },
105
+ defineProperty() {
106
+ return false;
107
+ },
108
+ deleteProperty() {
109
+ return false;
110
+ }
111
+ });
152
112
  }
153
-
113
+ //#endregion
154
114
  exports.startRemoteScenario = startRemoteScenario;
155
115
  exports.transact = transact;
116
+
117
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.native.js","names":["SIGNATURE_LENGTH_IN_BYTES","VersionedMessage","Transaction","VersionedTransaction","toUint8Array","fromUint8Array"],"sources":["../../src/transact.ts"],"sourcesContent":["import {\n SIGNATURE_LENGTH_IN_BYTES,\n Transaction as LegacyTransaction,\n Transaction,\n TransactionSignature,\n VersionedMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n TerminateSessionAPI,\n transact as baseTransact,\n startRemoteScenario as baseStartRemoteScenario,\n WalletAssociationConfig,\n RemoteWalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\ninterface Web3SignAndSendTransactionsAPI {\n signAndSendTransactions<T extends LegacyTransaction | VersionedTransaction>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<TransactionSignature[]>;\n}\n\ninterface Web3SignTransactionsAPI {\n signTransactions<T extends LegacyTransaction | VersionedTransaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface Web3SignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface Web3MobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n Web3SignAndSendTransactionsAPI,\n Web3SignTransactionsAPI,\n Web3SignMessagesAPI {}\n\nexport interface Web3RemoteMobileWallet extends Web3MobileWallet, TerminateSessionAPI {}\n\nexport type Web3Scenario = Readonly<{\n wallet: Promise<Web3MobileWallet>;\n close: () => void;\n}>;\n\nexport type Web3RemoteScenario = Web3Scenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: LegacyTransaction | VersionedTransaction): Base64EncodedTransaction {\n const serializedTransaction =\n 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction | VersionedTransaction {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n } else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: Web3MobileWallet) => 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<Web3RemoteScenario> {\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): Web3MobileWallet {\n return new Proxy<Web3MobileWallet>({} as Web3MobileWallet, {\n get<TMethodName extends keyof Web3MobileWallet>(target: Web3MobileWallet, 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<Web3MobileWallet['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).map(bs58.encode);\n return signatures as TransactionSignature[];\n } as Web3MobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<Web3MobileWallet['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 Web3MobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<Web3MobileWallet['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 Web3MobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as Web3MobileWallet[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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,SAAS,0BAA0B,aAAiF;AAShH,SAAA,GAAA,UAAA,gBAPI,aAAa,cACP,YAAY,WAAW,GACvB,YAAY,UAAU;EAClB,sBAAsB;EACtB,kBAAkB;EACrB,CAAC,CACyC;;AAIzD,SAAS,8BAA8B,WAA2D;CAE9F,MAAM,gBADgB,UAAU,KACMA,gBAAAA,4BAA4B;AAElE,KADgBC,gBAAAA,iBAAiB,0BAA0B,UAAU,MAAM,eAAe,UAAU,OAAO,CAAC,KAC5F,SACZ,QAAOC,gBAAAA,YAAY,KAAK,UAAU;KAElC,QAAOC,gBAAAA,qBAAqB,YAAY,UAAU;;AAI1D,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,QAAoE;CAC1G,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,QAAwC;AAC9D,QAAO,IAAI,MAAwB,EAAE,EAAsB;EACvD,IAAgD,QAA0B,GAAgB;AACtF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACwD;MAC3D,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,IAAIC,UAAAA,aAAa,CAAC,IAAI,KAAA,QAAK,OAAO;;AAGjF;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC6C;MAChD,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,QACiD;MACpD,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"}
@@ -1,3 +1 @@
1
- {
2
- "type": "commonjs"
3
- }
1
+ {"type":"commonjs"}
@@ -1,155 +1,99 @@
1
- import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';
2
- import { transact as transact$1, startRemoteScenario as startRemoteScenario$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';
3
- import bs58 from 'bs58';
4
-
5
- /******************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
-
20
- function __rest(s, e) {
21
- var t = {};
22
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
23
- t[p] = s[p];
24
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
25
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
27
- t[p[i]] = s[p[i]];
28
- }
29
- return t;
30
- }
31
-
32
- function __awaiter(thisArg, _arguments, P, generator) {
33
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
- return new (P || (P = Promise))(function (resolve, reject) {
35
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
- step((generator = generator.apply(thisArg, _arguments || [])).next());
39
- });
40
- }
41
-
1
+ import { SIGNATURE_LENGTH_IN_BYTES, Transaction, VersionedMessage, VersionedTransaction } from "@solana/web3.js";
2
+ import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from "@solana-mobile/mobile-wallet-adapter-protocol";
3
+ import bs58 from "bs58";
4
+ //#region src/base64Utils.ts
42
5
  function fromUint8Array(byteArray) {
43
- return window.btoa(String.fromCharCode.call(null, ...byteArray));
6
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
44
7
  }
45
8
  function toUint8Array(base64EncodedByteArray) {
46
- return new Uint8Array(window
47
- .atob(base64EncodedByteArray)
48
- .split('')
49
- .map((c) => c.charCodeAt(0)));
9
+ return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
50
10
  }
51
-
11
+ //#endregion
12
+ //#region src/transact.ts
52
13
  function getPayloadFromTransaction(transaction) {
53
- const serializedTransaction = 'version' in transaction
54
- ? transaction.serialize()
55
- : transaction.serialize({
56
- requireAllSignatures: false,
57
- verifySignatures: false,
58
- });
59
- const payload = fromUint8Array(serializedTransaction);
60
- return payload;
14
+ return fromUint8Array("version" in transaction ? transaction.serialize() : transaction.serialize({
15
+ requireAllSignatures: false,
16
+ verifySignatures: false
17
+ }));
61
18
  }
62
19
  function getTransactionFromWireMessage(byteArray) {
63
- const numSignatures = byteArray[0];
64
- const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;
65
- const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));
66
- if (version === 'legacy') {
67
- return Transaction.from(byteArray);
68
- }
69
- else {
70
- return VersionedTransaction.deserialize(byteArray);
71
- }
20
+ const messageOffset = byteArray[0] * SIGNATURE_LENGTH_IN_BYTES + 1;
21
+ if (VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length)) === "legacy") return Transaction.from(byteArray);
22
+ else return VersionedTransaction.deserialize(byteArray);
72
23
  }
73
- function transact(callback, config) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- const augmentedCallback = (wallet) => {
76
- return callback(augmentWalletAPI(wallet));
77
- };
78
- return yield transact$1(augmentedCallback, config);
79
- });
24
+ async function transact(callback, config) {
25
+ const augmentedCallback = (wallet) => {
26
+ return callback(augmentWalletAPI(wallet));
27
+ };
28
+ return await transact$1(augmentedCallback, config);
80
29
  }
81
- function startRemoteScenario(config) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- const { wallet, close, associationUrl } = yield startRemoteScenario$1(config);
84
- const augmentedPromise = wallet.then((wallet) => {
85
- return augmentWalletAPI(wallet);
86
- });
87
- return { wallet: augmentedPromise, close, associationUrl };
88
- });
30
+ async function startRemoteScenario(config) {
31
+ const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
32
+ return {
33
+ wallet: wallet.then((wallet) => {
34
+ return augmentWalletAPI(wallet);
35
+ }),
36
+ close,
37
+ associationUrl
38
+ };
89
39
  }
90
40
  function augmentWalletAPI(wallet) {
91
- return new Proxy({}, {
92
- get(target, p) {
93
- if (target[p] == null) {
94
- switch (p) {
95
- case 'signAndSendTransactions':
96
- target[p] = function (_a) {
97
- var { minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions } = _a, rest = __rest(_a, ["minContextSlot", "commitment", "skipPreflight", "maxRetries", "waitForCommitmentToSendNextTransaction", "transactions"]);
98
- return __awaiter(this, void 0, void 0, function* () {
99
- const payloads = transactions.map(getPayloadFromTransaction);
100
- const options = {
101
- min_context_slot: minContextSlot,
102
- commitment: commitment,
103
- skip_preflight: skipPreflight,
104
- max_retries: maxRetries,
105
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
106
- };
107
- const { signatures: base64EncodedSignatures } = yield wallet.signAndSendTransactions(Object.assign(Object.assign(Object.assign({}, rest), (Object.values(options).some(element => element != null)
108
- ? { options: options }
109
- : null)), { payloads }));
110
- const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);
111
- return signatures;
112
- });
113
- };
114
- break;
115
- case 'signMessages':
116
- target[p] = function (_a) {
117
- var { payloads } = _a, rest = __rest(_a, ["payloads"]);
118
- return __awaiter(this, void 0, void 0, function* () {
119
- const base64EncodedPayloads = payloads.map(fromUint8Array);
120
- const { signed_payloads: base64EncodedSignedMessages } = yield wallet.signMessages(Object.assign(Object.assign({}, rest), { payloads: base64EncodedPayloads }));
121
- const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
122
- return signedMessages;
123
- });
124
- };
125
- break;
126
- case 'signTransactions':
127
- target[p] = function (_a) {
128
- var { transactions } = _a, rest = __rest(_a, ["transactions"]);
129
- return __awaiter(this, void 0, void 0, function* () {
130
- const payloads = transactions.map(getPayloadFromTransaction);
131
- const { signed_payloads: base64EncodedCompiledTransactions } = yield wallet.signTransactions(Object.assign(Object.assign({}, rest), { payloads }));
132
- const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
133
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
134
- return signedTransactions;
135
- });
136
- };
137
- break;
138
- default: {
139
- target[p] = wallet[p];
140
- break;
141
- }
142
- }
143
- }
144
- return target[p];
145
- },
146
- defineProperty() {
147
- return false;
148
- },
149
- deleteProperty() {
150
- return false;
151
- },
152
- });
41
+ return new Proxy({}, {
42
+ get(target, p) {
43
+ if (target[p] == null) switch (p) {
44
+ case "signAndSendTransactions":
45
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
46
+ const payloads = transactions.map(getPayloadFromTransaction);
47
+ const options = {
48
+ min_context_slot: minContextSlot,
49
+ commitment,
50
+ skip_preflight: skipPreflight,
51
+ max_retries: maxRetries,
52
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
53
+ };
54
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
55
+ ...rest,
56
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
57
+ payloads
58
+ });
59
+ return base64EncodedSignatures.map(toUint8Array).map(bs58.encode);
60
+ };
61
+ break;
62
+ case "signMessages":
63
+ target[p] = async function({ payloads, ...rest }) {
64
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
65
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
66
+ ...rest,
67
+ payloads: base64EncodedPayloads
68
+ });
69
+ return base64EncodedSignedMessages.map(toUint8Array);
70
+ };
71
+ break;
72
+ case "signTransactions":
73
+ target[p] = async function({ transactions, ...rest }) {
74
+ const payloads = transactions.map(getPayloadFromTransaction);
75
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
76
+ ...rest,
77
+ payloads
78
+ });
79
+ return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
80
+ };
81
+ break;
82
+ default:
83
+ target[p] = wallet[p];
84
+ break;
85
+ }
86
+ return target[p];
87
+ },
88
+ defineProperty() {
89
+ return false;
90
+ },
91
+ deleteProperty() {
92
+ return false;
93
+ }
94
+ });
153
95
  }
154
-
96
+ //#endregion
155
97
  export { startRemoteScenario, transact };
98
+
99
+ //# 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 SIGNATURE_LENGTH_IN_BYTES,\n Transaction as LegacyTransaction,\n Transaction,\n TransactionSignature,\n VersionedMessage,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n TerminateSessionAPI,\n transact as baseTransact,\n startRemoteScenario as baseStartRemoteScenario,\n WalletAssociationConfig,\n RemoteWalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\ninterface Web3SignAndSendTransactionsAPI {\n signAndSendTransactions<T extends LegacyTransaction | VersionedTransaction>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<TransactionSignature[]>;\n}\n\ninterface Web3SignTransactionsAPI {\n signTransactions<T extends LegacyTransaction | VersionedTransaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface Web3SignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface Web3MobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n Web3SignAndSendTransactionsAPI,\n Web3SignTransactionsAPI,\n Web3SignMessagesAPI {}\n\nexport interface Web3RemoteMobileWallet extends Web3MobileWallet, TerminateSessionAPI {}\n\nexport type Web3Scenario = Readonly<{\n wallet: Promise<Web3MobileWallet>;\n close: () => void;\n}>;\n\nexport type Web3RemoteScenario = Web3Scenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: LegacyTransaction | VersionedTransaction): Base64EncodedTransaction {\n const serializedTransaction =\n 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction | VersionedTransaction {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n } else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: Web3MobileWallet) => 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<Web3RemoteScenario> {\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): Web3MobileWallet {\n return new Proxy<Web3MobileWallet>({} as Web3MobileWallet, {\n get<TMethodName extends keyof Web3MobileWallet>(target: Web3MobileWallet, 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<Web3MobileWallet['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).map(bs58.encode);\n return signatures as TransactionSignature[];\n } as Web3MobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<Web3MobileWallet['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 Web3MobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<Web3MobileWallet['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 Web3MobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as Web3MobileWallet[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;;;;AC2DL,SAAS,0BAA0B,aAAiF;AAShH,QADgB,eANZ,aAAa,cACP,YAAY,WAAW,GACvB,YAAY,UAAU;EAClB,sBAAsB;EACtB,kBAAkB;EACrB,CAAC,CACyC;;AAIzD,SAAS,8BAA8B,WAA2D;CAE9F,MAAM,gBADgB,UAAU,KACM,4BAA4B;AAElE,KADgB,iBAAiB,0BAA0B,UAAU,MAAM,eAAe,UAAU,OAAO,CAAC,KAC5F,SACZ,QAAO,YAAY,KAAK,UAAU;KAElC,QAAO,qBAAqB,YAAY,UAAU;;AAI1D,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,MAAMA,WAAa,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAoE;CAC1G,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,QAAwC;AAC9D,QAAO,IAAI,MAAwB,EAAE,EAAsB;EACvD,IAAgD,QAA0B,GAAgB;AACtF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACwD;MAC3D,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,CAAC,IAAI,KAAK,OAAO;;AAGjF;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC6C;MAChD,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,QACiD;MACpD,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"}