@solana-mobile/mobile-wallet-adapter-protocol-kit 0.2.3 → 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 CHANGED
@@ -1,3 +1,3 @@
1
1
  # `@solana-mobile/mobile-wallet-adapter-protocol-kit`
2
2
 
3
- This is a convenience wrapper that makes it easy to use common primitives from [@solana/kit](https://github.com/anza-xyz/kit) – such as `Transaction` and `Signature` – with [@solana-mobile/mobile-wallet-adapter-protocol](https://github.com/solana-mobile/mobile-wallet-adapter/tree/main/js/packages/mobile-wallet-adapter-protocol).
3
+ This is a convenience wrapper that makes it easy to use common primitives from [@solana/kit](https://github.com/anza-xyz/kit) – such as `Transaction` and `Signature` – with [@solana-mobile/mobile-wallet-adapter-protocol](https://github.com/solana-mobile/mobile-wallet-adapter/tree/main/js/packages/mobile-wallet-adapter-protocol).
@@ -1,112 +1,97 @@
1
- 'use strict';
2
-
3
- var transactions = require('@solana/transactions');
4
- var mobileWalletAdapterProtocol = require('@solana-mobile/mobile-wallet-adapter-protocol');
5
-
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
+ //#region src/base64Utils.ts
6
5
  function fromUint8Array(byteArray) {
7
- return window.btoa(String.fromCharCode.call(null, ...byteArray));
6
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
8
7
  }
9
8
  function toUint8Array(base64EncodedByteArray) {
10
- return new Uint8Array(window
11
- .atob(base64EncodedByteArray)
12
- .split('')
13
- .map((c) => c.charCodeAt(0)));
9
+ return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
14
10
  }
15
-
11
+ //#endregion
12
+ //#region src/transact.ts
16
13
  function getPayloadFromTransaction(transaction) {
17
- if ('messageBytes' in transaction) {
18
- return transactions.getBase64EncodedWireTransaction(transaction);
19
- }
20
- else if ('instructions' in transaction) {
21
- const compiledTransaction = transactions.compileTransaction(transaction);
22
- return transactions.getBase64EncodedWireTransaction(compiledTransaction);
23
- }
24
- else {
25
- throw new Error('Invalid transaction type');
26
- }
14
+ if ("messageBytes" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)(transaction);
15
+ else if ("instructions" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)((0, _solana_transactions.compileTransaction)(transaction));
16
+ else throw new Error("Invalid transaction type");
27
17
  }
28
18
  function getTransactionFromWireMessage(byteArray) {
29
- const transactionDecoder = transactions.getTransactionDecoder();
30
- return transactionDecoder.decode(byteArray);
19
+ return (0, _solana_transactions.getTransactionDecoder)().decode(byteArray);
31
20
  }
32
21
  async function transact(callback, config) {
33
- const augmentedCallback = (wallet) => {
34
- return callback(augmentWalletAPI(wallet));
35
- };
36
- return await mobileWalletAdapterProtocol.transact(augmentedCallback, config);
22
+ const augmentedCallback = (wallet) => {
23
+ return callback(augmentWalletAPI(wallet));
24
+ };
25
+ return await (0, _solana_mobile_mobile_wallet_adapter_protocol.transact)(augmentedCallback, config);
37
26
  }
38
27
  async function startRemoteScenario(config) {
39
- const { wallet, close, associationUrl } = await mobileWalletAdapterProtocol.startRemoteScenario(config);
40
- const augmentedPromise = wallet.then((wallet) => {
41
- return augmentWalletAPI(wallet);
42
- });
43
- return { wallet: augmentedPromise, close, associationUrl };
28
+ const { wallet, close, associationUrl } = await (0, _solana_mobile_mobile_wallet_adapter_protocol.startRemoteScenario)(config);
29
+ return {
30
+ wallet: wallet.then((wallet) => {
31
+ return augmentWalletAPI(wallet);
32
+ }),
33
+ close,
34
+ associationUrl
35
+ };
44
36
  }
45
37
  function augmentWalletAPI(wallet) {
46
- return new Proxy({}, {
47
- get(target, p) {
48
- if (target[p] == null) {
49
- switch (p) {
50
- case 'signAndSendTransactions':
51
- target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
52
- const payloads = transactions.map(getPayloadFromTransaction);
53
- const options = {
54
- min_context_slot: minContextSlot,
55
- commitment: commitment,
56
- skip_preflight: skipPreflight,
57
- max_retries: maxRetries,
58
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
59
- };
60
- const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
61
- ...rest,
62
- ...(Object.values(options).some(element => element != null)
63
- ? { options: options }
64
- : null),
65
- payloads,
66
- });
67
- const signatures = base64EncodedSignatures.map(toUint8Array);
68
- return signatures;
69
- };
70
- break;
71
- case 'signMessages':
72
- target[p] = async function ({ payloads, ...rest }) {
73
- const base64EncodedPayloads = payloads.map(fromUint8Array);
74
- const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
75
- ...rest,
76
- payloads: base64EncodedPayloads,
77
- });
78
- const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
79
- return signedMessages;
80
- };
81
- break;
82
- case 'signTransactions':
83
- target[p] = async function ({ transactions, ...rest }) {
84
- const payloads = transactions.map(getPayloadFromTransaction);
85
- const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
86
- ...rest,
87
- payloads,
88
- });
89
- const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
90
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
91
- return signedTransactions;
92
- };
93
- break;
94
- default: {
95
- target[p] = wallet[p];
96
- break;
97
- }
98
- }
99
- }
100
- return target[p];
101
- },
102
- defineProperty() {
103
- return false;
104
- },
105
- deleteProperty() {
106
- return false;
107
- },
108
- });
38
+ return new Proxy({}, {
39
+ get(target, p) {
40
+ if (target[p] == null) switch (p) {
41
+ case "signAndSendTransactions":
42
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
43
+ const payloads = transactions.map(getPayloadFromTransaction);
44
+ const options = {
45
+ min_context_slot: minContextSlot,
46
+ commitment,
47
+ skip_preflight: skipPreflight,
48
+ max_retries: maxRetries,
49
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
50
+ };
51
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
52
+ ...rest,
53
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
54
+ payloads
55
+ });
56
+ return base64EncodedSignatures.map(toUint8Array);
57
+ };
58
+ break;
59
+ case "signMessages":
60
+ target[p] = async function({ payloads, ...rest }) {
61
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
62
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
63
+ ...rest,
64
+ payloads: base64EncodedPayloads
65
+ });
66
+ return base64EncodedSignedMessages.map(toUint8Array);
67
+ };
68
+ break;
69
+ case "signTransactions":
70
+ target[p] = async function({ transactions, ...rest }) {
71
+ const payloads = transactions.map(getPayloadFromTransaction);
72
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
73
+ ...rest,
74
+ payloads
75
+ });
76
+ return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
77
+ };
78
+ break;
79
+ default:
80
+ target[p] = wallet[p];
81
+ break;
82
+ }
83
+ return target[p];
84
+ },
85
+ defineProperty() {
86
+ return false;
87
+ },
88
+ deleteProperty() {
89
+ return false;
90
+ }
91
+ });
109
92
  }
110
-
93
+ //#endregion
111
94
  exports.startRemoteScenario = startRemoteScenario;
112
95
  exports.transact = transact;
96
+
97
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","names":[],"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,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,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"}
package/lib/cjs/index.js CHANGED
@@ -1,112 +1,97 @@
1
- 'use strict';
2
-
3
- var transactions = require('@solana/transactions');
4
- var mobileWalletAdapterProtocol = require('@solana-mobile/mobile-wallet-adapter-protocol');
5
-
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
+ //#region src/base64Utils.ts
6
5
  function fromUint8Array(byteArray) {
7
- return window.btoa(String.fromCharCode.call(null, ...byteArray));
6
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
8
7
  }
9
8
  function toUint8Array(base64EncodedByteArray) {
10
- return new Uint8Array(window
11
- .atob(base64EncodedByteArray)
12
- .split('')
13
- .map((c) => c.charCodeAt(0)));
9
+ return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
14
10
  }
15
-
11
+ //#endregion
12
+ //#region src/transact.ts
16
13
  function getPayloadFromTransaction(transaction) {
17
- if ('messageBytes' in transaction) {
18
- return transactions.getBase64EncodedWireTransaction(transaction);
19
- }
20
- else if ('instructions' in transaction) {
21
- const compiledTransaction = transactions.compileTransaction(transaction);
22
- return transactions.getBase64EncodedWireTransaction(compiledTransaction);
23
- }
24
- else {
25
- throw new Error('Invalid transaction type');
26
- }
14
+ if ("messageBytes" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)(transaction);
15
+ else if ("instructions" in transaction) return (0, _solana_transactions.getBase64EncodedWireTransaction)((0, _solana_transactions.compileTransaction)(transaction));
16
+ else throw new Error("Invalid transaction type");
27
17
  }
28
18
  function getTransactionFromWireMessage(byteArray) {
29
- const transactionDecoder = transactions.getTransactionDecoder();
30
- return transactionDecoder.decode(byteArray);
19
+ return (0, _solana_transactions.getTransactionDecoder)().decode(byteArray);
31
20
  }
32
21
  async function transact(callback, config) {
33
- const augmentedCallback = (wallet) => {
34
- return callback(augmentWalletAPI(wallet));
35
- };
36
- return await mobileWalletAdapterProtocol.transact(augmentedCallback, config);
22
+ const augmentedCallback = (wallet) => {
23
+ return callback(augmentWalletAPI(wallet));
24
+ };
25
+ return await (0, _solana_mobile_mobile_wallet_adapter_protocol.transact)(augmentedCallback, config);
37
26
  }
38
27
  async function startRemoteScenario(config) {
39
- const { wallet, close, associationUrl } = await mobileWalletAdapterProtocol.startRemoteScenario(config);
40
- const augmentedPromise = wallet.then((wallet) => {
41
- return augmentWalletAPI(wallet);
42
- });
43
- return { wallet: augmentedPromise, close, associationUrl };
28
+ const { wallet, close, associationUrl } = await (0, _solana_mobile_mobile_wallet_adapter_protocol.startRemoteScenario)(config);
29
+ return {
30
+ wallet: wallet.then((wallet) => {
31
+ return augmentWalletAPI(wallet);
32
+ }),
33
+ close,
34
+ associationUrl
35
+ };
44
36
  }
45
37
  function augmentWalletAPI(wallet) {
46
- return new Proxy({}, {
47
- get(target, p) {
48
- if (target[p] == null) {
49
- switch (p) {
50
- case 'signAndSendTransactions':
51
- target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
52
- const payloads = transactions.map(getPayloadFromTransaction);
53
- const options = {
54
- min_context_slot: minContextSlot,
55
- commitment: commitment,
56
- skip_preflight: skipPreflight,
57
- max_retries: maxRetries,
58
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
59
- };
60
- const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
61
- ...rest,
62
- ...(Object.values(options).some(element => element != null)
63
- ? { options: options }
64
- : null),
65
- payloads,
66
- });
67
- const signatures = base64EncodedSignatures.map(toUint8Array);
68
- return signatures;
69
- };
70
- break;
71
- case 'signMessages':
72
- target[p] = async function ({ payloads, ...rest }) {
73
- const base64EncodedPayloads = payloads.map(fromUint8Array);
74
- const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
75
- ...rest,
76
- payloads: base64EncodedPayloads,
77
- });
78
- const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
79
- return signedMessages;
80
- };
81
- break;
82
- case 'signTransactions':
83
- target[p] = async function ({ transactions, ...rest }) {
84
- const payloads = transactions.map(getPayloadFromTransaction);
85
- const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
86
- ...rest,
87
- payloads,
88
- });
89
- const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
90
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
91
- return signedTransactions;
92
- };
93
- break;
94
- default: {
95
- target[p] = wallet[p];
96
- break;
97
- }
98
- }
99
- }
100
- return target[p];
101
- },
102
- defineProperty() {
103
- return false;
104
- },
105
- deleteProperty() {
106
- return false;
107
- },
108
- });
38
+ return new Proxy({}, {
39
+ get(target, p) {
40
+ if (target[p] == null) switch (p) {
41
+ case "signAndSendTransactions":
42
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
43
+ const payloads = transactions.map(getPayloadFromTransaction);
44
+ const options = {
45
+ min_context_slot: minContextSlot,
46
+ commitment,
47
+ skip_preflight: skipPreflight,
48
+ max_retries: maxRetries,
49
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
50
+ };
51
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
52
+ ...rest,
53
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
54
+ payloads
55
+ });
56
+ return base64EncodedSignatures.map(toUint8Array);
57
+ };
58
+ break;
59
+ case "signMessages":
60
+ target[p] = async function({ payloads, ...rest }) {
61
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
62
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
63
+ ...rest,
64
+ payloads: base64EncodedPayloads
65
+ });
66
+ return base64EncodedSignedMessages.map(toUint8Array);
67
+ };
68
+ break;
69
+ case "signTransactions":
70
+ target[p] = async function({ transactions, ...rest }) {
71
+ const payloads = transactions.map(getPayloadFromTransaction);
72
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
73
+ ...rest,
74
+ payloads
75
+ });
76
+ return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
77
+ };
78
+ break;
79
+ default:
80
+ target[p] = wallet[p];
81
+ break;
82
+ }
83
+ return target[p];
84
+ },
85
+ defineProperty() {
86
+ return false;
87
+ },
88
+ deleteProperty() {
89
+ return false;
90
+ }
91
+ });
109
92
  }
110
-
93
+ //#endregion
111
94
  exports.startRemoteScenario = startRemoteScenario;
112
95
  exports.transact = transact;
96
+
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"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,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,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"}
@@ -1,103 +1,90 @@
1
- 'use strict';
2
-
3
- var transactions = require('@solana/transactions');
4
- var mobileWalletAdapterProtocol = require('@solana-mobile/mobile-wallet-adapter-protocol');
5
- var jsBase64 = require('js-base64');
6
-
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
7
6
  function getPayloadFromTransaction(transaction) {
8
- if ('messageBytes' in transaction) {
9
- return transactions.getBase64EncodedWireTransaction(transaction);
10
- }
11
- else if ('instructions' in transaction) {
12
- const compiledTransaction = transactions.compileTransaction(transaction);
13
- return transactions.getBase64EncodedWireTransaction(compiledTransaction);
14
- }
15
- else {
16
- throw new Error('Invalid transaction type');
17
- }
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");
18
10
  }
19
11
  function getTransactionFromWireMessage(byteArray) {
20
- const transactionDecoder = transactions.getTransactionDecoder();
21
- return transactionDecoder.decode(byteArray);
12
+ return (0, _solana_transactions.getTransactionDecoder)().decode(byteArray);
22
13
  }
23
14
  async function transact(callback, config) {
24
- const augmentedCallback = (wallet) => {
25
- return callback(augmentWalletAPI(wallet));
26
- };
27
- return await mobileWalletAdapterProtocol.transact(augmentedCallback, config);
15
+ const augmentedCallback = (wallet) => {
16
+ return callback(augmentWalletAPI(wallet));
17
+ };
18
+ return await (0, _solana_mobile_mobile_wallet_adapter_protocol.transact)(augmentedCallback, config);
28
19
  }
29
20
  async function startRemoteScenario(config) {
30
- const { wallet, close, associationUrl } = await mobileWalletAdapterProtocol.startRemoteScenario(config);
31
- const augmentedPromise = wallet.then((wallet) => {
32
- return augmentWalletAPI(wallet);
33
- });
34
- return { wallet: augmentedPromise, close, associationUrl };
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
+ };
35
29
  }
36
30
  function augmentWalletAPI(wallet) {
37
- return new Proxy({}, {
38
- get(target, p) {
39
- if (target[p] == null) {
40
- switch (p) {
41
- case 'signAndSendTransactions':
42
- target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
43
- const payloads = transactions.map(getPayloadFromTransaction);
44
- const options = {
45
- min_context_slot: minContextSlot,
46
- commitment: commitment,
47
- skip_preflight: skipPreflight,
48
- max_retries: maxRetries,
49
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
50
- };
51
- const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
52
- ...rest,
53
- ...(Object.values(options).some(element => element != null)
54
- ? { options: options }
55
- : null),
56
- payloads,
57
- });
58
- const signatures = base64EncodedSignatures.map(jsBase64.toUint8Array);
59
- return signatures;
60
- };
61
- break;
62
- case 'signMessages':
63
- target[p] = async function ({ payloads, ...rest }) {
64
- const base64EncodedPayloads = payloads.map(jsBase64.fromUint8Array);
65
- const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
66
- ...rest,
67
- payloads: base64EncodedPayloads,
68
- });
69
- const signedMessages = base64EncodedSignedMessages.map(jsBase64.toUint8Array);
70
- return signedMessages;
71
- };
72
- break;
73
- case 'signTransactions':
74
- target[p] = async function ({ transactions, ...rest }) {
75
- const payloads = transactions.map(getPayloadFromTransaction);
76
- const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
77
- ...rest,
78
- payloads,
79
- });
80
- const compiledTransactions = base64EncodedCompiledTransactions.map(jsBase64.toUint8Array);
81
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
82
- return signedTransactions;
83
- };
84
- break;
85
- default: {
86
- target[p] = wallet[p];
87
- break;
88
- }
89
- }
90
- }
91
- return target[p];
92
- },
93
- defineProperty() {
94
- return false;
95
- },
96
- deleteProperty() {
97
- return false;
98
- },
99
- });
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
+ });
100
85
  }
101
-
86
+ //#endregion
102
87
  exports.startRemoteScenario = startRemoteScenario;
103
88
  exports.transact = transact;
89
+
90
+ //# sourceMappingURL=index.native.js.map